Browse Source

fix: improve tests

Gerald 6 years ago
parent
commit
5db2828ae5

+ 0 - 30
.babelrc

@@ -1,30 +0,0 @@
-{
-  "presets": [
-    ["@babel/preset-env", {
-      "modules": false,
-    }],
-  ],
-  "plugins": [
-    "@babel/plugin-transform-runtime",
-
-    // stage-2
-    ["@babel/plugin-proposal-decorators", { "legacy": true }],
-    "@babel/plugin-proposal-function-sent",
-    "@babel/plugin-proposal-export-namespace-from",
-    "@babel/plugin-proposal-numeric-separator",
-    "@babel/plugin-proposal-throw-expressions",
-
-    // stage-3
-    "@babel/plugin-syntax-dynamic-import",
-    "@babel/plugin-syntax-import-meta",
-    ["@babel/plugin-proposal-class-properties", { "loose": false }],
-    "@babel/plugin-proposal-json-strings",
-
-    ["module-resolver", {
-      "alias": {
-        "#": "./src",
-      },
-      "extensions": [ ".js", ".vue" ],
-    }],
-  ],
-}

+ 32 - 0
.babelrc.js

@@ -0,0 +1,32 @@
+module.exports = {
+  'presets': [
+    ['@babel/preset-env', {
+      ...process.env.BABEL_ENV !== 'test' && {
+        modules: false,
+      },
+    }],
+  ],
+  plugins: [
+    '@babel/plugin-transform-runtime',
+
+    // stage-2
+    ['@babel/plugin-proposal-decorators', { legacy: true }],
+    '@babel/plugin-proposal-function-sent',
+    '@babel/plugin-proposal-export-namespace-from',
+    '@babel/plugin-proposal-numeric-separator',
+    '@babel/plugin-proposal-throw-expressions',
+
+    // stage-3
+    '@babel/plugin-syntax-dynamic-import',
+    '@babel/plugin-syntax-import-meta',
+    ['@babel/plugin-proposal-class-properties', { loose: true }],
+    '@babel/plugin-proposal-json-strings',
+
+    ['module-resolver', {
+      alias: {
+        '#': './src',
+      },
+      extensions: [ '.js', '.vue' ],
+    }],
+  ],
+};

+ 0 - 9
gulpfile.js

@@ -7,7 +7,6 @@ const plumber = require('gulp-plumber');
 const yaml = require('js-yaml');
 const webpack = require('webpack');
 const webpackConfig = require('./scripts/webpack.conf');
-const webpackTestConfig = require('./scripts/webpack.test.conf');
 const i18n = require('./scripts/i18n');
 const string = require('./scripts/string');
 const { isProd } = require('./scripts/util');
@@ -76,13 +75,6 @@ function jsProd(done) {
   });
 }
 
