UNPKG

@villedemontreal/scripting

Version:
484 lines (472 loc) 28.5 kB
"use strict"; /* eslint-disable @typescript-eslint/no-misused-promises */ Object.defineProperty(exports, "__esModule", { value: true }); const caporal_1 = require("@villedemontreal/caporal"); const general_utils_1 = require("@villedemontreal/general-utils"); const chai_1 = require("chai"); const fs = require("fs-extra"); const path = require("path"); const sinon = require("sinon"); const testingScript_1 = require("../scripts/testing/testingScript"); const configs_1 = require("./config/configs"); const testingUtils_1 = require("./utils/testingUtils"); const nock = require("nock"); describe(`Scripts tests`, function () { (0, testingUtils_1.timeout)(this, 30000); before(() => { (0, testingUtils_1.setTestingConfigs)(); }); describe(`Compilation`, () => { it(`Default`, async function () { (0, testingUtils_1.timeout)(this, 60000); const distDir = path.resolve(`${__dirname}/..`); await general_utils_1.utils.deleteDir(distDir); chai_1.assert.isFalse(fs.existsSync(distDir)); const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isFalse(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: info`) > -1); // ========================================== // The "dist" folder has been generated // ========================================== chai_1.assert.isTrue(fs.existsSync(distDir)); }); it(`No compilation`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isTrue(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: info`) > -1); }); it(`Compilation silent option`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `--silent`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isFalse(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isFalse(output.indexOf(`msg: info`) > -1); }); }); describe(`Logs`, () => { it(`Default is info`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`msg: debug`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: info`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: warn`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: error`) > -1); }); it(`Silent arg`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `--silent`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`msg: debug`) > -1); chai_1.assert.isFalse(output.indexOf(`msg: info`) > -1); chai_1.assert.isFalse(output.indexOf(`msg: warn`) > -1); chai_1.assert.isFalse(output.indexOf(`msg: error`) > -1); }); it(`Quiet arg`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `--quiet`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`msg: debug`) > -1); chai_1.assert.isFalse(output.indexOf(`msg: info`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: warn`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: error`) > -1); }); it(`Verbose arg`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `--verbose`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`msg: debug`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: info`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: warn`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: error`) > -1); }); it(`Verbose short arg`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `-v`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`msg: debug`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: info`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: warn`) > -1); chai_1.assert.isTrue(output.indexOf(`msg: error`) > -1); }); }); describe(`Main Help`, () => { it(`No args at all - compilation is done and main help is displayed`, async function () { (0, testingUtils_1.timeout)(this, 60000); const { output, isSuccess } = await (0, testingUtils_1.run)(); chai_1.assert.isFalse(isSuccess); chai_1.assert.isTrue(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isFalse(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue((0, testingUtils_1.isShortHelpDisplayed)(output)); }); it(`Just "help" and "--nc" - no compilation is done and main help is displayed`, async function () { (0, testingUtils_1.timeout)(this, 60000); const { output, isSuccess } = await (0, testingUtils_1.run)(`help`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isTrue(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Just "--help" - compilation is done and main help is displayed`, async function () { (0, testingUtils_1.timeout)(this, 60000); const { output, isSuccess } = await (0, testingUtils_1.run)(`--help`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isFalse(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Just "-h" - compilation is done and main help is displayed`, async function () { (0, testingUtils_1.timeout)(this, 60000); const { output, isSuccess } = await (0, testingUtils_1.run)(`-h`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isFalse(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Just "--nc" - No compilation is done and main help is displayed`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isTrue(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`"--help" and "--nc" - No compilation is done and main help is displayed`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`--help`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isTrue(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`"-h" and "--nc" - No compilation is done and main help is displayed`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`-h`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isFalse(output.indexOf(`Compilation done.`) > -1); chai_1.assert.isTrue(output.indexOf(`Compilation skipped because of the "--nc" parameter...`) > -1); chai_1.assert.isTrue((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Unknown command - Main help is displayed`, async function () { (0, testingUtils_1.timeout)(this, 60000); const { output, isSuccess } = await (0, testingUtils_1.run)(`NOPE`, `--nc`); chai_1.assert.isFalse(isSuccess); chai_1.assert.isTrue(output.indexOf(`Unknown command NOPE`) > -1); chai_1.assert.isTrue((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Unknown command with --silent arg - Main help not displayed`, async function () { (0, testingUtils_1.timeout)(this, 60000); const { output, isSuccess } = await (0, testingUtils_1.run)(`NOPE`, `--nc`, `--silent`); chai_1.assert.isFalse(isSuccess); chai_1.assert.isTrue(output.indexOf(`Unknown command NOPE`) > -1); chai_1.assert.isFalse((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Unknown command with --quiet arg - Main help not displayed`, async function () { (0, testingUtils_1.timeout)(this, 60000); const { output, isSuccess } = await (0, testingUtils_1.run)(`NOPE`, `--nc`, `--quiet`); chai_1.assert.isFalse(isSuccess); chai_1.assert.isTrue(output.indexOf(`Unknown command NOPE`) > -1); chai_1.assert.isFalse((0, testingUtils_1.isMainHelpDisplayed)(output)); }); }); describe(`Command Help`, () => { it(`Using "--help"`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `--help`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`A simple testing script`) > -1); chai_1.assert.isFalse((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Using "-h"`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `-h`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`A simple testing script`) > -1); chai_1.assert.isFalse((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Help command`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`help`, `testing:testingScript`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`A simple testing script`) > -1); chai_1.assert.isFalse((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`Command Help for hidden scripts works too`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingHiddenScript`, `--nc`, `--userName`, `Stromgol`, `--help`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`A testing hidden script`) > -1); }); }); describe(`Varia`, () => { it(`Custom short option`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `-p`, `123`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`port: 123`) > -1); }); it(`Custom long option`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `--port`, `123`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`port: 123`) > -1); }); it(`Option not specified but required ("--userName" here) - The help of the command is displayed`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingHiddenScript`, `--nc`); chai_1.assert.isFalse(isSuccess); chai_1.assert.isFalse(output.indexOf(`userName is`) > -1); chai_1.assert.isTrue(output.indexOf(`Missing required flag --username`) > -1); chai_1.assert.isTrue(output.indexOf(`USAGE — testing:testingHiddenScript`) > -1); // command help }); it(`Regular Error (the help of the command is not printed!)`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `--throwError`); chai_1.assert.isFalse(isSuccess); chai_1.assert.isTrue(output.indexOf(`This is a regular error`) > -1); chai_1.assert.isFalse(output.indexOf(`userName is`) > -1); chai_1.assert.isFalse((0, testingUtils_1.isMainHelpDisplayed)(output)); chai_1.assert.isFalse(output.indexOf(`USAGE — testing:testingHiddenScript`) > -1); // NO command help! }); it(`Invalid argument`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`, `--port`, `notANumber`); chai_1.assert.isFalse(isSuccess); chai_1.assert.isTrue(output.indexOf(`Invalid value for option`) > -1); chai_1.assert.isFalse(output.indexOf(`userName is`) > -1); chai_1.assert.isTrue(output.indexOf(`USAGE — testing:testingScript`) > -1); // command help }); it(`Hidden script can still be called`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingHiddenScript`, `--nc`, `--username`, `Stromgol`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`username is Stromgol`) > -1); }); it(`We can register a script without passing action parameters`, async () => { const prog = new caporal_1.Program(); chai_1.assert.isFalse(caporal_1.program.getCommands().some((command) => command.name === 'testing:testingScript')); const script = new testingScript_1.TestingScript(null); // no params! await script.registerScript(prog); let found = false; for (let i = prog.getCommands().length - 1; i >= 0; --i) { if (prog.getCommands()[i].name === 'testing:testingScript') { found = true; prog.getCommands().splice(i, 1); break; } } chai_1.assert.isTrue(found); }); it(`Calling a script using NPM`, async () => { let output = ``; await general_utils_1.utils.exec(configs_1.configs.isWindows ? 'npm.cmd' : 'npm', [`run`, `lint`, `--`, `--nc`, `--help`], { outputHandler: (stdoutData, stderrData) => { const newOut = `${stdoutData ? ` ${stdoutData}` : ''} ${stderrData ? ` ${stderrData}` : ''} `; output += newOut; }, }); chai_1.assert.isTrue(output.indexOf(`Run the ESLint validation`) > -1); chai_1.assert.isFalse((0, testingUtils_1.isMainHelpDisplayed)(output)); }); /** * Note that it is way easier to call a script * programatically *from another script*, since you * can simply use `this.invokeScript()`. * * Also, if some logic is required in a script * *and* elsewhere in the application, it may be a good * idea to move this code in a service or in an utility! */ it(`Calling a script programmatically`, async () => { let output = ''; const logger = new Proxy({}, { get: (target, prop) => { return function () { if (prop === 'info') { // eslint-disable-next-line prefer-rest-params output += `${arguments[0]}\n`; } }; }, }); await new testingScript_1.TestingScript({ args: {}, options: { port: 789, }, program: sinon.stub(), command: sinon.stub(), ddash: sinon.stub(), logger: logger, }).run(); chai_1.assert.isTrue(output.indexOf(`port: 789`) > -1); }); it(`OutputName - Regular script`, async () => { // Core script const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingScript`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`Script "testing:testingScript"`) > -1); }); /** * Since the `run()` command starts a new process, we * can't add a global option to the proper Caporal * instance directly here. We need to tweak the `run` * file and add it there. */ it(`Custom global options`, async () => { const { output, isSuccess } = await (0, testingUtils_1.withCustomRunFile)(`const caporal = require('@villedemontreal/caporal').program;`, `const caporal = require('@villedemontreal/caporal').program; caporal.option('--custom', 'Custom global option', { global: true }); `, `testing:testingScriptGlobalCustomOptions1`, `--nc`, `--custom`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`custom #1: true`) > -1); chai_1.assert.isTrue(output.indexOf(`custom #2: true`) > -1); }); it(`"scriptsIndexModule" can be undefined`, async () => { const { output, isSuccess } = await (0, testingUtils_1.withCustomRunFile)('scriptsIndexModule: `./scripts/index`,', ``, `lint`, `--help`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`Run the ESLint validation`) > -1); chai_1.assert.isFalse((0, testingUtils_1.isMainHelpDisplayed)(output)); }); it(`A required dependency is missing`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingDepMissingScript`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`This script requires some dependencies that are not direct`) > -1); chai_1.assert.isTrue(output.indexOf(`- _missingDependency`) > -1); // Script still called chai_1.assert.isTrue(output.indexOf(`In TestingDepMissingScript`) > -1); }); }); describe('Cascading scripts', () => { it(`Call subscript with defaults`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingCallingScript`, `--nc`, `--foo`, `55`); chai_1.assert.isTrue(isSuccess); const expectedOutput = `info: Script "testing:testingCallingScript" starting... info: Script "testing:testingScriptWithArgs" starting... info: Start service MyService on port 55 with delay undefined, --verbose: undefined info: Script "testing:testingScriptWithArgs" successful info: Script "testing:testingExampleScript" starting... info: The lucky number is 55 info: Script "testing:testingExampleScript" successful info: Script "testing:testingCallingScript" successful`; chai_1.assert.isTrue((0, testingUtils_1.containsText)(output, expectedOutput)); }); it(`Call subscript without defaults, with the "--verbose" global option`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingCallingScript`, `--nc`, `--verbose`, `--foo`, `56`, `--bar`, `someName`, `--delay`, `100`); chai_1.assert.isTrue(isSuccess); const expectedOutput = `info: Script "testing:testingCallingScript" starting... info: Script "testing:testingScriptWithArgs" starting... info: Start service someName on port 56 with delay 100, --verbose: true info: Script "testing:testingScriptWithArgs" successful info: Script "testing:testingExampleScript" starting... info: The lucky number is 56 info: Script "testing:testingExampleScript" successful info: Script "testing:testingCallingScript" successful`; chai_1.assert.isTrue((0, testingUtils_1.containsText)(output, expectedOutput)); }); it(`Call subscript without defaults, without the "--verbose" global option`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingCallingScript`, `--nc`, // `--verbose`, // no verbose `--foo`, `56`, `--bar`, `someName`, `--delay`, `100`); chai_1.assert.isTrue(isSuccess); const expectedOutput = `info: Script "testing:testingCallingScript" starting... info: Script "testing:testingScriptWithArgs" starting... info: Start service someName on port 56 with delay 100, --verbose: undefined info: Script "testing:testingScriptWithArgs" successful info: Script "testing:testingExampleScript" starting... info: The lucky number is 56 info: Script "testing:testingExampleScript" successful info: Script "testing:testingCallingScript" successful`; chai_1.assert.isTrue((0, testingUtils_1.containsText)(output, expectedOutput)); }); it(`Call subscript without defaults, with the "--verbose" global option but then forced to false`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingCallingScript`, `--nc`, `--verbose`, // verbose `--forceVerboseToFalse`, // force verbose to false when calling another script `--foo`, `56`, `--bar`, `someName`, `--delay`, `100`); chai_1.assert.isTrue(isSuccess); const expectedOutput = `info: Script "testing:testingCallingScript" starting... info: Script "testing:testingScriptWithArgs" starting... info: Start service someName on port 56 with delay 100, --verbose: false info: Script "testing:testingScriptWithArgs" successful info: Script "testing:testingExampleScript" starting... info: The lucky number is 56 info: Script "testing:testingExampleScript" successful info: Script "testing:testingCallingScript" successful`; chai_1.assert.isTrue((0, testingUtils_1.containsText)(output, expectedOutput)); }); it(`Call failing subscript`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`testing:testingCallingScript`, `--nc`, `--foo`, `56`, `--bar`, `someName`, `--delay`, `100`, `--throwError`); chai_1.assert.isFalse(isSuccess); const expectedOutput = `info: Script "testing:testingCallingScript" starting... info: Script "testing:testingCallingScript" starting... info: Script "testing:testingScriptWithArgs" starting... info: Start service someName on port 56 with delay 100 error: Script "testing:testingScriptWithArgs" failed after warn: Script "testing:testingCallingScript" was aborted after`; chai_1.assert.isTrue((0, testingUtils_1.containsText)(output, expectedOutput)); chai_1.assert.isTrue(output.indexOf(`with: Some error...`) > -1); }); }); describe(`NODE_APP_INSTANCE env var`, () => { let nodeAppInstanceOriginal; before(() => { nodeAppInstanceOriginal = process.env[general_utils_1.globalConstants.envVariables.NODE_APP_INSTANCE]; }); after(() => { if (nodeAppInstanceOriginal) { process.env[general_utils_1.globalConstants.envVariables.NODE_APP_INSTANCE] = nodeAppInstanceOriginal; } else { delete process.env[general_utils_1.globalConstants.envVariables.NODE_APP_INSTANCE]; } }); it(`test script -> set to "tests" automatically`, async () => { delete process.env[general_utils_1.globalConstants.envVariables.NODE_APP_INSTANCE]; const { output, isSuccess } = await (0, testingUtils_1.withLogNodeInstance)(`testing:testingScript`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`MAIN NODE_APP_INSTANCE: tests`) > -1); }); it(`non test script -> not set to "tests"`, async () => { delete process.env[general_utils_1.globalConstants.envVariables.NODE_APP_INSTANCE]; const { output, isSuccess } = await (0, testingUtils_1.withLogNodeInstance)(`lint`, `--nc`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`MAIN NODE_APP_INSTANCE: undefined`) > -1); }); it(`non test script with "--testing"`, async () => { delete process.env[general_utils_1.globalConstants.envVariables.NODE_APP_INSTANCE]; const { output, isSuccess } = await (0, testingUtils_1.withLogNodeInstance)(`lint`, `--nc`, `--testing`); chai_1.assert.isTrue(isSuccess); chai_1.assert.isTrue(output.indexOf(`MAIN NODE_APP_INSTANCE: tests`) > -1); }); }); describe('Sonar-init script', () => { it(` should fail when sonar-project.properties is missing`, async () => { const { output, isSuccess } = await (0, testingUtils_1.run)(`sonar-init`); chai_1.assert.isFalse(isSuccess); const expectedOutput = `info: Script "sonar-init" starting... error: Script "sonar-init" failed after 0 s with: "sonar-project.properties" file does not exist! `; chai_1.assert.isTrue((0, testingUtils_1.containsText)(output, expectedOutput)); }); // Skipping this unit test suite: all these tests are integration tests on scripts; scripts are // executed in another spawned process; therefore, using Nock to stub http calls does not work. // One solution to make these tests succeed would be to run a sonar server in a side-car container, // and then use it to test 'sonar' and 'sonar-init' scripts. describe.skip(' with valid sonar-project.properties file', async () => { before(async () => { await fs.copyFile('./src/utils/test-sonar-project_url-with-trailing-slash.properties', './sonar-project.properties'); }); after(async () => { await fs.unlink('./sonar-project.properties'); }); afterEach(() => { nock.cleanAll(); }); it(` should do something`, async () => { nock('https://example.com') .get('/sonar/api/project_branches/list') .query({ project: 'my-project-key' }) .reply(200); nock('https://example.com').get('/sonar/api/another_endpoint').reply(200); const { output, isSuccess } = await (0, testingUtils_1.run)(`sonar-init`, '-v'); console.info('***** Pending mocks *****'); console.info(nock.pendingMocks()); console.info('*************************'); chai_1.assert.isTrue(nock.isDone(), `There are remaining expected HTTP calls: ${nock.pendingMocks().toString()}`); chai_1.assert.isTrue(isSuccess); const expectedOutput = `info: Script "sonar-init" starting... error: Script "sonar-init" failed after 0 s with: ENOENT: no such file or directory, open 'sonar-project.properties' `; chai_1.assert.isTrue((0, testingUtils_1.containsText)(output, expectedOutput)); }); }); }); }); //# sourceMappingURL=scripts.test.js.map