Converted mocha unit tests to run using mocha-webpack (mochapack) package

This commit is contained in:
danielyxie 2019-05-09 19:03:13 -07:00
parent cdb5dfec62
commit ece246b391
16 changed files with 2120 additions and 6955 deletions

888
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -49,6 +49,7 @@
"beautify-lint": "^1.0.3", "beautify-lint": "^1.0.3",
"benchmark": "^2.1.1", "benchmark": "^2.1.1",
"bundle-loader": "~0.5.0", "bundle-loader": "~0.5.0",
"chai": "^4.2.0",
"css-loader": "^0.28.11", "css-loader": "^0.28.11",
"es6-promise-polyfill": "^1.1.1", "es6-promise-polyfill": "^1.1.1",
"eslint": "^4.19.1", "eslint": "^4.19.1",
@ -64,6 +65,8 @@
"lodash": "^4.17.10", "lodash": "^4.17.10",
"mini-css-extract-plugin": "^0.4.1", "mini-css-extract-plugin": "^0.4.1",
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",
"mocha": "^6.1.4",
"mochapack": "^1.1.1",
"node-sass": "^4.10.0", "node-sass": "^4.10.0",
"raw-loader": "~0.5.0", "raw-loader": "~0.5.0",
"sass-loader": "^7.0.3", "sass-loader": "^7.0.3",
@ -108,6 +111,7 @@
"lint:style": "stylelint ./css/*", "lint:style": "stylelint ./css/*",
"lint:typescript": "tslint --project . --exclude **/*.d.ts --format stylish src/**/*.ts utils/**/*.ts", "lint:typescript": "tslint --project . --exclude **/*.d.ts --format stylish src/**/*.ts utils/**/*.ts",
"preinstall": "node ./scripts/engines-check.js", "preinstall": "node ./scripts/engines-check.js",
"test": "mochapack --webpack-config webpack.config-test.js ./test/index.js",
"watch": "webpack --watch --mode production", "watch": "webpack --watch --mode production",
"watch:dev": "webpack --watch --mode development" "watch:dev": "webpack --watch --mode development"
}, },

@ -260,7 +260,7 @@ export const RamCosts: IMap<any> = {
getStamina: () => RamCostConstants.ScriptBladeburnerApiBaseRamCost, getStamina: () => RamCostConstants.ScriptBladeburnerApiBaseRamCost,
joinBladeburnerFaction: () => RamCostConstants.ScriptBladeburnerApiBaseRamCost, joinBladeburnerFaction: () => RamCostConstants.ScriptBladeburnerApiBaseRamCost,
joinBladeburnerDivision: () => RamCostConstants.ScriptBladeburnerApiBaseRamCost, joinBladeburnerDivision: () => RamCostConstants.ScriptBladeburnerApiBaseRamCost,
getBonusTime: () => RamCostConstants.ScriptBladeburnerApiBaseRamCost, getBonusTime: () => 0,
}, },
// Coding Contract API // Coding Contract API
@ -327,6 +327,6 @@ export function getRamCost(...args: string[]): number {
return curr; return curr;
} }
console.warn(`Expected type: ${currType}`); console.warn(`Unexpected type (${currType}) for value [${args}]`);
return 0; return 0;
} }

@ -107,7 +107,7 @@ import { OrderTypes } from "./StockMarket/data/OrderTypes";
import { PositionTypes } from "./StockMarket/data/PositionTypes"; import { PositionTypes } from "./StockMarket/data/PositionTypes";
import { StockSymbols } from "./StockMarket/data/StockSymbols"; import { StockSymbols } from "./StockMarket/data/StockSymbols";
import { import {
getStockmarket4SDataCost, getStockMarket4SDataCost,
getStockMarket4STixApiCost getStockMarket4STixApiCost
} from "./StockMarket/StockMarketCosts"; } from "./StockMarket/StockMarketCosts";
import { TextFile, getTextFile, createTextFile } from "./TextFile"; import { TextFile, getTextFile, createTextFile } from "./TextFile";

@ -0,0 +1,11 @@
// TODO Importing NetscriptFunctions breaks the mochapack build
// import { NetscriptFunctions } from "../../src/NetscriptFunctions";
import { expect } from "chai";
console.log("Beginning Netscript Dynamic RAM Calculation/Generation Tests");
describe("Netscript Static RAM Calculation/Generation Tests", function() {
it("should run", function() {
expect(1).to.equal(1);
});
});

File diff suppressed because it is too large Load Diff

@ -1,5 +1,5 @@
# Unit Tests # Unit Tests
This directory contains unit tests for Bitburner. This directory contains unit tests for Bitburner.
Unit tests use Mocha/Chai and are run through the browser. The Mocha/Chai Unit tests use Mocha/Chai and are run using mochapack (mocha-webpack fork).
packages are sourced directly in HTML. Run the test command with `npm run test`