-function jsTest(done) {
-  webpack(webpackTestConfig, (...args) => {
-    webpackCallback(...args);
-    done();
-  });
-}
-
 function manifest() {
   return gulp.src(paths.manifest, { base: 'src' })
   .pipe(string((input, file) => {
@@ -158,6 +150,5 @@ const pack = gulp.parallel(manifest, copyFiles, copyI18n);
 exports.clean = clean;
 exports.dev = gulp.series(gulp.parallel(pack, jsDev), watch);
 exports.build = gulp.parallel(pack, jsProd);
-exports.buildTest = jsTest;
 exports.i18n = updateI18n;
 exports.check = checkI18n;

+ 2 - 2
package.json

@@ -12,8 +12,7 @@
     "lint:js": "eslint --ext .js,.vue .",
     "lint:yml": "gulp check",
     "svgo": "svgo --config .svgo.yml src/resources/icons",
-    "pretest": "cross-env NODE_ENV=test gulp buildTest",
-    "test": "node dist/test",
+    "test": "cross-env BABEL_ENV=test tape -r ./test/mock/register 'test/**/*.test.js'",
     "transform": "node scripts/transform-lock"
   },
   "description": "Violentmonkey",
@@ -30,6 +29,7 @@
     "@babel/plugin-syntax-import-meta": "^7.0.0",
     "@babel/plugin-transform-runtime": "^7.1.0",
     "@babel/preset-env": "^7.1.0",
+    "@babel/register": "^7.0.0",
     "babel-eslint": "^10.0.1",
     "babel-loader": "^8.0.4",
     "babel-minify-webpack-plugin": "^0.3.0",

+ 0 - 9
scripts/webpack.test.conf.js

@@ -1,9 +0,0 @@
-const base = require('./webpack.base.conf');
-
-module.exports = {
-  ...base,
-  target: 'node',
-  entry: {
-    test: './test',
-  },
-};

+ 0 - 0
test/background/script.js → test/background/script.test.js


+ 0 - 0
test/background/tester.js → test/background/tester.test.js


+ 0 - 0
test/common/index.js → test/common/index.test.js


+ 0 - 5
test/index.js

@@ -1,5 +0,0 @@
-import './polyfill';
-import './common';
-import './background/tester';
-import './background/script';
-import './injected/helpers';

+ 0 - 0
test/injected/helpers.js → test/injected/helpers.test.js


+ 1 - 0
test/mock/index.js

@@ -0,0 +1 @@
+import './polyfill';

+ 0 - 0
test/polyfill.js → test/mock/polyfill.js


+ 2 - 0
test/mock/register.js

@@ -0,0 +1,2 @@
+require('@babel/register');
+require('./index');

+ 36 - 1
yarn.lock

@@ -676,6 +676,19 @@
     js-levenshtein "^1.1.3"
     semver "^5.3.0"
 
+"@babel/register@^7.0.0":
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.0.0.tgz#fa634bae1bfa429f60615b754fc1f1d745edd827"
+  integrity sha1-+mNLrhv6Qp9gYVt1T8Hx10Xt2Cc=
+  dependencies:
+    core-js "^2.5.7"
+    find-cache-dir "^1.0.0"
+    home-or-tmp "^3.0.0"
+    lodash "^4.17.10"
+    mkdirp "^0.5.1"
+    pirates "^4.0.0"
+    source-map-support "^0.5.9"
+
 "@babel/runtime@^7.1.2":
   version "7.1.5"
   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.5.tgz#4170907641cf1f61508f563ece3725150cc6fe39"
@@ -2323,6 +2336,11 @@ core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.1:
   resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
   integrity sha1-+XJgj/DOrWi4QaFqky0LGDeRgU4=
 
+core-js@^2.5.7:
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.0.tgz#1e30793e9ee5782b307e37ffa22da0eacddd84d4"
+  integrity sha1-HjB5Pp7leCswfjf/oi2g6s3dhNQ=
+
 core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -3991,6 +4009,11 @@ home-or-tmp@^2.0.0:
     os-homedir "^1.0.0"
     os-tmpdir "^1.0.1"
 
+home-or-tmp@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb"
+  integrity sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=
+
 homedir-polyfill@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
@@ -5298,6 +5321,11 @@ no-case@^2.2.0:
     util "^0.10.3"
     vm-browserify "0.0.4"
 
+node-modules-regexp@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
+  integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
+
 node-pre-gyp@^0.10.0:
   version "0.10.3"
   resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
@@ -5824,6 +5852,13 @@ pinkie@^2.0.0:
   resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
   integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
 
+pirates@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.0.tgz#850b18781b4ac6ec58a43c9ed9ec5fe6796addbd"
+  integrity sha1-hQsYeBtKxuxYpDye2exf5nlq3b0=
+  dependencies:
+    node-modules-regexp "^1.0.0"
+
 pkg-dir@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4"
@@ -7378,7 +7413,7 @@ source-map-support@^0.4.15:
   dependencies:
     source-map "^0.5.6"
 
-source-map-support@~0.5.6:
+source-map-support@^0.5.9, source-map-support@~0.5.6:
   version "0.5.9"
   resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
   integrity sha1-QbyVOyU0Jn6i1gW8z6e/oxEc7V8=