@swc/cli
Version:
CLI for the swc project
123 lines (122 loc) • 4.91 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const dirWorker_1 = __importDefault(require("../dirWorker"));
const utilModule = __importStar(require("../util"));
const compileModule = __importStar(require("../compile"));
const path_1 = __importDefault(require("path"));
const createHandleCompileOptions = (options) => ({
cliOptions: {
outDir: "",
outFile: "",
filename: "",
stripLeadingPaths: false,
filenames: [],
sync: false,
workers: undefined,
sourceMapTarget: undefined,
extensions: [],
watch: false,
copyFiles: false,
outFileExtension: "",
includeDotfiles: false,
deleteDirOnStart: false,
quiet: true,
only: [],
ignore: [],
},
swcOptions: {},
sync: false,
outDir: "outDir",
filename: "",
...options,
});
jest.mock("../util", () => ({
...jest.requireActual("../util"),
compile: jest
.fn()
.mockReturnValue(Promise.resolve({ code: "code", map: "map" })),
}));
jest.mock("../compile", () => ({
outputResult: jest.fn(),
}));
beforeEach(() => {
jest.clearAllMocks();
});
describe("dirWorker", () => {
it('should call "compile" with the corresponding extension when "outFileExtension" is undefined', async () => {
const filename = "test";
const options = createHandleCompileOptions({
filename: `${filename}.ts`,
});
try {
await (0, dirWorker_1.default)(options);
}
catch (err) {
// We don't care about the error in this test, we want to make sure that "compile" was called
}
// Assert that subFunction was called with the correct parameter
expect(utilModule.compile).toHaveBeenCalledWith(options.filename, { sourceFileName: `../${options.filename}` }, options.sync, path_1.default.join(options.outDir, `${filename}.${utilModule.mapTsExt(options.filename)}`));
expect(compileModule.outputResult).toHaveBeenCalledWith({
output: {
code: "code",
map: "map",
},
sourceFile: `${filename}.ts`,
destFile: path_1.default.join(options.outDir, `${filename}.${utilModule.mapTsExt(filename)}`),
destDtsFile: path_1.default.join(options.outDir, `${filename}.${utilModule.mapDtsExt(filename)}`),
destSourcemapFile: path_1.default.join(options.outDir, `${filename}.${utilModule.mapTsExt(filename)}.map`),
options: { sourceFileName: `../${options.filename}` },
});
});
it('should call "compile" with "outFileExtension" when it is set in options', async () => {
const filename = "test";
const options = createHandleCompileOptions({
filename: `${filename}.ts`,
outFileExtension: "cjs",
});
try {
await (0, dirWorker_1.default)(options);
}
catch (err) {
// We don't care about the error in this test, we want to make sure that "compile" was called
}
// Assert that subFunction was called with the correct parameter
expect(utilModule.compile).toHaveBeenCalledWith(options.filename, { sourceFileName: `../${options.filename}` }, options.sync, path_1.default.join(options.outDir, `${filename}.${options.outFileExtension}`));
});
});