From ef68bd32afd0e06f85a69b033f24b902355a66c7 Mon Sep 17 00:00:00 2001 From: Nate Fischer Date: Thu, 8 Dec 2016 21:36:09 -0800 Subject: [PATCH] test: refactor tail tests to AVA (#601) --- ava-test/tail.js | 133 +++++++++++++++++++++++++++++++++++++++++++++++ test/tail.js | 105 ------------------------------------- 2 files changed, 133 insertions(+), 105 deletions(-) create mode 100644 ava-test/tail.js delete mode 100644 test/tail.js diff --git a/ava-test/tail.js b/ava-test/tail.js new file mode 100644 index 0000000..1ec7dd8 --- /dev/null +++ b/ava-test/tail.js @@ -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\' ` 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\': }` 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'); +}); diff --git a/test/tail.js b/test/tail.js deleted file mode 100644 index 1aa077e..0000000 --- a/test/tail.js +++ /dev/null @@ -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' ` 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': }` 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);