diff options
-rw-r--r-- | tools/Android.bp | 10 | ||||
-rw-r--r-- | tools/arch.py | 23 | ||||
-rwxr-xr-x | tools/compiler_unittest.py | 7 | ||||
-rwxr-xr-x | tools/parser_unittest.py | 7 |
4 files changed, 32 insertions, 15 deletions
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 @@ python_test_host { data: [ "testdata/arch_64.json", ], + version: { + py3: { + embedded_launcher: true, + }, + }, } python_test_host { @@ -60,6 +65,11 @@ python_test_host { 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 @@ class Arch( 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 random 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 os 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): |