Commit babe9d57a4b2c8a2936f458e08e6c829813fd5e8

Authored by ABNER SILVA DE OLIVEIRA
1 parent fa922ca9
Exists in master and in 1 other branch dev-fixes

testing scripts adjustments

Showing 3 changed files with 89 additions and 50 deletions   Show diff stats
karma.conf.js
... ... @@ -6,7 +6,9 @@ var conf = require('./gulp/conf');
6 6  
7 7 var argv = require("yargs").argv;
8 8  
9   -var singleRun = false;
  9 +var singleRun = (argv.singleRun !== undefined && argv.singleRun);
  10 +var coverage = (argv.coverage === undefined || argv.coverage);
  11 +
10 12  
11 13 if (argv.singleRun) {
12 14 singleRun = true;
... ... @@ -32,17 +34,15 @@ var karmaPlugins = [
32 34  
33 35 var karmaReporters = ['spec'];
34 36  
35   -if (argv.coverage) {
36   - //projectFiles = ['./src/shim.ts', './src/app/index.ts', './src/**/*.spec.ts'];
37   - singleRun = true;
38 37  
39   - karmaPlugins.push('karma-coverage');
40   - //karmaPlugins.push('karma-webpack');
41   -
  38 +
  39 +if (coverage) {
  40 + karmaPlugins.push('karma-coverage');
42 41 karmaReporters.push('coverage');
43 42 }
44 43  
45 44  
  45 +
46 46 var _ = require('lodash');
47 47 var wiredep = require('wiredep');
48 48  
... ... @@ -124,7 +124,7 @@ module.exports = function (config) {
124 124 };
125 125  
126 126  
127   - if (argv.coverage) {
  127 + if (coverage) {
128 128  
129 129 /*configuration.webpack = {
130 130 module: {
... ...
package.json
... ... @@ -7,10 +7,11 @@
7 7 "moment": "^2.11.2"
8 8 },
9 9 "scripts": {
10   - "coverage": "karma start --coverage & npm run remap-coverage",
  10 + "coverage": "karma start --single-run & npm run remap-coverage",
11 11 "remap-coverage": "ts-node --project ./dev-scripts ./dev-scripts/remapCoverage.ts",
12   - "test-single": "webpack && karma start --single-run",
13   - "test": "concurrently \"webpack -w\" \"karma start\"",
  12 + "test-single": "karma start --single-run",
  13 + "test-and-coverage": "karma start & npm run remap-coverage",
  14 + "test": "webpack -w --test",
14 15 "postinstall": "npm install -g bower && bower install && typings install",
15 16 "start": "concurrently \"webpack -w\" \"gulp serve\"",
16 17 "generate-indexes": "ts-node --project ./dev-scripts ./dev-scripts/generate-index-modules.ts"
... ... @@ -66,6 +67,7 @@
66 67 "lodash": "~3.10.1",
67 68 "main-bower-files": "~2.9.0",
68 69 "ng-forward": "0.0.1-alpha.12",
  70 + "on-build-webpack": "^0.1.0",
69 71 "phantomjs": "~1.9.18",
70 72 "phantomjs-polyfill": "0.0.2",
71 73 "reflect-metadata": "^0.1.3",
... ...
webpack.config.js
... ... @@ -4,65 +4,102 @@ var argv = require("yargs").argv;
4 4 var path = require("path");
5 5 var glob = require("glob");
6 6  
  7 +var WebpackOnBuildPlugin = require('on-build-webpack');
  8 +
7 9 var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin");
8 10  
9 11 var extension = ".js";
10 12 if (argv.production) {
11   - extension = ".min.js"
  13 + extension = ".min.js"
12 14 }
13 15  
14 16 var testFiles = glob.sync("./src/**/*.[sS]pec.ts");
15 17  
16 18 var uglifyLoaderConfig = {
17   - // I want to uglify with mangling only app files, not thirdparty libs
18   - test: /\.js$/,
19   - exclude: /.spec.js/, // excluding .spec files
20   - loader: "uglify"
  19 + // I want to uglify with mangling only app files, not thirdparty libs
  20 + test: /\.js$/,
  21 + exclude: /.spec.js/, // excluding .spec files
  22 + loader: "uglify"
21 23 };
22 24  
23 25 var testingFiles = glob.sync("./src/app/**/*.[sS]pec.ts");
24 26  
25 27 var webpackConfig = {
26   - entry: {
27   - noosfero: './src/app/index.ts',
28   - 'noosfero-specs': './src/specs.ts'
29   - },
  28 + watchDelay: 300,
  29 + entry: {
  30 + noosfero: './src/app/index.ts',
  31 + 'noosfero-specs': './src/specs.ts'
  32 + },
30 33  
31   - plugins: [ new CommonsChunkPlugin("commons.js")],
  34 + plugins: [new CommonsChunkPlugin("commons.js")],
32 35  
33   - output: {
34   - path: path.join(__dirname, "src"),
35   - filename: "[name]" + extension,
36   - },
37   -
38   - /*plugins: [ new webpack.optimize.CommonsChunkPlugin("common.js") ],*/
  36 + output: {
  37 + path: path.join(__dirname, "src"),
  38 + filename: "[name]" + extension,
  39 + },
39 40  
40   - resolve: {
41   - // Add `.ts` and `.tsx` as a resolvable extension.
42   - extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
43   - },
44   - // Source maps support (or 'inline-source-map' also works)
45   - devtool: 'source-map',
46   -
47   - module: {
48   - loaders: [{
49   - test: /\.css$/,
50   - loader: "style!css"
51   - }, {
52   - test: /\.scss$/,
53   - loaders: ["style", "css?sourceMap", "sass?sourceMap"]
54   - }, {
55   - test: /.(png|woff(2)?|eot|ttf|svg)(\?[a-z0-9=\.]+)?$/,
56   - loader: 'url-loader?limit=100000'
57   - }, {
58   - test: /\.tsx?$/,
59   - loader: 'ts-loader'
60   - }]
61   - }
  41 + /*plugins: [ new webpack.optimize.CommonsChunkPlugin("common.js") ],*/
  42 +
  43 + resolve: {
  44 + // Add `.ts` and `.tsx` as a resolvable extension.
  45 + extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
  46 + },
  47 + // Source maps support (or 'inline-source-map' also works)
  48 + devtool: 'source-map',
  49 +
  50 + module: {
  51 + loaders: [{
  52 + test: /\.css$/,
  53 + loader: "style!css"
  54 + }, {
  55 + test: /\.scss$/,
  56 + loaders: ["style", "css?sourceMap", "sass?sourceMap"]
  57 + }, {
  58 + test: /.(png|woff(2)?|eot|ttf|svg)(\?[a-z0-9=\.]+)?$/,
  59 + loader: 'url-loader?limit=100000'
  60 + }, {
  61 + test: /\.tsx?$/,
  62 + loader: 'ts-loader'
  63 + }]
  64 + }
62 65 };
63 66  
64 67 if (argv.production) {
65   - webpackConfig.module.loaders.push(uglifyLoaderConfig);
  68 + webpackConfig.module.loaders.push(uglifyLoaderConfig);
  69 +}
  70 +
  71 +var testProcess = null;
  72 +var child_process = require("child_process");
  73 +var count = 0;
  74 +var stdinPatched = false;
  75 +if (argv.test) {
  76 + webpackConfig.plugins.push(
  77 + new WebpackOnBuildPlugin(function (stats) {
  78 + // webpack in watch mode call this twice for just one compilation
  79 + if (!stdinPatched) {
  80 + process.stdin.on('data', function (info) {
  81 + if (info == '\n') {
  82 + if (!testProcess) {
  83 + testProcess = child_process.spawn("npm", ["run", "coverage"], { stdio: 'inherit' });
  84 + testProcess.on('exit', function () { testProcess = null });
  85 + }
  86 + }
  87 + });
  88 + stdinPatched = true;
  89 + }
  90 +
  91 + // so, here we are checking if the process is still running before trigger another test execution
  92 + if (testProcess == null) {
  93 + console.log("Starting tests execution...");
  94 + testProcess = child_process.spawn("npm", ["run", "coverage"], { stdio: 'inherit' });
  95 +
  96 + testProcess.on('exit', function () { testProcess = null });
  97 + } else {
  98 + console.log("Test still running... Sorry webpack!! :)");
  99 + }
  100 +
  101 + })
  102 + );
66 103 }
67 104  
68 105 module.exports = webpackConfig;
... ...