shopify
Version:
A CLI tool to build for the Shopify platform
91 lines (86 loc) • 3.89 kB
JavaScript
import {
ThemeInitTests
} from "./chunk-VRUH5BDH.js";
import {
ThemePushTests
} from "./chunk-SJXHR42U.js";
import {
createDoctorContext
} from "./chunk-ITTNM7I4.js";
import {
outputInfo,
source_default
} from "./chunk-E4GUDBAR.js";
import {
relativizePath
} from "./chunk-EG6MBBEN.js";
import {
init_cjs_shims
} from "./chunk-PKR7KJ6P.js";
// src/cli/services/doctor-release/theme/runner.ts
init_cjs_shims();
// ../cli-kit/dist/public/node/doctor/reporter.js
init_cjs_shims();
var log = (message) => outputInfo(message), reporterBasePath;
function initReporter(basePath) {
reporterBasePath = basePath;
}
function truncatePaths(text) {
if (!reporterBasePath)
return text;
let absolutePathPattern = /\/[^\s,)]+/g;
return text.replace(absolutePathPattern, (path) => relativizePath(path, reporterBasePath));
}
function reportSuiteStart(suiteName, description) {
log(""), log(source_default.bold(source_default.cyan(`Suite: ${suiteName}`))), log(source_default.dim(description));
}
function reportTestStart(testName) {
log(source_default.bold(source_default.blue(`Running: ${testName}`)));
}
function reportTestResult(result) {
let durationStr = `(${(result.duration / 1e3).toFixed(2)}s)`;
if (result.status === "passed") {
log(source_default.bold(source_default.green(`PASSED: ${result.name} ${source_default.dim(durationStr)}`)));
for (let line of formatAssertions(result.assertions))
log(line);
} else if (result.status === "failed") {
log(source_default.red(`FAILED: ${result.name} ${source_default.dim(durationStr)}`));
for (let line of formatAssertions(result.assertions))
log(line);
result.error && log(source_default.red(` Error: ${truncatePaths(result.error.message)}`));
} else
log(source_default.yellow(`SKIPPED: ${result.name}`));
}
function reportSummary(results) {
let passed = results.filter((result) => result.status === "passed").length, failed = results.filter((result) => result.status === "failed").length, skipped = results.filter((result) => result.status === "skipped").length, total = results.length, totalDuration = results.reduce((sum, result) => sum + result.duration, 0);
log(""), log(source_default.bold("\u2500".repeat(40))), failed > 0 ? log(source_default.red(source_default.bold(`Doctor Complete: ${failed}/${total} tests failed`))) : log(source_default.green(source_default.bold(`Doctor Complete: ${passed}/${total} tests passed`))), log(` Passed: ${source_default.green(String(passed))}`), log(` Failed: ${source_default.red(String(failed))}`), skipped > 0 && log(` Skipped: ${source_default.yellow(String(skipped))}`), log(` Total time: ${source_default.dim(`${(totalDuration / 1e3).toFixed(2)}s`)}`);
}
function formatAssertions(assertions) {
return assertions.map((assertion) => {
if (assertion.passed)
return source_default.green(` [OK] ${assertion.description}`);
{
let details = ` (expected: ${assertion.expected}, actual: ${assertion.actual})`;
return source_default.red(` [FAIL] ${assertion.description}${details}`);
}
});
}
// src/cli/services/doctor-release/theme/runner.ts
var themeSuites = [ThemeInitTests, ThemePushTests];
async function runThemeDoctor(options) {
let results = [], context = createDoctorContext(options);
initReporter(context.workingDirectory);
for (let SuiteClass of themeSuites) {
let suite = new SuiteClass(), description = SuiteClass.description ?? "Test suite";
reportSuiteStart(SuiteClass.name, description);
let suiteResults = await suite.runSuite(context);
for (let result of suiteResults)
if (reportTestStart(result.name), reportTestResult(result), results.push(result), result.status === "failed")
return reportSummary(results), results;
}
return reportSummary(results), results;
}
export {
runThemeDoctor
};
//# sourceMappingURL=chunk-77BDQRQW.js.map