@sprucelabs/spruce-cli 15.2.23 → 15.2.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/build/__tests__/behavioral/AddingADependency.test.js +3 -1
- package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
- package/build/__tests__/behavioral/DeployingASkill.test.js +20 -20
- package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +12 -12
- package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +3 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js +4 -2
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/RebuildingASkill.test.js +2 -2
- package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js +6 -4
- package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js +3 -1
- package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js +3 -1
- package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js +5 -3
- package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
- package/build/__tests__/behavioral/WatchingSkillViews.test.js +6 -6
- package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +5 -0
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +242 -119
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +3 -1
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
- package/build/__tests__/behavioral/node/CreatingANodeModule.test.js +1 -1
- package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/CreatingASkill.test.js +1 -1
- package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js +2 -2
- package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.d.ts +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +8 -8
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/behavioral/{UpdatingDependencies.test.d.ts → upgrading/UpdatingDependencies.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{UpdatingDependencies.test.js → upgrading/UpdatingDependencies.test.js} +1 -1
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -0
- package/build/__tests__/behavioral/{UpdatingDependencies2.test.d.ts → upgrading/UpdatingDependencies2.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{UpdatingDependencies2.test.js → upgrading/UpdatingDependencies2.test.js} +4 -4
- package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -0
- package/build/__tests__/behavioral/{UpgradingANodeModule.test.d.ts → upgrading/UpgradingANodeModule.test.d.ts} +1 -1
- package/build/__tests__/behavioral/{UpgradingANodeModule.test.js → upgrading/UpgradingANodeModule.test.js} +7 -7
- package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill.test.d.ts +0 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill.test.js +3 -14
- package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill2.test.d.ts +0 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill2.test.js +4 -13
- package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill3.test.d.ts +0 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill3.test.js +6 -6
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill4.test.d.ts +0 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill4.test.js +3 -3
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill4.test.js.map +1 -1
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill5.test.d.ts +0 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill5.test.js +2 -2
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingASkill5.test.js.map +1 -1
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingWithListeners.test.d.ts +0 -0
- package/build/__tests__/behavioral/{skill → upgrading}/UpgradingWithListeners.test.js +4 -8
- package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -0
- package/build/__tests__/behavioral/{UpgradingWithSandboxFeatureInstalled.test.d.ts → upgrading/UpgradingWithSandboxFeatureInstalled.test.d.ts} +3 -3
- package/build/__tests__/behavioral/{UpgradingWithSandboxFeatureInstalled.test.js → upgrading/UpgradingWithSandboxFeatureInstalled.test.js} +14 -14
- package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -0
- package/build/__tests__/implementation/ActionExecuter2.test.js +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter4.test.js +2 -2
- package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
- package/build/__tests__/implementation/EventStore.test.js +7 -2
- package/build/__tests__/implementation/EventStore.test.js.map +1 -1
- package/build/__tests__/implementation/LintService.test.js +2 -2
- package/build/__tests__/implementation/LintService.test.js.map +1 -1
- package/build/__tests__/implementation/PkgService.test.js +2 -2
- package/build/__tests__/implementation/PkgService.test.js.map +1 -1
- package/build/__tests__/implementation/StoreFeature.test.js +1 -1
- package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
- package/build/cli.js +1 -1
- package/build/cli.js.map +1 -1
- package/build/features/event/EventFeature.d.ts +1 -0
- package/build/features/event/EventFeature.js +89 -56
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/actions/ListenAction.d.ts +1 -0
- package/build/features/event/actions/ListenAction.js +23 -31
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/stores/EventStore.d.ts +6 -5
- package/build/features/event/stores/EventStore.js +10 -7
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/store/StoreFeature.d.ts +1 -1
- package/build/features/store/StoreFeature.js +15 -14
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/services/CommandService.d.ts +1 -1
- package/build/services/CommandService.js +2 -2
- package/build/services/CommandService.js.map +1 -1
- package/build/tests/AbstractCliTest.d.ts +2 -0
- package/build/tests/AbstractCliTest.js +9 -2
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/CommandFaker.d.ts +8 -0
- package/build/tests/CommandFaker.js +54 -0
- package/build/tests/CommandFaker.js.map +1 -0
- package/build/tests/cleanTestData.js +9 -10
- package/build/tests/cleanTestData.js.map +1 -1
- package/build/tests/constants.d.ts +8 -0
- package/build/tests/constants.js +28 -0
- package/build/tests/constants.js.map +1 -0
- package/package.json +69 -69
- package/src/__tests__/behavioral/AddingADependency.test.ts +2 -1
- package/src/__tests__/behavioral/DeployingASkill.test.ts +20 -20
- package/src/__tests__/behavioral/EnablingAndDisablingCache.test.ts +12 -12
- package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +2 -1
- package/src/__tests__/behavioral/LoggingInAsASkill.test.ts +3 -2
- package/src/__tests__/behavioral/RebuildingASkill.test.ts +2 -2
- package/src/__tests__/behavioral/RegisteringEventsOnBoot.test.ts +3 -5
- package/src/__tests__/behavioral/RegisteringGlobalEvents.test.ts +2 -1
- package/src/__tests__/behavioral/RegisteringSkillViewOnBoot.test.ts +2 -1
- package/src/__tests__/behavioral/SettingUpASkillForTesting.test.ts +4 -3
- package/src/__tests__/behavioral/WatchingSkillViews.test.ts +6 -6
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +54 -7
- package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +2 -1
- package/src/__tests__/behavioral/node/CreatingANodeModule.test.ts +1 -1
- package/src/__tests__/behavioral/skill/CreatingASkill.test.ts +1 -1
- package/src/__tests__/behavioral/stores/CreatingADataStore.test.ts +2 -2
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +3 -3
- package/src/__tests__/behavioral/{UpdatingDependencies.test.ts → upgrading/UpdatingDependencies.test.ts} +2 -2
- package/src/__tests__/behavioral/{UpdatingDependencies2.test.ts → upgrading/UpdatingDependencies2.test.ts} +6 -6
- package/src/__tests__/behavioral/{UpgradingANodeModule.test.ts → upgrading/UpgradingANodeModule.test.ts} +7 -7
- package/src/__tests__/behavioral/{skill → upgrading}/UpgradingASkill.test.ts +3 -11
- package/src/__tests__/behavioral/{skill → upgrading}/UpgradingASkill2.test.ts +4 -7
- package/src/__tests__/behavioral/{skill → upgrading}/UpgradingASkill3.test.ts +6 -6
- package/src/__tests__/behavioral/{skill → upgrading}/UpgradingASkill4.test.ts +3 -3
- package/src/__tests__/behavioral/{skill → upgrading}/UpgradingASkill5.test.ts +2 -2
- package/src/__tests__/behavioral/{skill → upgrading}/UpgradingWithListeners.test.ts +3 -5
- package/src/__tests__/behavioral/{UpgradingWithSandboxFeatureInstalled.test.ts → upgrading/UpgradingWithSandboxFeatureInstalled.test.ts} +5 -5
- package/src/__tests__/implementation/ActionExecuter2.test.ts +1 -1
- package/src/__tests__/implementation/ActionExecuter4.test.ts +2 -2
- package/src/__tests__/implementation/EventStore.test.ts +3 -1
- package/src/__tests__/implementation/LintService.test.ts +2 -2
- package/src/__tests__/implementation/PkgService.test.ts +4 -7
- package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
- package/src/cli.ts +1 -1
- package/src/features/event/EventFeature.ts +14 -11
- package/src/features/event/actions/ListenAction.ts +22 -12
- package/src/features/event/stores/EventStore.ts +17 -12
- package/src/features/store/StoreFeature.ts +6 -5
- package/src/services/CommandService.ts +1 -4
- package/src/tests/AbstractCliTest.ts +6 -1
- package/src/tests/CommandFaker.ts +24 -0
- package/src/tests/cleanTestData.ts +2 -19
- package/src/tests/constants.ts +17 -0
- package/build/__tests__/behavioral/UpdatingDependencies.test.js.map +0 -1
- package/build/__tests__/behavioral/UpdatingDependencies2.test.js.map +0 -1
- package/build/__tests__/behavioral/UpgradingANodeModule.test.js.map +0 -1
- package/build/__tests__/behavioral/UpgradingWithSandboxFeatureInstalled.test.js.map +0 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +0 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill2.test.js.map +0 -1
- package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
2
2
|
import { test, assert } from '@sprucelabs/test'
|
|
3
|
-
import CommandService from '
|
|
4
|
-
import AbstractCliTest from '
|
|
5
|
-
import uiAssert from '
|
|
3
|
+
import CommandService from '../../../services/CommandService'
|
|
4
|
+
import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
5
|
+
import uiAssert from '../../../tests/utilities/uiAssert.utility'
|
|
6
6
|
|
|
7
7
|
export default class UpgradingANodeModuleTest extends AbstractCliTest {
|
|
8
8
|
protected static async beforeEach() {
|
|
@@ -16,9 +16,9 @@ export default class UpgradingANodeModuleTest extends AbstractCliTest {
|
|
|
16
16
|
|
|
17
17
|
@test()
|
|
18
18
|
protected static async buildErrorsGetPassedThroughToResults() {
|
|
19
|
-
CommandService.
|
|
20
|
-
CommandService.
|
|
21
|
-
CommandService.
|
|
19
|
+
CommandService.fakeCommand(/yarn (add|install)/gis, { code: 0 })
|
|
20
|
+
CommandService.fakeCommand(/yarn clean.build/gis, { code: 1 })
|
|
21
|
+
CommandService.fakeCommand(/yarn build.dev/gis, { code: 0 })
|
|
22
22
|
|
|
23
23
|
await this.getEmitter().on('feature.did-execute', () => {
|
|
24
24
|
return {
|
|
@@ -52,7 +52,7 @@ export default class UpgradingANodeModuleTest extends AbstractCliTest {
|
|
|
52
52
|
diskUtil.writeFile(tsConfig, 'beenChanged')
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
CommandService.
|
|
55
|
+
CommandService.fakeCommand(/yarn/gi, {
|
|
56
56
|
code: 0,
|
|
57
57
|
})
|
|
58
58
|
|
|
@@ -6,29 +6,21 @@ import {
|
|
|
6
6
|
FILE_ACTION_OVERWRITE,
|
|
7
7
|
FILE_ACTION_SKIP,
|
|
8
8
|
} from '../../../constants'
|
|
9
|
-
import CommandService from '../../../services/CommandService'
|
|
10
9
|
import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
11
10
|
import { GeneratedFile } from '../../../types/cli.types'
|
|
12
11
|
const BROKEN_SKILL_INDEX_CONTENTS = "throw new Error('cheese!')\n"
|
|
13
12
|
export default class UpgradingASkillTest extends AbstractCliTest {
|
|
14
13
|
protected static async beforeEach() {
|
|
15
14
|
await super.beforeEach()
|
|
16
|
-
|
|
17
|
-
code: 0,
|
|
18
|
-
})
|
|
15
|
+
this.commandFaker.fakeRebuild()
|
|
19
16
|
}
|
|
20
17
|
|
|
21
18
|
@test()
|
|
22
19
|
protected static async forceEverythingUpgradeOverwritesWhatHasChanged() {
|
|
23
20
|
const cli = await this.installAndBreakSkill('skills')
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
CommandService.setMockResponse('yarn build.dev', {
|
|
30
|
-
code: 0,
|
|
31
|
-
})
|
|
22
|
+
this.commandFaker.fakeCleanBuild()
|
|
23
|
+
this.commandFaker.fakeBuild()
|
|
32
24
|
|
|
33
25
|
const files: {
|
|
34
26
|
name: string
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import fsUtil from 'fs'
|
|
2
2
|
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
3
3
|
import { test, assert } from '@sprucelabs/test'
|
|
4
|
-
import CommandService from '../../../services/CommandService'
|
|
5
4
|
import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
6
5
|
import testUtil from '../../../tests/utilities/test.utility'
|
|
7
6
|
export default class UpgradingASkill2Test extends AbstractCliTest {
|
|
8
7
|
protected static async beforeEach() {
|
|
9
8
|
await super.beforeEach()
|
|
10
|
-
|
|
11
|
-
code: 0,
|
|
12
|
-
})
|
|
9
|
+
this.commandFaker.fakeRebuild()
|
|
13
10
|
}
|
|
14
11
|
|
|
15
12
|
@test(
|
|
@@ -41,12 +38,12 @@ export default class UpgradingASkill2Test extends AbstractCliTest {
|
|
|
41
38
|
) {
|
|
42
39
|
await this.FeatureFixture().installCachedFeatures(cacheKey)
|
|
43
40
|
|
|
44
|
-
shouldMockYarn &&
|
|
41
|
+
shouldMockYarn && this.commandFaker.fakeCommand(/yarn/, 0)
|
|
45
42
|
|
|
46
43
|
const pluginPath = this.resolveHashSprucePath(`features/${pluginName}`)
|
|
47
44
|
const originalContents = diskUtil.readFile(pluginPath)
|
|
48
45
|
|
|
49
|
-
diskUtil.writeFile(pluginPath, '
|
|
46
|
+
diskUtil.writeFile(pluginPath, 'aoeuaoeuao-euaoeu')
|
|
50
47
|
|
|
51
48
|
const results = await this.Action('node', 'upgrade').execute({})
|
|
52
49
|
|
|
@@ -173,7 +170,7 @@ export default class UpgradingASkill2Test extends AbstractCliTest {
|
|
|
173
170
|
const originalContents = diskUtil.readFile(match)
|
|
174
171
|
diskUtil.writeFile(match, 'broken')
|
|
175
172
|
|
|
176
|
-
|
|
173
|
+
this.commandFaker.fakeCommand(/yarn/, 0)
|
|
177
174
|
|
|
178
175
|
await this.Action('node', 'upgrade').execute({})
|
|
179
176
|
|
|
@@ -16,7 +16,7 @@ export default class UpgradingASkill3Test extends AbstractCliTest {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
await super.beforeEach()
|
|
19
|
-
CommandService.
|
|
19
|
+
CommandService.fakeCommand(new RegExp(/yarn rebuild/gis), {
|
|
20
20
|
code: 0,
|
|
21
21
|
})
|
|
22
22
|
}
|
|
@@ -92,7 +92,7 @@ export default class UpgradingASkill3Test extends AbstractCliTest {
|
|
|
92
92
|
return {}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
CommandService.
|
|
95
|
+
CommandService.fakeCommand('yarn clean.build', {
|
|
96
96
|
code: 0,
|
|
97
97
|
callback: () => {
|
|
98
98
|
wasCleanBuildCalled = true
|
|
@@ -101,7 +101,7 @@ export default class UpgradingASkill3Test extends AbstractCliTest {
|
|
|
101
101
|
|
|
102
102
|
let wasBuildDevCalled = false
|
|
103
103
|
|
|
104
|
-
CommandService.
|
|
104
|
+
CommandService.fakeCommand('yarn build.dev', {
|
|
105
105
|
code: 0,
|
|
106
106
|
callback: () => {
|
|
107
107
|
wasBuildDevCalled = true
|
|
@@ -216,17 +216,17 @@ export default class UpgradingASkill3Test extends AbstractCliTest {
|
|
|
216
216
|
private static disableCleanBuildAndYarnAdd() {
|
|
217
217
|
this.disableCleanAndBuild()
|
|
218
218
|
|
|
219
|
-
CommandService.
|
|
219
|
+
CommandService.fakeCommand(/yarn.*?add/gis, {
|
|
220
220
|
code: 0,
|
|
221
221
|
})
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
private static disableCleanAndBuild() {
|
|
225
|
-
CommandService.
|
|
225
|
+
CommandService.fakeCommand('yarn clean.build', {
|
|
226
226
|
code: 0,
|
|
227
227
|
})
|
|
228
228
|
|
|
229
|
-
CommandService.
|
|
229
|
+
CommandService.fakeCommand('yarn build.dev', {
|
|
230
230
|
code: 0,
|
|
231
231
|
})
|
|
232
232
|
}
|
|
@@ -7,7 +7,7 @@ import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
|
7
7
|
export default class UpgradingASkill4Test extends AbstractCliTest {
|
|
8
8
|
protected static async beforeEach() {
|
|
9
9
|
await super.beforeEach()
|
|
10
|
-
CommandService.
|
|
10
|
+
CommandService.fakeCommand(new RegExp(/yarn rebuild/gis), {
|
|
11
11
|
code: 0,
|
|
12
12
|
})
|
|
13
13
|
}
|
|
@@ -46,8 +46,8 @@ export default class UpgradingASkill4Test extends AbstractCliTest {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
CommandService.
|
|
50
|
-
CommandService.
|
|
49
|
+
CommandService.fakeCommand(/yarn clean/, { code: 0 })
|
|
50
|
+
CommandService.fakeCommand(/yarn build.dev/, { code: 0 })
|
|
51
51
|
|
|
52
52
|
await this.Action('node', 'upgrade').execute({})
|
|
53
53
|
|
|
@@ -35,7 +35,7 @@ export default class UpgradingASkill5Test extends AbstractCliTest {
|
|
|
35
35
|
) {
|
|
36
36
|
await this.FeatureFixture().installCachedFeatures('schemas')
|
|
37
37
|
|
|
38
|
-
CommandService.
|
|
38
|
+
CommandService.fakeCommand(new RegExp(/yarn/gis), {
|
|
39
39
|
code: 0,
|
|
40
40
|
})
|
|
41
41
|
|
|
@@ -75,7 +75,7 @@ export default class UpgradingASkill5Test extends AbstractCliTest {
|
|
|
75
75
|
let wasMovedBackToDev = false
|
|
76
76
|
let wasMovedBackToProd = false
|
|
77
77
|
|
|
78
|
-
CommandService.
|
|
78
|
+
CommandService.fakeCommand(new RegExp(/yarn/gis), {
|
|
79
79
|
code: 0,
|
|
80
80
|
callback: (_, args) => {
|
|
81
81
|
if (
|
|
@@ -2,7 +2,6 @@ import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'
|
|
|
2
2
|
import { test, assert } from '@sprucelabs/test'
|
|
3
3
|
import SpruceError from '../../../errors/SpruceError'
|
|
4
4
|
import { FeatureCode } from '../../../features/features.types'
|
|
5
|
-
import CommandService from '../../../services/CommandService'
|
|
6
5
|
import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
7
6
|
|
|
8
7
|
export default class UpgradingWithListeners extends AbstractCliTest {
|
|
@@ -27,9 +26,7 @@ export default class UpgradingWithListeners extends AbstractCliTest {
|
|
|
27
26
|
) {
|
|
28
27
|
await this.FeatureFixture().installCachedFeatures(featureCode)
|
|
29
28
|
|
|
30
|
-
|
|
31
|
-
code: 0,
|
|
32
|
-
})
|
|
29
|
+
this.commandFaker.fakeCommand(new RegExp(/yarn/))
|
|
33
30
|
|
|
34
31
|
let wasHit = false
|
|
35
32
|
|
|
@@ -42,9 +39,10 @@ export default class UpgradingWithListeners extends AbstractCliTest {
|
|
|
42
39
|
}
|
|
43
40
|
)
|
|
44
41
|
|
|
45
|
-
const results = await this.getEmitter().emit('feature.
|
|
42
|
+
const results = await this.getEmitter().emit('feature.did-execute', {
|
|
46
43
|
featureCode: 'node',
|
|
47
44
|
actionCode,
|
|
45
|
+
results: {},
|
|
48
46
|
})
|
|
49
47
|
|
|
50
48
|
const { errors } = eventResponseUtil.getAllResponsePayloadsAndErrors(
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import pathUtil from 'path'
|
|
2
2
|
import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'
|
|
3
3
|
import { test, assert } from '@sprucelabs/test'
|
|
4
|
-
import AbstractCliTest from '
|
|
5
|
-
import testUtil from '
|
|
4
|
+
import AbstractCliTest from '../../../tests/AbstractCliTest'
|
|
5
|
+
import testUtil from '../../../tests/utilities/test.utility'
|
|
6
6
|
|
|
7
7
|
export default class UpgradingWithSandboxFeatureInstalledTest extends AbstractCliTest {
|
|
8
8
|
protected static async beforeEach() {
|
|
9
9
|
await super.beforeEach()
|
|
10
10
|
await this.FeatureFixture().installCachedFeatures('sandbox')
|
|
11
|
-
await this.
|
|
11
|
+
await this.listenToDidInstallInThePast()
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
@test()
|
|
@@ -17,7 +17,7 @@ export default class UpgradingWithSandboxFeatureInstalledTest extends AbstractCl
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
@test()
|
|
20
|
-
protected static async
|
|
20
|
+
protected static async usesTodaysVersionEvenWithCoreListener() {
|
|
21
21
|
const match = await this.setupAndGetListenerPath()
|
|
22
22
|
|
|
23
23
|
const fileName = pathUtil.basename(match)
|
|
@@ -63,7 +63,7 @@ export default class UpgradingWithSandboxFeatureInstalledTest extends AbstractCl
|
|
|
63
63
|
return results
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
private static async
|
|
66
|
+
private static async listenToDidInstallInThePast() {
|
|
67
67
|
const results = await this.Action('event', 'listen').execute({
|
|
68
68
|
namespace: 'mercury',
|
|
69
69
|
eventName: 'did-install::v2020_12_25',
|
|
@@ -265,7 +265,7 @@ export default class FeatureCommandExecuterContTest extends AbstractSchemaTest {
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
private static setupMockCommands() {
|
|
268
|
-
CommandService.
|
|
268
|
+
CommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {
|
|
269
269
|
code: 0,
|
|
270
270
|
})
|
|
271
271
|
}
|
|
@@ -8,10 +8,10 @@ export default class ActionExecuter4Test extends AbstractCliTest {
|
|
|
8
8
|
protected static async beforeEach() {
|
|
9
9
|
await super.beforeEach()
|
|
10
10
|
|
|
11
|
-
CommandService.
|
|
11
|
+
CommandService.fakeCommand(/which docker/gis, {
|
|
12
12
|
code: 0,
|
|
13
13
|
})
|
|
14
|
-
CommandService.
|
|
14
|
+
CommandService.fakeCommand(ENABLE_NPM_CACHE_COMMAND, {
|
|
15
15
|
code: 0,
|
|
16
16
|
})
|
|
17
17
|
}
|
|
@@ -14,6 +14,7 @@ import { errorAssert } from '@sprucelabs/test-utils'
|
|
|
14
14
|
import CreateAction from '../../features/event/actions/CreateAction'
|
|
15
15
|
import EventStore from '../../features/event/stores/EventStore'
|
|
16
16
|
import AbstractEventTest from '../../tests/AbstractEventTest'
|
|
17
|
+
import { DEMO_NUMBER_EVENT_STORE } from '../../tests/constants'
|
|
17
18
|
import testUtil from '../../tests/utilities/test.utility'
|
|
18
19
|
|
|
19
20
|
const EVENT_NAME_READABLE = 'my event store amazing event'
|
|
@@ -30,6 +31,7 @@ export default class EventStoreTest extends AbstractEventTest {
|
|
|
30
31
|
await super.beforeEach()
|
|
31
32
|
this.createAction = this.Action<CreateAction>('event', 'create')
|
|
32
33
|
diskUtil.writeFile(this.resolvePath('package.json'), '{}')
|
|
34
|
+
await this.people.loginAsDemoPerson(DEMO_NUMBER_EVENT_STORE)
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
@test()
|
|
@@ -83,7 +85,7 @@ export default class EventStoreTest extends AbstractEventTest {
|
|
|
83
85
|
}),
|
|
84
86
|
emitPermissionContract: buildPermissionContract({
|
|
85
87
|
id: 'my-fantastic-event-contract',
|
|
86
|
-
name: '
|
|
88
|
+
name: 'Fantastic emit perms',
|
|
87
89
|
permissions: [
|
|
88
90
|
{
|
|
89
91
|
id: 'can-emit-perms',
|
|
@@ -10,7 +10,7 @@ export default class LintServiceTest extends AbstractCliTest {
|
|
|
10
10
|
|
|
11
11
|
await this.FeatureFixture().installCachedFeatures('skills')
|
|
12
12
|
|
|
13
|
-
CommandService.
|
|
13
|
+
CommandService.fakeCommand(/node/, {
|
|
14
14
|
code: 0,
|
|
15
15
|
stdout: `[{"filePath":"/Users/taylorromero/Development/SpruceLabs/spruce-appointments-skill/src/.spruce/stores/stores.types.ts","messages":[{"fatal":false,"severity":1,"message":"File ignored by default. Use a negated ignore pattern (like \\"--ignore-pattern '!<relative/path/to/filename>'\\") to override."}],"errorCount":1,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]}]\n`,
|
|
16
16
|
})
|
|
@@ -24,7 +24,7 @@ export default class LintServiceTest extends AbstractCliTest {
|
|
|
24
24
|
|
|
25
25
|
await this.FeatureFixture().installCachedFeatures('skills')
|
|
26
26
|
|
|
27
|
-
CommandService.
|
|
27
|
+
CommandService.fakeCommand(/node/, {
|
|
28
28
|
code: 0,
|
|
29
29
|
stdout: `[{"filePath":"/Users/taylorromero/Development/SpruceLabs/spruce-appointments-skill/src/.spruce/stores/stores.types.ts","messages":[{"fatal":false,"severity":1,"message":"File ignored by default. Use a negated ignore pattern (like \\"--ignore-pattern '!<relative/path/to/filename>'\\") to override."}],"errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":[]}]\n`,
|
|
30
30
|
})
|
|
@@ -26,7 +26,7 @@ export default class PkgServiceTest extends AbstractSkillTest {
|
|
|
26
26
|
|
|
27
27
|
@test()
|
|
28
28
|
protected static async handlesAtLatestInName() {
|
|
29
|
-
CommandService.
|
|
29
|
+
CommandService.fakeCommand(new RegExp(/yarn/gis), {
|
|
30
30
|
code: 0,
|
|
31
31
|
})
|
|
32
32
|
|
|
@@ -37,12 +37,9 @@ export default class PkgServiceTest extends AbstractSkillTest {
|
|
|
37
37
|
|
|
38
38
|
@test()
|
|
39
39
|
protected static async ifInstallingOnlySpruceModulesShouldNotRunNPMAdd() {
|
|
40
|
-
CommandService.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
code: 1,
|
|
44
|
-
}
|
|
45
|
-
)
|
|
40
|
+
CommandService.fakeCommand(new RegExp(/npm.*?install.*?--no-progress/gis), {
|
|
41
|
+
code: 1,
|
|
42
|
+
})
|
|
46
43
|
|
|
47
44
|
const { totalInstalled } = await this.pkg.install(
|
|
48
45
|
'@sprucelabs/jest-json-reporter'
|
|
@@ -7,7 +7,7 @@ export default class StoreFeatureTest extends AbstractCliTest {
|
|
|
7
7
|
protected static async syncsOnWillExecute() {
|
|
8
8
|
await this.FeatureFixture().installCachedFeatures('stores')
|
|
9
9
|
|
|
10
|
-
CommandService.
|
|
10
|
+
CommandService.fakeCommand(/yarn/, {
|
|
11
11
|
code: 0,
|
|
12
12
|
})
|
|
13
13
|
|
package/src/cli.ts
CHANGED
|
@@ -466,7 +466,7 @@ export async function run(argv: string[] = []): Promise<void> {
|
|
|
466
466
|
async function setupInFlightEntertainment(ui: TerminalInterface) {
|
|
467
467
|
if (
|
|
468
468
|
TerminalInterface.doesSupportColor() &&
|
|
469
|
-
process.env.
|
|
469
|
+
process.env.ENABLE_INSTALL_ENTERTAINMENT !== 'false'
|
|
470
470
|
) {
|
|
471
471
|
const command = new CommandService(diskUtil.resolvePath(__dirname, '../'))
|
|
472
472
|
InFlightEntertainment.setup({ command, ui })
|
|
@@ -102,25 +102,24 @@ export default class EventFeature extends AbstractFeature {
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
const isInstalled = await this.featureInstaller.isInstalled('event')
|
|
105
|
-
|
|
106
|
-
if (
|
|
105
|
+
const isRemoteRelevant =
|
|
107
106
|
isInstalled &&
|
|
108
107
|
(featureCode === 'event' ||
|
|
109
108
|
featureCode === 'eventContract' ||
|
|
110
109
|
actionCode === 'login') &&
|
|
111
110
|
actionCode !== 'setRemote'
|
|
112
|
-
|
|
111
|
+
|
|
112
|
+
if (isRemoteRelevant) {
|
|
113
113
|
const remoteResults = await this.appendRemoteToResultsOrPrompt()
|
|
114
114
|
results = actionUtil.mergeActionResults(results, remoteResults)
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
{}
|
|
120
|
-
)
|
|
121
|
-
results = actionUtil.mergeActionResults(results, syncResults)
|
|
122
|
-
}
|
|
117
|
+
return results
|
|
118
|
+
}
|
|
123
119
|
|
|
120
|
+
private async syncListenersAndMixinResults(results: FeatureActionResponse) {
|
|
121
|
+
const syncResults = await this.Action('event', 'sync.listeners').execute({})
|
|
122
|
+
results = actionUtil.mergeActionResults(results, syncResults)
|
|
124
123
|
return results
|
|
125
124
|
}
|
|
126
125
|
|
|
@@ -133,8 +132,12 @@ export default class EventFeature extends AbstractFeature {
|
|
|
133
132
|
|
|
134
133
|
let results = {}
|
|
135
134
|
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
const isUpgrade =
|
|
136
|
+
isInstalled && featureCode === 'node' && actionCode === 'upgrade'
|
|
137
|
+
|
|
138
|
+
if (isUpgrade) {
|
|
139
|
+
results = await this.Action('event', 'sync').execute({})
|
|
140
|
+
results = await this.syncListenersAndMixinResults(results)
|
|
138
141
|
}
|
|
139
142
|
|
|
140
143
|
if (this.initiatingAction === this.combineCodes(featureCode, actionCode)) {
|
|
@@ -21,6 +21,7 @@ import EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplat
|
|
|
21
21
|
import actionUtil from '../../../utilities/action.utility'
|
|
22
22
|
import AbstractAction from '../../AbstractAction'
|
|
23
23
|
import { FeatureActionResponse } from '../../features.types'
|
|
24
|
+
import { FetchContractsOptions } from '../stores/EventStore'
|
|
24
25
|
|
|
25
26
|
const SKILL_EVENT_NAMESPACE = 'skill'
|
|
26
27
|
const CORE_EVENT_NAMESPACE = 'mercury'
|
|
@@ -163,22 +164,31 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
163
164
|
namespace !== SKILL_EVENT_NAMESPACE &&
|
|
164
165
|
namespace !== CORE_EVENT_NAMESPACE
|
|
165
166
|
? [namespace]
|
|
166
|
-
:
|
|
167
|
-
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
167
|
+
: this.getDependencyNamespaces()
|
|
168
|
+
|
|
169
|
+
const options: FetchContractsOptions = {
|
|
170
|
+
didUpdateHandler: (msg: string) => this.ui.startLoading(msg),
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (skill.slug) {
|
|
174
|
+
options.localNamespace = skill.slug
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (namespacesForFetch.length > 0) {
|
|
178
|
+
options.namespaces = namespacesForFetch
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const { contracts } = await eventStore.fetchEventContracts(options)
|
|
178
182
|
|
|
179
183
|
return contracts
|
|
180
184
|
}
|
|
181
185
|
|
|
186
|
+
private getDependencyNamespaces() {
|
|
187
|
+
return this.Service('dependency')
|
|
188
|
+
.get()
|
|
189
|
+
.map((d) => d.namespace)
|
|
190
|
+
}
|
|
191
|
+
|
|
182
192
|
private async syncEvents(
|
|
183
193
|
options: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions
|
|
184
194
|
) {
|
|
@@ -53,6 +53,12 @@ const eventFileNamesImportKeyMap = {
|
|
|
53
53
|
'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
export interface FetchContractsOptions {
|
|
57
|
+
localNamespace?: string
|
|
58
|
+
namespaces?: string[]
|
|
59
|
+
didUpdateHandler?: InternalUpdateHandler
|
|
60
|
+
}
|
|
61
|
+
|
|
56
62
|
export default class EventStore extends AbstractStore {
|
|
57
63
|
public name = 'event'
|
|
58
64
|
protected static contractCache: Record<string, any> = {}
|
|
@@ -63,11 +69,9 @@ export default class EventStore extends AbstractStore {
|
|
|
63
69
|
EventStore.contractCache = {}
|
|
64
70
|
}
|
|
65
71
|
|
|
66
|
-
public async fetchEventContracts(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
didUpdateHandler?: InternalUpdateHandler
|
|
70
|
-
}): Promise<EventStoreFetchEventContractsResponse> {
|
|
72
|
+
public async fetchEventContracts(
|
|
73
|
+
options?: FetchContractsOptions
|
|
74
|
+
): Promise<EventStoreFetchEventContractsResponse> {
|
|
71
75
|
const { localNamespace, didUpdateHandler, namespaces } = options ?? {}
|
|
72
76
|
|
|
73
77
|
didUpdateHandler?.('Pulling remote contracts...')
|
|
@@ -107,13 +111,14 @@ export default class EventStore extends AbstractStore {
|
|
|
107
111
|
if (!EventStore.contractCache[key]) {
|
|
108
112
|
const client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })
|
|
109
113
|
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
const [{ contracts }] = await client.emitAndFlattenResponses(
|
|
115
|
+
'get-event-contracts::v2020_12_25',
|
|
116
|
+
{
|
|
117
|
+
target: {
|
|
118
|
+
namespaces,
|
|
119
|
+
},
|
|
120
|
+
}
|
|
121
|
+
)
|
|
117
122
|
|
|
118
123
|
EventStore.contractCache[key] = contracts
|
|
119
124
|
}
|
|
@@ -38,7 +38,7 @@ export default class StoreFeature extends AbstractFeature {
|
|
|
38
38
|
)
|
|
39
39
|
void this.emitter.on(
|
|
40
40
|
'feature.will-execute',
|
|
41
|
-
this.
|
|
41
|
+
this.handleDidExecute.bind(this)
|
|
42
42
|
)
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -55,20 +55,21 @@ export default class StoreFeature extends AbstractFeature {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
private async
|
|
58
|
+
private async handleDidExecute(payload: {
|
|
59
59
|
featureCode: string
|
|
60
60
|
actionCode: string
|
|
61
61
|
}) {
|
|
62
62
|
const isInstalled = await this.featureInstaller.isInstalled('store')
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
const isUpgrade =
|
|
65
65
|
isInstalled &&
|
|
66
66
|
payload.featureCode === 'node' &&
|
|
67
67
|
payload.actionCode === 'upgrade'
|
|
68
|
-
|
|
68
|
+
|
|
69
|
+
if (isUpgrade) {
|
|
69
70
|
uiUtil.renderMasthead({
|
|
70
71
|
ui: this.ui,
|
|
71
|
-
headline: '
|
|
72
|
+
headline: 'Re-syncing data stores...',
|
|
72
73
|
})
|
|
73
74
|
|
|
74
75
|
const results = await this.Action('store', 'sync').execute({})
|
|
@@ -184,10 +184,7 @@ export default class CommandService {
|
|
|
184
184
|
return { mockResponse: match?.response, mockKey }
|
|
185
185
|
}
|
|
186
186
|
|
|
187
|
-
public static
|
|
188
|
-
command: string | RegExp,
|
|
189
|
-
response: MockResponse
|
|
190
|
-
) {
|
|
187
|
+
public static fakeCommand(command: string | RegExp, response: MockResponse) {
|
|
191
188
|
this.mockResponses.unshift({
|
|
192
189
|
command,
|
|
193
190
|
response,
|
|
@@ -35,6 +35,7 @@ import StoreFactory, {
|
|
|
35
35
|
import { ApiClientFactoryOptions } from '../types/apiClient.types'
|
|
36
36
|
import { OptionOverrides } from '../types/cli.types'
|
|
37
37
|
import WriterFactory from '../writers/WriterFactory'
|
|
38
|
+
import CommandFaker from './CommandFaker'
|
|
38
39
|
import FeatureFixture, {
|
|
39
40
|
FeatureFixtureOptions,
|
|
40
41
|
} from './fixtures/FeatureFixture'
|
|
@@ -52,6 +53,7 @@ type ExecuterOptions = Partial<ActionExecuterOptions> & {
|
|
|
52
53
|
export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
53
54
|
protected static cliRoot = pathUtil.join(__dirname, '..')
|
|
54
55
|
protected static homeDir: string
|
|
56
|
+
protected static commandFaker: CommandFaker
|
|
55
57
|
|
|
56
58
|
private static _ui: SpyInterface
|
|
57
59
|
private static emitter?: GlobalEmitter
|
|
@@ -72,7 +74,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
72
74
|
ImportService.setCacheDir(diskUtil.createRandomTempDir())
|
|
73
75
|
ImportService.enableCaching()
|
|
74
76
|
|
|
75
|
-
process.env.
|
|
77
|
+
process.env.ENABLE_INSTALL_ENTERTAINMENT = 'false'
|
|
76
78
|
|
|
77
79
|
this.originalEnv = { ...process.env }
|
|
78
80
|
}
|
|
@@ -106,6 +108,9 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
106
108
|
EventStore.clearCache()
|
|
107
109
|
CommandService.clearMockResponses()
|
|
108
110
|
MercuryClientFactory.reset()
|
|
111
|
+
MercuryClientFactory.setIsTestMode(false)
|
|
112
|
+
|
|
113
|
+
this.commandFaker = new CommandFaker()
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
protected static async afterEach() {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import CommandService from '../services/CommandService'
|
|
2
|
+
|
|
3
|
+
type Command = RegExp | string
|
|
4
|
+
|
|
5
|
+
export default class CommandFaker {
|
|
6
|
+
public fakeRebuild(code = 0) {
|
|
7
|
+
const command = new RegExp(/yarn rebuild/gis)
|
|
8
|
+
this.fakeCommand(command, code)
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
public fakeCommand(command: Command, code = 0) {
|
|
12
|
+
CommandService.fakeCommand(command, {
|
|
13
|
+
code,
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public fakeCleanBuild(code = 0) {
|
|
18
|
+
this.fakeCommand('yarn clean.build', code)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public fakeBuild(code = 0) {
|
|
22
|
+
this.fakeCommand('yarn build.dev', code)
|
|
23
|
+
}
|
|
24
|
+
}
|