Since 6272edd121 some tests were
not loading for Ember CLI, this commit adds the missing paths so
all the tests load.
147 lines
4.6 KiB
JavaScript
147 lines
4.6 KiB
JavaScript
"use strict";
|
|
|
|
const EmberApp = require("ember-cli/lib/broccoli/ember-app");
|
|
const resolve = require("path").resolve;
|
|
const mergeTrees = require("broccoli-merge-trees");
|
|
const concat = require("broccoli-concat");
|
|
const prettyTextEngine = require("./lib/pretty-text-engine");
|
|
const { createI18nTree } = require("./lib/translation-plugin");
|
|
const discourseScss = require("./lib/discourse-scss");
|
|
const funnel = require("broccoli-funnel");
|
|
const AssetRev = require("broccoli-asset-rev");
|
|
|
|
module.exports = function (defaults) {
|
|
let discourseRoot = resolve("../../../..");
|
|
let vendorJs = discourseRoot + "/vendor/assets/javascripts/";
|
|
|
|
const isProduction = EmberApp.env().includes("production");
|
|
let app = new EmberApp(defaults, {
|
|
autoRun: false,
|
|
"ember-qunit": {
|
|
insertContentForTestBody: false,
|
|
},
|
|
sourcemaps: {
|
|
// There seems to be a bug with brocolli-concat when sourcemaps are disabled
|
|
// that causes the `app.import` statements below to fail in production mode.
|
|
// This forces the use of `fast-sourcemap-concat` which works in production.
|
|
enabled: true,
|
|
},
|
|
autoImport: {
|
|
forbidEval: true,
|
|
},
|
|
fingerprint: {
|
|
// Disabled here, but handled manually below when in production mode.
|
|
// This is so we can apply a single AssetRev operation over the application and our additional trees
|
|
enabled: false,
|
|
},
|
|
SRI: {
|
|
// We don't use SRI in Rails. Disable here to match:
|
|
enabled: false,
|
|
},
|
|
|
|
"ember-cli-terser": {
|
|
enabled: isProduction,
|
|
exclude: [
|
|
"**/test-*.js",
|
|
"**/core-tests*.js",
|
|
"**/highlightjs/*",
|
|
"**/javascripts/*",
|
|
],
|
|
},
|
|
|
|
// We need to build tests in prod for theme tests
|
|
tests: true,
|
|
});
|
|
|
|
// Patching a private method is not great, but there's no other way for us to tell
|
|
// Ember CLI that we want the tests alone in a package without helpers/fixtures, since
|
|
// we re-use those in the theme tests.
|
|
app._defaultPackager.packageApplicationTests = function (tree) {
|
|
let appTestTrees = []
|
|
.concat(
|
|
this.packageEmberCliInternalFiles(),
|
|
this.packageTestApplicationConfig(),
|
|
tree
|
|
)
|
|
.filter(Boolean);
|
|
|
|
appTestTrees = mergeTrees(appTestTrees, {
|
|
overwrite: true,
|
|
annotation: "TreeMerger (appTestTrees)",
|
|
});
|
|
|
|
let tests = concat(appTestTrees, {
|
|
inputFiles: [
|
|
"**/tests/acceptance/*.js",
|
|
"**/tests/integration/*.js",
|
|
"**/tests/integration/**/*.js",
|
|
"**/tests/unit/*.js",
|
|
"**/tests/unit/**/*.js",
|
|
],
|
|
headerFiles: ["vendor/ember-cli/tests-prefix.js"],
|
|
footerFiles: ["vendor/ember-cli/app-config.js"],
|
|
outputFile: "/assets/core-tests.js",
|
|
annotation: "Concat: Core Tests",
|
|
sourceMapConfig: false,
|
|
});
|
|
|
|
let testHelpers = concat(appTestTrees, {
|
|
inputFiles: [
|
|
"**/tests/test-boot-ember-cli.js",
|
|
"**/tests/helpers/**/*.js",
|
|
"**/tests/fixtures/**/*.js",
|
|
"**/tests/setup-tests.js",
|
|
],
|
|
outputFile: "/assets/test-helpers.js",
|
|
annotation: "Concat: Test Helpers",
|
|
sourceMapConfig: false,
|
|
});
|
|
|
|
return mergeTrees([tests, testHelpers]);
|
|
};
|
|
|
|
// WARNING: We should only import scripts here if they are not in NPM.
|
|
// For example: our very specific version of bootstrap-modal.
|
|
app.import(vendorJs + "bootbox.js");
|
|
app.import(vendorJs + "bootstrap-modal.js");
|
|
app.import(vendorJs + "jquery.ui.widget.js");
|
|
app.import(vendorJs + "caret_position.js");
|
|
app.import("node_modules/ember-source/dist/ember-template-compiler.js", {
|
|
type: "test",
|
|
});
|
|
app.import(discourseRoot + "/app/assets/javascripts/polyfills.js");
|
|
|
|
const mergedTree = mergeTrees([
|
|
discourseScss(`${discourseRoot}/app/assets/stylesheets`, "testem.scss"),
|
|
createI18nTree(discourseRoot, vendorJs),
|
|
app.toTree(),
|
|
funnel(`${discourseRoot}/public/javascripts`, { destDir: "javascripts" }),
|
|
funnel(`${vendorJs}/highlightjs`, {
|
|
files: ["highlight-test-bundle.min.js"],
|
|
destDir: "assets/highlightjs",
|
|
}),
|
|
concat(mergeTrees([app.options.adminTree]), {
|
|
outputFile: `assets/admin.js`,
|
|
}),
|
|
prettyTextEngine(vendorJs, "discourse-markdown"),
|
|
concat("public/assets/scripts", {
|
|
outputFile: `assets/start-discourse.js`,
|
|
headerFiles: [`start-app.js`],
|
|
inputFiles: [`discourse-boot.js`],
|
|
}),
|
|
]);
|
|
|
|
if (isProduction) {
|
|
return new AssetRev(mergedTree, {
|
|
exclude: [
|
|
"javascripts/**/*",
|
|
"assets/test-i18n*",
|
|
"assets/highlightjs",
|
|
"assets/testem.css",
|
|
],
|
|
});
|
|
} else {
|
|
return mergedTree;
|
|
}
|
|
};
|