1818from pathlib import Path
1919from unittest .mock import MagicMock as Mock , mock_open , patch
2020
21- import pytest
22-
21+ from click .testing import Result
2322from typer .testing import CliRunner
2423from AutoGitSemVer import GetSemanticVersionResult
2524from AutoGitSemVer .scripts .UpdatePythonVersion import app
2625
2726
2827# ----------------------------------------------------------------------
29- def test_Default ():
28+ def test_Python ():
3029 _Execute (
3130 textwrap .dedent (
3231 """\
@@ -46,7 +45,7 @@ def test_Default():
4645
4746
4847# ----------------------------------------------------------------------
49- def test_NoVersion ():
48+ def test_NoPythonVersion ():
5049 _Execute (
5150 textwrap .dedent (
5251 """\
@@ -58,15 +57,63 @@ def test_NoVersion():
5857 )
5958
6059
60+ # ----------------------------------------------------------------------
61+ def test_Toml ():
62+ _Execute (
63+ textwrap .dedent (
64+ """\
65+ # Line Before
66+ version = ""
67+ # Line After
68+ """ ,
69+ ),
70+ textwrap .dedent (
71+ """\
72+ # Line Before
73+ version = "1.2.3"
74+ # Line After
75+ """ ,
76+ ),
77+ file_extension = ".toml" ,
78+ )
79+
80+
81+ # ----------------------------------------------------------------------
82+ def test_NoTomlVersion ():
83+ _Execute (
84+ textwrap .dedent (
85+ """\
86+ # No version in this file
87+ """ ,
88+ ),
89+ "" ,
90+ file_extension = ".toml" ,
91+ expected_failure = True ,
92+ )
93+
94+
95+ # ----------------------------------------------------------------------
96+ def test_UnsupportedFileType ():
97+ result = _Execute (
98+ "" ,
99+ "" ,
100+ file_extension = ".md" ,
101+ expected_failure = True ,
102+ )
103+ exception_message = str (result .exception )
104+ assert "README.md' is not a recognized file type." in exception_message
105+
106+
61107# ----------------------------------------------------------------------
62108# ----------------------------------------------------------------------
63109# ----------------------------------------------------------------------
64110def _Execute (
65111 original : str ,
66112 expected : str ,
67113 * ,
114+ file_extension : str = ".py" ,
68115 expected_failure : bool = False ,
69- ) -> str :
116+ ) -> Result :
70117 # ----------------------------------------------------------------------
71118 def MyWrite (value ):
72119 assert value == expected
@@ -86,11 +133,20 @@ def MyWrite(value):
86133 ),
87134 patch .object (Path , "open" , file_mock ),
88135 ):
89- result = CliRunner ().invoke (app , [__file__ ])
136+ if file_extension == ".py" :
137+ placeholder_filename = Path (__file__ )
138+ elif file_extension == ".toml" :
139+ placeholder_filename = Path (__file__ ).parent .parent .parent / "pyproject.toml"
140+ elif file_extension == ".md" :
141+ placeholder_filename = Path (__file__ ).parent .parent .parent / "README.md"
142+ else :
143+ assert False , file_extension
144+
145+ result = CliRunner ().invoke (app , [str (placeholder_filename )])
90146
91147 if expected_failure :
92- assert result .exit_code != 0
148+ assert result .exit_code != 0 , result . output
93149 else :
94- assert result .exit_code == 0
150+ assert result .exit_code == 0 , result . output
95151
96- return result . output
152+ return result
0 commit comments