hammerkit 1.6.0-alpha.3 → 1.7.0
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/README.md +4 -4
- package/build.schema.json +49 -2
- package/dist/cache/backends/local-cache-backend.js +58 -1
- package/dist/cache/backends/registry/registry-client.js +264 -0
- package/dist/cache/backends/registry/registry-credentials.js +81 -0
- package/dist/cache/backends/registry/registry-reference.js +36 -0
- package/dist/cache/backends/registry-cache-backend.js +145 -0
- package/dist/cache/backends/s3-cache-backend.js +99 -46
- package/dist/cache/cache-backend-registry.js +2 -0
- package/dist/cache/cache-inventory.js +84 -0
- package/dist/cache/cache-sync.js +77 -0
- package/dist/cache/explain.js +214 -0
- package/dist/cache/last-resolved.js +48 -0
- package/dist/cache/read-only.js +15 -0
- package/dist/cache/retention.js +61 -0
- package/dist/cli.js +43 -0
- package/dist/docker/using-container.js +5 -1
- package/dist/executer/archive-task-entry.js +21 -0
- package/dist/executer/await-completed-dependencies.js +32 -14
- package/dist/executer/cache-metadata.js +9 -2
- package/dist/executer/docker-service.js +2 -1
- package/dist/executer/docker-task.js +2 -1
- package/dist/executer/dry-run.js +73 -0
- package/dist/executer/event-cache.js +6 -5
- package/dist/executer/execute-command.js +21 -3
- package/dist/executer/execute-work-service.js +10 -1
- package/dist/executer/execute-work-task.js +95 -25
- package/dist/executer/execute-work-tree.js +26 -1
- package/dist/executer/get-scheduler-execute-result.js +4 -1
- package/dist/executer/lazy-resolver.js +15 -3
- package/dist/executer/reset-work-tree.js +2 -0
- package/dist/executer/run-summary.js +102 -0
- package/dist/executer/scheduler/enqueue-next.js +15 -60
- package/dist/executer/scheduler/state-key.js +78 -0
- package/dist/kubernetes/await-running-state.js +73 -19
- package/dist/log.js +16 -6
- package/dist/logging/live-logger.js +2 -1
- package/dist/optimizer/calculate-checksum.js +8 -2
- package/dist/optimizer/get-work-cache-stats.js +66 -16
- package/dist/optimizer/work-task-cache-description.js +34 -5
- package/dist/planner/project-root.js +26 -0
- package/dist/planner/utils/append-work-service.js +2 -1
- package/dist/planner/utils/append-work-task.js +7 -1
- package/dist/planner/utils/parse-work-source.js +35 -30
- package/dist/planner/utils/portable-path.js +30 -0
- package/dist/planner/work-cache-id.js +2 -2
- package/dist/planner/work-graph-serializer.js +103 -0
- package/dist/planner/work-instance-id.js +15 -0
- package/dist/planner/work-runtime-docker.js +53 -15
- package/dist/planner/work-runtime-kubernetes.js +35 -3
- package/dist/planner/work-runtime-local.js +9 -3
- package/dist/planner/work-service-id.js +16 -4
- package/dist/program.js +235 -1
- package/dist/schema/build-file-base-task-schema.js +4 -0
- package/dist/schema/cache-schema.js +21 -2
- package/dist/schema/duration-schema.js +18 -0
- package/dist/schema/reference-parser.js +3 -0
- package/dist/schema/size-schema.js +18 -0
- package/dist/schema/work-scope-parser.js +15 -2
- package/dist/utils/units.js +87 -0
- package/package.json +15 -4
- package/.agents/FEEDBACK.md +0 -74
- package/.agents/skills/before-commit/SKILL.md +0 -101
- package/.agents/skills/do-the-work/SKILL.md +0 -64
- package/.agents/skills/fix-ci/SKILL.md +0 -98
- package/.agents/skills/speckit-git-commit/SKILL.md +0 -53
- package/.agents/skills/speckit-git-feature/SKILL.md +0 -72
- package/.agents/skills/speckit-git-initialize/SKILL.md +0 -54
- package/.agents/skills/speckit-git-remote/SKILL.md +0 -50
- package/.agents/skills/speckit-git-validate/SKILL.md +0 -54
- package/.devcontainer/Dockerfile +0 -5
- package/.devcontainer/devcontainer.json +0 -40
- package/.gitbook.yaml +0 -5
- package/.specify/extensions/.registry +0 -37
- package/.specify/extensions/git/README.md +0 -100
- package/.specify/extensions/git/commands/speckit.git.commit.md +0 -48
- package/.specify/extensions/git/commands/speckit.git.feature.md +0 -67
- package/.specify/extensions/git/commands/speckit.git.initialize.md +0 -49
- package/.specify/extensions/git/commands/speckit.git.remote.md +0 -45
- package/.specify/extensions/git/commands/speckit.git.validate.md +0 -49
- package/.specify/extensions/git/config-template.yml +0 -62
- package/.specify/extensions/git/extension.yml +0 -140
- package/.specify/extensions/git/git-config.yml +0 -62
- package/.specify/extensions.yml +0 -149
- package/.specify/feature.json +0 -3
- package/.specify/init-options.json +0 -10
- package/.specify/integration.json +0 -15
- package/.specify/integrations/claude.manifest.json +0 -16
- package/.specify/integrations/speckit.manifest.json +0 -17
- package/.specify/memory/constitution.md +0 -162
- package/.specify/templates/checklist-template.md +0 -40
- package/.specify/templates/constitution-template.md +0 -50
- package/.specify/templates/plan-template.md +0 -113
- package/.specify/templates/spec-template.md +0 -131
- package/.specify/templates/tasks-template.md +0 -252
- package/.specify/workflows/speckit/workflow.yml +0 -77
- package/.specify/workflows/workflow-registry.json +0 -13
- package/AGENTS.md +0 -94
- package/Dockerfile +0 -25
- package/FOLLOWUPS.md +0 -34
- package/SUMMARY.md +0 -68
- package/VALUES.md +0 -53
- package/dist/cache/auto-pull.spec.js +0 -123
- package/dist/cache/backends/local-cache-backend.spec.js +0 -72
- package/dist/cache/backends/s3-cache-backend.spec.js +0 -118
- package/dist/cache/cache-backend-registry.spec.js +0 -22
- package/dist/cache/resolve-cache.spec.js +0 -52
- package/dist/cli.spec.js +0 -23
- package/dist/console/get-logger.spec.js +0 -23
- package/dist/docker/get-default-platform.spec.js +0 -29
- package/dist/docker/longest-common-prefix.spec.js +0 -26
- package/dist/docker/package.spec.js +0 -145
- package/dist/docker/remove-container.spec.js +0 -32
- package/dist/docker/using-container.spec.js +0 -90
- package/dist/environment/merge-environment-variables.spec.js +0 -24
- package/dist/environment/replace-env-variables.spec.js +0 -47
- package/dist/executer/abort.spec.js +0 -18
- package/dist/executer/environment-mock.spec.js +0 -22
- package/dist/executer/execute.spec.js +0 -51
- package/dist/executer/get-service-containers.spec.js +0 -59
- package/dist/executer/get-service-env-hints.spec.js +0 -65
- package/dist/executer/label-values.spec.js +0 -61
- package/dist/executer/lazy-resolver.spec.js +0 -20
- package/dist/executer/process-manager.spec.js +0 -54
- package/dist/executer/scheduler/enqueue-next.spec.js +0 -136
- package/dist/executer/state-resolver.spec.js +0 -37
- package/dist/executer/state.spec.js +0 -66
- package/dist/executer/states.spec.js +0 -14
- package/dist/file/get-file-context.spec.js +0 -178
- package/dist/file/move-files.spec.js +0 -48
- package/dist/kubernetes/ensure-http-route.spec.js +0 -70
- package/dist/kubernetes/ensure-namespace.spec.js +0 -39
- package/dist/kubernetes/resolve-pod-name.spec.js +0 -81
- package/dist/log.spec.js +0 -131
- package/dist/logging/grouped-logger.spec.js +0 -84
- package/dist/logging/interactive-logger.spec.js +0 -57
- package/dist/logging/live-logger.spec.js +0 -37
- package/dist/logging/loggers.spec.js +0 -154
- package/dist/optimizer/calculate-checksum.spec.js +0 -34
- package/dist/optimizer/get-cache-directory.spec.js +0 -59
- package/dist/optimizer/get-work-cache-stats.spec.js +0 -79
- package/dist/optimizer/work-task-cache-description.spec.js +0 -45
- package/dist/parser/default-build-file.spec.js +0 -48
- package/dist/parser/parse-label-arguments.spec.js +0 -27
- package/dist/parser/read-build-file.spec.js +0 -89
- package/dist/parser/read-env-file.spec.js +0 -42
- package/dist/planner/utils/append-work-service.spec.js +0 -71
- package/dist/planner/utils/get-container-user.spec.js +0 -30
- package/dist/planner/utils/get-default-kube-config.spec.js +0 -11
- package/dist/planner/utils/normalize-path.spec.js +0 -24
- package/dist/planner/utils/parse-work-command.spec.js +0 -21
- package/dist/planner/utils/parse-work-generate.spec.js +0 -45
- package/dist/planner/utils/parse-work-mount.spec.js +0 -62
- package/dist/planner/utils/parse-work-mounts.spec.js +0 -19
- package/dist/planner/utils/parse-work-port.spec.js +0 -24
- package/dist/planner/utils/parse-work-ports.spec.js +0 -24
- package/dist/planner/utils/parse-work-source.spec.js +0 -58
- package/dist/planner/utils/parse-work-volume.spec.js +0 -18
- package/dist/planner/utils/plan-work-tasks.spec.js +0 -30
- package/dist/planner/utils/plan-work-volume.spec.js +0 -33
- package/dist/planner/utils/split-name.spec.js +0 -16
- package/dist/planner/utils/template-value.spec.js +0 -14
- package/dist/planner/validate.spec.js +0 -251
- package/dist/planner/work-cache-id.spec.js +0 -173
- package/dist/planner/work-runtime-local.spec.js +0 -193
- package/dist/program-commands.spec.js +0 -84
- package/dist/program.spec.js +0 -43
- package/dist/schema/build-file-schema.spec.js +0 -61
- package/dist/schema/doc-build-files.spec.js +0 -223
- package/dist/schema/parse-error.spec.js +0 -18
- package/dist/schema/reference-parser.spec.js +0 -83
- package/dist/schema/schema-parser.spec.js +0 -80
- package/dist/schema/type-guards.spec.js +0 -23
- package/dist/schema/work-scope-parser.spec.js +0 -66
- package/dist/service/update-service-status.spec.js +0 -27
- package/dist/testing/ensure-local-registry.js +0 -134
- package/dist/testing/example-test-suite.js +0 -63
- package/dist/testing/expect.js +0 -82
- package/dist/testing/get-test-suite.js +0 -9
- package/dist/testing/http-get.js +0 -21
- package/dist/testing/integration/cache.spec.js +0 -49
- package/dist/testing/integration/cancellation.spec.js +0 -45
- package/dist/testing/integration/clean.spec.js +0 -43
- package/dist/testing/integration/cmd.spec.js +0 -15
- package/dist/testing/integration/concurrency.spec.js +0 -19
- package/dist/testing/integration/docker-package-registry.spec.js +0 -44
- package/dist/testing/integration/docker-service-crash.spec.js +0 -36
- package/dist/testing/integration/docker.spec.js +0 -17
- package/dist/testing/integration/env.spec.js +0 -48
- package/dist/testing/integration/environment.spec.js +0 -97
- package/dist/testing/integration/error.spec.js +0 -19
- package/dist/testing/integration/export.spec.js +0 -22
- package/dist/testing/integration/extend.spec.js +0 -29
- package/dist/testing/integration/glob.spec.js +0 -40
- package/dist/testing/integration/include.spec.js +0 -31
- package/dist/testing/integration/invalid.spec.js +0 -17
- package/dist/testing/integration/invalid_loop.spec.js +0 -56
- package/dist/testing/integration/k8s-state-cache.spec.js +0 -41
- package/dist/testing/integration/kubernetes-service.spec.js +0 -148
- package/dist/testing/integration/kubernetes.spec.js +0 -99
- package/dist/testing/integration/labels.spec.js +0 -42
- package/dist/testing/integration/local.spec.js +0 -14
- package/dist/testing/integration/monorepo.spec.js +0 -15
- package/dist/testing/integration/multi-line.spec.js +0 -17
- package/dist/testing/integration/reference.spec.js +0 -21
- package/dist/testing/integration/services.spec.js +0 -38
- package/dist/testing/integration/store.spec.js +0 -52
- package/dist/testing/integration/unknown.spec.js +0 -28
- package/dist/testing/integration/validate.spec.js +0 -160
- package/dist/testing/integration/watch-dependency.spec.js +0 -33
- package/dist/testing/integration/watch.spec.js +0 -45
- package/dist/testing/requires-kubernetes.js +0 -18
- package/dist/testing/requires-linux-containers.js +0 -18
- package/dist/testing/requires-windows-containers.js +0 -18
- package/dist/testing/test-case.js +0 -75
- package/dist/testing/test-streams.js +0 -28
- package/dist/testing/test-suite-setup.js +0 -3
- package/dist/testing/test-suite.js +0 -3
- package/dist/testing/testing-timeout.js +0 -32
- package/dist/utils/abort-event.spec.js +0 -46
- package/dist/utils/buffer-context.spec.js +0 -38
- package/dist/utils/ci.spec.js +0 -53
- package/dist/utils/debouncer.spec.js +0 -58
- package/dist/utils/emitter.spec.js +0 -34
- package/dist/utils/empty-writable.spec.js +0 -18
- package/dist/utils/environment-config.spec.js +0 -26
- package/dist/utils/fail-never.spec.js +0 -9
- package/dist/utils/sleep.spec.js +0 -22
- package/dist/version.spec.js +0 -12
- package/specs/build-file/caches/spec.md +0 -114
- package/specs/build-file/environment-variables/spec.md +0 -82
- package/specs/build-file/includes/spec.md +0 -60
- package/specs/build-file/references/spec.md +0 -56
- package/specs/build-file/spec.md +0 -62
- package/specs/cli/clean/spec.md +0 -85
- package/specs/cli/down/spec.md +0 -85
- package/specs/cli/execute/spec.md +0 -101
- package/specs/cli/init/spec.md +0 -64
- package/specs/cli/ls/spec.md +0 -66
- package/specs/cli/package/spec.md +0 -110
- package/specs/cli/spec.md +0 -73
- package/specs/cli/store-restore/spec.md +0 -74
- package/specs/cli/up/spec.md +0 -80
- package/specs/cli/validate/spec.md +0 -70
- package/specs/labels/spec.md +0 -91
- package/specs/service/container/spec.md +0 -120
- package/specs/service/kubernetes/spec.md +0 -97
- package/specs/service/spec.md +0 -105
- package/specs/task/caching/spec.md +0 -107
- package/specs/task/container/spec.md +0 -118
- package/specs/task/dependencies/spec.md +0 -70
- package/specs/task/extending/spec.md +0 -74
- package/specs/task/kubernetes/spec.md +0 -125
- package/specs/task/needs/spec.md +0 -59
- package/specs/task/spec.md +0 -87
- package/specs/task/watching/spec.md +0 -69
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const get_test_suite_1 = require("../get-test-suite");
|
|
4
|
-
describe('watch-dependency', () => {
|
|
5
|
-
const suite = (0, get_test_suite_1.getTestSuite)('watch-dependency', ['.hammerkit.yaml', 'source.txt']);
|
|
6
|
-
afterAll(() => suite.close());
|
|
7
|
-
it('should run watch task', async () => {
|
|
8
|
-
const { cli, environment } = await suite.setup({ taskName: 'third' });
|
|
9
|
-
const thirdNode = cli.task('third');
|
|
10
|
-
const exec = await cli.exec({ watch: true });
|
|
11
|
-
let content = '';
|
|
12
|
-
let changedStateKey = '';
|
|
13
|
-
exec.state.on('test-status', async (evt) => {
|
|
14
|
-
const currentState = evt.tasks[thirdNode.name].state.current;
|
|
15
|
-
if (currentState.type === 'completed') {
|
|
16
|
-
if (changedStateKey != '' &&
|
|
17
|
-
currentState.stateKey !== changedStateKey &&
|
|
18
|
-
!environment.abortCtrl.signal.aborted) {
|
|
19
|
-
content = await environment.file.read('third.txt');
|
|
20
|
-
environment.abortCtrl.abort();
|
|
21
|
-
}
|
|
22
|
-
else if (changedStateKey === '') {
|
|
23
|
-
await environment.file.appendFile('source.txt', 'world\n');
|
|
24
|
-
changedStateKey = currentState.stateKey;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
const result = await exec.start();
|
|
29
|
-
expect(result.success).toBeTruthy();
|
|
30
|
-
expect(content).toEqual('hello\nworld\nfirst step\nsecond step\nthird step\n');
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=watch-dependency.spec.js.map
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const get_test_suite_1 = require("../get-test-suite");
|
|
4
|
-
const path_1 = require("path");
|
|
5
|
-
const requires_linux_containers_1 = require("../requires-linux-containers");
|
|
6
|
-
describe('watch', () => {
|
|
7
|
-
const suite = (0, get_test_suite_1.getTestSuite)('watch', ['.hammerkit.yaml', 'src', 'package.json', 'package-lock.json', 'tsconfig.json']);
|
|
8
|
-
afterAll(() => suite.close());
|
|
9
|
-
it('should run watch task and cancel', (0, requires_linux_containers_1.requiresLinuxContainers)(async () => {
|
|
10
|
-
const { cli, environment } = await suite.setup({ filterLabels: { task: ['dev'] } });
|
|
11
|
-
const exec = await cli.up({ watch: true });
|
|
12
|
-
exec.state.on('test-status', (evt) => {
|
|
13
|
-
if (evt.services['api'].state.current.type === 'running') {
|
|
14
|
-
environment.abortCtrl.abort();
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
const result = await exec.start();
|
|
18
|
-
expect(result.success).toBeFalsy();
|
|
19
|
-
expect(result.state.services['api'].state.current.type).toEqual('canceled');
|
|
20
|
-
}), 900000);
|
|
21
|
-
it('should restart task if dependency updates', (0, requires_linux_containers_1.requiresLinuxContainers)(async () => {
|
|
22
|
-
const { cli, environment } = await suite.setup({ filterLabels: { task: ['dev'] } });
|
|
23
|
-
const exec = await cli.up({ watch: true });
|
|
24
|
-
let appendedFile = false;
|
|
25
|
-
let restarted = false;
|
|
26
|
-
exec.state.on('test-status', (evt) => {
|
|
27
|
-
if (evt.services['api'].state.current.type === 'running') {
|
|
28
|
-
if (!appendedFile) {
|
|
29
|
-
appendedFile = true;
|
|
30
|
-
environment.file.appendFile((0, path_1.join)(environment.cwd, 'package.json'), '\n');
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
restarted = true;
|
|
34
|
-
environment.abortCtrl.abort();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
const result = await exec.start();
|
|
39
|
-
expect(appendedFile).toBeTruthy();
|
|
40
|
-
expect(restarted).toBeTruthy();
|
|
41
|
-
expect(result.success).toBeFalsy();
|
|
42
|
-
expect(result.state.services['api'].state.current.type).toEqual('canceled');
|
|
43
|
-
}), 900000);
|
|
44
|
-
});
|
|
45
|
-
//# sourceMappingURL=watch.spec.js.map
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requiresKubernetes = void 0;
|
|
4
|
-
const ci_1 = require("../utils/ci");
|
|
5
|
-
function requiresKubernetes(fn) {
|
|
6
|
-
if (process.env.CLUSTER_NAME) {
|
|
7
|
-
return fn;
|
|
8
|
-
}
|
|
9
|
-
if (process.env.HAMMERKIT_FULL_INTEGRATION) {
|
|
10
|
-
return () => Promise.reject(new Error('CLUSTER_NAME not set but HAMMERKIT_FULL_INTEGRATION is on'));
|
|
11
|
-
}
|
|
12
|
-
if (ci_1.isCI) {
|
|
13
|
-
return () => Promise.resolve();
|
|
14
|
-
}
|
|
15
|
-
return fn;
|
|
16
|
-
}
|
|
17
|
-
exports.requiresKubernetes = requiresKubernetes;
|
|
18
|
-
//# sourceMappingURL=requires-kubernetes.js.map
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requiresLinuxContainers = void 0;
|
|
4
|
-
const ci_1 = require("../utils/ci");
|
|
5
|
-
function requiresLinuxContainers(fn) {
|
|
6
|
-
if (process.env.LINUX_CONTAINERS) {
|
|
7
|
-
return fn;
|
|
8
|
-
}
|
|
9
|
-
if (process.env.HAMMERKIT_FULL_INTEGRATION) {
|
|
10
|
-
return () => Promise.reject(new Error('LINUX_CONTAINERS not set but HAMMERKIT_FULL_INTEGRATION is on'));
|
|
11
|
-
}
|
|
12
|
-
if (ci_1.isCI) {
|
|
13
|
-
return () => Promise.resolve();
|
|
14
|
-
}
|
|
15
|
-
return fn;
|
|
16
|
-
}
|
|
17
|
-
exports.requiresLinuxContainers = requiresLinuxContainers;
|
|
18
|
-
//# sourceMappingURL=requires-linux-containers.js.map
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.requiresWindowsContainers = void 0;
|
|
4
|
-
const ci_1 = require("../utils/ci");
|
|
5
|
-
function requiresWindowsContainers(fn) {
|
|
6
|
-
if (process.env.WINDOWS_CONTAINERS) {
|
|
7
|
-
return fn;
|
|
8
|
-
}
|
|
9
|
-
if (process.env.HAMMERKIT_FULL_INTEGRATION) {
|
|
10
|
-
return () => Promise.reject(new Error('WINDOWS_CONTAINERS not set but HAMMERKIT_FULL_INTEGRATION is on'));
|
|
11
|
-
}
|
|
12
|
-
if (ci_1.isCI) {
|
|
13
|
-
return () => Promise.resolve();
|
|
14
|
-
}
|
|
15
|
-
return fn;
|
|
16
|
-
}
|
|
17
|
-
exports.requiresWindowsContainers = requiresWindowsContainers;
|
|
18
|
-
//# sourceMappingURL=requires-windows-containers.js.map
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createTestCase = exports.getTestRunId = void 0;
|
|
4
|
-
const path_1 = require("path");
|
|
5
|
-
const get_file_context_1 = require("../file/get-file-context");
|
|
6
|
-
const log_1 = require("../log");
|
|
7
|
-
const work_item_status_1 = require("../planner/work-item-status");
|
|
8
|
-
const program_1 = require("../program");
|
|
9
|
-
const yaml_1 = require("yaml");
|
|
10
|
-
const run_program_1 = require("../run-program");
|
|
11
|
-
const test_streams_1 = require("./test-streams");
|
|
12
|
-
function getTestRunId(name) {
|
|
13
|
-
const base = process.env.HAMMERKIT_TEST_RUN_ID ?? `local-${process.pid}`;
|
|
14
|
-
return `${base}-${name}`
|
|
15
|
-
.toLowerCase()
|
|
16
|
-
.replace(/[^a-z0-9-]+/g, '-')
|
|
17
|
-
.replace(/^-+|-+$/g, '')
|
|
18
|
-
.slice(0, 63);
|
|
19
|
-
}
|
|
20
|
-
exports.getTestRunId = getTestRunId;
|
|
21
|
-
function createTestCase(name, files) {
|
|
22
|
-
const runId = getTestRunId(name);
|
|
23
|
-
return {
|
|
24
|
-
runId,
|
|
25
|
-
async shell(args) {
|
|
26
|
-
await this.setup(async (cwd, env) => {
|
|
27
|
-
await (0, run_program_1.runProgram)(env, args, true);
|
|
28
|
-
});
|
|
29
|
-
},
|
|
30
|
-
async setup(fn) {
|
|
31
|
-
const path = (0, path_1.join)(process.cwd(), 'temp', name);
|
|
32
|
-
const file = (0, get_file_context_1.getFileContext)(path);
|
|
33
|
-
const statusStream = (0, test_streams_1.memoryStream)();
|
|
34
|
-
try {
|
|
35
|
-
await file.remove(path);
|
|
36
|
-
await file.createDirectory(path);
|
|
37
|
-
const environment = {
|
|
38
|
-
processEnvs: { ...process.env, HAMMERKIT_TEST_RUN_ID: runId },
|
|
39
|
-
abortCtrl: new AbortController(),
|
|
40
|
-
cwd: path,
|
|
41
|
-
file,
|
|
42
|
-
console: (0, log_1.consoleContext)((0, test_streams_1.emptyStream)()),
|
|
43
|
-
status: (0, work_item_status_1.statusConsole)(statusStream.stream),
|
|
44
|
-
stdout: (0, test_streams_1.emptyStream)(),
|
|
45
|
-
stderr: (0, test_streams_1.emptyStream)(),
|
|
46
|
-
stdoutColumns: 80,
|
|
47
|
-
};
|
|
48
|
-
for (const [fileName, fileContent] of Object.entries(files)) {
|
|
49
|
-
await file.createDirectory((0, path_1.dirname)((0, path_1.join)(path, fileName)));
|
|
50
|
-
await file.writeFile((0, path_1.join)(path, fileName), typeof fileContent === 'string' ? fileContent : (0, yaml_1.stringify)(fileContent));
|
|
51
|
-
}
|
|
52
|
-
await fn(path, environment);
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
process.stdout.write(statusStream.read());
|
|
56
|
-
throw e;
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
async cli(scope, fn) {
|
|
60
|
-
return this.setup(async (cwd, environment) => {
|
|
61
|
-
const fileName = (0, path_1.join)(cwd, '.hammerkit.yaml');
|
|
62
|
-
environment.processEnvs = { ...environment.processEnvs, ...(scope.envs ?? {}) };
|
|
63
|
-
const cli = await (0, program_1.createCli)(fileName, environment, scope);
|
|
64
|
-
// also clear the persistent backend cache (~/.hammerkit/remote-cache)
|
|
65
|
-
// so results don't leak between test runs on the same machine.
|
|
66
|
-
await cli.clean({ cache: true });
|
|
67
|
-
if (fn) {
|
|
68
|
-
await fn(cli, environment);
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
exports.createTestCase = createTestCase;
|
|
75
|
-
//# sourceMappingURL=test-case.js.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.memoryStream = exports.emptyStream = void 0;
|
|
4
|
-
const stream_1 = require("stream");
|
|
5
|
-
function emptyStream() {
|
|
6
|
-
const stream = new stream_1.Writable();
|
|
7
|
-
stream._write = function (_chunk, _encoding, done) {
|
|
8
|
-
done();
|
|
9
|
-
};
|
|
10
|
-
return stream;
|
|
11
|
-
}
|
|
12
|
-
exports.emptyStream = emptyStream;
|
|
13
|
-
function memoryStream() {
|
|
14
|
-
const stream = new stream_1.Writable();
|
|
15
|
-
const chunks = [];
|
|
16
|
-
stream._write = function (chunk, encoding, done) {
|
|
17
|
-
chunks.push(chunk.toString());
|
|
18
|
-
done();
|
|
19
|
-
};
|
|
20
|
-
return {
|
|
21
|
-
stream,
|
|
22
|
-
read() {
|
|
23
|
-
return chunks.join('');
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
exports.memoryStream = memoryStream;
|
|
28
|
-
//# sourceMappingURL=test-streams.js.map
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.testingTimeout = void 0;
|
|
4
|
-
const plan_work_tasks_1 = require("../planner/utils/plan-work-tasks");
|
|
5
|
-
async function testingTimeout(exec, timeout) {
|
|
6
|
-
const timer = setTimeout(() => {
|
|
7
|
-
for (const task of (0, plan_work_tasks_1.iterateWorkTasks)(exec.state.current)) {
|
|
8
|
-
printWorkItem(task);
|
|
9
|
-
}
|
|
10
|
-
for (const service of (0, plan_work_tasks_1.iterateWorkServices)(exec.state.current)) {
|
|
11
|
-
printWorkItem(service);
|
|
12
|
-
}
|
|
13
|
-
}, (timeout || 45 * 1000) - 2000);
|
|
14
|
-
try {
|
|
15
|
-
return await exec.start();
|
|
16
|
-
}
|
|
17
|
-
finally {
|
|
18
|
-
clearTimeout(timer);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.testingTimeout = testingTimeout;
|
|
22
|
-
function printWorkItem(task) {
|
|
23
|
-
const messages = [` - ${task.name}: ${task.state.current.type}`];
|
|
24
|
-
for (const log of task.status.logs()) {
|
|
25
|
-
messages.push(` console ${log.console}: ${log.message}`);
|
|
26
|
-
}
|
|
27
|
-
for (const log of task.status.read()) {
|
|
28
|
-
messages.push(` status ${log.level}: ${log.message}`);
|
|
29
|
-
}
|
|
30
|
-
process.stdout.write(messages.join('\n'));
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=testing-timeout.js.map
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const abort_event_1 = require("./abort-event");
|
|
4
|
-
describe('abort-event', () => {
|
|
5
|
-
describe('listenOnAbort', () => {
|
|
6
|
-
it('fires immediately when the signal is already aborted', () => {
|
|
7
|
-
const ctrl = new AbortController();
|
|
8
|
-
ctrl.abort();
|
|
9
|
-
const cb = vi.fn();
|
|
10
|
-
const handle = (0, abort_event_1.listenOnAbort)(ctrl.signal, cb);
|
|
11
|
-
expect(cb).toHaveBeenCalledTimes(1);
|
|
12
|
-
// close on a pre-aborted listener is a no-op; calling it must not throw.
|
|
13
|
-
expect(() => handle.close()).not.toThrow();
|
|
14
|
-
});
|
|
15
|
-
it('fires when the signal is aborted later', () => {
|
|
16
|
-
const ctrl = new AbortController();
|
|
17
|
-
const cb = vi.fn();
|
|
18
|
-
(0, abort_event_1.listenOnAbort)(ctrl.signal, cb);
|
|
19
|
-
expect(cb).not.toHaveBeenCalled();
|
|
20
|
-
ctrl.abort();
|
|
21
|
-
expect(cb).toHaveBeenCalledTimes(1);
|
|
22
|
-
});
|
|
23
|
-
it('does not fire after close()', () => {
|
|
24
|
-
const ctrl = new AbortController();
|
|
25
|
-
const cb = vi.fn();
|
|
26
|
-
const handle = (0, abort_event_1.listenOnAbort)(ctrl.signal, cb);
|
|
27
|
-
handle.close();
|
|
28
|
-
ctrl.abort();
|
|
29
|
-
expect(cb).not.toHaveBeenCalled();
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
describe('waitOnAbort', () => {
|
|
33
|
-
it('resolves immediately when already aborted', async () => {
|
|
34
|
-
const ctrl = new AbortController();
|
|
35
|
-
ctrl.abort();
|
|
36
|
-
await expect((0, abort_event_1.waitOnAbort)(ctrl.signal)).resolves.toBeUndefined();
|
|
37
|
-
});
|
|
38
|
-
it('resolves when the signal is aborted later', async () => {
|
|
39
|
-
const ctrl = new AbortController();
|
|
40
|
-
const pending = (0, abort_event_1.waitOnAbort)(ctrl.signal);
|
|
41
|
-
ctrl.abort();
|
|
42
|
-
await expect(pending).resolves.toBeUndefined();
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=abort-event.spec.js.map
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const buffer_context_1 = require("./buffer-context");
|
|
4
|
-
describe('BufferContext', () => {
|
|
5
|
-
it('returns null for current of an unknown id', () => {
|
|
6
|
-
const ctx = new buffer_context_1.BufferContext(10);
|
|
7
|
-
expect(ctx.current('missing')).toBeNull();
|
|
8
|
-
});
|
|
9
|
-
it('returns an empty array for get of an unknown id', () => {
|
|
10
|
-
const ctx = new buffer_context_1.BufferContext(10);
|
|
11
|
-
expect(ctx.get('missing')).toEqual([]);
|
|
12
|
-
});
|
|
13
|
-
it('tracks the latest value per id', () => {
|
|
14
|
-
const ctx = new buffer_context_1.BufferContext(10);
|
|
15
|
-
ctx.add('a', 1);
|
|
16
|
-
ctx.add('a', 2);
|
|
17
|
-
ctx.add('b', 9);
|
|
18
|
-
expect(ctx.current('a')).toBe(2);
|
|
19
|
-
expect(ctx.current('b')).toBe(9);
|
|
20
|
-
});
|
|
21
|
-
it('keeps per-id and global buffers', () => {
|
|
22
|
-
const ctx = new buffer_context_1.BufferContext(10);
|
|
23
|
-
ctx.add('a', 1);
|
|
24
|
-
ctx.add('b', 2);
|
|
25
|
-
expect(ctx.get('a')).toEqual([1]);
|
|
26
|
-
expect(ctx.get('b')).toEqual([2]);
|
|
27
|
-
expect(ctx.get()).toEqual([1, 2]);
|
|
28
|
-
});
|
|
29
|
-
it('evicts the oldest global entry once an id exceeds the limit', () => {
|
|
30
|
-
const ctx = new buffer_context_1.BufferContext(2);
|
|
31
|
-
ctx.add('a', 1);
|
|
32
|
-
ctx.add('a', 2);
|
|
33
|
-
ctx.add('a', 3);
|
|
34
|
-
expect(ctx.get()).toEqual([2, 3]);
|
|
35
|
-
expect(ctx.current('a')).toBe(3);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
//# sourceMappingURL=buffer-context.spec.js.map
|
package/dist/utils/ci.spec.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Each `isCI` arm is evaluated once at module load, so the only way to cover
|
|
3
|
-
// every branch of the OR chain is to load the module repeatedly under different
|
|
4
|
-
// process.env. vi.resetModules + a fresh dynamic import gives us that.
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
const KEYS = ['CI', 'CONTINUOUS_INTEGRATION', 'BUILD_NUMBER', 'RUN_ID'];
|
|
29
|
-
async function loadIsCI(set) {
|
|
30
|
-
for (const k of KEYS)
|
|
31
|
-
delete process.env[k];
|
|
32
|
-
if (set)
|
|
33
|
-
Object.assign(process.env, set);
|
|
34
|
-
vi.resetModules();
|
|
35
|
-
return (await Promise.resolve().then(() => __importStar(require('./ci')))).isCI;
|
|
36
|
-
}
|
|
37
|
-
describe('isCI', () => {
|
|
38
|
-
const original = { ...process.env };
|
|
39
|
-
afterEach(() => {
|
|
40
|
-
for (const k of KEYS)
|
|
41
|
-
delete process.env[k];
|
|
42
|
-
for (const k of KEYS)
|
|
43
|
-
if (k in original)
|
|
44
|
-
process.env[k] = original[k];
|
|
45
|
-
});
|
|
46
|
-
it('is false when no CI env var is set', async () => {
|
|
47
|
-
expect(await loadIsCI()).toBe(false);
|
|
48
|
-
});
|
|
49
|
-
it.each(KEYS)('is true when %s is set', async (key) => {
|
|
50
|
-
expect(await loadIsCI({ [key]: '1' })).toBe(true);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
//# sourceMappingURL=ci.spec.js.map
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const debouncer_1 = require("./debouncer");
|
|
4
|
-
const sleep_1 = require("./sleep");
|
|
5
|
-
describe('utils/debouncer', () => {
|
|
6
|
-
it('should not trigger before start', async () => {
|
|
7
|
-
let called = false;
|
|
8
|
-
new debouncer_1.Debouncer(() => {
|
|
9
|
-
called = true;
|
|
10
|
-
}, 10);
|
|
11
|
-
await (0, sleep_1.sleep)(20);
|
|
12
|
-
expect(called).toBeFalsy();
|
|
13
|
-
});
|
|
14
|
-
it('should trigger after start', async () => {
|
|
15
|
-
let called = false;
|
|
16
|
-
const debouncer = new debouncer_1.Debouncer(() => {
|
|
17
|
-
called = true;
|
|
18
|
-
}, 10);
|
|
19
|
-
debouncer.start();
|
|
20
|
-
await (0, sleep_1.sleep)(20);
|
|
21
|
-
expect(called).toBeTruthy();
|
|
22
|
-
});
|
|
23
|
-
it('should delay trigger after bounce', async () => {
|
|
24
|
-
let called = false;
|
|
25
|
-
const debouncer = new debouncer_1.Debouncer(() => {
|
|
26
|
-
called = true;
|
|
27
|
-
}, 20);
|
|
28
|
-
debouncer.start();
|
|
29
|
-
await (0, sleep_1.sleep)(10);
|
|
30
|
-
debouncer.bounce();
|
|
31
|
-
await (0, sleep_1.sleep)(15);
|
|
32
|
-
expect(called).toBeFalsy();
|
|
33
|
-
await (0, sleep_1.sleep)(5);
|
|
34
|
-
expect(called).toBeTruthy();
|
|
35
|
-
});
|
|
36
|
-
it('should cancel trigger after clear', async () => {
|
|
37
|
-
let called = false;
|
|
38
|
-
const debouncer = new debouncer_1.Debouncer(() => {
|
|
39
|
-
called = true;
|
|
40
|
-
}, 20);
|
|
41
|
-
debouncer.start();
|
|
42
|
-
await (0, sleep_1.sleep)(10);
|
|
43
|
-
debouncer.clear();
|
|
44
|
-
await (0, sleep_1.sleep)(15);
|
|
45
|
-
expect(called).toBeFalsy();
|
|
46
|
-
});
|
|
47
|
-
it('should trigger on flush', async () => {
|
|
48
|
-
let called = false;
|
|
49
|
-
const debouncer = new debouncer_1.Debouncer(() => {
|
|
50
|
-
called = true;
|
|
51
|
-
}, 20);
|
|
52
|
-
debouncer.start();
|
|
53
|
-
await (0, sleep_1.sleep)(5);
|
|
54
|
-
debouncer.flush();
|
|
55
|
-
expect(called).toBeTruthy();
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
//# sourceMappingURL=debouncer.spec.js.map
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const emitter_1 = require("./emitter");
|
|
4
|
-
describe('emitter', () => {
|
|
5
|
-
it('invokes every registered listener on emit', () => {
|
|
6
|
-
const e = (0, emitter_1.emitter)();
|
|
7
|
-
const a = vi.fn();
|
|
8
|
-
const b = vi.fn();
|
|
9
|
-
e.on(a);
|
|
10
|
-
e.on(b);
|
|
11
|
-
e.emit(42);
|
|
12
|
-
expect(a).toHaveBeenCalledWith(42);
|
|
13
|
-
expect(b).toHaveBeenCalledWith(42);
|
|
14
|
-
});
|
|
15
|
-
it('emit with no listeners is a no-op', () => {
|
|
16
|
-
const e = (0, emitter_1.emitter)();
|
|
17
|
-
expect(() => e.emit('noop')).not.toThrow();
|
|
18
|
-
});
|
|
19
|
-
it('close() removes the listener from future emits', () => {
|
|
20
|
-
const e = (0, emitter_1.emitter)();
|
|
21
|
-
const cb = vi.fn();
|
|
22
|
-
const handle = e.on(cb);
|
|
23
|
-
handle.close();
|
|
24
|
-
e.emit(1);
|
|
25
|
-
expect(cb).not.toHaveBeenCalled();
|
|
26
|
-
});
|
|
27
|
-
it('close() called twice is safe (no listener to remove)', () => {
|
|
28
|
-
const e = (0, emitter_1.emitter)();
|
|
29
|
-
const handle = e.on(vi.fn());
|
|
30
|
-
handle.close();
|
|
31
|
-
expect(() => handle.close()).not.toThrow();
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
//# sourceMappingURL=emitter.spec.js.map
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const empty_writable_1 = require("./empty-writable");
|
|
4
|
-
describe('emptyWritable', () => {
|
|
5
|
-
it('accepts writes and invokes the callback', async () => {
|
|
6
|
-
const stream = (0, empty_writable_1.emptyWritable)();
|
|
7
|
-
await new Promise((resolve, reject) => {
|
|
8
|
-
stream.write('hello', (err) => (err ? reject(err) : resolve()));
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
it('ends cleanly after writes', async () => {
|
|
12
|
-
const stream = (0, empty_writable_1.emptyWritable)();
|
|
13
|
-
stream.write('a');
|
|
14
|
-
stream.write('b');
|
|
15
|
-
await new Promise((resolve) => stream.end(resolve));
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=empty-writable.spec.js.map
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const environment_config_1 = require("./environment-config");
|
|
4
|
-
const VAR = 'HAMMERKIT_TEST_ENV_CONFIG';
|
|
5
|
-
describe('getEnvironmentConfig', () => {
|
|
6
|
-
afterEach(() => {
|
|
7
|
-
delete process.env[VAR];
|
|
8
|
-
});
|
|
9
|
-
it('returns the default when the variable is unset', () => {
|
|
10
|
-
delete process.env[VAR];
|
|
11
|
-
expect((0, environment_config_1.getEnvironmentConfig)(VAR, 7)).toBe(7);
|
|
12
|
-
});
|
|
13
|
-
it('parses an integer env value', () => {
|
|
14
|
-
process.env[VAR] = '42';
|
|
15
|
-
expect((0, environment_config_1.getEnvironmentConfig)(VAR, 7)).toBe(42);
|
|
16
|
-
});
|
|
17
|
-
it('falls back to the default when the env value is not a number', () => {
|
|
18
|
-
process.env[VAR] = 'not-a-number';
|
|
19
|
-
expect((0, environment_config_1.getEnvironmentConfig)(VAR, 7)).toBe(7);
|
|
20
|
-
});
|
|
21
|
-
it('treats an empty string env value as not-a-number and uses the default', () => {
|
|
22
|
-
process.env[VAR] = '';
|
|
23
|
-
expect((0, environment_config_1.getEnvironmentConfig)(VAR, 5)).toBe(5);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=environment-config.spec.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const fail_never_1 = require("./fail-never");
|
|
4
|
-
describe('failNever', () => {
|
|
5
|
-
it('throws an error with the given message', () => {
|
|
6
|
-
expect(() => (0, fail_never_1.failNever)('value', 'unexpected')).toThrow('unexpected');
|
|
7
|
-
});
|
|
8
|
-
});
|
|
9
|
-
//# sourceMappingURL=fail-never.spec.js.map
|
package/dist/utils/sleep.spec.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sleep_1 = require("./sleep");
|
|
4
|
-
describe('utils/sleep', () => {
|
|
5
|
-
it('should resolve not before timeout', () => {
|
|
6
|
-
let called = false;
|
|
7
|
-
(0, sleep_1.sleep)(10).then(() => {
|
|
8
|
-
called = true;
|
|
9
|
-
});
|
|
10
|
-
expect(called).toBeFalsy();
|
|
11
|
-
});
|
|
12
|
-
it('should resolve after timeout', async () => {
|
|
13
|
-
let called = false;
|
|
14
|
-
(0, sleep_1.sleep)(10).then(() => {
|
|
15
|
-
called = true;
|
|
16
|
-
});
|
|
17
|
-
expect(called).toBeFalsy();
|
|
18
|
-
await (0, sleep_1.sleep)(10);
|
|
19
|
-
expect(called).toBeTruthy();
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=sleep.spec.js.map
|
package/dist/version.spec.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const version_1 = require("./version");
|
|
4
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
5
|
-
const pkg = require('../package.json');
|
|
6
|
-
describe('getVersion', () => {
|
|
7
|
-
it('returns the version from package.json', () => {
|
|
8
|
-
expect((0, version_1.getVersion)()).toBe(pkg.version);
|
|
9
|
-
expect((0, version_1.getVersion)()).toMatch(/^\d+\.\d+\.\d+/);
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=version.spec.js.map
|