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
@@ -6,7 +6,9 @@ var conf = require('./gulp/conf'); @@ -6,7 +6,9 @@ var conf = require('./gulp/conf');
6 6
7 var argv = require("yargs").argv; 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 if (argv.singleRun) { 13 if (argv.singleRun) {
12 singleRun = true; 14 singleRun = true;
@@ -32,17 +34,15 @@ var karmaPlugins = [ @@ -32,17 +34,15 @@ var karmaPlugins = [
32 34
33 var karmaReporters = ['spec']; 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 karmaReporters.push('coverage'); 41 karmaReporters.push('coverage');
43 } 42 }
44 43
45 44
  45 +
46 var _ = require('lodash'); 46 var _ = require('lodash');
47 var wiredep = require('wiredep'); 47 var wiredep = require('wiredep');
48 48
@@ -124,7 +124,7 @@ module.exports = function (config) { @@ -124,7 +124,7 @@ module.exports = function (config) {
124 }; 124 };
125 125
126 126
127 - if (argv.coverage) { 127 + if (coverage) {
128 128
129 /*configuration.webpack = { 129 /*configuration.webpack = {
130 module: { 130 module: {
@@ -7,10 +7,11 @@ @@ -7,10 +7,11 @@
7 "moment": "^2.11.2" 7 "moment": "^2.11.2"
8 }, 8 },
9 "scripts": { 9 "scripts": {
10 - "coverage": "karma start --coverage & npm run remap-coverage", 10 + "coverage": "karma start --single-run & npm run remap-coverage",
11 "remap-coverage": "ts-node --project ./dev-scripts ./dev-scripts/remapCoverage.ts", 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 "postinstall": "npm install -g bower && bower install && typings install", 15 "postinstall": "npm install -g bower && bower install && typings install",
15 "start": "concurrently \"webpack -w\" \"gulp serve\"", 16 "start": "concurrently \"webpack -w\" \"gulp serve\"",
16 "generate-indexes": "ts-node --project ./dev-scripts ./dev-scripts/generate-index-modules.ts" 17 "generate-indexes": "ts-node --project ./dev-scripts ./dev-scripts/generate-index-modules.ts"
@@ -66,6 +67,7 @@ @@ -66,6 +67,7 @@
66 "lodash": "~3.10.1", 67 "lodash": "~3.10.1",
67 "main-bower-files": "~2.9.0", 68 "main-bower-files": "~2.9.0",
68 "ng-forward": "0.0.1-alpha.12", 69 "ng-forward": "0.0.1-alpha.12",
  70 + "on-build-webpack": "^0.1.0",
69 "phantomjs": "~1.9.18", 71 "phantomjs": "~1.9.18",
70 "phantomjs-polyfill": "0.0.2", 72 "phantomjs-polyfill": "0.0.2",
71 "reflect-metadata": "^0.1.3", 73 "reflect-metadata": "^0.1.3",
webpack.config.js
@@ -4,65 +4,102 @@ var argv = require("yargs").argv; @@ -4,65 +4,102 @@ var argv = require("yargs").argv;
4 var path = require("path"); 4 var path = require("path");
5 var glob = require("glob"); 5 var glob = require("glob");
6 6
  7 +var WebpackOnBuildPlugin = require('on-build-webpack');
  8 +
7 var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin"); 9 var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin");
8 10
9 var extension = ".js"; 11 var extension = ".js";
10 if (argv.production) { 12 if (argv.production) {
11 - extension = ".min.js" 13 + extension = ".min.js"
12 } 14 }
13 15
14 var testFiles = glob.sync("./src/**/*.[sS]pec.ts"); 16 var testFiles = glob.sync("./src/**/*.[sS]pec.ts");
15 17
16 var uglifyLoaderConfig = { 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 var testingFiles = glob.sync("./src/app/**/*.[sS]pec.ts"); 25 var testingFiles = glob.sync("./src/app/**/*.[sS]pec.ts");
24 26
25 var webpackConfig = { 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 if (argv.production) { 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 module.exports = webpackConfig; 105 module.exports = webpackConfig;