Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions src/sinol_make/commands/verify/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ def configure_subparser(self, subparser):
'This flag will be passed to the run command.')
parsers.add_time_tool_argument(parser)
parsers.add_compilation_arguments(parser)
parser.add_argument('--no-gen', action='store_true', default=False,
help='do not generate tests')
parser.add_argument('--no-ingen', action='store_true', default=False,
help='do not generate input tests')
parser.add_argument('--no-outgen', action='store_true', default=False,
help='do not generate output tests')

def correct_contest_type(self):
if self.args.expected_contest_type is not None:
Expand Down Expand Up @@ -151,10 +157,16 @@ def run(self, args: argparse.Namespace):
self.run_stresstests()

# Generate tests
print(util.bold(' Generating tests '.center(util.get_terminal_size()[1], '=')))
gen = GenCommand()
gen.run(self.prepare_args(gen))
self.verify_scores(package_util.get_groups(package_util.get_all_inputs(self.task_id), self.task_id))
if not self.args.no_gen and (not self.args.no_ingen or not self.args.no_outgen):
print(util.bold(' Generating tests '.center(util.get_terminal_size()[1], '=')))
gen = GenCommand()
args = self.prepare_args(gen)
if self.args.no_ingen:
args.only_outputs = True
if self.args.no_outgen:
args.only_inputs = True
gen.run(args)
self.verify_scores(package_util.get_groups(package_util.get_all_inputs(self.task_id), self.task_id))

# Generate problem statements
print(util.bold(' Generating problem statements '.center(util.get_terminal_size()[1], '=')))
Expand Down
26 changes: 26 additions & 0 deletions tests/commands/verify/test_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,3 +148,29 @@ def test_expected_contest_and_no_scores(capsys, create_package):
assert e.value.code == 1
out = capsys.readouterr().out
assert "Scores are not defined in config.yml." in out


@pytest.mark.parametrize("create_package", [util.get_simple_package_path()], indirect=True)
def test_no_gen_parameters(capsys, create_package):
"""
Test if --no-gen, --no-ingen and --no-outgen flags work correctly.
"""
with pytest.raises(SystemExit) as e:
run(["--no-gen"])
assert e.value.code == 1
out = capsys.readouterr().out
assert "There are no tests to run." in out
assert not os.path.exists(os.path.join(create_package, "in", "abc2a.in"))
assert not os.path.exists(os.path.join(create_package, "out", "abc2a.out"))

with pytest.raises(SystemExit) as e:
run(["--no-outgen"])
assert e.value.code == 1
out = capsys.readouterr().out
assert "There are tests without outputs." in out
assert os.path.exists(os.path.join(create_package, "in", "abc2a.in"))
assert not os.path.exists(os.path.join(create_package, "out", "abc2a.out"))

run(["--no-ingen"])
assert os.path.exists(os.path.join(create_package, "in", "abc2a.in"))
assert os.path.exists(os.path.join(create_package, "out", "abc2a.out"))
Loading