UPSTREAM: Set embedded_launcher: true for minijail tests
Android is migrating to using embedded_launcher for all python modules,
fix these tests which have problems with embedded_launcher because they
expect their data to be extracted to disk.
The upstream cl is: https://chromium-review.googlesource.com/c/chromiumos/platform/minijail/+/5417234
Bug: 331488610
Test: m minijail_parser_unittest minijail_compiler_unittest && out/host/linux-x86/nativetest64/minijail_compiler_unittest/minijail_compiler_unittest && out/host/linux-x86/nativetest64/minijail_parser_unittest/minijail_parser_unittest
Change-Id: Ib567ff8258eb7faf8db8bafb08214d72a11257e5
diff --git a/tools/Android.bp b/tools/Android.bp
index 62b3a88..3a3e9c6 100644
--- a/tools/Android.bp
+++ b/tools/Android.bp
@@ -45,6 +45,11 @@
data: [
"testdata/arch_64.json",
],
+ version: {
+ py3: {
+ embedded_launcher: true,
+ },
+ },
}
python_test_host {
@@ -60,6 +65,11 @@
data: [
"testdata/arch_64.json",
],
+ version: {
+ py3: {
+ embedded_launcher: true,
+ },
+ },
}
python_binary_host {
diff --git a/tools/arch.py b/tools/arch.py
index ac2f32b..b245f38 100644
--- a/tools/arch.py
+++ b/tools/arch.py
@@ -45,12 +45,17 @@
def load_from_json(json_path):
"""Return an Arch from a .json file."""
with open(json_path, 'r') as json_file:
- constants = json.load(json_file)
- return Arch(
- arch_nr=constants['arch_nr'],
- arch_name=constants['arch_name'],
- bits=constants['bits'],
- syscalls=constants['syscalls'],
- constants=constants['constants'],
- syscall_groups=constants.get('syscall_groups', {}),
- )
+ return Arch.load_from_json_bytes(json_file.read())
+
+ @staticmethod
+ def load_from_json_bytes(json_bytes):
+ """Return an Arch from a json string."""
+ constants = json.loads(json_bytes)
+ return Arch(
+ arch_nr=constants["arch_nr"],
+ arch_name=constants["arch_name"],
+ bits=constants["bits"],
+ syscalls=constants["syscalls"],
+ constants=constants["constants"],
+ syscall_groups=constants.get("syscall_groups", {}),
+ )
diff --git a/tools/compiler_unittest.py b/tools/compiler_unittest.py
index 19ca72f..993de59 100755
--- a/tools/compiler_unittest.py
+++ b/tools/compiler_unittest.py
@@ -23,15 +23,16 @@
import shutil
import tempfile
import unittest
+from importlib import resources
import arch
import bpf
import compiler
import parser # pylint: disable=wrong-import-order
-ARCH_64 = arch.Arch.load_from_json(
- os.path.join(
- os.path.dirname(os.path.abspath(__file__)), 'testdata/arch_64.json'))
+ARCH_64 = arch.Arch.load_from_json_bytes(
+ resources.files("testdata").joinpath("arch_64.json").read_bytes()
+)
class CompileFilterStatementTests(unittest.TestCase):
diff --git a/tools/parser_unittest.py b/tools/parser_unittest.py
index 9e7d6d8..5e7c8a2 100755
--- a/tools/parser_unittest.py
+++ b/tools/parser_unittest.py
@@ -24,14 +24,15 @@
import shutil
import tempfile
import unittest
+from importlib import resources
import arch
import bpf
import parser # pylint: disable=wrong-import-order
-ARCH_64 = arch.Arch.load_from_json(
- os.path.join(
- os.path.dirname(os.path.abspath(__file__)), 'testdata/arch_64.json'))
+ARCH_64 = arch.Arch.load_from_json_bytes(
+ resources.files("testdata").joinpath("arch_64.json").read_bytes()
+)
class TokenizerTests(unittest.TestCase):