From 0bb17968a2700ac55dc1b00b130be0db8f8bb8be Mon Sep 17 00:00:00 2001 From: Luciano Mammino Date: Sun, 18 Dec 2016 19:15:10 +0000 Subject: [PATCH] Added tests and travis config --- .travis.yml | 24 ++++++++++++++++++++++++ package.json | 9 ++++++--- test/functional.test.js | 31 +++++++++++++++++++++++++++++++ test/sample.xml | 8 ++++++++ 4 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 .travis.yml create mode 100644 test/functional.test.js create mode 100644 test/sample.xml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..0bb6784 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,24 @@ +language: node_js +node_js: + - "6" + - "5" + - "4" + - "0.12" + - "0.11" + - "0.10" +env: + - CXX=g++-4.8 +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-4.8 +script: + - npm test +install: + - npm install --dev +before_install: + - "npm update -g npm" +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/package.json b/package.json index eca5e4d..9fb176c 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,8 @@ "name": "x2j-cli", "version": "1.0.0", "description": "Node.js command line script to convert xml input into json output (can be piped easily)", - "engines" : { - "node" : ">=0.12" + "engines": { + "node": ">=0.12" }, "main": "index.js", "bin": { @@ -11,7 +11,7 @@ }, "preferGlobal": true, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "tap test/**.test.js" }, "repository": { "type": "git", @@ -25,5 +25,8 @@ "homepage": "https://github.com/lmammino/x2j-cli#readme", "dependencies": { "xml2js": "^0.4.17" + }, + "devDependencies": { + "tap": "^8.0.1" } } diff --git a/test/functional.test.js b/test/functional.test.js new file mode 100644 index 0000000..7f7760d --- /dev/null +++ b/test/functional.test.js @@ -0,0 +1,31 @@ +'use strict'; + +var fs = require('fs'); +var path = require('path'); +var childProcess = require('child_process'); +var tap = require('tap'); + +tap.test( + 'It should get an XML string as stdin and return a JSON string as stdout', + function (t) { + var cmd = 'cat test/sample.xml | node index'; + + childProcess.exec(cmd, function (err, stdout) { + if (err) { + return t.error(err); + } + + var output = JSON.parse(stdout); + t.same(output, { + note: { + to: ['Tove'], + from: ['Jani'], + heading: ['Reminder'], + body: ['Don\'t forget me this weekend!'] + } + }); + + t.end(); + }); + } +); diff --git a/test/sample.xml b/test/sample.xml new file mode 100644 index 0000000..6aea790 --- /dev/null +++ b/test/sample.xml @@ -0,0 +1,8 @@ + + + + Tove + Jani + Reminder + Don't forget me this weekend! +