@neurodevs/meta-node 0.14.8 → 0.14.10
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/build/__tests__/AbstractAutomoduleTest.d.ts +2 -2
- package/build/__tests__/AbstractAutomoduleTest.js +39 -44
- package/build/__tests__/AbstractAutomoduleTest.js.map +1 -1
- package/build/__tests__/AbstractPackageTest.d.ts +2 -2
- package/build/__tests__/AbstractPackageTest.js +19 -27
- package/build/__tests__/AbstractPackageTest.js.map +1 -1
- package/build/__tests__/impl/GitAutocloner.test.d.ts +1 -1
- package/build/__tests__/impl/GitAutocloner.test.js +45 -52
- package/build/__tests__/impl/GitAutocloner.test.js.map +1 -1
- package/build/__tests__/impl/ImplAutomodule.test.d.ts +1 -1
- package/build/__tests__/impl/ImplAutomodule.test.js +32 -38
- package/build/__tests__/impl/ImplAutomodule.test.js.map +1 -1
- package/build/__tests__/impl/NpmAutopackage.test.d.ts +3 -2
- package/build/__tests__/impl/NpmAutopackage.test.js +162 -162
- package/build/__tests__/impl/NpmAutopackage.test.js.map +1 -1
- package/build/__tests__/impl/PackageAutodocumenter.test.d.ts +1 -1
- package/build/__tests__/impl/PackageAutodocumenter.test.js +8 -13
- package/build/__tests__/impl/PackageAutodocumenter.test.js.map +1 -1
- package/build/__tests__/impl/TypescriptClassSnippetSuite.test.d.ts +1 -1
- package/build/__tests__/impl/TypescriptClassSnippetSuite.test.js +42 -49
- package/build/__tests__/impl/TypescriptClassSnippetSuite.test.js.map +1 -1
- package/build/__tests__/impl/UiAutomodule.test.d.ts +1 -1
- package/build/__tests__/impl/UiAutomodule.test.js +30 -38
- package/build/__tests__/impl/UiAutomodule.test.js.map +1 -1
- package/build/__tests__/impl/VscodeSnippetKeybinder.test.d.ts +1 -1
- package/build/__tests__/impl/VscodeSnippetKeybinder.test.js +50 -57
- package/build/__tests__/impl/VscodeSnippetKeybinder.test.js.map +1 -1
- package/build/functions/expandHomeDir.js +4 -10
- package/build/functions/expandHomeDir.js.map +1 -1
- package/build/impl/AbstractAutomodule.d.ts +1 -1
- package/build/impl/AbstractAutomodule.js +23 -14
- package/build/impl/AbstractAutomodule.js.map +1 -1
- package/build/impl/GitAutocloner.js +16 -15
- package/build/impl/GitAutocloner.js.map +1 -1
- package/build/impl/ImplAutomodule.d.ts +2 -2
- package/build/impl/ImplAutomodule.js +6 -9
- package/build/impl/ImplAutomodule.js.map +1 -1
- package/build/impl/NpmAutopackage.d.ts +1 -1
- package/build/impl/NpmAutopackage.js +36 -29
- package/build/impl/NpmAutopackage.js.map +1 -1
- package/build/impl/PackageAutodocumenter.js +2 -4
- package/build/impl/PackageAutodocumenter.js.map +1 -1
- package/build/impl/TypescriptClassSnippetSuite.js +125 -129
- package/build/impl/TypescriptClassSnippetSuite.js.map +1 -1
- package/build/impl/UiAutomodule.d.ts +2 -2
- package/build/impl/UiAutomodule.js +8 -11
- package/build/impl/UiAutomodule.js.map +1 -1
- package/build/impl/VscodeSnippetKeybinder.js +16 -17
- package/build/impl/VscodeSnippetKeybinder.js.map +1 -1
- package/build/index.d.ts +28 -28
- package/build/index.js +28 -62
- package/build/index.js.map +1 -1
- package/build/scripts/installSnippetSuite.js +2 -7
- package/build/scripts/installSnippetSuite.js.map +1 -1
- package/build/scripts/runAutopackage.js +4 -9
- package/build/scripts/runAutopackage.js.map +1 -1
- package/build/scripts/runImplAutomodule.js +6 -11
- package/build/scripts/runImplAutomodule.js.map +1 -1
- package/build/scripts/runSnippetKeybinder.js +2 -7
- package/build/scripts/runSnippetKeybinder.js.map +1 -1
- package/build/scripts/runUiAutomodule.js +6 -11
- package/build/scripts/runUiAutomodule.js.map +1 -1
- package/build/testDoubles/Autocloner/FakeAutocloner.d.ts +1 -1
- package/build/testDoubles/Autocloner/FakeAutocloner.js +3 -6
- package/build/testDoubles/Autocloner/FakeAutocloner.js.map +1 -1
- package/build/testDoubles/Autodocumenter/FakeAutodocumenter.d.ts +1 -1
- package/build/testDoubles/Autodocumenter/FakeAutodocumenter.js +2 -5
- package/build/testDoubles/Autodocumenter/FakeAutodocumenter.js.map +1 -1
- package/build/testDoubles/Automodule/FakeAutomodule.d.ts +3 -3
- package/build/testDoubles/Automodule/FakeAutomodule.js +3 -6
- package/build/testDoubles/Automodule/FakeAutomodule.js.map +1 -1
- package/build/testDoubles/Autopackage/FakeAutopackage.d.ts +1 -1
- package/build/testDoubles/Autopackage/FakeAutopackage.js +3 -6
- package/build/testDoubles/Autopackage/FakeAutopackage.js.map +1 -1
- package/build/testDoubles/SnippetKeybinder/FakeSnippetKeybinder.d.ts +1 -1
- package/build/testDoubles/SnippetKeybinder/FakeSnippetKeybinder.js +3 -5
- package/build/testDoubles/SnippetKeybinder/FakeSnippetKeybinder.js.map +1 -1
- package/build/testDoubles/SnippetSuite/FakeSnippetSuite.d.ts +1 -1
- package/build/testDoubles/SnippetSuite/FakeSnippetSuite.js +3 -6
- package/build/testDoubles/SnippetSuite/FakeSnippetSuite.js.map +1 -1
- package/build/types.js +1 -2
- package/package.json +5 -3
- package/src/__tests__/AbstractAutomoduleTest.ts +5 -4
- package/src/__tests__/AbstractPackageTest.ts +4 -3
- package/src/__tests__/impl/GitAutocloner.test.ts +4 -3
- package/src/__tests__/impl/ImplAutomodule.test.ts +5 -4
- package/src/__tests__/impl/NpmAutopackage.test.ts +31 -15
- package/src/__tests__/impl/PackageAutodocumenter.test.ts +4 -3
- package/src/__tests__/impl/TypescriptClassSnippetSuite.test.ts +4 -3
- package/src/__tests__/impl/UiAutomodule.test.ts +5 -4
- package/src/__tests__/impl/VscodeSnippetKeybinder.test.ts +4 -3
- package/src/impl/AbstractAutomodule.ts +2 -1
- package/src/impl/ImplAutomodule.ts +3 -3
- package/src/impl/NpmAutopackage.ts +4 -3
- package/src/impl/TypescriptClassSnippetSuite.ts +1 -1
- package/src/impl/UiAutomodule.ts +4 -3
- package/src/impl/VscodeSnippetKeybinder.ts +2 -1
- package/src/index.ts +28 -28
- package/src/scripts/installSnippetSuite.ts +1 -1
- package/src/scripts/runAutopackage.ts +2 -2
- package/src/scripts/runImplAutomodule.ts +2 -2
- package/src/scripts/runSnippetKeybinder.ts +1 -1
- package/src/scripts/runUiAutomodule.ts +2 -2
- package/src/testDoubles/Autocloner/FakeAutocloner.ts +1 -1
- package/src/testDoubles/Autodocumenter/FakeAutodocumenter.ts +1 -1
- package/src/testDoubles/Automodule/FakeAutomodule.ts +3 -3
- package/src/testDoubles/Autopackage/FakeAutopackage.ts +1 -1
- package/src/testDoubles/SnippetKeybinder/FakeSnippetKeybinder.ts +1 -1
- package/src/testDoubles/SnippetSuite/FakeSnippetSuite.ts +1 -1
- package/tsconfig.json +17 -28
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import AbstractPackageTest from '../AbstractPackageTest';
|
|
1
|
+
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
2
2
|
export default class NpmAutopackageTest extends AbstractPackageTest {
|
|
3
3
|
private static instance;
|
|
4
4
|
protected static beforeEach(): Promise<void>;
|
|
@@ -8,7 +8,8 @@ export default class NpmAutopackageTest extends AbstractPackageTest {
|
|
|
8
8
|
protected static thenChdirToInstallDir(): Promise<void>;
|
|
9
9
|
protected static thenGitClone(): Promise<void>;
|
|
10
10
|
protected static thenChdirToPackageDir(): Promise<void>;
|
|
11
|
-
protected static
|
|
11
|
+
protected static thenGitFetchOrigin(): Promise<void>;
|
|
12
|
+
protected static thenGitFetchResetHard(): Promise<void>;
|
|
12
13
|
protected static thenSpruceCreateModule(): Promise<void>;
|
|
13
14
|
protected static thenCommitCreatePackage(): Promise<void>;
|
|
14
15
|
protected static thenReadPackageJson(): Promise<void>;
|
|
@@ -1,25 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const NpmAutopackage_1 = __importDefault(require("../../impl/NpmAutopackage"));
|
|
20
|
-
const AbstractPackageTest_1 = __importDefault(require("../AbstractPackageTest"));
|
|
21
|
-
const exec = (0, util_1.promisify)(child_process_1.exec);
|
|
22
|
-
class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
7
|
+
import { exec as execSync } from 'child_process';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import { promisify } from 'util';
|
|
10
|
+
import { callsToChdir, callsToExec, callsToFetch, callsToReadFile, callsToWriteFile, fakeChdir, fakeExec, fakeFetch, fakePathExists, fakeReadFile, fakeWriteFile, resetCallsToChdir, resetCallsToExec, resetCallsToFetch, resetCallsToPathExists, resetCallsToReadFile, resetCallsToWriteFile, setFakeExecResult, setFakeFetchResponse, setFakeReadFileResult, setPathShouldExist, } from '@neurodevs/fake-node-core';
|
|
11
|
+
import generateId from '@neurodevs/generate-id';
|
|
12
|
+
import { test, assert } from '@neurodevs/node-tdd';
|
|
13
|
+
import NpmAutopackage from '../../impl/NpmAutopackage.js';
|
|
14
|
+
import AbstractPackageTest from '../AbstractPackageTest.js';
|
|
15
|
+
const exec = promisify(execSync);
|
|
16
|
+
export default class NpmAutopackageTest extends AbstractPackageTest {
|
|
17
|
+
static instance;
|
|
23
18
|
static async beforeEach() {
|
|
24
19
|
await super.beforeEach();
|
|
25
20
|
this.fakeChdir();
|
|
@@ -33,20 +28,20 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
33
28
|
this.instance = this.NpmAutopackage();
|
|
34
29
|
}
|
|
35
30
|
static async createsInstance() {
|
|
36
|
-
|
|
31
|
+
assert.isTruthy(this.instance, 'Failed to create instance!');
|
|
37
32
|
}
|
|
38
33
|
static async throwsIfGithubTokenNotSet() {
|
|
39
34
|
delete process.env.GITHUB_TOKEN;
|
|
40
|
-
await
|
|
35
|
+
await assert.doesThrowAsync(async () => {
|
|
41
36
|
const instance = this.NpmAutopackage();
|
|
42
37
|
await instance.run();
|
|
43
38
|
}, 'Please set process.env.GITHUB_TOKEN!', 'Did not throw with missing process.env.GITHUB_TOKEN!');
|
|
44
39
|
}
|
|
45
40
|
static async firstCreateRepoInGithubOrg() {
|
|
46
41
|
await this.run();
|
|
47
|
-
|
|
48
|
-
passedUrl:
|
|
49
|
-
passedInit:
|
|
42
|
+
assert.isEqualDeep({
|
|
43
|
+
passedUrl: callsToFetch[1]?.input,
|
|
44
|
+
passedInit: callsToFetch[1]?.init,
|
|
50
45
|
}, {
|
|
51
46
|
passedUrl: `https://api.github.com/orgs/${this.gitNamespace}/repos`,
|
|
52
47
|
passedInit: {
|
|
@@ -69,27 +64,31 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
69
64
|
}
|
|
70
65
|
static async thenChdirToInstallDir() {
|
|
71
66
|
await this.run();
|
|
72
|
-
|
|
67
|
+
assert.isEqual(callsToChdir[0], this.installDir, 'Did not change to installDir!');
|
|
73
68
|
}
|
|
74
69
|
static async thenGitClone() {
|
|
75
70
|
await this.run();
|
|
76
|
-
|
|
71
|
+
assert.isEqual(callsToExec[0], `git clone https://github.com/${this.gitNamespace}/${this.packageName}.git`, 'Did not call git clone!');
|
|
77
72
|
}
|
|
78
73
|
static async thenChdirToPackageDir() {
|
|
79
74
|
await this.run();
|
|
80
|
-
|
|
75
|
+
assert.isEqual(callsToChdir[1], this.packageDir, 'Did not change to packageDir!');
|
|
76
|
+
}
|
|
77
|
+
static async thenGitFetchOrigin() {
|
|
78
|
+
await this.run();
|
|
79
|
+
assert.isEqual(callsToExec[1], `git fetch origin`, 'Did not call git fetch origin!');
|
|
81
80
|
}
|
|
82
|
-
static async
|
|
81
|
+
static async thenGitFetchResetHard() {
|
|
83
82
|
await this.run();
|
|
84
|
-
|
|
83
|
+
assert.isEqual(callsToExec[2], `git reset --hard origin/main`, 'Did not call git reset hard!');
|
|
85
84
|
}
|
|
86
85
|
static async thenSpruceCreateModule() {
|
|
87
86
|
await this.run();
|
|
88
|
-
|
|
87
|
+
assert.isEqual(callsToExec[4], this.createModuleCmd, 'Did not call "spruce create.module"!');
|
|
89
88
|
}
|
|
90
89
|
static async thenCommitCreatePackage() {
|
|
91
90
|
await this.run();
|
|
92
|
-
|
|
91
|
+
assert.isEqualDeep(callsToExec.slice(5, 8), [
|
|
93
92
|
'git add .',
|
|
94
93
|
`git commit -m "patch: create package (@neurodevs/meta-node: ${this.metaNodeVersion})"`,
|
|
95
94
|
'git push',
|
|
@@ -97,14 +96,14 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
97
96
|
}
|
|
98
97
|
static async thenReadPackageJson() {
|
|
99
98
|
await this.run();
|
|
100
|
-
|
|
99
|
+
assert.isEqualDeep(callsToReadFile[1], {
|
|
101
100
|
path: this.packageJsonPath,
|
|
102
101
|
options: { encoding: 'utf-8' },
|
|
103
102
|
});
|
|
104
103
|
}
|
|
105
104
|
static async thenUpdatePackageJson() {
|
|
106
105
|
await this.run();
|
|
107
|
-
const actual =
|
|
106
|
+
const actual = callsToWriteFile[0];
|
|
108
107
|
const ordered = this.orderJsonKeys(JSON.parse(this.updatedPackageJson), [
|
|
109
108
|
'name',
|
|
110
109
|
'version',
|
|
@@ -129,7 +128,7 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
129
128
|
data: JSON.stringify(ordered, null, 2) + '\n',
|
|
130
129
|
options: { encoding: 'utf-8' },
|
|
131
130
|
};
|
|
132
|
-
|
|
131
|
+
assert.isEqualDeep({
|
|
133
132
|
...actual,
|
|
134
133
|
data: this.normalize(actual.data),
|
|
135
134
|
}, {
|
|
@@ -139,7 +138,7 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
139
138
|
}
|
|
140
139
|
static async thenCommitUpdatePackage() {
|
|
141
140
|
await this.run();
|
|
142
|
-
|
|
141
|
+
assert.isEqualDeep(callsToExec.slice(8, 11), [
|
|
143
142
|
'git add .',
|
|
144
143
|
`git commit -m "patch: update package.json (@neurodevs/meta-node: ${this.metaNodeVersion})"`,
|
|
145
144
|
'git push',
|
|
@@ -147,7 +146,7 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
147
146
|
}
|
|
148
147
|
static async thenAddBuildDirToGitignore() {
|
|
149
148
|
await this.run();
|
|
150
|
-
|
|
149
|
+
assert.isEqualDeep(callsToWriteFile[1], {
|
|
151
150
|
file: this.gitignorePath,
|
|
152
151
|
data: this.buildDirGitignorePattern,
|
|
153
152
|
options: { encoding: 'utf-8', flag: 'a' },
|
|
@@ -155,7 +154,7 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
155
154
|
}
|
|
156
155
|
static async thenCommitUpdateGitignore() {
|
|
157
156
|
await this.run();
|
|
158
|
-
|
|
157
|
+
assert.isEqualDeep(callsToExec.slice(11, 14), [
|
|
159
158
|
'git add .',
|
|
160
159
|
`git commit -m "patch: add build dir to gitignore (@neurodevs/meta-node: ${this.metaNodeVersion})"`,
|
|
161
160
|
'git push',
|
|
@@ -163,11 +162,11 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
163
162
|
}
|
|
164
163
|
static async thenSpruceSetupVscode() {
|
|
165
164
|
await this.run();
|
|
166
|
-
|
|
165
|
+
assert.isEqual(callsToExec[14], this.setupVscodeCmd, 'Did not call "spruce setup.vscode"!');
|
|
167
166
|
}
|
|
168
167
|
static async thenCommitVscodeChanges() {
|
|
169
168
|
await this.run();
|
|
170
|
-
|
|
169
|
+
assert.isEqualDeep(callsToExec.slice(15, 18), [
|
|
171
170
|
'git add .',
|
|
172
171
|
`git commit -m "patch: setup vscode (@neurodevs/meta-node: ${this.metaNodeVersion})"`,
|
|
173
172
|
'git push',
|
|
@@ -175,7 +174,7 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
175
174
|
}
|
|
176
175
|
static async thenUpdatesVscodeTasksJson() {
|
|
177
176
|
await this.run();
|
|
178
|
-
|
|
177
|
+
assert.isEqualDeep(callsToWriteFile[2], {
|
|
179
178
|
file: this.tasksJsonPath,
|
|
180
179
|
data: this.updatedTasksJson,
|
|
181
180
|
options: { encoding: 'utf-8' },
|
|
@@ -183,7 +182,7 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
183
182
|
}
|
|
184
183
|
static async thenCommitsUpdateVscodeTasksJson() {
|
|
185
184
|
await this.run();
|
|
186
|
-
|
|
185
|
+
assert.isEqualDeep(callsToExec.slice(18, 21), [
|
|
187
186
|
'git add .',
|
|
188
187
|
`git commit -m "patch: update vscode tasks.json (@neurodevs/meta-node: ${this.metaNodeVersion})"`,
|
|
189
188
|
'git push',
|
|
@@ -191,11 +190,11 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
191
190
|
}
|
|
192
191
|
static async thenInstallsDefaultDevDependencies() {
|
|
193
192
|
await this.run();
|
|
194
|
-
|
|
193
|
+
assert.isEqual(callsToExec[22], 'yarn add -D @neurodevs/generate-id@latest', 'Did not install default devDependencies!');
|
|
195
194
|
}
|
|
196
195
|
static async thenCommitsInstallDefaultDevDependencies() {
|
|
197
196
|
await this.run();
|
|
198
|
-
|
|
197
|
+
assert.isEqualDeep(callsToExec.slice(23, 26), [
|
|
199
198
|
'git add .',
|
|
200
199
|
`git commit -m "patch: install default devDependencies (@neurodevs/meta-node: ${this.metaNodeVersion})"`,
|
|
201
200
|
'git push',
|
|
@@ -203,76 +202,76 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
203
202
|
}
|
|
204
203
|
static async lastlyOpensVscodeAtEnd() {
|
|
205
204
|
await this.run();
|
|
206
|
-
|
|
205
|
+
assert.isEqual(callsToExec[26], 'code .', 'Did not open vscode at end!');
|
|
207
206
|
}
|
|
208
207
|
static async doesNotCreateRepoInGithubOrgIfDone() {
|
|
209
208
|
const fakeResponse = new Response(null, {
|
|
210
209
|
status: 200,
|
|
211
210
|
statusText: 'OK',
|
|
212
211
|
});
|
|
213
|
-
|
|
212
|
+
setFakeFetchResponse(this.reposUrl, fakeResponse);
|
|
214
213
|
await this.createAndRunAutopackage();
|
|
215
|
-
const numCalls =
|
|
216
|
-
|
|
214
|
+
const numCalls = callsToFetch.filter((call) => call.input === this.orgsUrl).length;
|
|
215
|
+
assert.isEqual(numCalls, 0, 'Should not have created repo!');
|
|
217
216
|
}
|
|
218
217
|
static async doesNotCloneRepoIfDone() {
|
|
219
218
|
await this.createAndRunAutopackage();
|
|
220
|
-
|
|
219
|
+
assert.isEqual(callsToExec.filter((cmd) => cmd ===
|
|
221
220
|
`git clone https://github.com/${this.gitNamespace}/${this.packageName}.git`).length, 1, 'Did not clone repo once!');
|
|
222
221
|
}
|
|
223
222
|
static async doesNotSpruceCreateModuleIfDone() {
|
|
224
223
|
await this.createAndRunAutopackage();
|
|
225
|
-
|
|
224
|
+
assert.isEqual(callsToExec.filter((cmd) => cmd === this.createModuleCmd).length, 1, 'Did not call spruce create.module once!');
|
|
226
225
|
}
|
|
227
226
|
static async doesNotRunSetupVscodeIfDone() {
|
|
228
227
|
await this.createAndRunAutopackage();
|
|
229
|
-
|
|
228
|
+
assert.isEqual(callsToExec.filter((cmd) => cmd === this.setupVscodeCmd).length, 1, 'Did not call spruce setup.vscode once!');
|
|
230
229
|
}
|
|
231
230
|
static async doesNotCommitCreatePackageIfDone() {
|
|
232
231
|
await this.createAndRunAutopackage();
|
|
233
|
-
|
|
232
|
+
assert.isEqual(callsToExec.filter((cmd) => cmd ===
|
|
234
233
|
`git commit -m "patch: create package (@neurodevs/meta-node: ${this.metaNodeVersion})"`).length, 1, 'Did not commit create package changes once!');
|
|
235
234
|
}
|
|
236
235
|
static async doesNotCommitUpdatePackageIfDone() {
|
|
237
236
|
await this.createAndRunAutopackage();
|
|
238
|
-
|
|
237
|
+
assert.isEqual(callsToExec.filter((cmd) => cmd ===
|
|
239
238
|
`git commit -m "patch: update package.json (@neurodevs/meta-node: ${this.metaNodeVersion})"`).length, 1, 'Did not commit update package changes once!');
|
|
240
239
|
}
|
|
241
240
|
static async doesNotCommitUpdateGitignoreIfDone() {
|
|
242
241
|
await this.createAndRunAutopackage();
|
|
243
|
-
|
|
242
|
+
assert.isEqual(callsToExec.filter((cmd) => cmd ===
|
|
244
243
|
`git commit -m "patch: add build dir to gitignore (@neurodevs/meta-node: ${this.metaNodeVersion})"`).length, 1, 'Did not commit gitignore changes once!');
|
|
245
244
|
}
|
|
246
245
|
static async doesNotCommitSetupVscodeIfDone() {
|
|
247
246
|
await this.createAndRunAutopackage();
|
|
248
|
-
|
|
247
|
+
assert.isEqual(callsToExec.filter((cmd) => cmd ===
|
|
249
248
|
`git commit -m "patch: setup vscode (@neurodevs/meta-node: ${this.metaNodeVersion})"`).length, 1, 'Did not commit vscode changes once!');
|
|
250
249
|
}
|
|
251
250
|
static async doesNotOverrideOriginalDependencies() {
|
|
252
251
|
await this.createAndRunAutopackage();
|
|
253
|
-
|
|
252
|
+
assert.isEqualDeep(JSON.parse(callsToWriteFile[0]?.data).dependencies, this.dependencies, 'Did not update package.json as expected!');
|
|
254
253
|
}
|
|
255
254
|
static async doesNotUpdateTasksJsonIfAlreadyDone() {
|
|
256
|
-
|
|
255
|
+
setFakeReadFileResult(this.tasksJsonPath, this.updatedTasksJson);
|
|
257
256
|
await this.createAndRunAutopackage();
|
|
258
|
-
|
|
257
|
+
assert.isEqualDeep(callsToWriteFile.filter((call) => call.file === this.tasksJsonPath)
|
|
259
258
|
.length, 0, 'Did not update tasks.json once!');
|
|
260
259
|
}
|
|
261
260
|
static async doesNotOpenVscodeIfNotCloned() {
|
|
262
|
-
|
|
261
|
+
setPathShouldExist(this.packageName, true);
|
|
263
262
|
await this.createAndRunAutopackage();
|
|
264
|
-
|
|
263
|
+
assert.isFalse(callsToExec.includes('code .'), 'Should not open vscode if not cloned!');
|
|
265
264
|
}
|
|
266
265
|
static async doesNotInstallDevDependenciesIfLatest() {
|
|
267
|
-
|
|
266
|
+
setFakeExecResult(this.checkGenerateIdVersionCmd, {
|
|
268
267
|
stdout: '1.0.0',
|
|
269
268
|
});
|
|
270
269
|
await this.createAndRunAutopackage();
|
|
271
|
-
const calls =
|
|
272
|
-
|
|
270
|
+
const calls = callsToExec.filter((cmd) => cmd === 'yarn add -D @neurodevs/generate-id@latest');
|
|
271
|
+
assert.isEqual(calls.length, 0, 'Should not install default devDependencies if already installed!');
|
|
273
272
|
}
|
|
274
273
|
static async doesNotThrowIfGenerateIdNotInPackageJson() {
|
|
275
|
-
|
|
274
|
+
setFakeReadFileResult(this.packageJsonPath, this.originalPackageJson.replace('@neurodevs/generate-id', ''));
|
|
276
275
|
await this.createAndRunAutopackage();
|
|
277
276
|
}
|
|
278
277
|
static async run() {
|
|
@@ -288,9 +287,16 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
288
287
|
static get packageDir() {
|
|
289
288
|
return this.packageName;
|
|
290
289
|
}
|
|
290
|
+
static packageJsonPath = 'package.json';
|
|
291
|
+
static gitignorePath = '.gitignore';
|
|
292
|
+
static buildDirGitignorePattern = '\nbuild/\n';
|
|
291
293
|
static get createModuleCmd() {
|
|
292
294
|
return `spruce create.module --name "${this.packageName}" --destination "." --description "${this.packageDescription}"`;
|
|
293
295
|
}
|
|
296
|
+
static setupVscodeCmd = 'spruce setup.vscode --all true';
|
|
297
|
+
static checkGenerateIdVersionCmd = `yarn info @neurodevs/generate-id version --silent`;
|
|
298
|
+
static yarnGlobalDirCmd = 'yarn global dir';
|
|
299
|
+
static fakeGlobalRoot = generateId();
|
|
294
300
|
static orderJsonKeys(json, keyOrder) {
|
|
295
301
|
const ordered = {};
|
|
296
302
|
for (const key of keyOrder) {
|
|
@@ -307,48 +313,63 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
307
313
|
return ordered;
|
|
308
314
|
}
|
|
309
315
|
static fakeChdir() {
|
|
310
|
-
|
|
311
|
-
|
|
316
|
+
NpmAutopackage.chdir = fakeChdir;
|
|
317
|
+
resetCallsToChdir();
|
|
312
318
|
}
|
|
313
319
|
static fakeExec() {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
320
|
+
NpmAutopackage.exec = fakeExec;
|
|
321
|
+
resetCallsToExec();
|
|
322
|
+
setFakeExecResult(this.yarnGlobalDirCmd, {
|
|
317
323
|
stdout: this.fakeGlobalRoot,
|
|
318
324
|
});
|
|
319
|
-
|
|
325
|
+
setFakeReadFileResult(path.join(this.fakeGlobalRoot, 'node_modules', '@neurodevs', 'meta-node', 'package.json'), JSON.stringify({ version: this.metaNodeVersion }));
|
|
320
326
|
}
|
|
321
327
|
static fakePathExists() {
|
|
322
|
-
|
|
323
|
-
|
|
328
|
+
NpmAutopackage.pathExists = fakePathExists;
|
|
329
|
+
resetCallsToPathExists();
|
|
324
330
|
}
|
|
325
331
|
static fakeFetch() {
|
|
326
|
-
|
|
327
|
-
|
|
332
|
+
NpmAutopackage.fetch = fakeFetch;
|
|
333
|
+
resetCallsToFetch();
|
|
328
334
|
}
|
|
329
335
|
static fakeReadFile() {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
336
|
+
NpmAutopackage.readFile = fakeReadFile;
|
|
337
|
+
resetCallsToReadFile();
|
|
338
|
+
setFakeReadFileResult(this.packageJsonPath, this.originalPackageJson);
|
|
339
|
+
setFakeReadFileResult(this.tasksJsonPath, JSON.stringify(this.originalTasksJson));
|
|
334
340
|
}
|
|
335
341
|
static fakeWriteFile() {
|
|
336
|
-
|
|
337
|
-
|
|
342
|
+
NpmAutopackage.writeFile = fakeWriteFile;
|
|
343
|
+
resetCallsToWriteFile();
|
|
338
344
|
}
|
|
339
345
|
static fakeFetchForRepoNotFound() {
|
|
340
346
|
const fakeResponse = new Response(null, {
|
|
341
347
|
status: 404,
|
|
342
348
|
statusText: 'Not Found',
|
|
343
349
|
});
|
|
344
|
-
|
|
345
|
-
}
|
|
350
|
+
setFakeFetchResponse(this.reposUrl, fakeResponse);
|
|
351
|
+
}
|
|
352
|
+
static packageName = generateId();
|
|
353
|
+
static packageDescription = generateId();
|
|
354
|
+
static gitNamespace = generateId();
|
|
355
|
+
static npmNamespace = generateId();
|
|
356
|
+
static installDir = generateId();
|
|
357
|
+
static keywords = [generateId(), generateId()];
|
|
358
|
+
static license = generateId();
|
|
359
|
+
static author = generateId();
|
|
360
|
+
static githubToken = generateId();
|
|
361
|
+
static metaNodeVersion = generateId();
|
|
362
|
+
static randomId = generateId();
|
|
346
363
|
static get reposUrl() {
|
|
347
364
|
return `https://api.github.com/repos/${this.gitNamespace}/${this.packageName}`;
|
|
348
365
|
}
|
|
349
366
|
static get orgsUrl() {
|
|
350
367
|
return `https://api.github.com/orgs/${this.gitNamespace}/repos`;
|
|
351
368
|
}
|
|
369
|
+
static dependencies = {
|
|
370
|
+
[generateId()]: generateId(),
|
|
371
|
+
[generateId()]: generateId(),
|
|
372
|
+
};
|
|
352
373
|
static get originalPackageJson() {
|
|
353
374
|
return JSON.stringify({
|
|
354
375
|
name: this.packageName,
|
|
@@ -379,6 +400,20 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
379
400
|
dependencies: this.dependencies,
|
|
380
401
|
});
|
|
381
402
|
}
|
|
403
|
+
static tasksJsonPath = '.vscode/tasks.json';
|
|
404
|
+
static originalTasksJson = {
|
|
405
|
+
[this.randomId]: this.randomId,
|
|
406
|
+
tasks: [
|
|
407
|
+
{
|
|
408
|
+
[this.randomId]: this.randomId,
|
|
409
|
+
},
|
|
410
|
+
],
|
|
411
|
+
inputs: [
|
|
412
|
+
{
|
|
413
|
+
[this.randomId]: this.randomId,
|
|
414
|
+
},
|
|
415
|
+
],
|
|
416
|
+
};
|
|
382
417
|
static get updatedTasksJson() {
|
|
383
418
|
return JSON.stringify({
|
|
384
419
|
...this.originalTasksJson,
|
|
@@ -408,158 +443,123 @@ class NpmAutopackageTest extends AbstractPackageTest_1.default {
|
|
|
408
443
|
],
|
|
409
444
|
}, null, 4);
|
|
410
445
|
}
|
|
446
|
+
static defaultOptions = {
|
|
447
|
+
name: this.packageName,
|
|
448
|
+
description: this.packageDescription,
|
|
449
|
+
gitNamespace: this.gitNamespace,
|
|
450
|
+
npmNamespace: this.npmNamespace,
|
|
451
|
+
installDir: this.installDir,
|
|
452
|
+
keywords: this.keywords,
|
|
453
|
+
license: this.license,
|
|
454
|
+
author: this.author,
|
|
455
|
+
};
|
|
411
456
|
static NpmAutopackage(options) {
|
|
412
|
-
return
|
|
457
|
+
return NpmAutopackage.Create({ ...this.defaultOptions, ...options });
|
|
413
458
|
}
|
|
414
459
|
}
|
|
415
|
-
_a = NpmAutopackageTest;
|
|
416
|
-
NpmAutopackageTest.packageJsonPath = 'package.json';
|
|
417
|
-
NpmAutopackageTest.gitignorePath = '.gitignore';
|
|
418
|
-
NpmAutopackageTest.buildDirGitignorePattern = '\nbuild/\n';
|
|
419
|
-
NpmAutopackageTest.setupVscodeCmd = 'spruce setup.vscode --all true';
|
|
420
|
-
NpmAutopackageTest.checkGenerateIdVersionCmd = `yarn info @neurodevs/generate-id version --silent`;
|
|
421
|
-
NpmAutopackageTest.yarnGlobalDirCmd = 'yarn global dir';
|
|
422
|
-
NpmAutopackageTest.fakeGlobalRoot = (0, generate_id_1.default)();
|
|
423
|
-
NpmAutopackageTest.packageName = (0, generate_id_1.default)();
|
|
424
|
-
NpmAutopackageTest.packageDescription = (0, generate_id_1.default)();
|
|
425
|
-
NpmAutopackageTest.gitNamespace = (0, generate_id_1.default)();
|
|
426
|
-
NpmAutopackageTest.npmNamespace = (0, generate_id_1.default)();
|
|
427
|
-
NpmAutopackageTest.installDir = (0, generate_id_1.default)();
|
|
428
|
-
NpmAutopackageTest.keywords = [(0, generate_id_1.default)(), (0, generate_id_1.default)()];
|
|
429
|
-
NpmAutopackageTest.license = (0, generate_id_1.default)();
|
|
430
|
-
NpmAutopackageTest.author = (0, generate_id_1.default)();
|
|
431
|
-
NpmAutopackageTest.githubToken = (0, generate_id_1.default)();
|
|
432
|
-
NpmAutopackageTest.metaNodeVersion = (0, generate_id_1.default)();
|
|
433
|
-
NpmAutopackageTest.randomId = (0, generate_id_1.default)();
|
|
434
|
-
NpmAutopackageTest.dependencies = {
|
|
435
|
-
[(0, generate_id_1.default)()]: (0, generate_id_1.default)(),
|
|
436
|
-
[(0, generate_id_1.default)()]: (0, generate_id_1.default)(),
|
|
437
|
-
};
|
|
438
|
-
NpmAutopackageTest.tasksJsonPath = '.vscode/tasks.json';
|
|
439
|
-
NpmAutopackageTest.originalTasksJson = {
|
|
440
|
-
[this.randomId]: _a.randomId,
|
|
441
|
-
tasks: [
|
|
442
|
-
{
|
|
443
|
-
[this.randomId]: _a.randomId,
|
|
444
|
-
},
|
|
445
|
-
],
|
|
446
|
-
inputs: [
|
|
447
|
-
{
|
|
448
|
-
[this.randomId]: _a.randomId,
|
|
449
|
-
},
|
|
450
|
-
],
|
|
451
|
-
};
|
|
452
|
-
NpmAutopackageTest.defaultOptions = {
|
|
453
|
-
name: _a.packageName,
|
|
454
|
-
description: _a.packageDescription,
|
|
455
|
-
gitNamespace: _a.gitNamespace,
|
|
456
|
-
npmNamespace: _a.npmNamespace,
|
|
457
|
-
installDir: _a.installDir,
|
|
458
|
-
keywords: _a.keywords,
|
|
459
|
-
license: _a.license,
|
|
460
|
-
author: _a.author,
|
|
461
|
-
};
|
|
462
|
-
exports.default = NpmAutopackageTest;
|
|
463
460
|
__decorate([
|
|
464
|
-
|
|
461
|
+
test()
|
|
465
462
|
], NpmAutopackageTest, "createsInstance", null);
|
|
466
463
|
__decorate([
|
|
467
|
-
|
|
464
|
+
test()
|
|
468
465
|
], NpmAutopackageTest, "throwsIfGithubTokenNotSet", null);
|
|
469
466
|
__decorate([
|
|
470
|
-
|
|
467
|
+
test()
|
|
471
468
|
], NpmAutopackageTest, "firstCreateRepoInGithubOrg", null);
|
|
472
469
|
__decorate([
|
|
473
|
-
|
|
470
|
+
test()
|
|
474
471
|
], NpmAutopackageTest, "thenChdirToInstallDir", null);
|
|
475
472
|
__decorate([
|
|
476
|
-
|
|
473
|
+
test()
|
|
477
474
|
], NpmAutopackageTest, "thenGitClone", null);
|
|
478
475
|
__decorate([
|
|
479
|
-
|
|
476
|
+
test()
|
|
480
477
|
], NpmAutopackageTest, "thenChdirToPackageDir", null);
|
|
481
478
|
__decorate([
|
|
482
|
-
|
|
483
|
-
], NpmAutopackageTest, "
|
|
479
|
+
test()
|
|
480
|
+
], NpmAutopackageTest, "thenGitFetchOrigin", null);
|
|
481
|
+
__decorate([
|
|
482
|
+
test()
|
|
483
|
+
], NpmAutopackageTest, "thenGitFetchResetHard", null);
|
|
484
484
|
__decorate([
|
|
485
|
-
|
|
485
|
+
test()
|
|
486
486
|
], NpmAutopackageTest, "thenSpruceCreateModule", null);
|
|
487
487
|
__decorate([
|
|
488
|
-
|
|
488
|
+
test()
|
|
489
489
|
], NpmAutopackageTest, "thenCommitCreatePackage", null);
|
|
490
490
|
__decorate([
|
|
491
|
-
|
|
491
|
+
test()
|
|
492
492
|
], NpmAutopackageTest, "thenReadPackageJson", null);
|
|
493
493
|
__decorate([
|
|
494
|
-
|
|
494
|
+
test()
|
|
495
495
|
], NpmAutopackageTest, "thenUpdatePackageJson", null);
|
|
496
496
|
__decorate([
|
|
497
|
-
|
|
497
|
+
test()
|
|
498
498
|
], NpmAutopackageTest, "thenCommitUpdatePackage", null);
|
|
499
499
|
__decorate([
|
|
500
|
-
|
|
500
|
+
test()
|
|
501
501
|
], NpmAutopackageTest, "thenAddBuildDirToGitignore", null);
|
|
502
502
|
__decorate([
|
|
503
|
-
|
|
503
|
+
test()
|
|
504
504
|
], NpmAutopackageTest, "thenCommitUpdateGitignore", null);
|
|
505
505
|
__decorate([
|
|
506
|
-
|
|
506
|
+
test()
|
|
507
507
|
], NpmAutopackageTest, "thenSpruceSetupVscode", null);
|
|
508
508
|
__decorate([
|
|
509
|
-
|
|
509
|
+
test()
|
|
510
510
|
], NpmAutopackageTest, "thenCommitVscodeChanges", null);
|
|
511
511
|
__decorate([
|
|
512
|
-
|
|
512
|
+
test()
|
|
513
513
|
], NpmAutopackageTest, "thenUpdatesVscodeTasksJson", null);
|
|
514
514
|
__decorate([
|
|
515
|
-
|
|
515
|
+
test()
|
|
516
516
|
], NpmAutopackageTest, "thenCommitsUpdateVscodeTasksJson", null);
|
|
517
517
|
__decorate([
|
|
518
|
-
|
|
518
|
+
test()
|
|
519
519
|
], NpmAutopackageTest, "thenInstallsDefaultDevDependencies", null);
|
|
520
520
|
__decorate([
|
|
521
|
-
|
|
521
|
+
test()
|
|
522
522
|
], NpmAutopackageTest, "thenCommitsInstallDefaultDevDependencies", null);
|
|
523
523
|
__decorate([
|
|
524
|
-
|
|
524
|
+
test()
|
|
525
525
|
], NpmAutopackageTest, "lastlyOpensVscodeAtEnd", null);
|
|
526
526
|
__decorate([
|
|
527
|
-
|
|
527
|
+
test()
|
|
528
528
|
], NpmAutopackageTest, "doesNotCreateRepoInGithubOrgIfDone", null);
|
|
529
529
|
__decorate([
|
|
530
|
-
|
|
530
|
+
test()
|
|
531
531
|
], NpmAutopackageTest, "doesNotCloneRepoIfDone", null);
|
|
532
532
|
__decorate([
|
|
533
|
-
|
|
533
|
+
test()
|
|
534
534
|
], NpmAutopackageTest, "doesNotSpruceCreateModuleIfDone", null);
|
|
535
535
|
__decorate([
|
|
536
|
-
|
|
536
|
+
test()
|
|
537
537
|
], NpmAutopackageTest, "doesNotRunSetupVscodeIfDone", null);
|
|
538
538
|
__decorate([
|
|
539
|
-
|
|
539
|
+
test()
|
|
540
540
|
], NpmAutopackageTest, "doesNotCommitCreatePackageIfDone", null);
|
|
541
541
|
__decorate([
|
|
542
|
-
|
|
542
|
+
test()
|
|
543
543
|
], NpmAutopackageTest, "doesNotCommitUpdatePackageIfDone", null);
|
|
544
544
|
__decorate([
|
|
545
|
-
|
|
545
|
+
test()
|
|
546
546
|
], NpmAutopackageTest, "doesNotCommitUpdateGitignoreIfDone", null);
|
|
547
547
|
__decorate([
|
|
548
|
-
|
|
548
|
+
test()
|
|
549
549
|
], NpmAutopackageTest, "doesNotCommitSetupVscodeIfDone", null);
|
|
550
550
|
__decorate([
|
|
551
|
-
|
|
551
|
+
test()
|
|
552
552
|
], NpmAutopackageTest, "doesNotOverrideOriginalDependencies", null);
|
|
553
553
|
__decorate([
|
|
554
|
-
|
|
554
|
+
test()
|
|
555
555
|
], NpmAutopackageTest, "doesNotUpdateTasksJsonIfAlreadyDone", null);
|
|
556
556
|
__decorate([
|
|
557
|
-
|
|
557
|
+
test()
|
|
558
558
|
], NpmAutopackageTest, "doesNotOpenVscodeIfNotCloned", null);
|
|
559
559
|
__decorate([
|
|
560
|
-
|
|
560
|
+
test()
|
|
561
561
|
], NpmAutopackageTest, "doesNotInstallDevDependenciesIfLatest", null);
|
|
562
562
|
__decorate([
|
|
563
|
-
|
|
563
|
+
test()
|
|
564
564
|
], NpmAutopackageTest, "doesNotThrowIfGenerateIdNotInPackageJson", null);
|
|
565
565
|
//# sourceMappingURL=NpmAutopackage.test.js.map
|