@haibun/cli 1.1.2 → 1.1.3
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/BaseOptions.d.ts +144 -0
- package/build/BaseOptions.d.ts.map +1 -0
- package/build/BaseOptions.js +106 -0
- package/build/BaseOptions.js.map +1 -0
- package/build/BaseOptions.test.d.ts +2 -0
- package/build/BaseOptions.test.d.ts.map +1 -0
- package/build/BaseOptions.test.js +19 -0
- package/build/BaseOptions.test.js.map +1 -0
- package/build/cli.d.ts +1 -11
- package/build/cli.d.ts.map +1 -1
- package/build/cli.js +24 -89
- package/build/cli.js.map +1 -1
- package/build/lib.d.ts +9 -2
- package/build/lib.d.ts.map +1 -1
- package/build/lib.js +40 -13
- package/build/lib.js.map +1 -1
- package/build/lib.test.js +50 -3
- package/build/lib.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { IHasOptions, TOptions } from "@haibun/core/build/lib/defs";
|
|
2
|
+
export declare class BaseOptions implements IHasOptions {
|
|
3
|
+
static options: {
|
|
4
|
+
SPLIT_SHARED: {
|
|
5
|
+
desc: string;
|
|
6
|
+
parse: (input: string) => {
|
|
7
|
+
error: string;
|
|
8
|
+
result?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
result: {
|
|
11
|
+
[x: string]: string;
|
|
12
|
+
}[];
|
|
13
|
+
error?: undefined;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
TRACE: {
|
|
17
|
+
desc: string;
|
|
18
|
+
parse: (input: string) => {
|
|
19
|
+
error: string;
|
|
20
|
+
result?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
result: boolean;
|
|
23
|
+
error?: undefined;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
CLI: {
|
|
27
|
+
desc: string;
|
|
28
|
+
parse: (input: string) => {
|
|
29
|
+
error: string;
|
|
30
|
+
result?: undefined;
|
|
31
|
+
} | {
|
|
32
|
+
result: boolean;
|
|
33
|
+
error?: undefined;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
STAY: {
|
|
37
|
+
desc: string;
|
|
38
|
+
parse: (result: string) => {
|
|
39
|
+
result: string;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
LOG_FOLLOW: {
|
|
43
|
+
desc: string;
|
|
44
|
+
parse: (result: string) => {
|
|
45
|
+
result: string;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
LOG_LEVEL: {
|
|
49
|
+
desc: string;
|
|
50
|
+
parse: (result: string) => {
|
|
51
|
+
result: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
ENV: {
|
|
55
|
+
desc: string;
|
|
56
|
+
parse: (input: string, cur: TOptions) => {
|
|
57
|
+
error: string;
|
|
58
|
+
env?: undefined;
|
|
59
|
+
} | {
|
|
60
|
+
env: {
|
|
61
|
+
[x: string]: string;
|
|
62
|
+
};
|
|
63
|
+
error?: undefined;
|
|
64
|
+
} | undefined;
|
|
65
|
+
};
|
|
66
|
+
ENVC: {
|
|
67
|
+
desc: string;
|
|
68
|
+
parse: (input: string, cur: TOptions) => {
|
|
69
|
+
error: string;
|
|
70
|
+
env?: undefined;
|
|
71
|
+
} | {
|
|
72
|
+
env: TOptions;
|
|
73
|
+
error?: undefined;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
STEP_DELAY: {
|
|
77
|
+
desc: string;
|
|
78
|
+
parse: (input: string) => {
|
|
79
|
+
error: string;
|
|
80
|
+
result?: undefined;
|
|
81
|
+
} | {
|
|
82
|
+
result: number;
|
|
83
|
+
error?: undefined;
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
LOOPS: {
|
|
87
|
+
desc: string;
|
|
88
|
+
parse: (input: string) => {
|
|
89
|
+
error: string;
|
|
90
|
+
result?: undefined;
|
|
91
|
+
} | {
|
|
92
|
+
result: number;
|
|
93
|
+
error?: undefined;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
LOOP_START: {
|
|
97
|
+
desc: string;
|
|
98
|
+
parse: (input: string) => {
|
|
99
|
+
error: string;
|
|
100
|
+
result?: undefined;
|
|
101
|
+
} | {
|
|
102
|
+
result: number;
|
|
103
|
+
error?: undefined;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
LOOP_INC: {
|
|
107
|
+
desc: string;
|
|
108
|
+
parse: (input: string) => {
|
|
109
|
+
error: string;
|
|
110
|
+
result?: undefined;
|
|
111
|
+
} | {
|
|
112
|
+
result: number;
|
|
113
|
+
error?: undefined;
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
MEMBERS: {
|
|
117
|
+
desc: string;
|
|
118
|
+
parse: (input: string) => {
|
|
119
|
+
error: string;
|
|
120
|
+
result?: undefined;
|
|
121
|
+
} | {
|
|
122
|
+
result: number;
|
|
123
|
+
error?: undefined;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
CONTINUE_ON_ERROR_IF_SCORED: {
|
|
127
|
+
desc: string;
|
|
128
|
+
parse: (result: string) => {
|
|
129
|
+
result: string;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
OUTPUT: {
|
|
133
|
+
desc: string;
|
|
134
|
+
parse: (result: string) => {
|
|
135
|
+
result: string;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
PWDEBUG: {
|
|
139
|
+
desc: string;
|
|
140
|
+
parse: (input: string) => string;
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=BaseOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseOptions.d.ts","sourceRoot":"","sources":["../src/BaseOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,WAAW,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAG5E,qBAAa,WAAY,YAAW,WAAW;IAC3C,MAAM,CAAC,OAAO;;;2BAGS,MAAM;;;;;;;;;;;;2BAYN,MAAM;;;;;;;;;;2BAIN,MAAM;;;;;;;;;;4BAIL,MAAM;;;;;;4BAIN,MAAM;;;;;;4BAIN,MAAM;;;;;;2BAIP,MAAM,OAAO,QAAQ;;;;;;;;;;;;2BAarB,MAAM,OAAO,QAAQ;;;;;;;;;;2BAoBrB,MAAM;;;;;;;;;;2BAKN,MAAM;;;;;;;;;;2BAIN,MAAM;;;;;;;;;;2BAIN,MAAM;;;;;;;;;;2BAIN,MAAM;;;;;;;;;;4BAIL,MAAM;;;;;;4BAIN,MAAM;;;;;;2BAIP,MAAM;;MAE3B;CACL"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseOptions = void 0;
|
|
4
|
+
const util_1 = require("@haibun/core/build/lib/util");
|
|
5
|
+
class BaseOptions {
|
|
6
|
+
}
|
|
7
|
+
exports.BaseOptions = BaseOptions;
|
|
8
|
+
BaseOptions.options = {
|
|
9
|
+
SPLIT_SHARED: {
|
|
10
|
+
desc: 'create instances based on variable options, for example, var=option1,option2',
|
|
11
|
+
parse: (input) => {
|
|
12
|
+
const [what, s] = input.split('=');
|
|
13
|
+
if (!what || !s) {
|
|
14
|
+
return { error: `var=option1,option2` };
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
return { result: s.split(',').map((w) => ({ [what]: w })) };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
TRACE: {
|
|
22
|
+
desc: 'save trace data',
|
|
23
|
+
parse: (input) => util_1.boolOrError(input)
|
|
24
|
+
},
|
|
25
|
+
CLI: {
|
|
26
|
+
desc: 'create a command interface for each member',
|
|
27
|
+
parse: (input) => util_1.boolOrError(input)
|
|
28
|
+
},
|
|
29
|
+
STAY: {
|
|
30
|
+
desc: 'stay running after execution: always',
|
|
31
|
+
parse: (result) => ({ result })
|
|
32
|
+
},
|
|
33
|
+
LOG_FOLLOW: {
|
|
34
|
+
desc: 'filter for output',
|
|
35
|
+
parse: (result) => ({ result })
|
|
36
|
+
},
|
|
37
|
+
LOG_LEVEL: {
|
|
38
|
+
desc: 'debug, warn, info, log, error, none',
|
|
39
|
+
parse: (result) => ({ result })
|
|
40
|
+
},
|
|
41
|
+
ENV: {
|
|
42
|
+
desc: 'pass an environment variable: var=value',
|
|
43
|
+
parse: (input, cur) => {
|
|
44
|
+
const pairs = input?.split(',');
|
|
45
|
+
for (const pair in pairs) {
|
|
46
|
+
const [k, v] = pair.split(',').map(i => i.trim());
|
|
47
|
+
if (cur[k]) {
|
|
48
|
+
return { error: `ENV ${k} already exists` };
|
|
49
|
+
}
|
|
50
|
+
return { env: { [k]: v } };
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
ENVC: {
|
|
55
|
+
desc: 'pass multiple environment variables: var1=a,var2=b',
|
|
56
|
+
parse: (input, cur) => {
|
|
57
|
+
const pairs = new Set(input?.split(',').map(a => a.split('=')[0]));
|
|
58
|
+
let env = {};
|
|
59
|
+
for (const pair of pairs) {
|
|
60
|
+
const [k] = Array.from(new Set(pair.split('=')));
|
|
61
|
+
if (cur[k]) {
|
|
62
|
+
return { error: `ENVC ${k} already exists` };
|
|
63
|
+
}
|
|
64
|
+
env[k] = [];
|
|
65
|
+
}
|
|
66
|
+
for (const pair of input?.split(',')) {
|
|
67
|
+
const [k, v] = pair.split('=');
|
|
68
|
+
env[k].push(v);
|
|
69
|
+
}
|
|
70
|
+
return { env };
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
STEP_DELAY: {
|
|
74
|
+
desc: 'delay between steps',
|
|
75
|
+
parse: (input) => util_1.intOrError(input)
|
|
76
|
+
},
|
|
77
|
+
LOOPS: {
|
|
78
|
+
desc: 'how many loops',
|
|
79
|
+
parse: (input) => util_1.intOrError(input)
|
|
80
|
+
},
|
|
81
|
+
LOOP_START: {
|
|
82
|
+
desc: 'wip',
|
|
83
|
+
parse: (input) => util_1.intOrError(input)
|
|
84
|
+
},
|
|
85
|
+
LOOP_INC: {
|
|
86
|
+
desc: 'wip',
|
|
87
|
+
parse: (input) => util_1.intOrError(input)
|
|
88
|
+
},
|
|
89
|
+
MEMBERS: {
|
|
90
|
+
desc: 'number of members in each loop',
|
|
91
|
+
parse: (input) => util_1.intOrError(input)
|
|
92
|
+
},
|
|
93
|
+
CONTINUE_ON_ERROR_IF_SCORED: {
|
|
94
|
+
desc: 'wip',
|
|
95
|
+
parse: (result) => ({ result })
|
|
96
|
+
},
|
|
97
|
+
OUTPUT: {
|
|
98
|
+
desc: 'Output format (AsXUnit)',
|
|
99
|
+
parse: (result) => ({ result })
|
|
100
|
+
},
|
|
101
|
+
PWDEBUG: {
|
|
102
|
+
desc: '(web) Enable Playwright debugging (0 or 1)',
|
|
103
|
+
parse: (input) => process.env['PWDEBUG'] = 'true'
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=BaseOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseOptions.js","sourceRoot":"","sources":["../src/BaseOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseOptions.test.d.ts","sourceRoot":"","sources":["../src/BaseOptions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const BaseOptions_1 = require("./BaseOptions");
|
|
4
|
+
describe('applyEnvCollections', () => {
|
|
5
|
+
it('creates pairs', () => {
|
|
6
|
+
const p = {};
|
|
7
|
+
const res = BaseOptions_1.BaseOptions.options.ENVC.parse('a=1,b=2,a=3,b=4', p);
|
|
8
|
+
expect(res.env).toEqual({
|
|
9
|
+
a: ["1", "3"],
|
|
10
|
+
b: ["2", "4"]
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
it('prevents collision', () => {
|
|
14
|
+
const p = { a: 1 };
|
|
15
|
+
const res = BaseOptions_1.BaseOptions.options.ENVC.parse('a=1', p);
|
|
16
|
+
expect(res.error).toBeDefined();
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=BaseOptions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseOptions.test.js","sourceRoot":"","sources":["../src/BaseOptions.test.ts"],"names":[],"mappings":";;AACA,+CAA4C;AAE5C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,yBAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;YACtB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACb,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,yBAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/build/cli.d.ts
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { WorldContext } from '@haibun/core/build/lib/contexts';
|
|
4
|
-
export declare type TRunResult = {
|
|
5
|
-
output: any;
|
|
6
|
-
result: TResult;
|
|
7
|
-
shared: WorldContext;
|
|
8
|
-
tag: TTag;
|
|
9
|
-
runStart: number;
|
|
10
|
-
runDuration: number;
|
|
11
|
-
fromStart: number;
|
|
12
|
-
};
|
|
2
|
+
export {};
|
|
13
3
|
//# sourceMappingURL=cli.d.ts.map
|
package/build/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/build/cli.js
CHANGED
|
@@ -5,89 +5,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
const repl_1 = __importDefault(require("repl"));
|
|
8
|
-
const contexts_1 = require("@haibun/core/build/lib/contexts");
|
|
9
|
-
const Logger_1 = __importDefault(require("@haibun/core/build/lib/Logger"));
|
|
10
|
-
const run_1 = require("@haibun/core/build/lib/run");
|
|
11
8
|
const util_1 = require("@haibun/core/build/lib/util");
|
|
9
|
+
const run_with_options_1 = __importDefault(require("@haibun/core/build/lib/run-with-options"));
|
|
12
10
|
const lib_1 = require("./lib");
|
|
13
11
|
const Timer_1 = require("@haibun/core/build/lib/Timer");
|
|
14
12
|
go();
|
|
15
13
|
async function go() {
|
|
16
|
-
const featureFilter = process.argv[3];
|
|
14
|
+
const featureFilter = !!process.argv[3] ? process.argv[3].split(',') : undefined;
|
|
17
15
|
const base = process.argv[2].replace(/\/$/, '');
|
|
18
16
|
const specl = util_1.getOptionsOrDefault(base);
|
|
19
|
-
if (!process.argv[2] || featureFilter === '--help') {
|
|
17
|
+
if (!process.argv[2] || featureFilter?.find(f => f === '--help')) {
|
|
20
18
|
await lib_1.usageThenExit(specl);
|
|
21
19
|
}
|
|
22
|
-
console.
|
|
23
|
-
const { protoOptions, errors } =
|
|
24
|
-
const splits = protoOptions.options.
|
|
20
|
+
console.info('\n_________________________________ start');
|
|
21
|
+
const { protoOptions, errors } = lib_1.processBaseEnv(process.env, specl.options);
|
|
22
|
+
const splits = protoOptions.options.SPLITS || [{}];
|
|
25
23
|
if (errors.length > 0) {
|
|
26
24
|
await lib_1.usageThenExit(specl, errors.join('\n'));
|
|
27
25
|
}
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
logger.log(`starting loop ${loop}/${loops}`);
|
|
26
|
+
const loops = protoOptions.options.LOOPS || 1;
|
|
27
|
+
const members = protoOptions.options.MEMBERS || 1;
|
|
28
|
+
const trace = protoOptions.options.TRACE;
|
|
29
|
+
const startRunCallback = (world) => {
|
|
30
|
+
if (protoOptions.options.CLI)
|
|
31
|
+
repl_1.default.start().context.runtime = world.runtime;
|
|
32
|
+
};
|
|
33
|
+
const endRunCallback = (world, result) => {
|
|
34
|
+
if (trace) {
|
|
35
|
+
util_1.writeTraceFile(world, result);
|
|
39
36
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
const instances = splits.map(async (split) => {
|
|
46
|
-
const runtime = {};
|
|
47
|
-
const tag = util_1.getRunTag(totalRan, loop, member, split, trace);
|
|
48
|
-
totalRan++;
|
|
49
|
-
return doRun(base, specl, runtime, featureFilter, new contexts_1.WorldContext(tag, split), protoOptions, logger, tag, timer);
|
|
50
|
-
});
|
|
51
|
-
groupRuns = groupRuns.concat(instances);
|
|
52
|
-
}
|
|
53
|
-
const theseValues = await Promise.allSettled(groupRuns);
|
|
54
|
-
allRunResults = allRunResults.concat(theseValues);
|
|
55
|
-
}
|
|
56
|
-
let ranResults = allRunResults
|
|
57
|
-
.filter((i) => i.status === 'fulfilled')
|
|
58
|
-
.map((i) => i)
|
|
59
|
-
.map((i) => i.value);
|
|
60
|
-
let passed = 0;
|
|
61
|
-
let failed = 0;
|
|
62
|
-
for (let r of ranResults) {
|
|
63
|
-
if (r.result.ok) {
|
|
64
|
-
passed++;
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
let message = r.result?.failure?.error?.message;
|
|
68
|
-
if (!message) {
|
|
69
|
-
try {
|
|
70
|
-
message = JSON.stringify(r.result.failure);
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
console.error('fail message', e);
|
|
74
|
-
message = "cannot extract";
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
allFailures[message] = (allFailures[message] || []).concat({
|
|
78
|
-
sequence: r.tag.sequence,
|
|
79
|
-
runDuration: r.runDuration,
|
|
80
|
-
fromStart: r.fromStart
|
|
81
|
-
});
|
|
82
|
-
failed++;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
let exceptionResults = allRunResults
|
|
86
|
-
.filter((i) => i.status === 'rejected')
|
|
87
|
-
.map((i) => i)
|
|
88
|
-
.map((i) => i.reason);
|
|
89
|
-
const ok = ranResults.every((a) => a.result.ok) && exceptionResults.length < 1;
|
|
90
|
-
if (ok) {
|
|
37
|
+
};
|
|
38
|
+
const runOptions = { loops, members, logLevel: protoOptions.options.LOG_LEVEL || 'debug', logFollow: protoOptions.options.LOG_FOLLOW, splits, trace, specl, base, protoOptions, startRunCallback, endRunCallback };
|
|
39
|
+
const { ok, exceptionResults, ranResults, allFailures, logger, passed, failed, totalRan, runTime } = await run_with_options_1.default(runOptions);
|
|
40
|
+
if (ok && exceptionResults.length < 1) {
|
|
91
41
|
logger.log(ranResults.every((r) => r.output));
|
|
92
42
|
}
|
|
93
43
|
else {
|
|
@@ -98,28 +48,13 @@ async function go() {
|
|
|
98
48
|
console.error(ranResults[0].result.failure);
|
|
99
49
|
}
|
|
100
50
|
}
|
|
101
|
-
|
|
102
|
-
console.
|
|
103
|
-
|
|
104
|
-
if (ok && protoOptions.options.stay !== 'always') {
|
|
51
|
+
console.info('failures:', JSON.stringify(allFailures, null, 2));
|
|
52
|
+
console.info('\nRESULT>>>', { ok, startDate: Timer_1.Timer.startTime, startTime: Timer_1.Timer.startTime.getTime(), passed, failed, totalRan, runTime, 'features/s:': totalRan / runTime });
|
|
53
|
+
if (ok && exceptionResults.length < 1 && protoOptions.options.STAY !== 'always') {
|
|
105
54
|
process.exit(0);
|
|
106
55
|
}
|
|
107
|
-
else if (protoOptions.options.
|
|
56
|
+
else if (protoOptions.options.STAY !== 'always') {
|
|
108
57
|
process.exit(1);
|
|
109
58
|
}
|
|
110
59
|
}
|
|
111
|
-
async function doRun(base, specl, runtime, featureFilter, shared, protoOptions, containerLogger, tag, timer) {
|
|
112
|
-
if (protoOptions.options.cli) {
|
|
113
|
-
repl_1.default.start().context.runtime = runtime;
|
|
114
|
-
}
|
|
115
|
-
const runStart = process.hrtime();
|
|
116
|
-
const logger = new Logger_1.default({ output: containerLogger, tag });
|
|
117
|
-
const world = { ...protoOptions, shared, logger, runtime, domains: [], tag, timer };
|
|
118
|
-
const { result } = await run_1.run({ specl, base, world, featureFilter, protoOptions });
|
|
119
|
-
if (world.options.trace) {
|
|
120
|
-
util_1.writeTraceFile(world.tag, result);
|
|
121
|
-
}
|
|
122
|
-
const output = await util_1.resultOutput(process.env.HAIBUN_OUTPUT, result, shared);
|
|
123
|
-
return { result, shared, output, tag, runStart: runStart[0], runDuration: process.hrtime(runStart)[0], fromStart: timer.since() };
|
|
124
|
-
}
|
|
125
60
|
//# sourceMappingURL=cli.js.map
|
package/build/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,gDAAwB;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/build/lib.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import { TSpecl } from "@haibun/core/build/lib/defs";
|
|
2
|
-
|
|
1
|
+
import { TOptions, TProtoOptions, TRunResult, TSpecl } from "@haibun/core/build/lib/defs";
|
|
2
|
+
declare type TEnv = {
|
|
3
|
+
[name: string]: string | undefined;
|
|
4
|
+
};
|
|
3
5
|
export declare function usageThenExit(specl: TSpecl, message?: string): Promise<void>;
|
|
4
6
|
export declare function usage(specl: TSpecl, message?: string): Promise<string>;
|
|
5
7
|
export declare function ranResultError(ranResults: TRunResult[], exceptionResults: any[]): any;
|
|
8
|
+
export declare function processBaseEnv(env: TEnv, options: TOptions): {
|
|
9
|
+
protoOptions: TProtoOptions;
|
|
10
|
+
errors: string[];
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
6
13
|
//# sourceMappingURL=lib.d.ts.map
|
package/build/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAG,MAAM,6BAA6B,CAAC;AAIhH,aAAK,IAAI,GAAG;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEnD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,iBAIlE;AAED,wBAAsB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,mBAuB1D;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,GAAG,CAWrF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ;;;EAiC1D"}
|
package/build/lib.js
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ranResultError = exports.usage = exports.usageThenExit = void 0;
|
|
4
|
-
const
|
|
3
|
+
exports.processBaseEnv = exports.ranResultError = exports.usage = exports.usageThenExit = void 0;
|
|
4
|
+
const defs_1 = require("@haibun/core/build/lib/defs");
|
|
5
5
|
const util_1 = require("@haibun/core/build/lib/util");
|
|
6
|
-
const
|
|
7
|
-
HAIBUN_OUTPUT: { desc: 'Output format (AsXUnit)' },
|
|
8
|
-
HAIBUN_CLI: { desc: 'start a cli for each instance' },
|
|
9
|
-
HAIBUN_LOG_LEVEL: { desc: 'log level (debug, log, info, warn, error, none)' },
|
|
10
|
-
HAIBUN_SPLIT_SHARED: { desc: 'Use vars for split instances (=ex=1,2,3)' },
|
|
11
|
-
PWDEBUG: { desc: '(web) Enable Playwright debugging (0 or 1)' },
|
|
12
|
-
HAIBUN_STEP_DELAY: { desc: 'ms to wait between every step' },
|
|
13
|
-
HAIBUN_STAY: { desc: 'ok or error' }
|
|
14
|
-
};
|
|
6
|
+
const BaseOptions_1 = require("./BaseOptions");
|
|
15
7
|
async function usageThenExit(specl, message) {
|
|
16
8
|
const output = await usage(specl, message);
|
|
17
9
|
console[message ? 'error' : 'info'](output);
|
|
@@ -20,7 +12,7 @@ async function usageThenExit(specl, message) {
|
|
|
20
12
|
exports.usageThenExit = usageThenExit;
|
|
21
13
|
;
|
|
22
14
|
async function usage(specl, message) {
|
|
23
|
-
let steppers = await util_1.getSteppers({ steppers: specl.steppers
|
|
15
|
+
let steppers = await util_1.getSteppers({ steppers: specl.steppers });
|
|
24
16
|
let a = {};
|
|
25
17
|
steppers.forEach(s => {
|
|
26
18
|
const o = s;
|
|
@@ -34,7 +26,7 @@ async function usage(specl, message) {
|
|
|
34
26
|
`usage: ${process.argv[1]} <project base>`,
|
|
35
27
|
message || '',
|
|
36
28
|
'Set these environmental variables to control options:\n',
|
|
37
|
-
...Object.entries(
|
|
29
|
+
...Object.entries(BaseOptions_1.BaseOptions.options).map(([k, v]) => `${defs_1.HAIBUN}_${k.padEnd(55)} ${v.desc}`),
|
|
38
30
|
];
|
|
39
31
|
if (Object.keys(a).length) {
|
|
40
32
|
ret.push('\nThese variables are available for selected extensions (via config.js)\n', ...Object.entries(a).map(([k, v]) => `${k.padEnd(55)} ${v.desc}`));
|
|
@@ -51,4 +43,39 @@ function ranResultError(ranResults, exceptionResults) {
|
|
|
51
43
|
}, null, 2);
|
|
52
44
|
}
|
|
53
45
|
exports.ranResultError = ranResultError;
|
|
46
|
+
function processBaseEnv(env, options) {
|
|
47
|
+
const protoOptions = { options: { ...options }, extraOptions: {} };
|
|
48
|
+
let errors = [];
|
|
49
|
+
let nenv = {};
|
|
50
|
+
const pfx = `${defs_1.HAIBUN}_`;
|
|
51
|
+
const baseOptions = BaseOptions_1.BaseOptions;
|
|
52
|
+
Object.entries(env)
|
|
53
|
+
.filter(([k]) => k.startsWith(pfx))
|
|
54
|
+
.map(([k]) => {
|
|
55
|
+
const value = env[k];
|
|
56
|
+
const opt = k.replace(pfx, '');
|
|
57
|
+
const baseOption = baseOptions.options[opt];
|
|
58
|
+
if (baseOption) {
|
|
59
|
+
const res = baseOption.parse(value, nenv);
|
|
60
|
+
if (res.error) {
|
|
61
|
+
errors.push(res.error);
|
|
62
|
+
}
|
|
63
|
+
else if (res.env) {
|
|
64
|
+
nenv = { ...nenv, ...res.env };
|
|
65
|
+
}
|
|
66
|
+
else if (!res.result) {
|
|
67
|
+
throw Error(`no result from ${res}`);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
protoOptions.options[opt] = res.result;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
protoOptions.extraOptions[k] = value;
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
protoOptions.options.env = nenv;
|
|
78
|
+
return { protoOptions, errors };
|
|
79
|
+
}
|
|
80
|
+
exports.processBaseEnv = processBaseEnv;
|
|
54
81
|
//# sourceMappingURL=lib.js.map
|
package/build/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
|
package/build/lib.test.js
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
23
|
};
|
|
@@ -7,25 +26,26 @@ const lib_1 = require("@haibun/core/build/lib/test/lib");
|
|
|
7
26
|
const TestSteps_1 = __importDefault(require("@haibun/core/build/lib/test/TestSteps"));
|
|
8
27
|
const TestStepsWithOptions_1 = __importDefault(require("@haibun/core/build/lib/test/TestStepsWithOptions"));
|
|
9
28
|
const util_1 = require("@haibun/core/build/lib/util");
|
|
29
|
+
const lib = __importStar(require("./lib"));
|
|
10
30
|
const lib_2 = require("./lib");
|
|
11
31
|
describe('usageThenExit', () => {
|
|
12
32
|
it('exits with success', () => {
|
|
13
33
|
const ranOnce = (code) => { expect(code).toBe(0); return undefined; };
|
|
14
34
|
jest.spyOn(process, 'exit').mockImplementationOnce(ranOnce);
|
|
15
35
|
jest.spyOn(console, 'info').mockImplementationOnce(any => undefined);
|
|
16
|
-
|
|
36
|
+
lib.usageThenExit({ ...util_1.getDefaultOptions(), steppers: ['../core/src/lib/test/TestStepsWithOptions'] });
|
|
17
37
|
});
|
|
18
38
|
it('exits with error', () => {
|
|
19
39
|
const ranOnce = (code) => { expect(code).toBe(1); return undefined; };
|
|
20
40
|
jest.spyOn(process, 'exit').mockImplementationOnce(ranOnce);
|
|
21
41
|
jest.spyOn(console, 'error').mockImplementationOnce(() => undefined);
|
|
22
|
-
|
|
42
|
+
lib.usageThenExit({ ...util_1.getDefaultOptions(), steppers: ['../core/src/lib/test/TestStepsWithOptions'] }, 'woops');
|
|
23
43
|
});
|
|
24
44
|
});
|
|
25
45
|
describe('options', () => {
|
|
26
46
|
it('stepper options', async () => {
|
|
27
47
|
const feature = { path: '/features/test.feature', content: `When I have a stepper option` };
|
|
28
|
-
const { protoOptions: protoConfig } =
|
|
48
|
+
const { protoOptions: protoConfig } = lib_2.processBaseEnv({ [lib_1.HAIBUN_O_TESTSTEPSWITHOPTIONS_EXISTS]: 'true' }, {});
|
|
29
49
|
const { result } = await lib_1.testWithDefaults([feature], [TestStepsWithOptions_1.default], protoConfig);
|
|
30
50
|
expect(result.ok).toBe(true);
|
|
31
51
|
expect(result.results?.length).toBe(1);
|
|
@@ -40,4 +60,31 @@ describe('builds', () => {
|
|
|
40
60
|
expect(world.shared.get('done')).toEqual('ok');
|
|
41
61
|
});
|
|
42
62
|
});
|
|
63
|
+
describe('processEnv', () => {
|
|
64
|
+
it('carries extra options', () => {
|
|
65
|
+
const specl = util_1.getDefaultOptions();
|
|
66
|
+
const { protoOptions } = lib.processBaseEnv({ HAIBUN_TEST: 'true' }, specl.options);
|
|
67
|
+
expect(protoOptions.extraOptions['HAIBUN_TEST']).toBeDefined();
|
|
68
|
+
});
|
|
69
|
+
it('split_shared incorrect message', () => {
|
|
70
|
+
const specl = util_1.getDefaultOptions();
|
|
71
|
+
const { errors } = lib.processBaseEnv({ HAIBUN_SPLIT_SHARED: '1,2' }, specl.options);
|
|
72
|
+
expect(errors.length).toBe(1);
|
|
73
|
+
});
|
|
74
|
+
it('processes split_shared', () => {
|
|
75
|
+
const specl = util_1.getDefaultOptions();
|
|
76
|
+
const res = lib.processBaseEnv({ HAIBUN_SPLIT_SHARED: 'foo=1,2' }, specl.options).protoOptions.options;
|
|
77
|
+
expect(res.SPLIT_SHARED).toEqual([{ foo: '1' }, { foo: '2' }]);
|
|
78
|
+
});
|
|
79
|
+
it('assigns int', () => {
|
|
80
|
+
const specl = util_1.getDefaultOptions();
|
|
81
|
+
const { options } = lib.processBaseEnv({ HAIBUN_LOOPS: '1' }, specl.options).protoOptions;
|
|
82
|
+
expect(options.LOOPS).toBe(1);
|
|
83
|
+
});
|
|
84
|
+
it('errors for string passed as int', () => {
|
|
85
|
+
const specl = util_1.getDefaultOptions();
|
|
86
|
+
const { errors } = lib.processBaseEnv({ HAIBUN_LOOPS: '1.2' }, specl.options);
|
|
87
|
+
expect(errors.length).toBe(1);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
43
90
|
//# sourceMappingURL=lib.test.js.map
|
package/build/lib.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.test.js","sourceRoot":"","sources":["../src/lib.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lib.test.js","sourceRoot":"","sources":["../src/lib.test.ts"],"names":[],"mappings":"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"}
|