Commit babe9d57a4b2c8a2936f458e08e6c829813fd5e8
1 parent
fa922ca9
Exists in
master
and in
1 other branch
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,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: { |
package.json
@@ -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; |