Name: command-shell-lib
Owner: Telefónica I+D
Description: The target of this module is to ease the creation of command line testing applications
Created: 2015-04-28 14:08:32.0
Updated: 2017-04-22 03:35:21.0
Pushed: 2017-09-14 09:08:06.0
Homepage: null
Size: 37
Language: JavaScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
The target o this application is to ease the creation of command line interpreters for testing utililities. It makes use of the functionalities of Node.js Readline library, adding the following features:
In order to use the library, you have to require it, as usual, and initialize it:
clUtils = require('command-node');
]
ils.initialize(commands, 'App Tester> ');
The initialize()
function receives two parameters:
The library usage is based on the definition of a commands
object, that is passed in the initialization of the library. This object contains a description of each of the commands you want to be able to execute. E.g.:
commands = {
'create': {
parameters: ['objectUri', 'objectValue'],
description: '\tCreate a new object. The object is specified using the /type/id OMA notation.',
handler: function() {}
}
};
This definition includes:
Shows the prompt in the standard output. It should be used once the command has stopped sending information to the output. You should also remember to use the prompt after showing information asynchronously (like an asynchronous response from a server) to avoid the user entering information in a blank line.
Closes the resources of the interpreter.
Generic handler showing a “Not Implemented” message, available for developing new commands.
Changes the writer object of the interpreter (where the interpreter writes its information). Mostly for testing purposes. An example of use is available in the test files.
The project is managed using Grunt Task Runner.
For a list of available task, type
t --help
The following sections show the available options in detail.
Mocha Test Runner + Chai Assertion Library + Sinon Spies, stubs.
The test environment is preconfigured to run BDD testing style with
chai.expect
and chai.should()
available globally while executing tests, as well as the Sinon-Chai plugin.
Module mocking during testing can be done with proxyquire
To run tests, type
t test
Tests reports can be used together with Jenkins to monitor project quality metrics by means of TAP or XUnit plugins.
To generate TAP report in report/test/unit_tests.tap
, type
t test-report
jshint, gjslint
Uses provided .jshintrc and .gjslintrc flag files. The latter requires Python and its use can be disabled while creating the project skeleton with grunt-init. To check source code style, type
t lint
Checkstyle reports can be used together with Jenkins to monitor project quality metrics by means of Checkstyle
and Violations plugins.
To generate Checkstyle and JSLint reports under report/lint/
, type
t lint-report
Support for continuous testing by modifying a src file or a test. For continuous testing, type
t watch
dox-foundation
Generates HTML documentation under site/doc/
. It can be used together with jenkins by means of DocLinks plugin.
For compiling source code documentation, type
t doc
Istanbul
Analizes the code coverage of your tests.
To generate an HTML coverage report under site/coverage/
and to print out a summary, type
e git-bash on Windows
t coverage
To generate a Cobertura report in report/coverage/cobertura-coverage.xml
that can be used together with Jenkins to
monitor project quality metrics by means of Cobertura plugin, type
e git-bash on Windows
t coverage-report
Plato
Analizes code complexity using Plato and stores the report under site/report/
. It can be used together with jenkins
by means of DocLinks plugin.
For complexity report, type
t complexity
Update the contributors for the project
t contributors
Initialize your environment with git hooks.
t init-dev-env
We strongly suggest you to make an automatic execution of this task for every developer simply by adding the following
lines to your package.json
cripts": {
"postinstall": "grunt init-dev-env"
There is a grunt task to generate the GitHub pages of the project, publishing also coverage, complexity and JSDocs pages. In order to initialize the GitHub pages, use:
t init-pages
This will also create a site folder under the root of your repository. This site folder is detached from your repository's history, and associated to the gh-pages branch, created for publishing. This initialization action should be done only once in the project history. Once the site has been initialized, publish with the following command:
t site
This command will only work after the developer has executed init-dev-env (that's the goal that will create the detached site).
This command will also launch the coverage, doc and complexity task (see in the above sections).