From 406f79507c75c561f5439b5205b9c90bd7f37d85 Mon Sep 17 00:00:00 2001 From: Marko Hauptvogel Date: Mon, 20 Oct 2025 16:24:42 +0200 Subject: [PATCH 1/3] Fix non-local rack pickle path Looks like a copy&paste error from/in 57742dbb. --- tests/definitions_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/definitions_test.py b/tests/definitions_test.py index 51d26e6a54..36f0a1cc12 100644 --- a/tests/definitions_test.py +++ b/tests/definitions_test.py @@ -140,7 +140,7 @@ def test_environment(): repo = Repo.clone_from(url=NETBOX_DT_LIBRARY_URL, to_path=temp_dir.name) KNOWN_SLUGS = pickle_operations.read_pickle_data(f'{temp_dir.name}/tests/known-slugs.pickle') KNOWN_MODULES = pickle_operations.read_pickle_data(f'{temp_dir.name}/tests/known-modules.pickle') - KNOWN_RACKS = pickle_operations.read_pickle_data(f'{ROOT_DIR}/tests/known-racks.pickle') + KNOWN_RACKS = pickle_operations.read_pickle_data(f'{temp_dir.name}/tests/known-racks.pickle') SCHEMA_REGISTRY = _generate_schema_registry() From 6a14811349f8140f174c7ffc837f3067f4da3f22 Mon Sep 17 00:00:00 2001 From: Marko Hauptvogel Date: Mon, 20 Oct 2025 16:24:42 +0200 Subject: [PATCH 2/3] Optimize download Use a partial clone, which is supported in Git since 2.18 (released 2018). The amount of actually downloaded data is roughly equal to the size of the required files, the compression offsets the git overhead. --- tests/definitions_test.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/definitions_test.py b/tests/definitions_test.py index 36f0a1cc12..5342451dd0 100644 --- a/tests/definitions_test.py +++ b/tests/definitions_test.py @@ -136,11 +136,14 @@ def test_environment(): KNOWN_MODULES = pickle_operations.read_pickle_data(f'{ROOT_DIR}/tests/known-modules.pickle') KNOWN_RACKS = pickle_operations.read_pickle_data(f'{ROOT_DIR}/tests/known-racks.pickle') else: - temp_dir = tempfile.TemporaryDirectory() - repo = Repo.clone_from(url=NETBOX_DT_LIBRARY_URL, to_path=temp_dir.name) - KNOWN_SLUGS = pickle_operations.read_pickle_data(f'{temp_dir.name}/tests/known-slugs.pickle') - KNOWN_MODULES = pickle_operations.read_pickle_data(f'{temp_dir.name}/tests/known-modules.pickle') - KNOWN_RACKS = pickle_operations.read_pickle_data(f'{temp_dir.name}/tests/known-racks.pickle') + with tempfile.TemporaryDirectory() as temp_dir, \ + Repo.clone_from(url=NETBOX_DT_LIBRARY_URL, to_path=temp_dir, + depth=1, filter='blob:none', no_checkout=True) as repo \ + : + repo.git.checkout('HEAD', 'tests/*.pickle') + KNOWN_SLUGS = pickle_operations.read_pickle_data(f'{repo.working_dir}/tests/known-slugs.pickle') + KNOWN_MODULES = pickle_operations.read_pickle_data(f'{repo.working_dir}/tests/known-modules.pickle') + KNOWN_RACKS = pickle_operations.read_pickle_data(f'{repo.working_dir}/tests/known-racks.pickle') SCHEMA_REGISTRY = _generate_schema_registry() From a91a9e6a5e1adbd720711ed5131df167bc9ebf99 Mon Sep 17 00:00:00 2001 From: Marko Hauptvogel Date: Mon, 20 Oct 2025 16:24:42 +0200 Subject: [PATCH 3/3] Fallback for old git versions --- tests/definitions_test.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tests/definitions_test.py b/tests/definitions_test.py index 5342451dd0..cbbb6e4928 100644 --- a/tests/definitions_test.py +++ b/tests/definitions_test.py @@ -14,7 +14,7 @@ from referencing import Registry, Resource from jsonschema import Draft202012Validator from jsonschema.exceptions import ValidationError -from git import Repo +from git import Git, Repo def _get_definition_files(): """ @@ -136,9 +136,15 @@ def test_environment(): KNOWN_MODULES = pickle_operations.read_pickle_data(f'{ROOT_DIR}/tests/known-modules.pickle') KNOWN_RACKS = pickle_operations.read_pickle_data(f'{ROOT_DIR}/tests/known-racks.pickle') else: + clone_kwargs = { + 'depth': 1, + 'no-checkout': True, + } + if Git().version_info >= (2, 18): + # partial clone + clone_kwargs['filter'] = 'blob:none' with tempfile.TemporaryDirectory() as temp_dir, \ - Repo.clone_from(url=NETBOX_DT_LIBRARY_URL, to_path=temp_dir, - depth=1, filter='blob:none', no_checkout=True) as repo \ + Repo.clone_from(url=NETBOX_DT_LIBRARY_URL, to_path=temp_dir, **clone_kwargs) as repo \ : repo.git.checkout('HEAD', 'tests/*.pickle') KNOWN_SLUGS = pickle_operations.read_pickle_data(f'{repo.working_dir}/tests/known-slugs.pickle')