-
Notifications
You must be signed in to change notification settings - Fork 193
/
Gruntfile.js
123 lines (114 loc) · 3.23 KB
/
Gruntfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*jshint node: true */
"use strict";
module.exports = function(grunt) {
// https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
// A lot of the browsers seem to time out with Saucelab's unit testing
// framework. Here are the browsers that work that get enough coverage for our
// needs.
var browsers = [
{browserName: "chrome"},
{browserName: "firefox", platform: "Linux"},
{browserName: "internet explorer"}
];
var tags = [];
if (process.env.TRAVIS_PULL_REQUEST && process.env.TRAVIS_PULL_REQUEST != "false") {
tags.push("pr" + process.env.TRAVIS_PULL_REQUEST);
} else if (process.env.TRAVIS_BRANCH) {
tags.push(process.env.TRAVIS_BRANCH);
}
var postBundleWithLicense = function(err, src, done) {
if (!err) {
// add the license
var license = require('fs').readFileSync('lib/license_header.js');
done(err, license + src);
} else {
done(err);
}
};
grunt.initConfig({
connect: {
server: {
options: {
base: "",
port: 8080
}
}
},
'saucelabs-qunit': {
all: {
options: {
urls: ["http://127.0.0.1:8080/test/index.html?hidepassed"],
build: process.env.TRAVIS_JOB_ID,
testname: "qunit tests",
tags: tags,
// Tests have statusCheckAttempts * pollInterval seconds to complete
pollInterval: 2000,
statusCheckAttempts: 15,
"max-duration": 30,
browsers: browsers,
maxRetries: 2
}
}
},
jshint: {
options: {
jshintrc: "./.jshintrc"
},
all: ['./lib/*.js', "Gruntfile.js"]
},
browserify: {
"utils": {
files: {
'dist/jszip-utils.js': ['lib/index.js']
},
options: {
standalone: 'JSZipUtils',
postBundleCB: postBundleWithLicense
}
},
"utils-ie": {
files: {
'dist/jszip-utils-ie.js': ['lib/index_IE.js']
},
options: {
postBundleCB: postBundleWithLicense
}
}
},
uglify: {
options: {
report: 'gzip',
mangle: true,
output: {
comments: /^!/
}
},
"jszip-utils": {
src: 'dist/jszip-utils.js',
dest: 'dist/jszip-utils.min.js'
},
"jszip-utils-ie": {
src: 'dist/jszip-utils-ie.js',
dest: 'dist/jszip-utils-ie.min.js'
}
}
});
grunt.loadNpmTasks("grunt-saucelabs");
grunt.loadNpmTasks("grunt-contrib-connect");
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');
// A task to cause Grunt to sit and wait, keeping the test server running
grunt.registerTask("wait", function() {
this.async();
});
grunt.registerTask("test-local", ["build", "connect", "wait"]);
grunt.registerTask("test-remote", ["build", "connect", "saucelabs-qunit"]);
if (process.env.SAUCE_USERNAME && process.env.SAUCE_ACCESS_KEY) {
grunt.registerTask("test", ["jshint", "test-remote"]);
} else {
grunt.registerTask("test", ["jshint", "test-local"]);
}
grunt.registerTask("build", ["browserify", "uglify"]);
grunt.registerTask("default", ["jshint", "build"]);
};