From c8d5d0ce07d235282a6cfa5cc18e39e1a6276b9d Mon Sep 17 00:00:00 2001 From: Jean-Christophe Morin Date: Sat, 26 Oct 2024 12:43:35 -0400 Subject: [PATCH 1/2] Bump context serialize_version and fix key error on getting the "testing" key on older contexts Signed-off-by: Jean-Christophe Morin --- src/rez/resolved_context.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/rez/resolved_context.py b/src/rez/resolved_context.py index 0661978cb..980822425 100644 --- a/src/rez/resolved_context.py +++ b/src/rez/resolved_context.py @@ -134,7 +134,7 @@ class ResolvedContext(object): command within a configured python namespace, without spawning a child shell. """ - serialize_version = (4, 8) + serialize_version = (4, 9) tmpdir_manager = TempDirs(config.context_tmpdir, prefix="rez_context_") context_tracking_payload = None context_tracking_lock = threading.Lock() @@ -1630,7 +1630,6 @@ def _print_version(value): r.timestamp = d["timestamp"] r.building = d["building"] - r.testing = d["testing"] r.caching = d["caching"] r.implicit_packages = [PackageRequest(x) for x in d["implicit_packages"]] r._package_requests = [PackageRequest(x) for x in d["package_requests"]] @@ -1725,6 +1724,9 @@ def _print_version(value): r.package_cache_async = d.get("package_cache_async", True) + # -- SINCE SERIALIZE 4.9 + r.testing = d.get("testing", False) + # # track context usage From 75c3177f6c2f221f5b36409fb408d09f2060ee6c Mon Sep 17 00:00:00 2001 From: Jean-Christophe Morin Date: Sat, 26 Oct 2024 13:16:10 -0400 Subject: [PATCH 2/2] Add tests Signed-off-by: Jean-Christophe Morin --- .../tests/contexts/resolved_context-4.8.json | 51 +++++++++++++++++++ src/rez/tests/test_context.py | 8 +++ 2 files changed, 59 insertions(+) create mode 100644 src/rez/data/tests/contexts/resolved_context-4.8.json diff --git a/src/rez/data/tests/contexts/resolved_context-4.8.json b/src/rez/data/tests/contexts/resolved_context-4.8.json new file mode 100644 index 000000000..a92be60fe --- /dev/null +++ b/src/rez/data/tests/contexts/resolved_context-4.8.json @@ -0,0 +1,51 @@ +{ + "append_sys_path": true, + "arch": "x86_64", + "building": false, + "caching": false, + "created": 1729961872, + "default_patch_lock": "no_lock", + "failure_description": null, + "from_cache": false, + "graph": "{'nodes': [((('fillcolor', '#FFFFAA'), ('fontsize', 10), ('style', 'filled,dashed')), [('_1', 'hello_world')]), ((('fillcolor', '#AAFFAA'), ('fontsize', 10), ('style', 'filled')), [('_2', 'hello_world-1.0[]')])], 'edges': [((('arrowsize', '0.5'),), [('_1', '_2')])]}", + "host": "arch01", + "implicit_packages": [], + "load_time": 0.0, + "num_loaded_packages": 1, + "os": "arch", + "package_cache_async": true, + "package_caching": true, + "package_filter": [], + "package_orderers": null, + "package_paths": [ + "/tmp/rez_selftest_ec71iu0a/packages" + ], + "package_requests": [ + "hello_world" + ], + "parent_suite_path": null, + "patch_locks": {}, + "platform": "linux", + "requested_timestamp": null, + "resolved_ephemerals": [], + "resolved_packages": [ + { + "key": "filesystem.variant", + "variables": { + "index": null, + "location": "/tmp/rez_selftest_ec71iu0a/packages", + "name": "hello_world", + "repository_type": "filesystem", + "version": "1.0" + } + } + ], + "rez_path": "/home/jcmorin/jcmenv/aswf/rez/src/rez", + "rez_version": "3.1.1", + "serialize_version": "4.8", + "solve_time": 0.00042057037353515625, + "status": "solved", + "suite_context_name": null, + "timestamp": 1729961872, + "user": "jcmorin" +} \ No newline at end of file diff --git a/src/rez/tests/test_context.py b/src/rez/tests/test_context.py index a0f984f71..9c2467c64 100644 --- a/src/rez/tests/test_context.py +++ b/src/rez/tests/test_context.py @@ -129,6 +129,14 @@ def test_serialize(self): env = r2.get_environ() self.assertEqual(env.get("OH_HAI_WORLD"), "hello") + def test_deserialize_older_versions(self): + """Test deserialization of older contexts.""" + baked_contexts_path = self.data_path("contexts") + + for context_file in os.listdir(baked_contexts_path): + # load + _ = ResolvedContext.load(os.path.join(baked_contexts_path, context_file)) + def test_retarget(self): """Test that a retargeted context behaves identically.""" self.inject_python_repo()