Skip to content

Commit 86b1abc

Browse files
committed
add a task to test a full build
1 parent 78205b5 commit 86b1abc

31 files changed

+3659
-3
lines changed

.travis.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ language: node_js
22
node_js: '0.10'
33
before_script:
44
- npm install -g grunt-cli
5-
script:
5+
- npm install -g bower
6+
script:
67
- grunt jshint:all
7-
- grunt intern:local
8+
- grunt intern:local
9+
- grunt fullTest

Gruntfile.js

+50-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ module.exports = function (grunt) {
77
"tasks/**/*.js",
88
"sample/*.js",
99
"tests/**/*.js",
10-
"!**/*_min.js"
10+
"!**/*_min.js",
11+
"!tests/app/**/*"
1112
];
1213

1314
// Project configuration.
@@ -52,6 +53,54 @@ module.exports = function (grunt) {
5253
}
5354
});
5455

56+
grunt.registerTask("fullTest", function () {
57+
var done = this.async();
58+
59+
function npmInstall(error, bowerResults) {
60+
if (error !== null) {
61+
grunt.log.writeln(bowerResults.stdout);
62+
done(error);
63+
return;
64+
}
65+
grunt.util.spawn({cmd: "npm", args: ["install"], opts: {cwd: "tests/app/src"}}, startBuild);
66+
}
67+
68+
function startBuild(error, npmResults) {
69+
if (error !== null) {
70+
grunt.log.writeln(npmResults.stdout);
71+
done(error);
72+
return;
73+
}
74+
grunt.util.spawn({cmd: "grunt", args: ["build"], opts: {cwd: "tests/app/src"}}, checkBuild);
75+
}
76+
77+
function checkBuild(error, buildResult) {
78+
var expected = grunt.file.expand({filter: "isFile"}, ["tests/app/expected/**/*"]).sort();
79+
var results = grunt.file.expand({filter: "isFile"}, ["tests/app/results/**/*"]).sort();
80+
81+
if (error !== null) {
82+
grunt.log.writeln(buildResult.stdout);
83+
done(error);
84+
return;
85+
}
86+
87+
var testResult = expected.every(function (value, index) {
88+
var test = (grunt.file.read(value) === grunt.file.read(results[index]));
89+
if (!test) {
90+
grunt.log.writeln(JSON.stringify(expected, null, "\t"));
91+
grunt.log.writeln(JSON.stringify(results, null, "\t"));
92+
grunt.log.writeln("");
93+
grunt.log.writeln(results[index] + " is different of " + value);
94+
}
95+
return test;
96+
});
97+
98+
done(testResult);
99+
}
100+
101+
grunt.util.spawn({cmd: "bower", args: ["install"], opts: {cwd: "tests/app/src"}}, npmInstall);
102+
});
103+
55104
// These plugins provide necessary tasks.
56105
grunt.loadNpmTasks("grunt-contrib-jshint");
57106
grunt.loadNpmTasks("grunt-jsbeautifier");

tests/app/expected/buildReport.json

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"myapp/src": {
3+
"../bar-mapped": true,
4+
"dojo/Deferred": true,
5+
"dojo/_base/config": true,
6+
"dojo/_base/kernel": true,
7+
"dojo/_base/lang": true,
8+
"dojo/errors/CancelError": true,
9+
"dojo/errors/create": true,
10+
"dojo/has": true,
11+
"dojo/promise/Promise": true,
12+
"dojo/sniff": true,
13+
"myapp/src": true,
14+
"mypackage/bar": true,
15+
"mypackage/foo": true,
16+
"requirejs-dplugins/css": true,
17+
"requirejs-dplugins/has": true,
18+
"requirejs-dplugins/i18n": true,
19+
"requirejs-dplugins/i18n!myapp/nls/en/bundleB": true,
20+
"requirejs-dplugins/i18n/build": true,
21+
"requirejs-dplugins/i18n/common": true,
22+
"requirejs-dplugins/i18n/parentLocale": true,
23+
"requirejs-text/text": true,
24+
"requirejs-text/text!myapp/msg.txt": true
25+
}
26+
}
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
body{font-size:210%}#main{margin:1em}#main::after{content:"7. css/src.css is loaded."}

tests/app/expected/myapp/msg.txt.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
define('requirejs-text/text!myapp/msg.txt',[],function () { return '4. A text file';});

tests/app/expected/myapp/nls/src_fr-fr.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/app/expected/myapp/nls/src_fr.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/app/expected/myapp/nls/src_root.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)