cyber-dojo start-points manifest.json entries explained

Example: the manifest.json file for Java/JUnit looks like this:

{ "display_name": "Java, JUnit", "visible_filenames": [ "Hiker.java", "HikerTest.java", "cyber-dojo.sh" ], "image_name": "cyberdojofoundation/java_junit", "runner_choice": "stateless", "filename_extension": ".java", "tab_size": 4, "progress_regexs" : [ "Tests run\\: (\\d)+,(\\s)+Failures\\: (\\d)+", "OK \\((\\d)+ test(s)?\\)" ] }



Required entries


"display_name": string

The name as it appears in the start-point setup pages where you select your language and test-framework. For example, "Java, JUnit" means that "Java, JUnit" will appear as a selectable entry. A single string 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 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.


"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 contain a file called red_amber_green.rb in the /usr/local/bin directory. The runner uses this to determine the traffic-light colour of each test run outcome. For example, here's the one for Java-JUnit.


"runner_choice": string

The string "stateless" or "stateful". Each test run is handled by either the stateless-runner or the stateful-runner. The stateless runner does not maintain state between test runs, the stateful runner does. In other words, when using the stateless runner the binary files produced by your cyber-dojo.sh script (eg .o files created from .c files via a makefile) do not exist at the start of the next test run. With the stateful runner, they do. Use the stateless runner unless you can gain a significant speed up with the stateful runner (which requires extra disk-space and cpu from the host server).


"filename_extension": [ string, string, ... ]

The extensions of filenames that identify source files which are listed above the 'output' file in the filename list. The first entry is also used when creating a new filename. For example, if set to ".java" the new filename will be filename.java. If you only have a single filename extension you can use a single string instead of an array containing a single string.


Optional entries


"max_seconds": int

The maximum number of seconds cyber-dojo.sh has to complete the tests. Cannot be greater than 20.
Defaults to 10.


"tab_size": int

The number of spaces a tab character expands to in the browser's textarea editor.
Defaults to 4.


"hidden_filenames": [ string, string, ... ]

An array of regexs. When the runner runs cyber-dojo.sh, it it often creates files. All text-files that are created are returned to the browser unless their name matches any of the string regexs.
Defaults to [ ].


"progress_regexs": [ string, string ]

An array of two 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. 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.
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. A strict subset of "visible_filenames".
Defaults to [ ].

No comments:

Post a Comment