From dfcc233741ec6cf8ab806b34f418df4638160f32 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sat, 26 Jan 2019 12:56:31 -0800 Subject: [PATCH 01/13] Debug and stuff. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 27f7d263e..c1f7b04ab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_script: - export PATH=$HOME/.yarn/bin:$PATH - yarn install --frozen-lockfile - yarn run setup -script: yarn test -w 2 +script: DEBUG=* yarn test -w 2 --detectLeaks notifications: email: false cache: From 617808baf45f8a7d92483937dc97fa8c5fdbb419 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sat, 26 Jan 2019 13:00:45 -0800 Subject: [PATCH 02/13] Add weak package. --- .travis.yml | 2 +- package.json | 3 ++- yarn.lock | 22 +++++++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index c1f7b04ab..b363e5b78 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_script: - export PATH=$HOME/.yarn/bin:$PATH - yarn install --frozen-lockfile - yarn run setup -script: DEBUG=* yarn test -w 2 --detectLeaks +script: DEBUG=boost:* yarn test -w 2 --detectLeaks notifications: email: false cache: diff --git a/package.json b/package.json index 410ddef6d..185c94bd0 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "devDependencies": { "@milesj/build-tools": "^0.25.4", "fs-extra": "^7.0.1", - "lerna": "^3.11.0" + "lerna": "^3.11.0", + "weak": "^1.0.1" }, "publishConfig": { "access": "public" diff --git a/yarn.lock b/yarn.lock index dc64a7b23..30d16a74d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2189,6 +2189,13 @@ binary-extensions@^1.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== +bindings@^1.2.1: + version "1.4.0" + resolved "https://registry.npmjs.org/bindings/-/bindings-1.4.0.tgz#909efa49f2ebe07ecd3cb136778f665052040127" + integrity sha512-7znEVX22Djn+nYjxCWKDne0RRloa9XfYa84yk3s+HkE3LpDYZmhArYr9O9huBoHY3/oXispx5LorIX7Sl2CgSQ== + dependencies: + file-uri-to-path "1.0.0" + block-stream@*: version "0.0.9" resolved "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -3925,6 +3932,11 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fileset@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" @@ -6334,7 +6346,7 @@ mute-stream@~0.0.4: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.9.2: +nan@^2.0.5, nan@^2.9.2: version "2.12.1" resolved "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== @@ -8972,6 +8984,14 @@ wcwidth@^1.0.0: dependencies: defaults "^1.0.3" +weak@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/weak/-/weak-1.0.1.tgz#ab99aab30706959aa0200cb8cf545bb9cb33b99e" + integrity sha1-q5mqswcGlZqgIAy4z1RbucszuZ4= + dependencies: + bindings "^1.2.1" + nan "^2.0.5" + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" From 91f411b07dca03d8cabe40451d44b13bb18589a4 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sat, 26 Jan 2019 13:13:21 -0800 Subject: [PATCH 03/13] Debug everything. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b363e5b78..c1f7b04ab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_script: - export PATH=$HOME/.yarn/bin:$PATH - yarn install --frozen-lockfile - yarn run setup -script: DEBUG=boost:* yarn test -w 2 --detectLeaks +script: DEBUG=* yarn test -w 2 --detectLeaks notifications: email: false cache: From 9b7d754f575078a7fac9f89e2da42a615737b8d3 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sun, 27 Jan 2019 00:28:44 -0800 Subject: [PATCH 04/13] Remove debug. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c1f7b04ab..071cff5cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_script: - export PATH=$HOME/.yarn/bin:$PATH - yarn install --frozen-lockfile - yarn run setup -script: DEBUG=* yarn test -w 2 --detectLeaks +script: yarn test -w 2 --detectLeaks notifications: email: false cache: From f8600bf298428fad4e3add1d8ff954f918162c41 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Fri, 8 Feb 2019 20:02:39 -0800 Subject: [PATCH 05/13] Resolve pool promise. --- packages/core/tests/executors/Pool.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/core/tests/executors/Pool.test.ts b/packages/core/tests/executors/Pool.test.ts index a3ad265df..e33f54b60 100644 --- a/packages/core/tests/executors/Pool.test.ts +++ b/packages/core/tests/executors/Pool.test.ts @@ -12,6 +12,15 @@ describe('PoolExecutor', () => { }); }); + afterEach(() => { + if (executor.resolver) { + executor.resolver({ + results: [], + errors: [], + }); + } + }); + it('triggers tasks in parallel', async () => { const foo = new Task('foo', () => 123); const bar = new Task('bar', () => { From fd3ed4bd1cafad118c20add2d76ef4a4a5c10591 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Fri, 8 Feb 2019 20:52:11 -0800 Subject: [PATCH 06/13] Add fake timers to tests. --- packages/core/tests/reporters/BoostReporter.test.ts | 4 ++++ packages/reporter-nyan/tests/NyanReporter.test.ts | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/packages/core/tests/reporters/BoostReporter.test.ts b/packages/core/tests/reporters/BoostReporter.test.ts index 088c5a695..4119fcb2c 100644 --- a/packages/core/tests/reporters/BoostReporter.test.ts +++ b/packages/core/tests/reporters/BoostReporter.test.ts @@ -26,6 +26,8 @@ describe('BoostReporter', () => { let child2: Routine; beforeEach(() => { + jest.useFakeTimers(); + tool = mockTool(); reporter = new BoostReporter(); @@ -50,6 +52,8 @@ describe('BoostReporter', () => { afterEach(() => { Date.now = oldNow; + + jest.useRealTimers(); }); describe('bootstrap()', () => { diff --git a/packages/reporter-nyan/tests/NyanReporter.test.ts b/packages/reporter-nyan/tests/NyanReporter.test.ts index d46bae65f..dde4dc93a 100644 --- a/packages/reporter-nyan/tests/NyanReporter.test.ts +++ b/packages/reporter-nyan/tests/NyanReporter.test.ts @@ -7,6 +7,8 @@ describe('NyanReporter', () => { let tool: Tool; beforeEach(() => { + jest.useFakeTimers(); + tool = mockTool(); reporter = new NyanReporter(); @@ -14,6 +16,10 @@ describe('NyanReporter', () => { reporter.tool = tool; }); + afterEach(() => { + jest.useRealTimers(); + }); + describe('bootstrap()', () => { it('binds events', () => { const spy = jest.spyOn(reporter.console, 'on'); From decaa62eee25f93a72dae3e8bae246c14eeba3d8 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Fri, 8 Feb 2019 21:01:31 -0800 Subject: [PATCH 07/13] Turn off leaks. --- .travis.yml | 2 +- packages/core/tests/executors/Pool.test.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 071cff5cd..27f7d263e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ before_script: - export PATH=$HOME/.yarn/bin:$PATH - yarn install --frozen-lockfile - yarn run setup -script: yarn test -w 2 --detectLeaks +script: yarn test -w 2 notifications: email: false cache: diff --git a/packages/core/tests/executors/Pool.test.ts b/packages/core/tests/executors/Pool.test.ts index e33f54b60..c9a095a9e 100644 --- a/packages/core/tests/executors/Pool.test.ts +++ b/packages/core/tests/executors/Pool.test.ts @@ -13,6 +13,7 @@ describe('PoolExecutor', () => { }); afterEach(() => { + // Resolve any pending promises if (executor.resolver) { executor.resolver({ results: [], From 342c900c2e326990e576f8057e3c88f3bd9a721b Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sun, 10 Feb 2019 01:35:41 -0800 Subject: [PATCH 08/13] Always use fake timers. --- package.json | 3 +++ packages/core/tests/Console.test.ts | 14 -------------- packages/core/tests/Reporter.test.ts | 2 -- packages/core/tests/executors/Pool.test.ts | 4 ++++ .../core/tests/reporters/BoostReporter.test.ts | 8 ++------ packages/reporter-nyan/tests/NyanReporter.test.ts | 6 ------ 6 files changed, 9 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 185c94bd0..cb0934bd9 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,9 @@ ], "settings": { "node": true + }, + "jest": { + "timers": "fake" } } } diff --git a/packages/core/tests/Console.test.ts b/packages/core/tests/Console.test.ts index 66cb2b20f..349cab1b7 100644 --- a/packages/core/tests/Console.test.ts +++ b/packages/core/tests/Console.test.ts @@ -17,12 +17,6 @@ describe('Console', () => { stderr: err, stdout: out, }); - - jest.useFakeTimers(); - }); - - afterEach(() => { - jest.useRealTimers(); }); describe('disable()', () => { @@ -541,14 +535,6 @@ describe('Console', () => { }); describe('startRenderLoop()', () => { - beforeEach(() => { - jest.useFakeTimers(); - }); - - afterEach(() => { - jest.useRealTimers(); - }); - it('sets a timer', () => { // @ts-ignore Allow access expect(cli.renderTimer).toBeNull(); diff --git a/packages/core/tests/Reporter.test.ts b/packages/core/tests/Reporter.test.ts index 1a3a0f322..65a297cf2 100644 --- a/packages/core/tests/Reporter.test.ts +++ b/packages/core/tests/Reporter.test.ts @@ -242,11 +242,9 @@ describe('Reporter', () => { beforeEach(() => { process.env.CI = ''; - jest.useFakeTimers(); }); afterEach(() => { - jest.useRealTimers(); process.env.CI = oldCI; }); diff --git a/packages/core/tests/executors/Pool.test.ts b/packages/core/tests/executors/Pool.test.ts index c9a095a9e..a7a3512f3 100644 --- a/packages/core/tests/executors/Pool.test.ts +++ b/packages/core/tests/executors/Pool.test.ts @@ -64,6 +64,8 @@ describe('PoolExecutor', () => { }); it('maxes at concurrency limit', async () => { + jest.useRealTimers(); + executor.options.concurrency = 1; executor.nextItem = () => {}; // Stop it exhausting @@ -75,6 +77,8 @@ describe('PoolExecutor', () => { expect(executor.queue).toHaveLength(2); expect(executor.running).toHaveLength(0); + + jest.useFakeTimers(); }); it('cycles 1 by 1', async () => { diff --git a/packages/core/tests/reporters/BoostReporter.test.ts b/packages/core/tests/reporters/BoostReporter.test.ts index 4119fcb2c..52f2b2551 100644 --- a/packages/core/tests/reporters/BoostReporter.test.ts +++ b/packages/core/tests/reporters/BoostReporter.test.ts @@ -16,7 +16,7 @@ import { STATUS_PASSED, } from '../../src/constants'; -const oldNow = Date.now; +const oldDateNow = Date.now; describe('BoostReporter', () => { let reporter: BoostReporter; @@ -26,8 +26,6 @@ describe('BoostReporter', () => { let child2: Routine; beforeEach(() => { - jest.useFakeTimers(); - tool = mockTool(); reporter = new BoostReporter(); @@ -51,9 +49,7 @@ describe('BoostReporter', () => { }); afterEach(() => { - Date.now = oldNow; - - jest.useRealTimers(); + Date.now = oldDateNow; }); describe('bootstrap()', () => { diff --git a/packages/reporter-nyan/tests/NyanReporter.test.ts b/packages/reporter-nyan/tests/NyanReporter.test.ts index dde4dc93a..d46bae65f 100644 --- a/packages/reporter-nyan/tests/NyanReporter.test.ts +++ b/packages/reporter-nyan/tests/NyanReporter.test.ts @@ -7,8 +7,6 @@ describe('NyanReporter', () => { let tool: Tool; beforeEach(() => { - jest.useFakeTimers(); - tool = mockTool(); reporter = new NyanReporter(); @@ -16,10 +14,6 @@ describe('NyanReporter', () => { reporter.tool = tool; }); - afterEach(() => { - jest.useRealTimers(); - }); - describe('bootstrap()', () => { it('binds events', () => { const spy = jest.spyOn(reporter.console, 'on'); From 34db8e30054b3476b6facfbafd254c7ebd27cb93 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sun, 10 Feb 2019 19:39:26 -0800 Subject: [PATCH 09/13] Mock execa. --- packages/core/tests/CrashLogger.test.ts | 5 +++ packages/core/tests/Routine.test.ts | 60 ++++++++++++++++++------- 2 files changed, 48 insertions(+), 17 deletions(-) diff --git a/packages/core/tests/CrashLogger.test.ts b/packages/core/tests/CrashLogger.test.ts index af9ad1fd7..10decac61 100644 --- a/packages/core/tests/CrashLogger.test.ts +++ b/packages/core/tests/CrashLogger.test.ts @@ -1,9 +1,12 @@ import fs from 'fs-extra'; import path from 'path'; +import execa from 'execa'; import { mockTool } from '@boost/test-utils'; import CrashLogger from '../src/CrashLogger'; import Tool from '../src/Tool'; +jest.mock('execa'); + describe('CrashLogger', () => { let tool: Tool; let logger: CrashLogger; @@ -12,6 +15,8 @@ describe('CrashLogger', () => { const oldWrite = fs.writeFileSync.bind(fs); beforeEach(() => { + (execa.shellSync as jest.Mock).mockReturnValue({ stdout: '' }); + tool = mockTool(); logger = new CrashLogger(tool); spy = jest.fn(); diff --git a/packages/core/tests/Routine.test.ts b/packages/core/tests/Routine.test.ts index e553f3013..94591a02d 100644 --- a/packages/core/tests/Routine.test.ts +++ b/packages/core/tests/Routine.test.ts @@ -8,6 +8,8 @@ import Task from '../src/Task'; import Tool from '../src/Tool'; import { STATUS_PASSED, STATUS_FAILED, STATUS_RUNNING } from '../src/constants'; +jest.mock('execa'); + describe('Routine', () => { let routine: Routine; let tool: Tool; @@ -164,32 +166,56 @@ describe('Routine', () => { }); describe('executeCommand()', () => { + class FakeStream { + type: string; + + constructor(type: string) { + this.type = type; + } + + pipe() { + return this; + } + + on(event: string, handler: (line: string) => any) { + handler('Mocked stream line'); + + return this; + } + + toString() { + return this.type; + } + } + + beforeEach(() => { + ((execa as any) as jest.Mock).mockImplementation((cmd, args) => ({ + cmd: `${cmd} ${args.join(' ')}`, + stdout: new FakeStream('stdout'), + stderr: new FakeStream('stderr'), + })); + + (execa.shell as jest.Mock).mockImplementation(cmd => ({ cmd: `/bin/sh -c ${cmd}` })); + }); + it('runs a local command', async () => { const result = await routine.executeCommand('yarn', ['-v']); - expect(result).toEqual( - expect.objectContaining({ cmd: 'yarn -v', stdout: expect.stringMatching(/[\d.]+/u) }), - ); + expect(result).toEqual(expect.objectContaining({ cmd: 'yarn -v' })); }); it('runs a local command in a shell', async () => { - const spy = jest.spyOn(execa, 'shell'); const result = await routine.executeCommand('echo', ['boost'], { shell: true }); - expect(spy).toHaveBeenCalledWith('echo boost', {}); - expect(result).toEqual( - expect.objectContaining({ cmd: '/bin/sh -c echo boost', stdout: 'boost' }), - ); + expect(execa.shell).toHaveBeenCalledWith('echo boost', {}); + expect(result).toEqual({ cmd: '/bin/sh -c echo boost' }); }); it('runs a local command in a shell with args used directly', async () => { - const spy = jest.spyOn(execa, 'shell'); const result = await routine.executeCommand('echo boost', [], { shell: true }); - expect(spy).toHaveBeenCalledWith('echo boost', {}); - expect(result).toEqual( - expect.objectContaining({ cmd: '/bin/sh -c echo boost', stdout: 'boost' }), - ); + expect(execa.shell).toHaveBeenCalledWith('echo boost', {}); + expect(result).toEqual({ cmd: '/bin/sh -c echo boost' }); }); it('calls callback with stream', async () => { @@ -210,12 +236,12 @@ describe('Routine', () => { await routine.executeCommand('yarn', ['-v'], { task }); expect(spy1).toHaveBeenCalledWith('command', ['yarn']); - expect(spy1).toHaveBeenCalledWith('command.data', ['yarn', expect.stringMatching(/[\d.]+/u)]); + expect(spy1).toHaveBeenCalledWith('command.data', ['yarn', expect.anything()]); expect(spy2).toHaveBeenCalledWith('command', ['yarn', expect.anything()]); expect(spy2).toHaveBeenCalledWith('command.data', [ 'yarn', - expect.stringMatching(/[\d.]+/u), + expect.anything(), expect.anything(), ]); }); @@ -227,7 +253,7 @@ describe('Routine', () => { await routine.executeCommand('yarn', ['--help'], { task }); - expect(task.statusText).toEqual(expect.stringContaining('learn more about Yarn')); + expect(task.statusText).toBe('Mocked stream line'); }); it('sets `output` on task', async () => { @@ -237,7 +263,7 @@ describe('Routine', () => { await routine.executeCommand('yarn', ['-v'], { task }); - expect(task.output).toMatch(/\d+\.\d+\.\d+/u); + expect(task.output).toBe('Mocked stream lineMocked stream line'); }); it('doesnt set `statusText` or `output` on task when not running', async () => { From 3cba4852121ee405512ed459ea5e816918b4ee60 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sun, 10 Feb 2019 19:45:48 -0800 Subject: [PATCH 10/13] Lazy load translator. --- packages/core/src/Tool.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/core/src/Tool.ts b/packages/core/src/Tool.ts index 959719cd2..ef1e38318 100644 --- a/packages/core/src/Tool.ts +++ b/packages/core/src/Tool.ts @@ -132,9 +132,6 @@ export default class Tool< // eslint-disable-next-line global-require this.debug('Using boost v%s', require('../package.json').version); - // Setup i18n translation - translatorCache.set(this, this.createTranslator()); - // Initialize the console first so we can start logging this.console = new Console(this); @@ -535,7 +532,14 @@ export default class Tool< * Retrieve a translated message from a resource bundle. */ msg(key: string | string, params?: { [key: string]: any }, options?: i18next.TOptions): string { - return translatorCache.get(this)!.t(key, { + let translator = translatorCache.get(this); + + if (!translator) { + translator = this.createTranslator(); + translatorCache.set(this, translator); + } + + return translator.t(key, { interpolation: { escapeValue: false }, replace: params, ...options, From 3df623cc4f59cf5491f227a6a7ffcb54c5c9906f Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sun, 10 Feb 2019 19:52:35 -0800 Subject: [PATCH 11/13] More polish. --- packages/core/src/Tool.ts | 17 +++++++---------- packages/core/tests/Routine.test.ts | 8 +------- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/packages/core/src/Tool.ts b/packages/core/src/Tool.ts index ef1e38318..637542d8c 100644 --- a/packages/core/src/Tool.ts +++ b/packages/core/src/Tool.ts @@ -69,8 +69,6 @@ export interface ToolPluginRegistry { reporter: Reporter; } -const translatorCache: Map, Translator> = new Map(); - export default class Tool< PluginRegistry extends ToolPluginRegistry, Config extends ToolConfig = ToolConfig @@ -98,6 +96,8 @@ export default class Tool< private pluginTypes: { [K in keyof PluginRegistry]?: PluginType } = {}; + private translator: Translator | null = null; + constructor(options: Partial, argv: string[] = []) { super(); @@ -532,14 +532,11 @@ export default class Tool< * Retrieve a translated message from a resource bundle. */ msg(key: string | string, params?: { [key: string]: any }, options?: i18next.TOptions): string { - let translator = translatorCache.get(this); - - if (!translator) { - translator = this.createTranslator(); - translatorCache.set(this, translator); + if (!this.translator) { + this.translator = this.createTranslator(); } - return translator.t(key, { + return this.translator.t(key, { interpolation: { escapeValue: false }, replace: params, ...options, @@ -603,8 +600,8 @@ export default class Tool< } // Update locale - if (this.config.locale) { - translatorCache.get(this)!.changeLanguage(this.config.locale); + if (this.config.locale && this.translator) { + this.translator.changeLanguage(this.config.locale); } return this; diff --git a/packages/core/tests/Routine.test.ts b/packages/core/tests/Routine.test.ts index 94591a02d..4a9cb6d84 100644 --- a/packages/core/tests/Routine.test.ts +++ b/packages/core/tests/Routine.test.ts @@ -167,12 +167,6 @@ describe('Routine', () => { describe('executeCommand()', () => { class FakeStream { - type: string; - - constructor(type: string) { - this.type = type; - } - pipe() { return this; } @@ -184,7 +178,7 @@ describe('Routine', () => { } toString() { - return this.type; + return ''; } } From c8dc66e9eb460cbe3404ae2322a2399db79b8815 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sun, 10 Feb 2019 20:46:56 -0800 Subject: [PATCH 12/13] Fix TS error. --- packages/core/tests/Routine.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/tests/Routine.test.ts b/packages/core/tests/Routine.test.ts index 4a9cb6d84..39bb2a482 100644 --- a/packages/core/tests/Routine.test.ts +++ b/packages/core/tests/Routine.test.ts @@ -185,8 +185,8 @@ describe('Routine', () => { beforeEach(() => { ((execa as any) as jest.Mock).mockImplementation((cmd, args) => ({ cmd: `${cmd} ${args.join(' ')}`, - stdout: new FakeStream('stdout'), - stderr: new FakeStream('stderr'), + stdout: new FakeStream(), + stderr: new FakeStream(), })); (execa.shell as jest.Mock).mockImplementation(cmd => ({ cmd: `/bin/sh -c ${cmd}` })); From c1735708bacffd01c8da66f33f8dfe3ef61bf680 Mon Sep 17 00:00:00 2001 From: Miles Johnson Date: Sun, 10 Feb 2019 20:59:02 -0800 Subject: [PATCH 13/13] Remove weak dep. --- package.json | 3 +-- yarn.lock | 22 +--------------------- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index cb0934bd9..420d30a4d 100644 --- a/package.json +++ b/package.json @@ -18,8 +18,7 @@ "devDependencies": { "@milesj/build-tools": "^0.25.4", "fs-extra": "^7.0.1", - "lerna": "^3.11.0", - "weak": "^1.0.1" + "lerna": "^3.11.0" }, "publishConfig": { "access": "public" diff --git a/yarn.lock b/yarn.lock index 30d16a74d..dc64a7b23 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2189,13 +2189,6 @@ binary-extensions@^1.0.0: resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== -bindings@^1.2.1: - version "1.4.0" - resolved "https://registry.npmjs.org/bindings/-/bindings-1.4.0.tgz#909efa49f2ebe07ecd3cb136778f665052040127" - integrity sha512-7znEVX22Djn+nYjxCWKDne0RRloa9XfYa84yk3s+HkE3LpDYZmhArYr9O9huBoHY3/oXispx5LorIX7Sl2CgSQ== - dependencies: - file-uri-to-path "1.0.0" - block-stream@*: version "0.0.9" resolved "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -3932,11 +3925,6 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - fileset@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" @@ -6346,7 +6334,7 @@ mute-stream@~0.0.4: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.0.5, nan@^2.9.2: +nan@^2.9.2: version "2.12.1" resolved "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== @@ -8984,14 +8972,6 @@ wcwidth@^1.0.0: dependencies: defaults "^1.0.3" -weak@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/weak/-/weak-1.0.1.tgz#ab99aab30706959aa0200cb8cf545bb9cb33b99e" - integrity sha1-q5mqswcGlZqgIAy4z1RbucszuZ4= - dependencies: - bindings "^1.2.1" - nan "^2.0.5" - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"