Skip to content
41 changes: 23 additions & 18 deletions bin/program.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ def get_exe(command: str) -> str:
assert isinstance(key, str)
warn(f"found unknown languages.yaml key: '{key}' for '{lang_id}'")

def __lt__(self, other: "Language") -> bool:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why/where do we need < on languages?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we do a sort on all candidates in line 295

return self.id > other.id

# Returns true when file f matches the shebang regex.
def matches_shebang(self, f: Path) -> bool:
if self.shebang is None:
Expand All @@ -81,25 +84,27 @@ def command_is_exe(command: Optional[str]) -> bool:
return bool(command and command[0] != "{")


CHECKTESTDATA: Final[Language] = Language(
"BAPCtools:checktestdata",
{
"name": "Checktestdata",
"priority": 1,
"files": "*.ctd",
"run": "checktestdata {mainfile}",
},
)
VIVA: Final[Language] = Language(
"BAPCtools:checktestdata",
{
"name": "Checktestdata",
"priority": 1,
"files": "*.ctd",
"run": "checktestdata {mainfile}",
},
)
EXTRA_LANGUAGES: Final[Sequence[Language]] = [
Language(
"checktestdata",
{
"name": "Checktestdata",
"priority": 1,
"files": "*.ctd",
"run": "checktestdata {mainfile}",
},
),
Language(
"viva",
{
"name": "Viva",
"priority": 2,
"files": "*.viva",
"run": "java -jar {viva_jar} {mainfile}",
},
),
CHECKTESTDATA,
VIVA,
Language(
"manual",
{
Expand Down
9 changes: 6 additions & 3 deletions bin/validate.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ class Validator(program.Program):
ExecResult.status == ExecStatus.REJECTED if the validator rejected.
"""

FORMAT_VALIDATOR_LANGUAGES: Final[Sequence[str]] = ["checktestdata", "viva"]
FORMAT_VALIDATOR_LANGUAGES: Final[Sequence[program.Language]] = [
program.CHECKTESTDATA,
program.VIVA,
]

def __repr__(self):
return type(self).__name__ + ": " + str(self.path)
Expand Down Expand Up @@ -173,7 +176,7 @@ def format_exec_code_map(returncode):
return ExecStatus.TIMEOUT
return ExecStatus.ERROR

if self.language == "checktestdata":
if self.language == program.CHECKTESTDATA:
with main_path.open("rb") as main_file:
return self._exec_command(
self.run_command,
Expand All @@ -182,7 +185,7 @@ def format_exec_code_map(returncode):
cwd=cwd,
)

if self.language == "viva":
if self.language == program.VIVA:
# Called as `viva validator.viva testcase.in`.
result = self._exec_command(
self.run_command + [main_path.absolute()],
Expand Down
Loading