aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/Android.bp10
-rw-r--r--tools/arch.py23
-rwxr-xr-xtools/compiler_unittest.py7
-rwxr-xr-xtools/parser_unittest.py7
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):