Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
7cd1eff
Add support for `input_files`
niknetniko Feb 15, 2026
8e520f3
Fix tests
niknetniko Feb 15, 2026
2b86791
Revert "Merge pull request #615 from dodona-edu/fix/revert-input-chan…
niknetniko Feb 19, 2026
a618c05
Maintain coercion in deprecation handlers
niknetniko Feb 19, 2026
eeb981e
Escape URL
niknetniko Feb 26, 2026
f5ec20f
Fix HTML generation
niknetniko Feb 26, 2026
106a5e8
Fix bug in sorting
niknetniko Feb 26, 2026
8d08974
Fix another edge case
niknetniko Feb 26, 2026
b12e29e
Implement file oracles
niknetniko Feb 26, 2026
48635da
Update DSL
niknetniko Feb 26, 2026
36d2ea9
Linting and typing
niknetniko Feb 26, 2026
9cb191f
Add some utilities
niknetniko Feb 28, 2026
b33d61d
Always use filename as channel
niknetniko Feb 28, 2026
2d7c580
Take files into account in execution planning
niknetniko Feb 28, 2026
f532d78
Do not add message if no files
niknetniko Feb 28, 2026
a14b75c
Add some tests
niknetniko Feb 28, 2026
68bc9d3
Add more tests
niknetniko Feb 28, 2026
2700b68
Tweak test
niknetniko Feb 28, 2026
fefe6b1
Test and fix custom checks with files
niknetniko Feb 28, 2026
1b8f351
Merge pull request #616 from dodona-edu/feature/stdin-yet-again
niknetniko Feb 28, 2026
315d324
Merge branch 'files-features' into input-files
niknetniko Feb 28, 2026
5ca5a06
Merge pull request #614 from dodona-edu/input-files
niknetniko Feb 28, 2026
355c9ab
Better deprecation messages
niknetniko Mar 5, 2026
5817cb7
Pass index
niknetniko Mar 5, 2026
a2b7294
Improve error message
niknetniko Mar 5, 2026
c0ab7d8
Remove unused import
niknetniko Mar 5, 2026
125f8ad
Fix typo
niknetniko Mar 5, 2026
aebc0bc
Fix wrong assert
niknetniko Mar 5, 2026
de3615a
Fix typo
niknetniko Mar 5, 2026
915748c
Temp
niknetniko Mar 5, 2026
027e30d
Fix potential future bug
niknetniko Mar 5, 2026
375f988
Merge branch 'master' into files-features
niknetniko Mar 5, 2026
ec3beb0
Merge branch 'files-features' into output-files
niknetniko Mar 5, 2026
b05a68b
Do some more tweaks
niknetniko Mar 5, 2026
dd0657c
Remove misleading comment
niknetniko Mar 5, 2026
4cf4b28
Add some more tests and be stricter
niknetniko Mar 5, 2026
00174a5
Merge pull request #618 from dodona-edu/output-files
niknetniko Mar 5, 2026
63d6d69
Validate conflicting file uses
niknetniko Mar 8, 2026
c3f4e01
Fix bug in stdin description generation
niknetniko Mar 8, 2026
b34d834
Fix nested paths in dynamic files
niknetniko Mar 8, 2026
9651ac7
Fix unrelated bug
niknetniko Mar 8, 2026
c0a45fd
Fix some edge cases and add tests
niknetniko Mar 8, 2026
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
2 changes: 1 addition & 1 deletion tested/configs.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class Options:
"""


@fallback_field(get_converter(), {"testplan": "test_suite", "plan_name": "test_suite"})
@fallback_field({"testplan": "test_suite", "plan_name": "test_suite"})
@define
class DodonaConfig:
resources: Path
Expand Down
170 changes: 165 additions & 5 deletions tested/dsl/schema-strict.json
Original file line number Diff line number Diff line change
Expand Up @@ -276,11 +276,18 @@
},
"stdin" : {
"description" : "Stdin for this context",
"type" : [
"string",
"number",
"integer",
"boolean"
"oneOf" : [
{
"type" : [
"string",
"number",
"integer",
"boolean"
]
},
{
"$ref": "#/definitions/fileData"
}
]
},
"arguments" : {
Expand Down Expand Up @@ -336,11 +343,18 @@
]
},
"files" : {
"description" : "Deprecated: use input_files instead.",
"type" : "array",
"items" : {
"$ref" : "#/definitions/file"
}
},
"input_files": {
"type": "array",
"items": {
"$ref": "#/definitions/fileDataRequiredPath"
}
},
"return" : {
"description" : "Expected return value",
"$ref" : "#/definitions/returnOutputChannel"
Expand All @@ -354,6 +368,10 @@
"$ref" : "#/definitions/textOutputChannel"
},
"file": {
"description" : "Deprecated: use output_files instead.",
"$ref" : "#/definitions/fileOutputChannel"
},
"output_files": {
"description" : "Expected files generated by the submission.",
"$ref" : "#/definitions/fileOutputChannel"
},
Expand Down Expand Up @@ -598,6 +616,35 @@
}
}
},
{
"type" : "object",
"description" : "Built-in oracle for files.",
"required" : [
"data"
],
"properties" : {
"data" : {
"type" : "array",
"description" : "Files to expect.",
"items" : {
"$ref" : "#/definitions/fileDataFullyRequired"
}
},
"oracle" : {
"const" : "builtin"
},
"config" : {
"$ref" : "#/definitions/fileConfigurationOptions"
}
}
},
{
"type" : "array",
"description" : "Built-in oracle for files.",
"items" : {
"$ref" : "#/definitions/fileDataFullyRequired"
}
},
{
"type" : "object",
"description" : "Custom oracle for file values.",
Expand Down Expand Up @@ -643,6 +690,49 @@
}
}
}
},
{
"type" : "object",
"description" : "Custom oracle for file values.",
"required" : [
"oracle",
"data"
],
"properties" : {
"oracle" : {
"const" : "custom_check"
},
"data" : {
"type" : "array",
"description" : "Files to expect.",
"items" : {
"$ref" : "#/definitions/fileDataFullyRequired"
}
},
"file" : {
"type" : "string",
"description" : "The path to the file containing the custom check function."
},
"name" : {
"type" : "string",
"description" : "The name of the custom check function.",
"default" : "evaluate"
},
"arguments" : {
"type" : "array",
"description" : "List of YAML (or tagged expression) values to use as arguments to the function.",
"items" : {
"$ref" : "#/definitions/yamlValueOrPythonExpression"
}
},
"languages": {
"type" : "array",
"description" : "Which programming languages are supported by this oracle.",
"items" : {
"$ref" : "#/definitions/programmingLanguage"
}
}
}
}
]
},
Expand Down Expand Up @@ -890,6 +980,76 @@
"$ref" : "#/definitions/fileConfigurationOptions"
}
}
},
"fileData": {
"type": "object",
"additionalProperties" : false,
"anyOf" : [
{
"required" : [
"content"
]
},
{
"required" : [
"path"
]
}
],
"properties": {
"content": {
"type": [
"string",
"path"
],
"description" : "Content of the file, which will be provided inline or written to disk in the workdir. If a !path, the file contents will be read from the provided path."
},
"path": {
"type": "string",
"description" : "Path to the file, relative to the workdir. Used to display in the output."
}
}
},
"fileDataRequiredPath": {
"type": "object",
"additionalProperties" : false,
"required" : [
"path"
],
"properties": {
"content": {
"type": [
"string",
"path"
],
"description" : "Content of the file, which will be provided inline or written to disk in the workdir. If a !path, the file contents will be read from the provided path."
},
"path": {
"type": "string",
"description" : "Path to the file, relative to the workdir. Used to display in the output."
}
}
},
"fileDataFullyRequired": {
"type": "object",
"additionalProperties" : false,
"required" : [
"path",
"content"
],
"properties": {
"content": {
"type": [
"string",
"path"
],
"description" : "Content of the file, which will be provided inline or written to disk in the workdir. If a !path, the file contents will be read from the provided path."
},
"path": {
"type": "string",
"description" : "Path to the file, relative to the workdir. Used to display in the output."
}
}
}
}
}
Loading