mirror of https://github.com/lukechilds/ava.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.0 KiB
84 lines
2.0 KiB
'use strict';
|
|
const fs = require('fs');
|
|
const tempWrite = require('temp-write');
|
|
const chalk = require('chalk');
|
|
const test = require('tap').test;
|
|
const codeExcerpt = require('../lib/code-excerpt');
|
|
|
|
chalk.enabled = true;
|
|
|
|
test('read code excerpt', t => {
|
|
const file = tempWrite.sync([
|
|
'function a() {',
|
|
'\talert();',
|
|
'}'
|
|
].join('\n'));
|
|
|
|
const excerpt = codeExcerpt({file, line: 2, isWithinProject: true, isDependency: false});
|
|
const expected = [
|
|
` ${chalk.grey('1:')} function a() {`,
|
|
chalk.bgRed(` 2: alert(); `),
|
|
` ${chalk.grey('3:')} } `
|
|
].join('\n');
|
|
|
|
t.is(excerpt, expected);
|
|
t.end();
|
|
});
|
|
|
|
test('truncate lines', t => {
|
|
const file = tempWrite.sync([
|
|
'function a() {',
|
|
'\talert();',
|
|
'}'
|
|
].join('\n'));
|
|
|
|
const excerpt = codeExcerpt({file, line: 2, isWithinProject: true, isDependency: false}, {maxWidth: 14});
|
|
const expected = [
|
|
` ${chalk.grey('1:')} functio…`,
|
|
chalk.bgRed(` 2: alert…`),
|
|
` ${chalk.grey('3:')} } `
|
|
].join('\n');
|
|
|
|
t.is(excerpt, expected);
|
|
t.end();
|
|
});
|
|
|
|
test('format line numbers', t => {
|
|
const file = tempWrite.sync([
|
|
'', '', '', '', '', '', '', '',
|
|
'function a() {',
|
|
'\talert();',
|
|
'}'
|
|
].join('\n'));
|
|
|
|
const excerpt = codeExcerpt({file, line: 10, isWithinProject: true, isDependency: false});
|
|
const expected = [
|
|
` ${chalk.grey(' 9:')} function a() {`,
|
|
chalk.bgRed(` 10: alert(); `),
|
|
` ${chalk.grey('11:')} } `
|
|
].join('\n');
|
|
|
|
t.is(excerpt, expected);
|
|
t.end();
|
|
});
|
|
|
|
test('noop if file cannot be read', t => {
|
|
const file = tempWrite.sync('');
|
|
fs.unlinkSync(file);
|
|
|
|
const excerpt = codeExcerpt({file, line: 10, isWithinProject: true, isDependency: false});
|
|
t.is(excerpt, null);
|
|
t.end();
|
|
});
|
|
|
|
test('noop if file is not within project', t => {
|
|
const excerpt = codeExcerpt({isWithinProject: false, file: __filename, line: 1});
|
|
t.is(excerpt, null);
|
|
t.end();
|
|
});
|
|
|
|
test('noop if file is a dependency', t => {
|
|
const excerpt = codeExcerpt({isWithinProject: true, isDependency: true, file: __filename, line: 1});
|
|
t.is(excerpt, null);
|
|
t.end();
|
|
});
|
|
|