Skip to content

Commit

Permalink
test: set up ava and move cd.js (#561)
Browse files Browse the repository at this point in the history
* test: set up ava and move cd.js

Set up ava as the new test framework. Migrate the tests for the cd command to
use the ava framework.

* refactor: reorder imports, remove useless dep
  • Loading branch information
nfischer committed Nov 19, 2016
1 parent 12c103f commit 81e2803
Show file tree
Hide file tree
Showing 82 changed files with 475 additions and 94 deletions.
1 change: 1 addition & 0 deletions .eslintignore
@@ -1,3 +1,4 @@
ava-test/resources/
test/resources/
node_modules/
make.js
26 changes: 26 additions & 0 deletions ava-test/.eslintrc.json
@@ -0,0 +1,26 @@
{
"env": {
"node": true
},
"extends": "airbnb-base",
"rules": {
"import/no-mutable-exports": 0,
"global-require": 0,
"vars-on-top": 0,
"spaced-comment": [2, "always", { "markers": ["@", "@include"], "exceptions": ["@"] }],
"no-param-reassign": 0,
"no-console": 0,
"curly": 0,
"no-var": 2,
"prefer-const": 2,
"prefer-template": 0,
"prefer-arrow-callback": 0,
"no-underscore-dangle": 0,
"max-len": 0,
"new-cap": [2, {
"capIsNewExceptions": [
"ShellString"
]}
]
}
}
105 changes: 105 additions & 0 deletions ava-test/cd.js
@@ -0,0 +1,105 @@
import fs from 'fs';
import path from 'path';

import test from 'ava';

import shell from '..';
import common from '../src/common';
import utils from './utils/utils';

const cur = shell.pwd().toString();

test.beforeEach(t => {
t.context.tmp = utils.getTempDir();
shell.config.silent = true;
process.chdir(cur);
shell.mkdir(t.context.tmp);
});

test.afterEach.always(t => {
process.chdir(cur);
shell.rm('-rf', t.context.tmp);
});

//
// Invalids
//

test('nonexistent directory', t => {
t.falsy(fs.existsSync('/asdfasdf'));
const result = shell.cd('/asdfasdf'); // dir does not exist
t.truthy(shell.error());
t.is(result.code, 1);
t.is(result.stderr, 'cd: no such file or directory: /asdfasdf');
});

test('file not dir', t => {
t.truthy(fs.existsSync('resources/file1')); // sanity check
const result = shell.cd('resources/file1'); // file, not dir
t.truthy(shell.error());
t.is(result.code, 1);
t.is(result.stderr, 'cd: not a directory: resources/file1');
});

test('no previous dir', t => {
const result = shell.cd('-'); // Haven't changed yet, so there is no previous directory
t.truthy(shell.error());
t.is(result.code, 1);
t.is(result.stderr, 'cd: could not find previous directory');
});

//
// Valids
//

test('relative path', t => {
const result = shell.cd(t.context.tmp);
t.falsy(shell.error());
t.is(result.code, 0);
t.is(path.basename(process.cwd()), t.context.tmp);
});

test('absolute path', t => {
const result = shell.cd('/');
t.falsy(shell.error());
t.is(result.code, 0);
t.is(process.cwd(), path.resolve('/'));
});

test('previous directory (-)', t => {
shell.cd('/');
const result = shell.cd('-');
t.falsy(shell.error());
t.is(result.code, 0);
t.is(process.cwd(), path.resolve(cur.toString()));
});

test('cd + other commands', t => {
t.falsy(fs.existsSync(`${t.context.tmp}/file1`));
let result = shell.cd('resources');
t.falsy(shell.error());
t.is(result.code, 0);
result = shell.cp('file1', `../${t.context.tmp}`);
t.falsy(shell.error());
t.is(result.code, 0);
result = shell.cd(`../${t.context.tmp}`);
t.falsy(shell.error());
t.is(result.code, 0);
t.truthy(fs.existsSync('file1'));
});

test('Tilde expansion', t => {
shell.cd('~');
t.is(process.cwd(), common.getUserHome());
shell.cd('..');
t.not(process.cwd(), common.getUserHome());
shell.cd('~'); // Change back to home
t.is(process.cwd(), common.getUserHome());
});

test('Goes to home directory if no arguments are passed', t => {
const result = shell.cd();
t.falsy(shell.error());
t.is(result.code, 0);
t.is(process.cwd(), common.getUserHome());
});
11 changes: 11 additions & 0 deletions ava-test/resources/a.txt
@@ -0,0 +1,11 @@
This is line one
This is line two

This is line four
.
.
More content here
.
.

This is line eleven
1 change: 1 addition & 0 deletions ava-test/resources/badlink
1 change: 1 addition & 0 deletions ava-test/resources/cat/file1
@@ -0,0 +1 @@
test1
1 change: 1 addition & 0 deletions ava-test/resources/cat/file2
@@ -0,0 +1 @@
test2
Empty file.
Empty file.
Empty file.
2 changes: 2 additions & 0 deletions ava-test/resources/chmod/file1
@@ -0,0 +1,2 @@
this is test file 1
default state should be 0644 (rw-r--r--)
1 change: 1 addition & 0 deletions ava-test/resources/chmod/xdir/deep/file
@@ -0,0 +1 @@
a file
1 change: 1 addition & 0 deletions ava-test/resources/chmod/xdir/file
@@ -0,0 +1 @@
a file
1 change: 1 addition & 0 deletions ava-test/resources/cp-mode-bits/executable
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/cp/a
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/cp/b
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/cp/dir_a/z
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/cp/dir_b/dir_b_a/dir_b_a_a/z
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/cp/fakeLinks/file.txt
@@ -0,0 +1 @@
This is a file
1 change: 1 addition & 0 deletions ava-test/resources/cp/fakeLinks/sym.lnk
@@ -0,0 +1 @@
This is not a link
1 change: 1 addition & 0 deletions ava-test/resources/cp/links/file.txt
@@ -0,0 +1 @@
This is a file
1 change: 1 addition & 0 deletions ava-test/resources/cp/links/sym.lnk
1 change: 1 addition & 0 deletions ava-test/resources/cp/symFolder
4 changes: 4 additions & 0 deletions ava-test/resources/exec/slow.js
@@ -0,0 +1,4 @@
#!/usr/bin/env node
setTimeout(function() {
console.log('slow');
}, parseInt(process.argv[2], 10));
2 changes: 2 additions & 0 deletions ava-test/resources/external/node_script.js
@@ -0,0 +1,2 @@
console.log('node_script_1234');

1 change: 1 addition & 0 deletions ava-test/resources/file1
@@ -0,0 +1 @@
test1
1 change: 1 addition & 0 deletions ava-test/resources/file1.js
@@ -0,0 +1 @@
test
1 change: 1 addition & 0 deletions ava-test/resources/file1.txt
@@ -0,0 +1 @@
test1
1 change: 1 addition & 0 deletions ava-test/resources/file2
@@ -0,0 +1 @@
test2
1 change: 1 addition & 0 deletions ava-test/resources/file2.js
@@ -0,0 +1 @@
test
1 change: 1 addition & 0 deletions ava-test/resources/file2.txt
@@ -0,0 +1 @@
test2
1 change: 1 addition & 0 deletions ava-test/resources/find/.hidden
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/find/a
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/find/b
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/find/broken_link
1 change: 1 addition & 0 deletions ava-test/resources/find/dir1/a_dir1
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/find/dir1/dir11/a_dir11
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/find/dir2/a_dir1
@@ -0,0 +1 @@
asdf
5 changes: 5 additions & 0 deletions ava-test/resources/grep/file
@@ -0,0 +1,5 @@
alphaaaaaaabeta
howareyou
alphbeta
this line ends in.js
lllllllllllllllll.js
50 changes: 50 additions & 0 deletions ava-test/resources/head/file1.txt
@@ -0,0 +1,50 @@
file1 1
file1 2
file1 3
file1 4
file1 5
file1 6
file1 7
file1 8
file1 9
file1 10
file1 11
file1 12
file1 13
file1 14
file1 15
file1 16
file1 17
file1 18
file1 19
file1 20
file1 21
file1 22
file1 23
file1 24
file1 25
file1 26
file1 27
file1 28
file1 29
file1 30
file1 31
file1 32
file1 33
file1 34
file1 35
file1 36
file1 37
file1 38
file1 39
file1 40
file1 41
file1 42
file1 43
file1 44
file1 45
file1 46
file1 47
file1 48
file1 49
file1 50
50 changes: 50 additions & 0 deletions ava-test/resources/head/file2.txt
@@ -0,0 +1,50 @@
file2 1
file2 2
file2 3
file2 4
file2 5
file2 6
file2 7
file2 8
file2 9
file2 10
file2 11
file2 12
file2 13
file2 14
file2 15
file2 16
file2 17
file2 18
file2 19
file2 20
file2 21
file2 22
file2 23
file2 24
file2 25
file2 26
file2 27
file2 28
file2 29
file2 30
file2 31
file2 32
file2 33
file2 34
file2 35
file2 36
file2 37
file2 38
file2 39
file2 40
file2 41
file2 42
file2 43
file2 44
file2 45
file2 46
file2 47
file2 48
file2 49
file2 50
1 change: 1 addition & 0 deletions ava-test/resources/head/shortfile1
@@ -0,0 +1 @@
short1
1 change: 1 addition & 0 deletions ava-test/resources/head/shortfile2
@@ -0,0 +1 @@
short2
1 change: 1 addition & 0 deletions ava-test/resources/issue44/main.js
@@ -0,0 +1 @@
123
1 change: 1 addition & 0 deletions ava-test/resources/link
1 change: 1 addition & 0 deletions ava-test/resources/ls/.hidden_dir/nada
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/ls/.hidden_file
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/ls/a_dir/.hidden_dir/nada
@@ -0,0 +1 @@
nada
1 change: 1 addition & 0 deletions ava-test/resources/ls/a_dir/b_dir/z
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/ls/a_dir/nada
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/ls/file1
@@ -0,0 +1 @@
test
1 change: 1 addition & 0 deletions ava-test/resources/ls/file1.js
@@ -0,0 +1 @@
test
1 change: 1 addition & 0 deletions ava-test/resources/ls/file2
@@ -0,0 +1 @@
test
1 change: 1 addition & 0 deletions ava-test/resources/ls/file2.js
@@ -0,0 +1 @@
test
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/pushd/a/dummy
@@ -0,0 +1 @@
meh
1 change: 1 addition & 0 deletions ava-test/resources/pushd/b/c/dummy
@@ -0,0 +1 @@
meh
1 change: 1 addition & 0 deletions ava-test/resources/rm/a_dir/a_file
@@ -0,0 +1 @@
asdf
1 change: 1 addition & 0 deletions ava-test/resources/rm/fake.lnk
1 change: 1 addition & 0 deletions ava-test/resources/rm/link_to_a_dir
2 changes: 2 additions & 0 deletions ava-test/resources/shjs/a-file.js
@@ -0,0 +1,2 @@
console.log('OK!');
process.exit(0);
2 changes: 2 additions & 0 deletions ava-test/resources/shjs/coffeescript.coffee
@@ -0,0 +1,2 @@
msg = 'CoffeeScript: OK!'
console.log msg
1 change: 1 addition & 0 deletions ava-test/resources/shjs/exit-0.js
@@ -0,0 +1 @@
process.exit(0);
1 change: 1 addition & 0 deletions ava-test/resources/shjs/exit-codes.js
@@ -0,0 +1 @@
process.exit(42);
2 changes: 2 additions & 0 deletions ava-test/resources/shjs/stdout-stderr.js
@@ -0,0 +1,2 @@
console.log('stdout: OK!');
console.error('stderr: OK!');

0 comments on commit 81e2803

Please sign in to comment.