mirror of
https://github.com/shelljs/shelljs.git
synced 2026-01-18 16:03:37 +00:00
test: refactor tail tests to AVA (#601)
This commit is contained in:
parent
1cdb051876
commit
ef68bd32af
133
ava-test/tail.js
Normal file
133
ava-test/tail.js
Normal file
@ -0,0 +1,133 @@
|
||||
import fs from 'fs';
|
||||
|
||||
import test from 'ava';
|
||||
|
||||
import shell from '..';
|
||||
|
||||
shell.config.silent = true;
|
||||
|
||||
//
|
||||
// Invalids
|
||||
//
|
||||
|
||||
test('no args', t => {
|
||||
const result = shell.tail();
|
||||
t.truthy(shell.error());
|
||||
t.is(result.code, 1);
|
||||
});
|
||||
|
||||
test('file does not exist', t => {
|
||||
t.falsy(fs.existsSync('/asdfasdf')); // sanity check
|
||||
const result = shell.tail('/adsfasdf');
|
||||
t.truthy(shell.error());
|
||||
t.is(result.code, 1);
|
||||
});
|
||||
|
||||
//
|
||||
// Valids
|
||||
//
|
||||
|
||||
const bottomOfFile1 = ['file1 50', 'file1 49', 'file1 48', 'file1 47', 'file1 46',
|
||||
'file1 45', 'file1 44', 'file1 43', 'file1 42', 'file1 41',
|
||||
'file1 40', 'file1 39', 'file1 38', 'file1 37', 'file1 36',
|
||||
'file1 35', 'file1 34', 'file1 33', 'file1 32', 'file1 31'];
|
||||
const bottomOfFile2 = ['file2 50', 'file2 49', 'file2 48', 'file2 47', 'file2 46',
|
||||
'file2 45', 'file2 44', 'file2 43', 'file2 42', 'file2 41',
|
||||
'file2 40', 'file2 39', 'file2 38', 'file2 37', 'file2 36',
|
||||
'file2 35', 'file2 34', 'file2 33', 'file2 32', 'file2 31'];
|
||||
|
||||
test('simple', t => {
|
||||
const result = shell.tail('resources/head/file1.txt');
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(), bottomOfFile1.slice(0, 10).reverse().join('\n') + '\n');
|
||||
});
|
||||
|
||||
test('multiple files', t => {
|
||||
const result = shell.tail('resources/head/file2.txt', 'resources/head/file1.txt');
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(),
|
||||
bottomOfFile2
|
||||
.slice(0, 10)
|
||||
.reverse()
|
||||
.concat(bottomOfFile1.slice(0, 10).reverse())
|
||||
.join('\n') + '\n');
|
||||
});
|
||||
|
||||
test('multiple files, array syntax', t => {
|
||||
const result = shell.tail(['resources/head/file2.txt', 'resources/head/file1.txt']);
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(),
|
||||
bottomOfFile2
|
||||
.slice(0, 10)
|
||||
.reverse()
|
||||
.concat(bottomOfFile1.slice(0, 10).reverse())
|
||||
.join('\n') + '\n');
|
||||
});
|
||||
|
||||
test('reading more lines than are in the file (no trailing newline)', t => {
|
||||
const result = shell.tail('resources/file2', 'resources/file1');
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(), 'test2\ntest1'); // these files only have one line (no \n)
|
||||
});
|
||||
|
||||
test('reading more lines than are in the file (with trailing newline)', t => {
|
||||
const result = shell.tail('resources/head/shortfile2', 'resources/head/shortfile1');
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(), 'short2\nshort1\n'); // these files only have one line (with \n)
|
||||
});
|
||||
|
||||
test('Globbed file', t => {
|
||||
const result = shell.tail('resources/head/file?.txt');
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(),
|
||||
bottomOfFile1
|
||||
.slice(0, 10)
|
||||
.reverse()
|
||||
.concat(bottomOfFile2.slice(0, 10).reverse())
|
||||
.join('\n') + '\n');
|
||||
});
|
||||
|
||||
test('With `\'-n\' <num>` option', t => {
|
||||
const result = shell.tail('-n', 4, 'resources/head/file2.txt',
|
||||
'resources/head/file1.txt');
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(),
|
||||
bottomOfFile2
|
||||
.slice(0, 4)
|
||||
.reverse()
|
||||
.concat(bottomOfFile1.slice(0, 4).reverse())
|
||||
.join('\n') + '\n');
|
||||
});
|
||||
|
||||
test('With `{\'-n\': <num>}` option', t => {
|
||||
const result = shell.tail({ '-n': 4 }, 'resources/head/file2.txt',
|
||||
'resources/head/file1.txt');
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(),
|
||||
bottomOfFile2
|
||||
.slice(0, 4)
|
||||
.reverse()
|
||||
.concat(bottomOfFile1.slice(0, 4).reverse())
|
||||
.join('\n') + '\n');
|
||||
});
|
||||
|
||||
test('negative values are the same as positive values', t => {
|
||||
const result = shell.tail('-n', -4, 'resources/head/file2.txt',
|
||||
'resources/head/file1.txt');
|
||||
t.falsy(shell.error());
|
||||
t.is(result.code, 0);
|
||||
t.is(result.toString(),
|
||||
bottomOfFile2
|
||||
.slice(0, 4)
|
||||
.reverse()
|
||||
.concat(bottomOfFile1.slice(0, 4).reverse())
|
||||
.join('\n') + '\n');
|
||||
});
|
||||
105
test/tail.js
105
test/tail.js
@ -1,105 +0,0 @@
|
||||
var shell = require('..');
|
||||
|
||||
var assert = require('assert');
|
||||
var fs = require('fs');
|
||||
|
||||
shell.config.silent = true;
|
||||
|
||||
shell.rm('-rf', 'tmp');
|
||||
shell.mkdir('tmp');
|
||||
|
||||
var result;
|
||||
|
||||
//
|
||||
// Invalids
|
||||
//
|
||||
|
||||
result = shell.tail();
|
||||
assert.ok(shell.error());
|
||||
assert.equal(result.code, 1);
|
||||
|
||||
assert.equal(fs.existsSync('/asdfasdf'), false); // sanity check
|
||||
result = shell.tail('/adsfasdf'); // file does not exist
|
||||
assert.ok(shell.error());
|
||||
assert.equal(result.code, 1);
|
||||
|
||||
//
|
||||
// Valids
|
||||
//
|
||||
|
||||
var bottomOfFile1 = ['file1 50', 'file1 49', 'file1 48', 'file1 47', 'file1 46',
|
||||
'file1 45', 'file1 44', 'file1 43', 'file1 42', 'file1 41',
|
||||
'file1 40', 'file1 39', 'file1 38', 'file1 37', 'file1 36',
|
||||
'file1 35', 'file1 34', 'file1 33', 'file1 32', 'file1 31'];
|
||||
var bottomOfFile2 = ['file2 50', 'file2 49', 'file2 48', 'file2 47', 'file2 46',
|
||||
'file2 45', 'file2 44', 'file2 43', 'file2 42', 'file2 41',
|
||||
'file2 40', 'file2 39', 'file2 38', 'file2 37', 'file2 36',
|
||||
'file2 35', 'file2 34', 'file2 33', 'file2 32', 'file2 31'];
|
||||
|
||||
// simple
|
||||
result = shell.tail('resources/head/file1.txt');
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, bottomOfFile1.slice(0, 10).reverse().join('\n') + '\n');
|
||||
|
||||
// multiple files
|
||||
result = shell.tail('resources/head/file2.txt', 'resources/head/file1.txt');
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, bottomOfFile2.slice(0, 10).reverse().concat(
|
||||
bottomOfFile1.slice(0, 10).reverse()
|
||||
).join('\n') + '\n');
|
||||
|
||||
// multiple files, array syntax
|
||||
result = shell.tail(['resources/head/file2.txt', 'resources/head/file1.txt']);
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, bottomOfFile2.slice(0, 10).reverse().concat(
|
||||
bottomOfFile1.slice(0, 10).reverse()
|
||||
).join('\n') + '\n');
|
||||
|
||||
// reading more lines than are in the file (no trailing newline)
|
||||
result = shell.tail('resources/file2', 'resources/file1');
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, 'test2\ntest1'); // these files only have one line (no \n)
|
||||
|
||||
// reading more lines than are in the file (with trailing newline)
|
||||
result = shell.tail('resources/head/shortfile2', 'resources/head/shortfile1');
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, 'short2\nshort1\n'); // these files only have one line (with \n)
|
||||
|
||||
// Globbed file
|
||||
result = shell.tail('resources/head/file?.txt');
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, bottomOfFile1.slice(0, 10).reverse().concat(
|
||||
bottomOfFile2.slice(0, 10).reverse()
|
||||
).join('\n') + '\n');
|
||||
|
||||
// With `'-n' <num>` option
|
||||
result = shell.tail('-n', 4, 'resources/head/file2.txt', 'resources/head/file1.txt');
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, bottomOfFile2.slice(0, 4).reverse().concat(
|
||||
bottomOfFile1.slice(0, 4).reverse()
|
||||
).join('\n') + '\n');
|
||||
|
||||
// With `{'-n': <num>}` option
|
||||
result = shell.tail({ '-n': 4 }, 'resources/head/file2.txt', 'resources/head/file1.txt');
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, bottomOfFile2.slice(0, 4).reverse().concat(
|
||||
bottomOfFile1.slice(0, 4).reverse()
|
||||
).join('\n') + '\n');
|
||||
|
||||
// negative values are the same as positive values
|
||||
result = shell.tail('-n', -4, 'resources/head/file2.txt', 'resources/head/file1.txt');
|
||||
assert.equal(shell.error(), null);
|
||||
assert.equal(result.code, 0);
|
||||
assert.equal(result, bottomOfFile2.slice(0, 4).reverse().concat(
|
||||
bottomOfFile1.slice(0, 4).reverse()
|
||||
).join('\n') + '\n');
|
||||
|
||||
shell.exit(123);
|
||||
Loading…
x
Reference in New Issue
Block a user