Example: the
manifest.json
file for Java/JUnit looks like this:
{
"image_name": "cyberdojofoundation/java_junit:97411ac",
"display_name": "Java, JUnit",
"visible_filenames": [
"Hiker.java",
"HikerTest.java",
"cyber-dojo.sh"
],
"filename_extension": [ ".java" ],
"max_seconds": 10,
"tab_size": 4,
"progress_regexs" : [
"Tests run\\: (\\d)+,(\\s)+Failures\\: (\\d)+",
"OK \\((\\d)+ test(s)?\\)"
]
}
Required entries
"image_name": string
The name of the docker image used to run a container in which
cyber-dojo.sh
is executed.
Do
not include any version numbers (eg of the compiler or test-framework).
The docker image must (currently) contain a file called red_amber_green.rb in the /usr/local/bin directory.
The
runner service uses this to determine the
traffic-light colour of
each test run outcome. For example, here's the one for
Java-JUnit.
"display_name": string
The name as it appears in the start-point setup pages.
For example, "Java, JUnit" means that "Java, JUnit" will appear as a selectable entry.
A single string typically with the major name first, then a comma, then the minor name.
"visible_filenames": [ string, string, ... ]
Filenames that will be visible in the browser's editor when an animal initially enter's a cyber-dojo.
Each of these files must be a plain text file and exist in the manifest.json's directory.
Filenames can be in nested sub-directories, eg
"tests/HikerTest.java"
.
Must include
"cyber-dojo.sh"
.
This is because
cyber-dojo.sh
is the name
of the shell file assumed by the runner to be the start
point for running the tests. You can write any actions inside
cyber-dojo.sh
but clearly any programs it tries to run must be installed in the docker image_name.
For example, if
cyber-dojo.sh
runs
gcc
to compile C files then
gcc
has
to be installed. If
cyber-dojo.sh
runs
javac
to compile java files then
javac
has to be installed.
"filename_extension": [ string, string, ... ]
The extensions of source files.
The first entry is also used when creating a new filename.
Must be non-empty.
"tab_size": int
The number of spaces a tab character expands to in the editor.
Must be an integer between 1 and 12.
Optional entries
"progress_regexs": [ string, string ]
Used on the dashboard to show the test output line (which often
contains the number of passing and failing tests) of each animal's
most recent
red/
green
traffic light. Useful when your practice
session starts from a large number of pre-written tests and
you wish to monitor the progress of each animal.
An array of two strings used to create Ruby regexs.
The first one to match a
red traffic light's
test output, and the second one to match a
green traffic light's
test output.
Defaults to [ ].
"highlight_filenames": [ string, string, ... ]
Filenames whose appearance is highlighted in the browser.
This can be useful if you have many
"visible_filenames"
and want
to mark which files form the focus of the practice.
An array of strings. A strict subset of
"visible_filenames"
.
Defaults to [ ].
"hidden_filenames": [ string, string, ... ]
cyber-dojo.sh may create extra files (eg profiling stats).
All text-files created under /sandbox are returned to the browser
unless their name matches any of these string regexs.
An array of strings used to create Ruby regexs, used by cyber-dojo, like this
Regexp.new(string)
.
For example, to hide files ending in .d you can use the following string
".*\\.d"
Defaults to [ ].
DEPRECATED. Instead, inside cyber-dojo.sh, use a trap handler to delete unwanted files.
For example here's one for
Ruby, Approval.
"max_seconds": int
The maximum number of seconds
cyber-dojo.sh
has to complete.
Your test run can time out for two very different reasons:
- you have an infinite loop in your code or tests.
In this case a lower max_seconds value is better.
- the servers are experiencing heavy load.
In this case a higher max_seconds value is better.
In general, infinite loops are rare, so prefer higher values.
An integer between 1 and 20.
Defaults to 10.
DEPRECATED.