Skip to content

Commit

Permalink
tests: errors/warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
alexander-akait committed Oct 11, 2020
1 parent 70ba799 commit f3d0310
Show file tree
Hide file tree
Showing 6 changed files with 140 additions and 32 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -65,3 +65,4 @@ test/**/**/binary/**
test/**/dist
test/**/**/dist
test/**/**/**/dist
test/**/stats.json
52 changes: 52 additions & 0 deletions test/build-errors/errors.test.js
@@ -0,0 +1,52 @@
'use strict';
const { run } = require('../utils/test-utils');
const { stat, readFile } = require('fs');
const { resolve } = require('path');

describe('warnings', () => {
it('should output by default', () => {
const { stdout, exitCode } = run(__dirname);

expect(stdout).toMatch(/ERROR in/);
expect(stdout).toMatch(/Error: Can't resolve/);
expect(exitCode).toBe(1);
});

it('should output JSON with the "json" flag', () => {
const { stdout, exitCode } = run(__dirname, ['--json']);

expect(() => JSON.parse(stdout)).not.toThrow();
expect(exitCode).toBe(1);

const json = JSON.parse(stdout);

expect(json['hash']).toBeDefined();
expect(json['errorsCount']).toBe(1);
expect(json['errors'][0].message).toMatch(/Can't resolve/);
});

it('should store json to a file', (done) => {
const { stdout, exitCode } = run(__dirname, ['--json', 'stats.json']);

expect(stdout).toContain('stats are successfully stored as json to stats.json');
expect(exitCode).toBe(1);

stat(resolve(__dirname, './stats.json'), (err, stats) => {
expect(err).toBe(null);
expect(stats.isFile()).toBe(true);

readFile(resolve(__dirname, 'stats.json'), 'utf-8', (error, data) => {
expect(error).toBe(null);
expect(() => JSON.parse(data)).not.toThrow();

const json = JSON.parse(data);

expect(json['hash']).toBeDefined();
expect(json['errorsCount']).toBe(1);
expect(json['errors'][0].message).toMatch(/Can't resolve/);

done();
});
});
});
});
3 changes: 3 additions & 0 deletions test/build-errors/src/index.js
@@ -0,0 +1,3 @@
import unknown from './unknown.mjs';

export default unknown
9 changes: 9 additions & 0 deletions test/build-warning/src/index.js
@@ -0,0 +1,9 @@
let module;

try {
module = require('unknown');
} catch (e) {
// Ignore
}

export default module
52 changes: 52 additions & 0 deletions test/build-warning/warnings.test.js
@@ -0,0 +1,52 @@
'use strict';
const { run } = require('../utils/test-utils');
const { stat, readFile } = require('fs');
const { resolve } = require('path');

describe('errors', () => {
it('should output by default', () => {
const { stdout, exitCode } = run(__dirname);

expect(stdout).toMatch(/WARNING in/);
expect(stdout).toMatch(/Error: Can't resolve/);
expect(exitCode).toBe(0);
});

it('should output JSON with the "json" flag', () => {
const { stdout, exitCode } = run(__dirname, ['--json']);

expect(() => JSON.parse(stdout)).not.toThrow();
expect(exitCode).toBe(0);

const json = JSON.parse(stdout);

expect(json['hash']).toBeDefined();
expect(json['warningsCount']).toBe(1);
expect(json['warnings'][0].message).toMatch(/Can't resolve/);
});

it('should store json to a file', (done) => {
const { stdout, exitCode } = run(__dirname, ['--json', 'stats.json']);

expect(stdout).toContain('stats are successfully stored as json to stats.json');
expect(exitCode).toBe(0);

stat(resolve(__dirname, './stats.json'), (err, stats) => {
expect(err).toBe(null);
expect(stats.isFile()).toBe(true);

readFile(resolve(__dirname, 'stats.json'), 'utf-8', (error, data) => {
expect(error).toBe(null);
expect(() => JSON.parse(data)).not.toThrow();

const json = JSON.parse(data);

expect(json['hash']).toBeDefined();
expect(json['warningsCount']).toBe(1);
expect(json['warnings'][0].message).toMatch(/Can't resolve/);

done();
});
});
});
});
55 changes: 23 additions & 32 deletions test/json/json.test.js
Expand Up @@ -5,49 +5,40 @@ const { resolve } = require('path');

describe('json flag', () => {
it('should return valid json', () => {
const { stdout } = run(__dirname, ['--json']);

// helper function to check if JSON is valid
const parseJson = () => {
return JSON.parse(stdout);
};
// check the JSON is valid.
expect(JSON.parse(stdout)['hash']).toBeTruthy();
expect(JSON.parse(stdout)['version']).toBeTruthy();
expect(JSON.parse(stdout)['time']).toBeTruthy();
expect(parseJson).not.toThrow();
const { stdout, exitCode } = run(__dirname, ['--json']);

expect(() => JSON.parse(stdout)).not.toThrow();
expect(exitCode).toBe(0);

expect(JSON.parse(stdout)['hash']).toBeDefined();
});

it('should store json to a file', (done) => {
const { stdout } = run(__dirname, ['--json', 'stats.json']);
const { stdout, exitCode } = run(__dirname, ['--json', 'stats.json']);

expect(stdout).toContain('stats are successfully stored as json to stats.json');
expect(exitCode).toBe(0);

stat(resolve(__dirname, './stats.json'), (err, stats) => {
expect(err).toBe(null);
expect(stats.isFile()).toBe(true);
done();
});
readFile(resolve(__dirname, 'stats.json'), 'utf-8', (err, data) => {
expect(err).toBe(null);
expect(JSON.parse(data)['hash']).toBeTruthy();
expect(JSON.parse(data)['version']).toBeTruthy();
expect(JSON.parse(data)['time']).toBeTruthy();
expect(() => JSON.parse(data)).not.toThrow();
done();

readFile(resolve(__dirname, 'stats.json'), 'utf-8', (err, data) => {
expect(err).toBe(null);
expect(JSON.parse(data)['hash']).toBeTruthy();
expect(JSON.parse(data)['version']).toBeTruthy();
expect(JSON.parse(data)['time']).toBeTruthy();
expect(() => JSON.parse(data)).not.toThrow();
done();
});
});
});

it('should return valid json with -j alias', () => {
const { stdout } = run(__dirname, ['-j']);

// helper function to check if JSON is valid
const parseJson = () => {
return JSON.parse(stdout);
};
// check the JSON is valid.
expect(JSON.parse(stdout)['hash']).toBeTruthy();
expect(JSON.parse(stdout)['version']).toBeTruthy();
expect(JSON.parse(stdout)['time']).toBeTruthy();
expect(parseJson).not.toThrow();
const { stdout, exitCode } = run(__dirname, ['-j']);
expect(() => JSON.parse(stdout)).not.toThrow();
expect(exitCode).toBe(0);

expect(JSON.parse(stdout)['hash']).toBeDefined();
});
});

0 comments on commit f3d0310

Please sign in to comment.