Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5a1d0cc3 authored by Victor Hsieh's avatar Victor Hsieh
Browse files

Deduplicate test expectation data in a different way

The test collects expected APEX package names from listing /apex by a
shell command. The shell command also tries to remove the noise
(normally an APEX has two entires, see below).

$ ls -d /apex/*/
  /apex/com.android.adbd/
  /apex/com.android.adbd@340815002/
  ...
  /apex/com.google.mainline.primary.libs@340716000/
  /apex/sharedlibs/

The test used to deduplicate by filtering out '@'. But apparently an
(DLCA) APEX only has one entry with '@'.

With this change, the shell command removes '@\d+' then deduplicate the
strings.

Bug: 288551133
Test: BinaryTransparencyHostTest#testCollectAllApexInfo
Change-Id: I4bc3e8226dd7790aa276ac5dfad7371c60046384
parent 37ccbe73
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -61,8 +61,11 @@ public final class BinaryTransparencyHostTest extends BaseHostJUnit4Test {
        options.setTestMethodName("testCollectAllApexInfo");

        // Collect APEX package names from /apex, then pass them as expectation to be verified.
        // The package names are collected from the find name with deduplication (NB: we used to
        // deduplicate by dropping directory names with '@', but there's a DCLA case where it only
        // has one directory with '@'. So we have to keep it and deduplicate the current way).
        CommandResult result = getDevice().executeShellV2Command(
                "ls -d /apex/*/ |grep -v @ |grep -v /apex/sharedlibs |cut -d/ -f3");
                "ls -d /apex/*/ |grep -v /apex/sharedlibs |cut -d/ -f3 |cut -d@ -f1 |sort |uniq");
        assertTrue(result.getStatus() == CommandStatus.SUCCESS);
        String[] packageNames = result.getStdout().split("\n");
        for (var i = 0; i < packageNames.length; i++) {