-
Notifications
You must be signed in to change notification settings - Fork 78
Testing
Testing in DeepForge is currently done using mocha and can be run using
npm test
During development, I recommend using nodemon. nodemon
is a utility to execute some given command whenever certain files change. That is, running the following command from the DeepForge root:
nodemon -w src -w test --exec npm test
will result in the tests being automatically run whenever a src or test file is updated (saved). nodemon can be installed from npm with
npm install -g nodemon`
Also, make sure that you have the most up to date version of webgme-cli
:
npm install -g webgme-cli
Plugins are generally tested by
- loading a given seed
- running the plugin with some given config
- testing either the...
- updated model
- generated plugin artifacts.
Almost all plugins are run on the devTests
seed. Most plugins create read from test/test-cases
or are given a list of test cases and generate the tests on the fly. For example, in the GenerateArchitecture
plugin, we can find a variation of the below code snippet:
describe('test cases', function() {
var cases = [
['/4', 'basic.lua'],
['/T', 'basic-transfers.lua'],
['/W', 'overfeat.lua']
// etc
];
var runTest = function(pair, done) {
var id = pair[0], // node path to run plugin on
name = pair[1]; // filename to look up and compare output to
// omitted for simplicity in this example.
};
// Creates each test case!
cases.forEach(pair => {
it(`should correctly evaluate ${pair[0]} (${pair[1]})`,
runTest.bind(this, pair));
});
});
In this code snippet, additional test cases can be added by adding another nodePath-filename "tuple" to the cases
array. This results in another test being created in the cases.forEach...
portion at the bottom of the snippet. The runTest
method will then
- find the node (by it's path) in the
devTests
seed - run the plugin on the given node
- get the generated code and compare it with
test-cases/generated-code/FILENAME
- where
FILENAME
is the second element in the given test case pair
- where
It is worth noting that, when adding new test cases, you will often need to add new nodes to the devTests
seed. This can be done as follows:
From the browser (dev mode):
- Click on the logo in the top left
- Select "New Project"
- Type "devTests" (and enter)
- Select the seed
devTests
- Click "Create"
Now you have loaded the devTests seed and can add nodes as desired. Once you have made your given edits and want to use them in the tests, run webgme new seed devTests
from the DeepForge root.
Intro
Development
Design Notes