44import pytest
55
66import gardenlinux .features .__main__ as fema
7- from gardenlinux .features import CName
7+ from gardenlinux .features import CName , Parser
8+
9+ from ..constants import GL_ROOT_DIR
810
911# -------------------------------
1012# Helper function tests
@@ -148,7 +150,16 @@ def test_main_prints_arch(monkeypatch, capsys):
148150
149151def test_main_prints_container_name (monkeypatch , capsys ):
150152 # Arrange
151- argv = ["prog" , "--arch" , "amd64" , "--cname" , "container-pythonDev" , "--version" , "1.0" , "container_name" ]
153+ argv = [
154+ "prog" ,
155+ "--arch" ,
156+ "amd64" ,
157+ "--cname" ,
158+ "container-pythonDev" ,
159+ "--version" ,
160+ "1.0" ,
161+ "container_name" ,
162+ ]
152163 monkeypatch .setattr (sys , "argv" , argv )
153164 monkeypatch .setattr (fema , "Parser" , lambda * a , ** kw : None )
154165
@@ -160,6 +171,31 @@ def test_main_prints_container_name(monkeypatch, capsys):
160171 assert "container-python-dev" in out
161172
162173
174+ def test_main_prints_container_tag (monkeypatch , capsys ):
175+ # Arrange
176+ argv = [
177+ "prog" ,
178+ "--arch" ,
179+ "amd64" ,
180+ "--cname" ,
181+ "flav" ,
182+ "--version" ,
183+ "1.0" ,
184+ "--commit" ,
185+ "~post1" ,
186+ "container_tag" ,
187+ ]
188+ monkeypatch .setattr (sys , "argv" , argv )
189+ monkeypatch .setattr (fema , "Parser" , lambda * a , ** kw : None )
190+
191+ # Act
192+ fema .main ()
193+
194+ # Assert
195+ out = capsys .readouterr ().out .strip ()
196+ assert "1-0-post1" == out
197+
198+
163199def test_main_prints_commit_id (monkeypatch , capsys ):
164200 # Arrange
165201 argv = ["prog" , "--arch" , "amd64" , "--cname" , "flav" , "commit_id" ]
@@ -252,14 +288,49 @@ def test_main_prints_version_and_commit_id(monkeypatch, capsys):
252288 assert "1.2.3-abcdef12" == captured .out .strip ()
253289
254290
255- def test_main_arch_raises_missing_verison (monkeypatch , capsys ):
291+ def test_main_requires_cname (monkeypatch ):
292+ # Arrange
293+ monkeypatch .setattr (sys , "argv" , ["prog" , "arch" ])
294+ monkeypatch .setattr (fema , "Parser" , lambda * a , ** kw : None )
295+
296+ # Act / Assert
297+ with pytest .raises (SystemExit ):
298+ fema .main ()
299+
300+
301+ def test_main_raises_no_arch_no_default (monkeypatch ):
302+ # Arrange
303+ # args.type == 'cname, arch is None and no default_arch set
304+ argv = ["prog" , "--cname" , "flav" , "cname" ]
305+ monkeypatch .setattr (sys , "argv" , argv )
306+ monkeypatch .setattr (
307+ fema ,
308+ "Parser" ,
309+ lambda * a , ** kw : types .SimpleNamespace (filter = lambda * a , ** k : None ),
310+ )
311+
312+ # Act / Assert
313+ with pytest .raises (RuntimeError , match = "Architecture could not be determined" ):
314+ fema .main ()
315+
316+
317+ def test_main_raises_missing_commit_id (monkeypatch , capsys ):
256318 # Arrange
257- argv = ["prog" , "--arch" , "amd64" , "--cname" , "flav" , "arch" ]
319+ argv = [
320+ "prog" ,
321+ "--arch" ,
322+ "amd64" ,
323+ "--cname" ,
324+ "flav" ,
325+ "--version" ,
326+ "1.0" ,
327+ "version_and_commit_id" ,
328+ ]
258329 monkeypatch .setattr (sys , "argv" , argv )
259330 monkeypatch .setattr (fema , "Parser" , lambda * a , ** kw : None )
260331
261332 # Act / Assert
262- with pytest .raises (RuntimeError ):
333+ with pytest .raises (RuntimeError , match = "Commit ID not specified" ):
263334 fema .main ()
264335
265336
@@ -302,27 +373,71 @@ def sort_subset(subset, length):
302373 assert "flav" in captured .out
303374
304375
305- def test_main_requires_cname (monkeypatch ):
376+ def test_main_with_exclude_cname_print_elements (monkeypatch , capsys ):
306377 # Arrange
307- monkeypatch .setattr (sys , "argv" , ["prog" , "arch" ])
308- monkeypatch .setattr (fema , "Parser" , lambda * a , ** kw : None )
378+ monkeypatch .setattr (
379+ sys ,
380+ "argv" ,
381+ [
382+ "prog" ,
383+ "--feature-dir" ,
384+ f"{ GL_ROOT_DIR } /features" ,
385+ "--cname" ,
386+ "kvm-gardener_prod" ,
387+ "--ignore" ,
388+ "cloud" ,
389+ "--arch" ,
390+ "amd64" ,
391+ "--version" ,
392+ "local" ,
393+ "--commit" ,
394+ "today" ,
395+ "elements" ,
396+ ],
397+ )
309398
310- # Act / Assert
311- with pytest .raises (SystemExit ):
312- fema .main ()
399+ # Act
400+ fema .main ()
401+
402+ # Assert
403+ captured = capsys .readouterr ().out .strip ()
313404
405+ assert (
406+ "log,sap,ssh,base,server,gardener"
407+ == captured
408+ )
314409
315- def test_main_raises_no_arch_no_default (monkeypatch ):
410+
411+ def test_main_with_exclude_cname_print_features (monkeypatch , capsys ):
316412 # Arrange
317- # args.type == 'cname, arch is None and no default_arch set
318- argv = ["prog" , "--cname" , "flav" , "cname" ]
319- monkeypatch .setattr (sys , "argv" , argv )
320413 monkeypatch .setattr (
321- fema ,
322- "Parser" ,
323- lambda * a , ** kw : types .SimpleNamespace (filter = lambda * a , ** k : None ),
414+ sys ,
415+ "argv" ,
416+ [
417+ "prog" ,
418+ "--feature-dir" ,
419+ f"{ GL_ROOT_DIR } /features" ,
420+ "--cname" ,
421+ "kvm-gardener_prod" ,
422+ "--ignore" ,
423+ "cloud" ,
424+ "--arch" ,
425+ "amd64" ,
426+ "--version" ,
427+ "local" ,
428+ "--commit" ,
429+ "today" ,
430+ "features" ,
431+ ],
324432 )
325433
326- # Act / Assert
327- with pytest .raises (RuntimeError , match = "Architecture could not be determined" ):
328- fema .main ()
434+ # Act
435+ fema .main ()
436+
437+ # Assert
438+ captured = capsys .readouterr ().out .strip ()
439+
440+ assert (
441+ "log,sap,ssh,_boot,_ignite,kvm,_nopkg,_prod,_slim,base,server,gardener"
442+ == captured
443+ )
0 commit comments