Skip to content

Commit ad19b54

Browse files
authored
Add flags to control test generation behavior in verify (#298)
1 parent 2810d15 commit ad19b54

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

src/sinol_make/commands/verify/__init__.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ def configure_subparser(self, subparser):
5050
'This flag will be passed to the run command.')
5151
parsers.add_time_tool_argument(parser)
5252
parsers.add_compilation_arguments(parser)
53+
parser.add_argument('--no-gen', action='store_true', default=False,
54+
help='do not generate tests')
55+
parser.add_argument('--no-ingen', action='store_true', default=False,
56+
help='do not generate input tests')
57+
parser.add_argument('--no-outgen', action='store_true', default=False,
58+
help='do not generate output tests')
5359

5460
def correct_contest_type(self):
5561
if self.args.expected_contest_type is not None:
@@ -151,10 +157,16 @@ def run(self, args: argparse.Namespace):
151157
self.run_stresstests()
152158

153159
# Generate tests
154-
print(util.bold(' Generating tests '.center(util.get_terminal_size()[1], '=')))
155-
gen = GenCommand()
156-
gen.run(self.prepare_args(gen))
157-
self.verify_scores(package_util.get_groups(package_util.get_all_inputs(self.task_id), self.task_id))
160+
if not self.args.no_gen and (not self.args.no_ingen or not self.args.no_outgen):
161+
print(util.bold(' Generating tests '.center(util.get_terminal_size()[1], '=')))
162+
gen = GenCommand()
163+
args = self.prepare_args(gen)
164+
if self.args.no_ingen:
165+
args.only_outputs = True
166+
if self.args.no_outgen:
167+
args.only_inputs = True
168+
gen.run(args)
169+
self.verify_scores(package_util.get_groups(package_util.get_all_inputs(self.task_id), self.task_id))
158170

159171
# Generate problem statements
160172
print(util.bold(' Generating problem statements '.center(util.get_terminal_size()[1], '=')))

tests/commands/verify/test_integration.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,3 +148,29 @@ def test_expected_contest_and_no_scores(capsys, create_package):
148148
assert e.value.code == 1
149149
out = capsys.readouterr().out
150150
assert "Scores are not defined in config.yml." in out
151+
152+
153+
@pytest.mark.parametrize("create_package", [util.get_simple_package_path()], indirect=True)
154+
def test_no_gen_parameters(capsys, create_package):
155+
"""
156+
Test if --no-gen, --no-ingen and --no-outgen flags work correctly.
157+
"""
158+
with pytest.raises(SystemExit) as e:
159+
run(["--no-gen"])
160+
assert e.value.code == 1
161+
out = capsys.readouterr().out
162+
assert "There are no tests to run." in out
163+
assert not os.path.exists(os.path.join(create_package, "in", "abc2a.in"))
164+
assert not os.path.exists(os.path.join(create_package, "out", "abc2a.out"))
165+
166+
with pytest.raises(SystemExit) as e:
167+
run(["--no-outgen"])
168+
assert e.value.code == 1
169+
out = capsys.readouterr().out
170+
assert "There are tests without outputs." in out
171+
assert os.path.exists(os.path.join(create_package, "in", "abc2a.in"))
172+
assert not os.path.exists(os.path.join(create_package, "out", "abc2a.out"))
173+
174+
run(["--no-ingen"])
175+
assert os.path.exists(os.path.join(create_package, "in", "abc2a.in"))
176+
assert os.path.exists(os.path.join(create_package, "out", "abc2a.out"))

0 commit comments

Comments
 (0)