@alleyinteractive/build-tool
Version:
An opinionated set of build configurations for wp-scripts
112 lines • 4.65 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable no-console */
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const webpack_1 = require("./webpack");
describe('getEntries', () => {
const testEntryPath = path_1.default.join(process.cwd(), 'test-entries');
beforeAll(() => {
const testEntries = [
'entry1',
'entry2',
];
try {
if (!fs_1.default.existsSync(testEntryPath)) {
fs_1.default.mkdirSync(testEntryPath);
fs_1.default.writeFileSync(path_1.default.join(testEntryPath, 'README.md'), '');
fs_1.default.writeFileSync(path_1.default.join(testEntryPath, '.gitkeep'), '');
}
}
catch (error) {
console.error(`Failed to create directory ${testEntryPath}`, error);
}
testEntries.forEach((entry) => {
try {
if (!fs_1.default.existsSync(path_1.default.join(testEntryPath, entry))) {
fs_1.default.mkdirSync(path_1.default.join(testEntryPath, entry));
}
if (!fs_1.default.existsSync(path_1.default.join(testEntryPath, entry, 'index.js'))) {
fs_1.default.writeFileSync(path_1.default.join(testEntryPath, entry, 'index.js'), '');
}
}
catch (error) {
console.error(`Failed to create directory ${testEntryPath}/${entry}`, error);
}
});
});
afterAll(() => {
fs_1.default.rm(testEntryPath, { recursive: true }, (err) => {
if (err) {
console.error(`Failed to remove directory ${testEntryPath}`, err);
}
});
});
it('returns an empty object if the directory does not exist', () => {
const result = (0, webpack_1.getEntries)('nonexistent-directory');
expect(result).toEqual({});
});
it('returns an object of entries if the directory exists', () => {
const result = (0, webpack_1.getEntries)('test-entries');
expect(result).toEqual({
'test-entries-entry1': path_1.default.join(testEntryPath, 'entry1'),
'test-entries-entry2': path_1.default.join(testEntryPath, 'entry2'),
});
});
it('ignores .gitkeep and README.md files', () => {
const result = (0, webpack_1.getEntries)('test-entries');
expect(result).not.toHaveProperty('test-entries-.gitkeep');
expect(result).not.toHaveProperty('test-entries-README.md');
});
});
describe('processFilename', () => {
it('returns a filename in the format "[name].[ext]" for non-block entries', () => {
const pathData = {
chunk: {
name: 'my-chunk',
},
};
const result = (0, webpack_1.processFilename)(pathData, false, 'js');
expect(result).toBe('[name].js');
});
it('constructs a filename excluding the "entries" prefix with the directory name and "/index.[ext]" for entries with setAsIndex=true', () => {
const pathData = {
chunk: {
name: 'entries-my-entry',
},
};
const result = (0, webpack_1.processFilename)(pathData, true, 'js');
expect(result).toBe('my-entry/index.js');
});
it('constructs a filename excluding the "entries" prefix with the directory name and "/[name].[ext]" for entries with setAsIndex=false', () => {
const pathData = {
chunk: {
name: 'entries-my-entry',
},
};
const result = (0, webpack_1.processFilename)(pathData, false, 'js');
expect(result).toBe('my-entry/[name].js');
});
it('uses the runtime as the name format source when dirnameSource="runtime"', () => {
const pathData = {
chunk: {
runtime: 'entries-my-runtime',
},
};
const result = (0, webpack_1.processFilename)(pathData, false, 'js', 'runtime');
expect(result).toBe('my-runtime/[name].js');
});
it('uses the default dirname source "name" when dirnameSource is not provided', () => {
const pathData = {
chunk: {
name: 'my-chunk',
},
};
const result = (0, webpack_1.processFilename)(pathData, false, 'js');
expect(result).toBe('[name].js');
});
});
//# sourceMappingURL=webpack.test.js.map