88# '
99# '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
1010
11-
1211from __future__ import annotations
1312
1413import importlib
14+ import json
15+ import re
1516from pathlib import Path
1617
1718import pytest
1819import yaml
19- from packaging .version import InvalidVersion , Version
20+ from packaging .version import Version
2021
2122import simpeg_drivers
2223
2324
24- def get_conda_recipe_version ():
25+ def _get_json_version () -> str :
26+ version_json_path = Path (__file__ ).resolve ().parents [1 ] / "_version.json"
27+ with version_json_path .open (encoding = "utf-8" ) as file :
28+ version_json = json .load (file )
29+ return version_json ["version" ]
30+
31+
32+ def _get_conda_recipe_version_def () -> str :
2533 recipe_path = Path (__file__ ).resolve ().parents [1 ] / "recipe.yaml"
2634
2735 with recipe_path .open (encoding = "utf-8" ) as file :
2836 recipe = yaml .safe_load (file )
2937 return recipe ["context" ]["version" ]
3038
3139
32- def test_version_is_consistent ():
33- project_version = Version (simpeg_drivers .__version__ )
34- conda_version = Version (get_conda_recipe_version ())
35- assert conda_version .base_version == project_version .base_version
36-
37-
3840def _version_module_exists ():
3941 try :
4042 importlib .import_module ("simpeg_drivers._version" )
@@ -43,6 +45,16 @@ def _version_module_exists():
4345 return False
4446
4547
48+ def test_conda_recipe_version_loads_json ():
49+ conda_version_def = _get_conda_recipe_version_def ()
50+ regex = (
51+ r"\$\{\{\s*load_from_file\(\s*['\"](_version\.json)['\"]\s*\)"
52+ r"\s*\.version\b.*\}\}"
53+ )
54+ regex_match = re .match (regex , conda_version_def )
55+ assert regex_match is not None
56+
57+
4658@pytest .mark .skipif (
4759 _version_module_exists (),
4860 reason = "simpeg_drivers._version can be found: package is built" ,
@@ -60,28 +72,7 @@ def test_fallback_version_is_zero():
6072 not _version_module_exists (),
6173 reason = "simpeg_drivers._version cannot be found: uses a fallback version" ,
6274)
63- def test_conda_version_is_consistent ():
75+ def test_version_json_is_consistent ():
6476 project_version = Version (simpeg_drivers .__version__ )
65- conda_version = Version (get_conda_recipe_version ())
66-
67- assert conda_version .is_devrelease == project_version .is_devrelease
68- assert conda_version .is_prerelease == project_version .is_prerelease
69- assert conda_version .is_postrelease == project_version .is_postrelease
70- assert conda_version == project_version
71-
72-
73- def test_conda_version_is_pep440 ():
74- version = Version (get_conda_recipe_version ())
75- assert version is not None
76-
77-
78- def validate_version (version_str ):
79- try :
80- version = Version (version_str )
81- return (version .major , version .minor , version .micro , version .pre , version .post )
82- except InvalidVersion :
83- return None
84-
85-
86- def test_version_is_valid ():
87- assert validate_version (simpeg_drivers .__version__ ) is not None
77+ json_version = Version (_get_json_version ())
78+ assert project_version == json_version
0 commit comments