forked from wangziqi/gongxue-base
fix: keep SMS smoke progress visible with artifact output
This commit is contained in:
@@ -79,11 +79,16 @@ const server = http.createServer(async (req, res) => {
|
|||||||
|
|
||||||
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve));
|
await new Promise(resolve => server.listen(0, '127.0.0.1', resolve));
|
||||||
|
|
||||||
function runCliSmoke(address) {
|
function runCliSmoke(address, args = ['--json', '--write']) {
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'tiku-sms-smoke-'));
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'tiku-sms-smoke-'));
|
||||||
const writePath = path.join(tempDir, 'nested', 'sms-pnvs-remote-smoke.json');
|
const writePath = path.join(tempDir, 'nested', 'sms-pnvs-remote-smoke.json');
|
||||||
const child = spawn(process.execPath, ['scripts/remote-sms-login-smoke.js', '--json', '--write', writePath], {
|
const childArgs = ['scripts/remote-sms-login-smoke.js'];
|
||||||
|
for (const arg of args) {
|
||||||
|
if (arg === '--write') childArgs.push('--write', writePath);
|
||||||
|
else childArgs.push(arg);
|
||||||
|
}
|
||||||
|
const child = spawn(process.execPath, childArgs, {
|
||||||
cwd: process.cwd(),
|
cwd: process.cwd(),
|
||||||
env: {
|
env: {
|
||||||
...process.env,
|
...process.env,
|
||||||
@@ -149,6 +154,14 @@ try {
|
|||||||
assert.deepEqual(artifactSummary, cliSummary);
|
assert.deepEqual(artifactSummary, cliSummary);
|
||||||
assert.doesNotMatch(cliResult.stdout, /Enter received/, 'CLI --json stdout must stay machine-readable JSON');
|
assert.doesNotMatch(cliResult.stdout, /Enter received/, 'CLI --json stdout must stay machine-readable JSON');
|
||||||
assert.doesNotMatch(cliResult.artifact, /Enter received/, 'CLI --write artifact must stay machine-readable JSON');
|
assert.doesNotMatch(cliResult.artifact, /Enter received/, 'CLI --write artifact must stay machine-readable JSON');
|
||||||
|
|
||||||
|
const writeOnlyCliResult = await runCliSmoke(address, ['--write']);
|
||||||
|
assert.equal(writeOnlyCliResult.status, 0, `CLI --write smoke should pass: ${writeOnlyCliResult.stdout} ${writeOnlyCliResult.stderr}`);
|
||||||
|
assert.match(writeOnlyCliResult.stdout, /PASS sms\.send provider=aliyun-pnvs/, 'CLI --write should keep human PASS output');
|
||||||
|
assert.match(writeOnlyCliResult.stdout, /PASS auth\.me/, 'CLI --write should keep auth.me PASS output');
|
||||||
|
const writeOnlyArtifactSummary = JSON.parse(writeOnlyCliResult.artifact);
|
||||||
|
assert.equal(writeOnlyArtifactSummary.provider, 'aliyun-pnvs');
|
||||||
|
assert.equal(writeOnlyArtifactSummary.bindProvider, 'aliyun-pnvs');
|
||||||
console.log('[PASS] remote SMS login smoke script');
|
console.log('[PASS] remote SMS login smoke script');
|
||||||
} finally {
|
} finally {
|
||||||
await new Promise(resolve => server.close(resolve));
|
await new Promise(resolve => server.close(resolve));
|
||||||
|
|||||||
@@ -229,8 +229,7 @@ async function runRemoteSmsLoginSmoke(inputConfig, options = {}) {
|
|||||||
async function main() {
|
async function main() {
|
||||||
const options = parseArgs(process.argv.slice(2));
|
const options = parseArgs(process.argv.slice(2));
|
||||||
try {
|
try {
|
||||||
const machineOutput = options.json || Boolean(options.writePath);
|
const result = await runRemoteSmsLoginSmoke({ ...buildConfig(), jsonOutput: options.json }, { quiet: options.quiet || options.json });
|
||||||
const result = await runRemoteSmsLoginSmoke({ ...buildConfig(), jsonOutput: machineOutput }, { quiet: options.quiet || machineOutput });
|
|
||||||
if (options.writePath) {
|
if (options.writePath) {
|
||||||
const resolvedPath = path.resolve(process.cwd(), options.writePath);
|
const resolvedPath = path.resolve(process.cwd(), options.writePath);
|
||||||
fs.mkdirSync(path.dirname(resolvedPath), { recursive: true });
|
fs.mkdirSync(path.dirname(resolvedPath), { recursive: true });
|
||||||
|
|||||||
Reference in New Issue
Block a user