@ -1,8 +1,7 @@
import { CONSTANTS } from "../src/Constants"; import { CONSTANTS } from "../src/Constants";
import { Order } from "../src/StockMarket/Order"; import { Order } from "../src/StockMarket/Order";
//import { processOrders } from "../src/StockMarket/OrderProcessing"; // import { processOrders } from "../src/StockMarket/OrderProcessing";
import { Stock } from "../src/StockMarket/Stock"; import { Stock } from "../src/StockMarket/Stock";
/*
import { import {
deleteStockMarket, deleteStockMarket,
initStockMarket, initStockMarket,
@ -11,7 +10,6 @@ import {
StockMarket, StockMarket,
SymbolToStockMap, SymbolToStockMap,
} from "../src/StockMarket/StockMarket"; } from "../src/StockMarket/StockMarket";
*/
import { import {
calculateIncreasingPriceMovement, calculateIncreasingPriceMovement,
calculateDecreasingPriceMovement, calculateDecreasingPriceMovement,
@ -24,8 +22,9 @@ import {
import { OrderTypes } from "../src/StockMarket/data/OrderTypes" import { OrderTypes } from "../src/StockMarket/data/OrderTypes"
import { PositionTypes } from "../src/StockMarket/data/PositionTypes"; import { PositionTypes } from "../src/StockMarket/data/PositionTypes";
const assert = chai.assert; //const assert = chai.assert;
const expect = chai.expect; //const expect = chai.expect;
import { expect } from "chai";
console.log("Beginning Stock Market Tests"); console.log("Beginning Stock Market Tests");

@ -1,5 +1,5 @@
<html> <html>
<!-- From https://medium.com/dailyjs/running-mocha-tests-as-native-es6-modules-in-a-browser-882373f2ecb0 --> <!-- NOT CURRENTLY USED. Used to run mocha in browser -->
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>Mocha Tests</title> <title>Mocha Tests</title>

@ -1,2 +1,3 @@
// export * from "./Netscript/DynamicRamCalculationTests";
export * from "./Netscript/StaticRamCalculationTests"; export * from "./Netscript/StaticRamCalculationTests";
export * from "./StockMarketTests"; export * from "./StockMarketTests";

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

96
webpack.config-test.js Normal file

@ -0,0 +1,96 @@
var path = require('path');
var webpack = require('webpack');
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = (env, argv) => {
const statsConfig = {
builtAt: true,
children: false,
chunks: false,
chunkGroups: false,
chunkModules: false,
chunkOrigins: false,
colors: true,
entrypoints: true,
}
return {
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': "\"development\""
}),
// http://stackoverflow.com/questions/29080148/expose-jquery-to-real-window-object-with-webpack
new webpack.ProvidePlugin({
// Automtically detect jQuery and $ as free var in modules
// and inject the jquery library
// This is required by many jquery plugins
jquery: "jquery",
jQuery: "jquery",
$: "jquery"
}),
new MiniCssExtractPlugin({
filename: "[name].css"
})
],
target: "web",
devtool: "source-map",
module: {
rules: [
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/
},
{
test: /\.(jsx)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.s?css$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
"sass-loader"
]
},
]
},
optimization: {
removeAvailableModules: true,
removeEmptyChunks: true,
mergeDuplicateChunks: true,
flagIncludedChunks: true,
occurrenceOrder: true,
sideEffects: true,
providedExports: true,
usedExports: true,
concatenateModules: false,
namedModules: false,
namedChunks: false,
minimize: false,
portableRecords: true,
splitChunks: {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: `tests/vendor`,
chunks: 'all'
}
}
}
},
resolve: {
extensions: [
".tsx",
".ts",
".js",
".jsx",
]
},
stats: statsConfig,
};
};

@ -9,9 +9,6 @@ module.exports = (env, argv) => {
const outputDirectory = isDevServer ? "dist-dev" : "dist"; const outputDirectory = isDevServer ? "dist-dev" : "dist";
const entries = {}; const entries = {};
entries[`${outputDirectory}/engine`] = "./src/engine.jsx"; entries[`${outputDirectory}/engine`] = "./src/engine.jsx";
if (!isDevServer) {
entries["test/tests"] = "./test/index.js";
}
const statsConfig = { const statsConfig = {
builtAt: true, builtAt: true,
@ -73,9 +70,6 @@ module.exports = (env, argv) => {
sortClassName: false, sortClassName: false,
useShortDoctype: false useShortDoctype: false
}, },
excludeChunks: [
"test/tests"
]
}), }),
new MiniCssExtractPlugin({ new MiniCssExtractPlugin({
filename: "[name].css" filename: "[name].css"