44from pathlib import Path
55from typing import TYPE_CHECKING
66
7+ import pytest
8+
79from kmir .__main__ import _kmir_info , _kmir_link , _kmir_prune , _kmir_show
810from kmir .options import InfoOpts , LinkOpts , ProveRSOpts , PruneOpts , ShowOpts
911from kmir .smir import SMIRInfo
1012from kmir .testing .fixtures import assert_or_update_show_output
1113
1214if TYPE_CHECKING :
13- import pytest
1415 from pyk .proof import APRProof
1516
1617 from kmir .kmir import KMIR
@@ -69,12 +70,33 @@ def test_cli_show_printers_snapshot(
6970 )
7071
7172
73+ @pytest .mark .parametrize (
74+ 'src,start_symbol,is_smir' ,
75+ [
76+ pytest .param (
77+ (PROVE_RS_DIR / 'symbolic-args-fail.rs' ),
78+ 'main' ,
79+ False ,
80+ id = 'symbolic-args-fail.main' ,
81+ ),
82+ pytest .param (
83+ (Path (__file__ ).parent / 'data' / 'exec-smir' / 'niche-enum' / 'niche-enum.smir.json' ).resolve (strict = True ),
84+ 'foo' ,
85+ True ,
86+ id = 'niche-enum.smir.foo' ,
87+ ),
88+ ],
89+ )
7290def test_cli_show_statistics_and_leaves (
73- kmir : KMIR , tmp_path : Path , capsys : pytest .CaptureFixture [str ], update_expected_output : bool
91+ src : Path ,
92+ start_symbol : str ,
93+ is_smir : bool ,
94+ kmir : KMIR ,
95+ tmp_path : Path ,
96+ capsys : pytest .CaptureFixture [str ],
97+ update_expected_output : bool ,
7498) -> None :
75- rs_file = PROVE_RS_DIR / 'symbolic-args-fail.rs'
76- start_symbol = 'main'
77- apr_proof = _prove_and_store (kmir , rs_file , tmp_path , start_symbol = start_symbol , is_smir = False )
99+ apr_proof = _prove_and_store (kmir , src , tmp_path , start_symbol = start_symbol , is_smir = is_smir )
78100
79101 show_opts = ShowOpts (
80102 proof_dir = tmp_path ,
@@ -91,7 +113,7 @@ def test_cli_show_statistics_and_leaves(
91113
92114 assert_or_update_show_output (
93115 out ,
94- PROVE_RS_DIR / f'show/{ rs_file .stem } .{ start_symbol } .cli-stats-leaves.expected' ,
116+ PROVE_RS_DIR / f'show/{ src .stem } .{ start_symbol } .cli-stats-leaves.expected' ,
95117 update = update_expected_output ,
96118 )
97119
0 commit comments