slimjs v2.1.4
SlimJS
An Async Node.js SliM server for FitNesse
To use slimjs on an existing FitNesse server:
npm install -g slimjsOn windows there might be an error when java is trying to execute SlimJS even though installed globally. Try to replace COMMAND_PATTERN with an absolute path.
!define COMMAND_PATTERN {node C:\Users\<MY_USER>\AppData\Roaming\npm\node_modules\slimjs\src\SlimJS %p}Create a test page in FitNesse and add this to the top of the page, remember on windows to replace COMMAND_PATTERN with an absolute path if needed:
!define TEST_SYSTEM {slim}
!define COMMAND_PATTERN {SlimJS %p}
!path /Path/To/My/Fixtures
|import |
|my-test-file|
|Hi |
|echo |sayHi? |
|Bob |Hi! Bob |/Path/To/My/Fixtures/my-test-file.js
function Hi(){
this.setEcho = function(str){
this.echo = str;
}
this.sayHi = function(){
return "Hi! " + this.echo;
}
}
module.exports.Hi = Hi;If you want to do something asynchronous, return a thenable (promise):
|script |child_process |
|check |exec |node -v |v5.4.0 |var exec = require('child_process').exec;
function child_process() {
this.exec = function (cmd) {
return {
then:function(fulfill,reject){
exec(cmd, function (err, stdout, stderr) {
if(err)
return reject(err);
fulfill(stdout.trim());
});
}
}
}
}
module.exports.child_process=child_process;Using namespaces:
|eg.Division |
|numerator |denominator |quotient? |
|10 |2 |$result= |
|$result |10 |0.5 |
|12.6 |3 |4.2 |
|100 |4 |25 |var eg={
Division:function(){
var num;
var denom;
this.setNumerator = function(n){
num = n;
}
this.setDenominator = function(n){
denom=n;
}
this.quotient = function(){
return num/denom;
}
}
};
module.exports.eg=eg;Name conversion:
|should I buy milk |
|cash in wallet|credit card|pints of milk remaining|go to store?|
|0 |no |0 |no |
|10 |no |0 |yes |
|0 |yes |0 |yes |
|10 |yes |0 |yes |
|0 |no |1 |no |
|10 |no |1 |no |
|0 |yes |1 |no |
|10 |yes |1 |no |function ShouldIBuyMilk() {
var _dollars;
var _pints;
var _creditCard;
this.setCashInWallet = function(dollars) {
_dollars = dollars;
}
this.setPintsOfMilkRemaining=function(pints) {
_pints = pints;
}
this.setCreditCard = function(valid) {
_creditCard = "yes"===valid;
}
this.goToStore = function() {
var ret=(_pints == 0 && (_dollars > 2 || _creditCard)) ? "yes" : "no";
return ret;
}
}
module.exports.ShouldIBuyMilk=ShouldIBuyMilk;Using JSON
|Json |
|json |X and Y ?|
|{x:1,y:2} |3 |
|{x:'Bar', y:' Baz'}|Bar Baz |function Json(){
this.setJson = function(jsonObject){
this.obj = jsonObject;
}
this.XAndY = function(){
return this.obj.x + this.obj.y;
}
}
module.exports.Json=Json;--
For contributors
I'm working to pass the FitNesse Test Suite for Slim.
- ChainTest - pass
- ChainWithInstanceTest - pass
You can run these test locally here (after you startup): http://localhost:8080/FitNesse.SuiteAcceptanceTests.SuiteSlimTests
To start the environment:
npm install
cd fitnesse
java -jar fitnesse-standalone.jar -p 8080To start the UDP logger (for debugging)
node src/utils/LogUdpServer.jsThanks to:
Tomasz @mrt123. The first user of slimjs and for the async exec example. Gregor Gramlich @ggramlich. For help with the SliM protocol, the PHP implementation and the promise proposal. Christian Gagneraud @chgans. QtSlim
Libraries: json5
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago