1- import os
21import sys
2+ import toml
33
4+ from pathlib import Path
45import pytest
5-
6- setuptools_file = os . path . join ( os . getcwd (), "src" , "scyjava" , "_version.py" )
6+ import scyjava
7+ from scyjava . _version import _find_version
78
89
910def _scyjava_version ():
1011 """
1112 Get ScyJava's version.
1213 """
13- import scyjava
14-
15- # It's important that we clear the cache here,
16- # so that we can test different behaviors.
17- scyjava .___version__ .cache_clear ()
18- # Get the version
19- return scyjava .__version__
20-
14+ pyproject = toml .load (Path (__file__ ).parents [1 ] / "pyproject.toml" )
15+ return pyproject ["project" ]["version" ]
2116
22- def test_version_file ():
23- """Ensures that, ideally, the version from setuptools_scm is used"""
24- # Get the version from setuptools_scm
25- from setuptools_scm import get_version
2617
27- setuptools_version = get_version (write_to = "src/scyjava/_version.py" )
28- # Ensure that the version was written to file
29- assert os .path .isfile (setuptools_file )
30- # Ensure that scyjava.__version__ matches this.
31- assert _scyjava_version () == setuptools_version
32- # Cleanup - remove file
33- os .remove (setuptools_file )
34- assert not os .path .isfile (setuptools_file )
18+ def test_version_dunder ():
19+ """
20+ Ensures that the dunder variable matches _scyjava_version
21+ """
22+ assert scyjava .__version__ == _scyjava_version ()
3523
3624
3725@pytest .mark .skipif (sys .version_info < (3 , 8 ), reason = "Requires Python >= 3.8" )
@@ -43,9 +31,8 @@ def test_version_importlib():
4331 # Remove scyjava.version
4432 sys .modules ["scyjava.version" ] = None
4533 # Ensure scyjava.__version__ matches importlib.metadata.version()
46- from importlib .metadata import version
4734
48- assert _scyjava_version () == version ( "scyjava" )
35+ assert _scyjava_version () == _find_version ( )
4936
5037
5138@pytest .mark .skipif (
@@ -57,30 +44,25 @@ def test_version_pkg_resources():
5744 importlib.metadata unavailable,
5845 pkg_resources is used next.
5946 """
60- # Remove scyjava.version
61- sys .modules ["scyjava.version" ] = None
6247 # Remove importlib.metadata
6348 sys .modules ["importlib.metadata" ] = None
6449 # Ensure scyjava.__version__ matches
6550 # pkg_resources.get_distribution().version
66- from pkg_resources import get_distribution
6751
68- assert _scyjava_version () == get_distribution ( "scyjava" ). version
52+ assert _scyjava_version () == _find_version ()
6953
7054
7155def test_version_unvailable ():
7256 """
7357 Ensures that no version is returned if none of these
7458 strategies works.
7559 """
76- # Remove scyjava.version
77- sys .modules ["scyjava.version" ] = None
7860 # Remove importlib.metadata
7961 sys .modules ["importlib.metadata" ] = None
8062 # Remove pkg_resources
8163 sys .modules ["pkg_resources" ] = None
8264 # Ensure scyjava.__version__ is an error message.
8365 assert (
84- _scyjava_version ()
85- == "Cannot determine version! Ensure pkg_resources is installed!"
66+ "Cannot determine version! Ensure pkg_resources is installed!"
67+ == _find_version ()
8668 )
0 commit comments