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

View File

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

View File

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

View File

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

View File

@ -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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
<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>
<meta charset="utf-8">
<title>Mocha Tests</title>

View File

@ -1,2 +1,3 @@
// export * from "./Netscript/DynamicRamCalculationTests";
export * from "./Netscript/StaticRamCalculationTests";
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
View 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,
};
};

View File

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