c82ae82c989781b24de322644fdcc2400535ba20
[platform/framework/web/crosswalk-tizen.git] /
1 "use strict"
2
3 var test = require('tape')
4 var bl = require('bl')
5 var fs = require('fs')
6
7 var path = require('path')
8 var spawn = require('child_process').spawn
9
10 var npmRun = require('../')
11
12 var level0 = path.join(__dirname, 'fixtures', 'level0')
13 var level1 = path.join(level0, 'node_modules', 'level1')
14 var level2 = path.join(level1, 'node_modules', 'level2')
15
16 var level = [level0, level1, level2]
17
18 var pkg = require('../package.json')
19 var npmRunBin = path.resolve(__dirname, '..', pkg.bin[pkg.name])
20
21 test('bin ok', function(t) {
22   t.ok(npmRunBin)
23   t.ok(fs.existsSync(npmRunBin), 'bin exists: ' + npmRunBin)
24   t.end()
25 })
26
27 test('passing dashed args', function(t) {
28   var child = spawn(
29     npmRunBin,
30     'level1 here -are --some --arguments'.split(' '),
31     {cwd: level[0]}
32   )
33   var stdout = bl(function(err, data) {
34     t.equal(data.toString().trim(), 'level1')
35   })
36   var stderr = bl(function(err, data) {
37     t.equal(data.toString().trim(), 'here -are --some --arguments')
38   })
39   child.stdout.pipe(stdout)
40   child.stderr.pipe(stderr)
41   child.once('error', function(error) {
42     t.fail(error)
43   })
44   child.on('close', function(errCode) {
45     t.equal(errCode, 0)
46     t.end()
47   })
48 })
49
50 test('--version', function(t) {
51   var child = spawn(
52     npmRunBin,
53     '--version'.split(' '),
54     {cwd: level[0]}
55   )
56   var stdout = bl(function(err, data) {
57     t.equal(data.toString().trim(), pkg.version)
58   })
59   var stderr = bl(function(err, data) {
60     t.equal(data.toString().trim(), '')
61   })
62   child.stdout.pipe(stdout)
63   child.stderr.pipe(stderr)
64   child.once('error', function(error) {
65     t.fail(error)
66   })
67   child.on('close', function(errCode) {
68     t.equal(errCode, 0)
69     t.end()
70   })
71 })
72
73
74 test('bin --version', function(t) {
75   var child = spawn(
76     npmRunBin,
77     'level1 --version'.split(' '),
78     {cwd: level[0]}
79   )
80   var stdout = bl(function(err, data) {
81     t.equal(data.toString().trim(), 'level1')
82   })
83   var stderr = bl(function(err, data) {
84     t.equal(data.toString().trim(), '--version')
85   })
86   child.stdout.pipe(stdout)
87   child.stderr.pipe(stderr)
88   child.once('error', function(error) {
89     t.fail(error)
90   })
91   child.on('close', function(errCode) {
92     t.equal(errCode, 0)
93     t.end()
94   })
95 })
96
97 test('--help', function(t) {
98   var child = spawn(
99     npmRunBin,
100     '--help'.split(' '),
101     {cwd: level[0]}
102   )
103   var stdout = bl(function(err, data) {
104     t.ok(data.toString().trim().indexOf('Usage:') !== -1, 'contains usage')
105   })
106   var stderr = bl(function(err, data) {
107     t.equal(data.toString().trim(), '')
108   })
109   child.stdout.pipe(stdout)
110   child.stderr.pipe(stderr)
111   child.once('error', function(error) {
112     t.fail(error)
113   })
114   child.on('close', function(errCode) {
115     t.equal(errCode, 0)
116     t.end()
117   })
118 })
119
120 test('no args', function(t) {
121   var child = spawn(
122     npmRunBin,
123     [],
124     {cwd: level[0]}
125   )
126   var stdout = bl(function(err, data) {
127     t.ok(data.toString().trim().indexOf('Usage:') !== -1, 'contains usage')
128   })
129   var stderr = bl(function(err, data) {
130     t.equal(data.toString().trim(), '')
131   })
132   child.stdout.pipe(stdout)
133   child.stderr.pipe(stderr)
134   child.once('error', function(error) {
135     t.fail(error)
136   })
137   child.on('close', function(errCode) {
138     t.notEqual(errCode, 0)
139     t.end()
140   })
141 })