99from fedora_revdep_check import main , FedoraRevDepChecker
1010
1111
12+ class TestReleasever :
13+ """Test --releasever CLI argument and auto-detection logic."""
14+
15+ def test_releasever_passed_to_checker (self , monkeypatch , mock_dnf_base ):
16+ """Test that --releasever CLI arg is passed through to FedoraRevDepChecker."""
17+ monkeypatch .setattr ('sys.argv' , ['fedora-revdep-check' , 'pytest' , '8.0.0' , '--releasever' , '44' ])
18+
19+ captured_releasever = []
20+ original_init = FedoraRevDepChecker .__init__
21+
22+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
23+ captured_releasever .append (releasever )
24+ original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos , releasever = releasever )
25+
26+ monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
27+ main ()
28+
29+ assert captured_releasever == ['44' ]
30+
31+ def test_releasever_none_when_not_specified (self , monkeypatch , mock_dnf_base ):
32+ """Test that releasever is None when --releasever is not passed."""
33+ monkeypatch .setattr ('sys.argv' , ['fedora-revdep-check' , 'pytest' , '8.0.0' ])
34+
35+ captured_releasever = []
36+ original_init = FedoraRevDepChecker .__init__
37+
38+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
39+ captured_releasever .append (releasever )
40+ original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos , releasever = releasever )
41+
42+ monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
43+ main ()
44+
45+ assert captured_releasever == [None ]
46+
47+ def test_releasever_rawhide (self , monkeypatch , mock_dnf_base ):
48+ """Test that --releasever accepts 'rawhide'."""
49+ monkeypatch .setattr ('sys.argv' , ['fedora-revdep-check' , 'pytest' , '8.0.0' , '--releasever' , 'rawhide' ])
50+
51+ captured_releasever = []
52+ original_init = FedoraRevDepChecker .__init__
53+
54+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
55+ captured_releasever .append (releasever )
56+ original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos , releasever = releasever )
57+
58+ monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
59+ main ()
60+
61+ assert captured_releasever == ['rawhide' ]
62+
63+ def test_releasever_stored_on_instance (self , mock_dnf_base ):
64+ """Test that releasever is stored on the checker instance."""
65+ checker = FedoraRevDepChecker (verbose = False , base = mock_dnf_base , releasever = '42' )
66+ assert checker .releasever == '42'
67+
68+ def test_releasever_default_is_none (self , mock_dnf_base ):
69+ """Test that releasever defaults to None."""
70+ checker = FedoraRevDepChecker (verbose = False , base = mock_dnf_base )
71+ assert checker .releasever is None
72+
73+
1274class TestFullWorkflow :
1375 """Test complete CLI workflow through main() function."""
1476
@@ -19,8 +81,8 @@ def test_main_with_conflicts_exit_code_one(self, monkeypatch, jupyterlab_base, c
1981 # Mock FedoraRevDepChecker to use test base
2082 original_init = FedoraRevDepChecker .__init__
2183
22- def mock_init (self , verbose = False , base = None , repos = None ):
23- original_init (self , verbose = verbose , base = jupyterlab_base if base is None else base , repos = repos )
84+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
85+ original_init (self , verbose = verbose , base = jupyterlab_base if base is None else base , repos = repos , releasever = releasever )
2486
2587 monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
2688
@@ -40,8 +102,8 @@ def test_main_verbose_flag(self, monkeypatch, mock_pytest_base, capsys):
40102
41103 original_init = FedoraRevDepChecker .__init__
42104
43- def mock_init (self , verbose = False , base = None , repos = None ):
44- original_init (self , verbose = verbose , base = mock_pytest_base if base is None else base , repos = repos )
105+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
106+ original_init (self , verbose = verbose , base = mock_pytest_base if base is None else base , repos = repos , releasever = releasever )
45107
46108 monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
47109
@@ -58,8 +120,8 @@ def test_main_nonexistent_package(self, monkeypatch, mock_dnf_base, capsys):
58120
59121 original_init = FedoraRevDepChecker .__init__
60122
61- def mock_init (self , verbose = False , base = None , repos = None ):
62- original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos )
123+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
124+ original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos , releasever = releasever )
63125
64126 monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
65127
@@ -77,7 +139,7 @@ def test_main_exception_handling(self, monkeypatch, capsys):
77139 monkeypatch .setattr ('sys.argv' , ['fedora-revdep-check' , 'test' , '1.0.0' ])
78140
79141 # Mock FedoraRevDepChecker to raise an exception
80- def mock_init (self , verbose = False , base = None , repos = None ):
142+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
81143 raise RuntimeError ("Test error message" )
82144
83145 monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
@@ -96,8 +158,8 @@ def test_main_output_format_consistency(self, monkeypatch, jupyterlab_base, caps
96158
97159 original_init = FedoraRevDepChecker .__init__
98160
99- def mock_init (self , verbose = False , base = None , repos = None ):
100- original_init (self , verbose = verbose , base = jupyterlab_base if base is None else base , repos = repos )
161+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
162+ original_init (self , verbose = verbose , base = jupyterlab_base if base is None else base , repos = repos , releasever = releasever )
101163
102164 monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
103165
@@ -118,8 +180,8 @@ def test_main_deterministic_output(self, monkeypatch, jupyterlab_base):
118180
119181 original_init = FedoraRevDepChecker .__init__
120182
121- def mock_init (self , verbose = False , base = None , repos = None ):
122- original_init (self , verbose = verbose , base = jupyterlab_base if base is None else base , repos = repos )
183+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
184+ original_init (self , verbose = verbose , base = jupyterlab_base if base is None else base , repos = repos , releasever = releasever )
123185
124186 monkeypatch .setattr (FedoraRevDepChecker , '__init__' , mock_init )
125187
@@ -147,8 +209,8 @@ def test_main_exit_code_zero_for_already_broken_only(self, monkeypatch, mock_dnf
147209
148210 original_init = FedoraRevDepChecker .__init__
149211
150- def mock_init (self , verbose = False , base = None , repos = None ):
151- original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos )
212+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
213+ original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos , releasever = releasever )
152214
153215 def mock_simulate (self , srpm_name , new_version ):
154216 return {
@@ -185,8 +247,8 @@ def test_main_exit_code_one_for_mixed_conflicts(self, monkeypatch, mock_dnf_base
185247
186248 original_init = FedoraRevDepChecker .__init__
187249
188- def mock_init (self , verbose = False , base = None , repos = None ):
189- original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos )
250+ def mock_init (self , verbose = False , base = None , repos = None , releasever = None ):
251+ original_init (self , verbose = verbose , base = mock_dnf_base if base is None else base , repos = repos , releasever = releasever )
190252
191253 # Mock simulate_version_change to return mixed conflicts
192254 def mock_simulate (self , srpm_name , new_version ):
0 commit comments