Skip to content

Commit

Permalink
[FIX] Emit warning when including/excluding unknown tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
matz3 committed Mar 30, 2021
1 parent cf901f3 commit 854f456
Show file tree
Hide file tree
Showing 2 changed files with 243 additions and 1 deletion.
12 changes: 11 additions & 1 deletion lib/builder/builder.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,10 @@ function composeTaskList({dev, selfContained, jsdoc, includedTasks, excludedTask
});
break;
}
if (selectedTasks[taskName] !== false) {
if (selectedTasks[taskName] === true) {
selectedTasks[taskName] = false;
} else if (typeof selectedTasks[taskName] === "undefined") {
log.warn(`Unable to exclude task '${taskName}': Task is unknown`);
}
}

Expand All @@ -133,6 +135,8 @@ function composeTaskList({dev, selfContained, jsdoc, includedTasks, excludedTask
}
if (selectedTasks[taskName] === false) {
selectedTasks[taskName] = true;
} else if (typeof selectedTasks[taskName] === "undefined") {
log.warn(`Unable to include task '${taskName}': Task is unknown`);
}
}

Expand Down Expand Up @@ -403,3 +407,9 @@ module.exports = {
}
}
};

// Export local function for testing only
/* istanbul ignore else */
if (process.env.NODE_ENV === "test") {
module.exports._composeTaskList = composeTaskList;
}
232 changes: 232 additions & 0 deletions test/lib/builder/builder-composeTaskList.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
const test = require("ava");
const sinon = require("sinon");
const mock = require("mock-require");

test.beforeEach((t) => {
t.context.log = {
warn: sinon.stub()
};
const logger = require("@ui5/logger");
sinon.stub(logger, "getGroupLogger").withArgs("builder:builder").returns(t.context.log);

const builder = mock.reRequire("../../../lib/builder/builder");
t.context.composeTaskList = builder._composeTaskList;
});

test.afterEach.always(() => {
sinon.restore();
mock.stopAll();
});


[
[
"composeTaskList: dev=false / selfContained=false / jsdoc=false", {
dev: false,
selfContained: false,
jsdoc: false,
includedTasks: [],
excludedTasks: []
}, [
"replaceCopyright",
"replaceVersion",
"createDebugFiles",
"escapeNonAsciiCharacters",
"uglify",
"buildThemes",
"generateLibraryManifest",
"generateVersionInfo",
"generateFlexChangesBundle",
"generateComponentPreload",
"generateBundle",
"generateLibraryPreload",
]
],
[
"composeTaskList: dev=true / selfContained=false / jsdoc=false", {
dev: true,
selfContained: false,
jsdoc: false,
includedTasks: [],
excludedTasks: []
}, [
"replaceCopyright",
"replaceVersion",
"buildThemes"
]],
[
"composeTaskList: dev=false / selfContained=true / jsdoc=false", {
dev: false,
selfContained: true,
jsdoc: false,
includedTasks: [],
excludedTasks: []
}, [
"replaceCopyright",
"replaceVersion",
"createDebugFiles",
"escapeNonAsciiCharacters",
"uglify",
"buildThemes",
"transformBootstrapHtml",
"generateLibraryManifest",
"generateVersionInfo",
"generateFlexChangesBundle",
"generateStandaloneAppBundle",
"generateBundle"
]
],
[
"composeTaskList: dev=false / selfContained=false / jsdoc=true", {
dev: false,
selfContained: false,
jsdoc: true,
includedTasks: [],
excludedTasks: []
}, [
"escapeNonAsciiCharacters",
"executeJsdocSdkTransformation",
"generateApiIndex",
"generateJsdoc",
"buildThemes",
"generateVersionInfo",
"generateBundle",
]
],
[
"composeTaskList: includedTasks / excludedTasks", {
dev: false,
selfContained: false,
jsdoc: false,
includedTasks: ["generateResourcesJson", "replaceVersion"],
excludedTasks: ["replaceCopyright", "generateApiIndex"]
}, [
"replaceVersion",
"createDebugFiles",
"escapeNonAsciiCharacters",
"uglify",
"buildThemes",
"generateLibraryManifest",
"generateVersionInfo",
"generateFlexChangesBundle",
"generateComponentPreload",
"generateResourcesJson",
"generateBundle",
"generateLibraryPreload",
]
],
[
"composeTaskList: includedTasks=*", {
dev: false,
selfContained: false,
jsdoc: false,
includedTasks: ["*"],
excludedTasks: []
}, [
"replaceCopyright",
"replaceVersion",
"createDebugFiles",
"escapeNonAsciiCharacters",
"executeJsdocSdkTransformation",
"generateApiIndex",
"generateJsdoc",
"uglify",
"buildThemes",
"transformBootstrapHtml",
"generateLibraryManifest",
"generateVersionInfo",
"generateManifestBundle",
"generateFlexChangesBundle",
"generateComponentPreload",
"generateResourcesJson",
"generateThemeDesignerResources",
"generateStandaloneAppBundle",
"generateBundle",
"generateLibraryPreload",
"generateCachebusterInfo",
]
],
[
"composeTaskList: excludedTasks=*", {
dev: false,
selfContained: false,
jsdoc: false,
includedTasks: [],
excludedTasks: ["*"]
}, []
],
[
"composeTaskList: includedTasks with unknown tasks", {
dev: false,
selfContained: false,
jsdoc: false,
includedTasks: ["foo", "bar"],
excludedTasks: []
}, [
"replaceCopyright",
"replaceVersion",
"createDebugFiles",
"escapeNonAsciiCharacters",
"uglify",
"buildThemes",
"generateLibraryManifest",
"generateVersionInfo",
"generateFlexChangesBundle",
"generateComponentPreload",
"generateBundle",
"generateLibraryPreload",
], (t) => {
const {log} = t.context;
t.is(log.warn.callCount, 2);
t.deepEqual(log.warn.getCall(0).args, [
"Unable to include task 'foo': Task is unknown"
]);
t.deepEqual(log.warn.getCall(1).args, [
"Unable to include task 'bar': Task is unknown"
]);
}
],
[
"composeTaskList: excludedTasks with unknown tasks", {
dev: false,
selfContained: false,
jsdoc: false,
includedTasks: [],
excludedTasks: ["foo", "bar"],
}, [
"replaceCopyright",
"replaceVersion",
"createDebugFiles",
"escapeNonAsciiCharacters",
"uglify",
"buildThemes",
"generateLibraryManifest",
"generateVersionInfo",
"generateFlexChangesBundle",
"generateComponentPreload",
"generateBundle",
"generateLibraryPreload",
], (t) => {
const {log} = t.context;
t.is(log.warn.callCount, 2);
t.deepEqual(log.warn.getCall(0).args, [
"Unable to exclude task 'foo': Task is unknown"
]);
t.deepEqual(log.warn.getCall(1).args, [
"Unable to exclude task 'bar': Task is unknown"
]);
}
],
].forEach(([testTitle, args, expectedTaskList, assertCb]) => {
test.serial(testTitle, (t) => {
const {composeTaskList, log} = t.context;
const taskList = composeTaskList(args);
t.deepEqual(taskList, expectedTaskList);
if (assertCb) {
assertCb(t);
} else {
// When no cb is defined, no logs are expected
t.is(log.warn.callCount, 0);
}
});
});

0 comments on commit 854f456

Please sign in to comment.