mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 02:54:11 +08:00
115 lines
3.3 KiB
TypeScript
115 lines
3.3 KiB
TypeScript
import bundleConfigLoader from './bundle-config-loader';
|
|
|
|
const defaultLoaderOptions = {
|
|
angular: false,
|
|
loadCss: true,
|
|
unitTesting: false,
|
|
};
|
|
|
|
const defaultTestFiles = {
|
|
'./app-root.xml': true,
|
|
'./app-root.land.xml': true,
|
|
'./app.ts': true,
|
|
'./app.css': true,
|
|
'./app.android.scss': true,
|
|
'./app.ios.scss': true,
|
|
'./app.land.css': true,
|
|
'./components/my-component.css': true,
|
|
'./components/my-component.land.ts': true,
|
|
'./components/my-component.ts': true,
|
|
'./components/my-component.land.xml': true,
|
|
'./components/my-component.xml': true,
|
|
'./components/my-component.land.css': true,
|
|
'./main/main-page.land.css': true,
|
|
'./main/main-page.css': true,
|
|
'./main/main-page.ts': true,
|
|
'./main/main-page.land.xml': true,
|
|
'./main/main-page.xml': true,
|
|
'./main/main-page.land.ts': true,
|
|
'./main/main-page-vm.ts': true,
|
|
|
|
'./app_component.scss': true,
|
|
'./App_Resources123/some-file.xml': true,
|
|
'./MyApp_Resources/some-file.xml': true,
|
|
'./App_Resources_Nobody_Names_Folders_Like_That_Roska/some-file.xml': true,
|
|
|
|
'./package.json': false, // do not include package.json files
|
|
'./app.d.ts': false, // do not include ts definitions
|
|
'./_app-common.scss': false, // do not include scss partial files
|
|
'./_app-variables.scss': false, // do not include scss partial files
|
|
'./App_Resources/Android/src/main/res/values/colors.xml': false, // do not include App_Resources
|
|
'./App_Resources/Android/src/main/AndroidManifest.xml': false, // do not include App_Resources
|
|
'./tests/example.js': false, // do not include files from tests folder
|
|
'./tests/component1/model1/file1.js': false, // do not include files from tests folder
|
|
'./components/tests/example.js': true,
|
|
};
|
|
|
|
const loaderOptionsWithIgnore = {
|
|
angular: false,
|
|
loadCss: true,
|
|
unitTesting: false,
|
|
ignoredFiles: ['./application', './activity'],
|
|
};
|
|
|
|
const ignoredTestFiles = {
|
|
'./application.ts': false,
|
|
'./activity.ts': false,
|
|
};
|
|
|
|
function getRequireContextRegex(source: string): RegExp {
|
|
const requireContextStr = `require.context("~/", true, `;
|
|
|
|
expect(source).toContain(requireContextStr);
|
|
|
|
const start = source.indexOf(requireContextStr) + requireContextStr.length;
|
|
const end = source.indexOf(');\n', start);
|
|
const regexStr = source.substring(start, end);
|
|
const regex: RegExp = eval(regexStr);
|
|
|
|
expect(regex instanceof RegExp).toBeTruthy();
|
|
return regex;
|
|
}
|
|
|
|
function assertTestFilesAreMatched(testFiles: { [key: string]: boolean }, regex: RegExp) {
|
|
for (let fileName in testFiles) {
|
|
if (defaultTestFiles[fileName]) {
|
|
expect(fileName).toMatch(regex);
|
|
} else {
|
|
expect(fileName).not.toMatch(regex);
|
|
}
|
|
}
|
|
}
|
|
|
|
describe('BundleConfigLoader should create require.context', () => {
|
|
it('default case', (done) => {
|
|
const loaderContext = {
|
|
callback: (error, source: string, map) => {
|
|
const regex = getRequireContextRegex(source);
|
|
|
|
assertTestFilesAreMatched(defaultTestFiles, regex);
|
|
|
|
done();
|
|
},
|
|
query: defaultLoaderOptions,
|
|
};
|
|
|
|
bundleConfigLoader.call(loaderContext, ' ___CODE___');
|
|
});
|
|
|
|
it('with ignored files', (done) => {
|
|
const loaderContext = {
|
|
callback: (error, source: string, map) => {
|
|
const regex = getRequireContextRegex(source);
|
|
const testFiles = { ...defaultTestFiles, ...ignoredTestFiles };
|
|
|
|
assertTestFilesAreMatched(testFiles, regex);
|
|
|
|
done();
|
|
},
|
|
query: loaderOptionsWithIgnore,
|
|
};
|
|
|
|
bundleConfigLoader.call(loaderContext, ' ___CODE___');
|
|
});
|
|
});
|