Hello, it’s Sylvie. Maria, or MarIA if you prefer, is my Marmoset Information Area.
Right now the main purpose of this area is to host files and documentation for Marisa, my Marmoset script library and project template. It might be expanded with more general Marmoset information in the future.
About Marisa
Marisa, or MarISA if you prefer, is a template to help ISAs create Marmoset projects for C++ programming questions. The template comes with a library of Bash scripts to help with common tasks you often want to do in Marmoset test scripts.
Though it’s designed for C++, some features could be useful for Marmoset projects that accept other languages. You would need to replace the scripts that perform compilation and execution. I would like to eventually add Racket support so I can use Marisa in CS241, but I don’t have plans for further languages (for now). If you want me to add support for a language or help you add support for a language, I can look into it.
Marisa currently provides the following:
- A test script template for basic C++ testing involving standard I/O.
- A local-testing script that runs the all tests in the project locally for debugging purposes. The tests are run in a temporary directory so your project directory doesn’t get messed up by temporary test files.
- Packaging scripts to automatically generate boilerplate files and copy the project to the course testing account, letting you keep the project directory minimal and clean, and push changes quickly.
- A build script that checks the student submitted the required files and compiles them, with some support for allowing students to split their code up among arbitrary files.
- Features for disallowing students from including certain headers, using certain C library functions, or using certain language keywords. (These are a bit clunky currently. I’ve been finding that these problems are hard to solve in a robust way.)
- A runner script with configurable resource limits (time, heap memory, output file size), Valgrind support for checking memory errors, and an attempt at correct error handling for the various different exit codes C++ programs tend to spit out.
- A general library of useful variables and functions for writing test scripts and other Marmoset project scripts. It makes it easy access to values from the test.properties file, names of required files, names of test cases, and test-specific filenames and settings.
- Some effort was put into security concerns (preventing students from cheating to pass the tests, stealing confidential information such as hidden test cases, or wreaking havoc on the test servers). But I cannot guarantee anything.
Downloading and Using Marisa
The current version of Marisa is v0.9.4 (Beta). Download it below:
Marisa_v0.9.4.zip
Keep in mind this is a “Beta” and needs more testing. My hopes are that it will be a smooth experience to use, but you might run into some very confusing bugs if the more complex parts of the library break down. Don’t hesitate to ask me about anything strange that happens.
Soon (before version 1.0.0) I’d like to put this in a Git repository, but for now, it’s only available as a zip file download.