Skip to content

Commit

Permalink
- Adding support for all sourcemap types.
Browse files Browse the repository at this point in the history
  • Loading branch information
frgarc committed Mar 1, 2024
1 parent 63fe5b7 commit 73fba36
Show file tree
Hide file tree
Showing 2 changed files with 271 additions and 17 deletions.
257 changes: 248 additions & 9 deletions tools/core-build-tasks/src/tasks/bundle.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { BuildOptions, BuildResult } from 'esbuild';
import path from 'path';

function _createParameters(
sourcemap: boolean | 'linked' | 'inline' | 'external' | 'both' | undefined,
outputFile: string,
outputSourcemapPath: string | undefined
): {
Expand All @@ -17,7 +18,7 @@ function _createParameters(
options: {
entryPoint: '',
outfile: outputFile,
sourcemap: true,
sourcemap: sourcemap,
outputSourcemapPath: outputSourcemapPath,
},
buildResult: {
Expand All @@ -39,10 +40,11 @@ function _createParameters(
}

describe('postProcessOutputFiles with source map files at different path', () => {
it('Dictionary populated correctly', () => {
it('sourcemap `true` - Dictionary populated correctly', () => {
const sourcemap = true;
const debugPath = path.resolve('./dist/debug');
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(outputFile, debugPath);
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/debug');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
Expand All @@ -52,6 +54,118 @@ describe('postProcessOutputFiles with source map files at different path', () =>

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
expect(result.sourceMapDirectory).toBe(expectedSourceMapDirectory);
expect(Object.keys(result.generatedFiles).length).toBe(2);
expect(result.generatedFiles[expectedOutputFilePath]).toBeDefined();
expect(result.generatedFiles[expectedOutputFilePath]).toBe(expectedSourceMappingURL);
expect(result.generatedFiles[expectedSourceMapFilePath]).toBeDefined();
const sourceMap = JSON.parse(result.generatedFiles[expectedSourceMapFilePath]);
expect(sourceMap).toBeDefined();
expect(sourceMap.file).toBeDefined();
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('sourcemap `linked` - Dictionary populated correctly', () => {
const sourcemap = 'linked';
const debugPath = path.resolve('./dist/debug');
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/debug');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
const expectedSourceMapFilePath = path.resolve('./dist/debug/main.js.map');
const expectedSourceMappingURL = '\n//# sourceMappingURL=../debug/main.js.map\n';
const expectedSourceMapFile = '../scripts/main.js';

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
expect(result.sourceMapDirectory).toBe(expectedSourceMapDirectory);
expect(Object.keys(result.generatedFiles).length).toBe(2);
expect(result.generatedFiles[expectedOutputFilePath]).toBeDefined();
expect(result.generatedFiles[expectedOutputFilePath]).toBe(expectedSourceMappingURL);
expect(result.generatedFiles[expectedSourceMapFilePath]).toBeDefined();
const sourceMap = JSON.parse(result.generatedFiles[expectedSourceMapFilePath]);
expect(sourceMap).toBeDefined();
expect(sourceMap.file).toBeDefined();
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('sourcemap `external` - Dictionary populated correctly', () => {
const sourcemap = 'external';
const debugPath = path.resolve('./dist/debug');
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/debug');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
const expectedSourceMapFilePath = path.resolve('./dist/debug/main.js.map');
const expectedSourceMappingURL = '';
const expectedSourceMapFile = '../scripts/main.js';

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
expect(result.sourceMapDirectory).toBe(expectedSourceMapDirectory);
expect(Object.keys(result.generatedFiles).length).toBe(2);
expect(result.generatedFiles[expectedOutputFilePath]).toBeDefined();
expect(result.generatedFiles[expectedOutputFilePath]).toBe(expectedSourceMappingURL);
expect(result.generatedFiles[expectedSourceMapFilePath]).toBeDefined();
const sourceMap = JSON.parse(result.generatedFiles[expectedSourceMapFilePath]);
expect(sourceMap).toBeDefined();
expect(sourceMap.file).toBeDefined();
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('sourcemap `both` - Dictionary populated correctly', () => {
const sourcemap = 'both';
const debugPath = path.resolve('./dist/debug');
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/debug');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
const expectedSourceMapFilePath = path.resolve('./dist/debug/main.js.map');
const expectedSourceMappingURL = '';
const expectedSourceMapFile = '../scripts/main.js';

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
expect(result.sourceMapDirectory).toBe(expectedSourceMapDirectory);
expect(Object.keys(result.generatedFiles).length).toBe(2);
expect(result.generatedFiles[expectedOutputFilePath]).toBeDefined();
expect(result.generatedFiles[expectedOutputFilePath]).toBe(expectedSourceMappingURL);
expect(result.generatedFiles[expectedSourceMapFilePath]).toBeDefined();
const sourceMap = JSON.parse(result.generatedFiles[expectedSourceMapFilePath]);
expect(sourceMap).toBeDefined();
expect(sourceMap.file).toBeDefined();
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('sourcemap `inline` - Dictionary populated correctly', () => {
const sourcemap = 'inline';
const debugPath = path.resolve('./dist/debug');
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/debug');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
const expectedSourceMapFilePath = path.resolve('./dist/debug/main.js.map');
const expectedSourceMappingURL = '';
const expectedSourceMapFile = '../scripts/main.js';

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
Expand All @@ -69,10 +183,11 @@ describe('postProcessOutputFiles with source map files at different path', () =>
});

describe('postProcessOutputFiles with source map files at same path', () => {
it('Dictionary populated correctly using undefined', () => {
it('sourcemap `true` - Dictionary populated correctly using undefined', () => {
const sourcemap = true;
const debugPath = undefined;
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(outputFile, debugPath);
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/scripts');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
Expand All @@ -96,10 +211,11 @@ describe('postProcessOutputFiles with source map files at same path', () => {
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('Dictionary populated correctly using same path explicitly', () => {
it('sourcemap `true` - Dictionary populated correctly using same path explicitly', () => {
const sourcemap = true;
const debugPath = path.resolve('./dist/scripts');
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(outputFile, debugPath);
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/scripts');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
Expand All @@ -109,6 +225,118 @@ describe('postProcessOutputFiles with source map files at same path', () => {

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
expect(result.sourceMapDirectory).toBe(expectedSourceMapDirectory);
expect(Object.keys(result.generatedFiles).length).toBe(2);
expect(result.generatedFiles[expectedOutputFilePath]).toBeDefined();
expect(result.generatedFiles[expectedOutputFilePath]).toBe(expectedSourceMappingURL);
expect(result.generatedFiles[expectedSourceMapFilePath]).toBeDefined();
const sourceMap = JSON.parse(result.generatedFiles[expectedSourceMapFilePath]);
expect(sourceMap).toBeDefined();
expect(sourceMap.file).toBeDefined();
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('sourcemap `linked` - Dictionary populated correctly using undefined', () => {
const sourcemap = 'linked';
const debugPath = undefined;
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/scripts');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
const expectedSourceMapFilePath = path.resolve('./dist/scripts/main.js.map');
const expectedSourceMappingURL = '\n//# sourceMappingURL=main.js.map\n';
const expectedSourceMapFile = 'main.js';

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
expect(result.sourceMapDirectory).toBe(expectedSourceMapDirectory);
expect(Object.keys(result.generatedFiles).length).toBe(2);
expect(result.generatedFiles[expectedOutputFilePath]).toBeDefined();
expect(result.generatedFiles[expectedOutputFilePath]).toBe(expectedSourceMappingURL);
expect(result.generatedFiles[expectedSourceMapFilePath]).toBeDefined();
const sourceMap = JSON.parse(result.generatedFiles[expectedSourceMapFilePath]);
expect(sourceMap).toBeDefined();
expect(sourceMap.file).toBeDefined();
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('sourcemap `external` - Dictionary populated correctly using undefined', () => {
const sourcemap = 'external';
const debugPath = undefined;
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/scripts');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
const expectedSourceMapFilePath = path.resolve('./dist/scripts/main.js.map');
const expectedSourceMappingURL = '';
const expectedSourceMapFile = 'main.js';

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
expect(result.sourceMapDirectory).toBe(expectedSourceMapDirectory);
expect(Object.keys(result.generatedFiles).length).toBe(2);
expect(result.generatedFiles[expectedOutputFilePath]).toBeDefined();
expect(result.generatedFiles[expectedOutputFilePath]).toBe(expectedSourceMappingURL);
expect(result.generatedFiles[expectedSourceMapFilePath]).toBeDefined();
const sourceMap = JSON.parse(result.generatedFiles[expectedSourceMapFilePath]);
expect(sourceMap).toBeDefined();
expect(sourceMap.file).toBeDefined();
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('sourcemap `both` - Dictionary populated correctly using undefined', () => {
const sourcemap = 'both';
const debugPath = undefined;
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/scripts');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
const expectedSourceMapFilePath = path.resolve('./dist/scripts/main.js.map');
const expectedSourceMappingURL = '';
const expectedSourceMapFile = 'main.js';

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
expect(result.sourceMapDirectory).toBe(expectedSourceMapDirectory);
expect(Object.keys(result.generatedFiles).length).toBe(2);
expect(result.generatedFiles[expectedOutputFilePath]).toBeDefined();
expect(result.generatedFiles[expectedOutputFilePath]).toBe(expectedSourceMappingURL);
expect(result.generatedFiles[expectedSourceMapFilePath]).toBeDefined();
const sourceMap = JSON.parse(result.generatedFiles[expectedSourceMapFilePath]);
expect(sourceMap).toBeDefined();
expect(sourceMap.file).toBeDefined();
expect(sourceMap.file).toBe(expectedSourceMapFile);
}
});
it('sourcemap `inline` - Dictionary populated correctly using undefined', () => {
const sourcemap = 'inline';
const debugPath = undefined;
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, debugPath);
const expectedSourceMapDirectory = path.resolve('./dist/scripts');
const expectedOutputDirectory = path.resolve('./dist/scripts');
const expectedOutputFilePath = outputFile;
const expectedSourceMapFilePath = path.resolve('./dist/scripts/main.js.map');
const expectedSourceMappingURL = '';
const expectedSourceMapFile = 'main.js';

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeDefined();
if (result) {
expect(result.outputDirectory).toBe(expectedOutputDirectory);
Expand All @@ -126,9 +354,20 @@ describe('postProcessOutputFiles with source map files at same path', () => {
});

describe('postProcessOutputFiles with no files', () => {
it('Returns undefined', () => {
it('sourcemap `true` - Returns undefined', () => {
const sourcemap = true;
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(sourcemap, outputFile, undefined);
parameters.buildResult.outputFiles = undefined;

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);

expect(result).toBeUndefined();
});
it('sourcemap `false` - Returns undefined', () => {
const sourcemap = false;
const outputFile = path.resolve('./dist/scripts/main.js');
const parameters = _createParameters(outputFile, undefined);
const parameters = _createParameters(sourcemap, outputFile, undefined);
parameters.buildResult.outputFiles = undefined;

const result = postProcessOutputFiles(parameters.options, parameters.buildResult);
Expand Down
Loading

0 comments on commit 73fba36

Please sign in to comment.