@appzung/react-native-code-push 5.7.1 → 6.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +17 -19
- package/CodePush.js +7 -4
- package/CodePush.podspec +2 -2
- package/README.md +62 -19
- package/android/app/src/main/java/com/microsoft/codepush/react/CodePush.java +44 -7
- package/android/app/src/main/java/com/microsoft/codepush/react/CodePushInvalidPublicKeyException.java +0 -0
- package/android/app/src/main/java/com/microsoft/codepush/react/CodePushNativeModule.java +77 -22
- package/android/app/src/main/java/com/microsoft/codepush/react/FileUtils.java +15 -1
- package/android/codepush.gradle +1 -1
- package/docs/api-android.md +21 -3
- package/docs/api-js.md +3 -3
- package/docs/multi-deployment-testing-android.md +63 -22
- package/docs/multi-deployment-testing-ios.md +16 -10
- package/docs/setup-android.md +76 -17
- package/docs/setup-ios.md +55 -5
- package/ios/CodePush/Base64/Base64/MF_Base64Additions.m +0 -0
- package/ios/CodePush/CodePush.m +82 -17
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithm.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmFactory.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/Base/JWTAlgorithmNone.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/ESFamily/JWTAlgorithmESBase.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/HSFamily/JWTAlgorithmHSBase.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolder.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/Holders/JWTAlgorithmDataHolderChain.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTAlgorithmRSBase.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/JWTRSAlgorithm.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKey.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoKeyExtractor.m +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.h +0 -0
- package/ios/CodePush/JWT/Core/Algorithms/RSFamily/RSKeys/JWTCryptoSecurity.m +0 -0
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.h +0 -0
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaim.m +0 -0
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.h +0 -0
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSet.m +0 -0
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.h +0 -0
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetSerializer.m +0 -0
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.h +0 -0
- package/ios/CodePush/JWT/Core/ClaimSet/JWTClaimsSetVerifier.m +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.h +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+ResultTypes.m +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.h +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionOne.m +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.h +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionThree.m +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.h +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding+VersionTwo.m +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding.h +0 -0
- package/ios/CodePush/JWT/Core/Coding/JWTCoding.m +0 -0
- package/ios/CodePush/JWT/Core/FrameworkSupplement/JWT.h +0 -0
- package/ios/CodePush/JWT/Core/FrameworkSupplement/Map.modulemap +0 -0
- package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.h +0 -0
- package/ios/CodePush/JWT/Core/Supplement/JWTBase64Coder.m +0 -0
- package/ios/CodePush/JWT/Core/Supplement/JWTDeprecations.h +0 -0
- package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.h +0 -0
- package/ios/CodePush/JWT/Core/Supplement/JWTErrorDescription.m +0 -0
- package/ios/CodePush/SSZipArchive/Common.h +0 -0
- package/ios/CodePush/SSZipArchive/SSZipArchive.h +0 -0
- package/ios/CodePush/SSZipArchive/SSZipArchive.m +0 -0
- package/ios/CodePush/SSZipArchive/aes/aes.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/aes_via_ace.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/aescrypt.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/aeskey.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/aesopt.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/aestab.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/aestab.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/brg_endian.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/brg_types.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/entropy.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/entropy.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/fileenc.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/fileenc.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/hmac.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/hmac.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/prng.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/prng.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/pwd2key.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/pwd2key.h +0 -0
- package/ios/CodePush/SSZipArchive/aes/sha1.c +0 -0
- package/ios/CodePush/SSZipArchive/aes/sha1.h +0 -0
- package/ios/CodePush/SSZipArchive/minizip/crypt.h +0 -0
- package/ios/CodePush/SSZipArchive/minizip/ioapi.c +0 -0
- package/ios/CodePush/SSZipArchive/minizip/ioapi.h +0 -0
- package/ios/CodePush/SSZipArchive/minizip/mztools.c +0 -0
- package/ios/CodePush/SSZipArchive/minizip/mztools.h +0 -0
- package/ios/CodePush/SSZipArchive/minizip/unzip.c +0 -0
- package/ios/CodePush/SSZipArchive/minizip/unzip.h +0 -0
- package/ios/CodePush/SSZipArchive/minizip/zip.c +0 -0
- package/ios/CodePush/SSZipArchive/minizip/zip.h +0 -0
- package/package-mixins.js +2 -3
- package/package.json +36 -13
- package/react-native.config.js +10 -0
- package/request-fetch-adapter.js +1 -1
- package/scripts/generateBundledResourcesHash.js +1 -1
- package/scripts/postlink/android/postlink.js +2 -2
- package/scripts/postunlink/android/postunlink.js +3 -3
- package/scripts/tools/linkToolsAndroid.js +1 -1
- package/scripts/tools/linkToolsIos.js +2 -2
- package/tsconfig.json +14 -0
- package/tslint.json +32 -0
- package/typings/react-native-code-push.d.ts +14 -5
- package/RestartManager.js +0 -59
- package/gulpfile.js +0 -302
package/gulpfile.js
DELETED
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
var del = require("del");
|
|
2
|
-
var gulp = require("gulp");
|
|
3
|
-
var path = require("path");
|
|
4
|
-
var child_process = require("child_process");
|
|
5
|
-
var Q = require("q");
|
|
6
|
-
var runSequence = require("run-sequence");
|
|
7
|
-
|
|
8
|
-
var testPath = "./test";
|
|
9
|
-
var binPath = "./bin";
|
|
10
|
-
var tsFiles = "/**/*.ts";
|
|
11
|
-
|
|
12
|
-
var iOSSimulatorProcessName = "Simulator";
|
|
13
|
-
var emulatorReadyCheckDelay = 30 * 1000;
|
|
14
|
-
var emulatorMaxReadyAttempts = 5;
|
|
15
|
-
|
|
16
|
-
/* This message is appended to the compiled JS files to avoid contributions to the compiled sources.*/
|
|
17
|
-
var compiledSourceWarningMessage = "\n \
|
|
18
|
-
/******************************************************************************************** \n \
|
|
19
|
-
THIS FILE HAS BEEN COMPILED FROM TYPESCRIPT SOURCES. \n \
|
|
20
|
-
PLEASE DO NOT MODIFY THIS FILE AS YOU WILL LOSE YOUR CHANGES WHEN RECOMPILING. \n \
|
|
21
|
-
ALSO, PLEASE DO NOT SUBMIT PULL REQUESTS WITH CHANGES TO THIS FILE. \n \
|
|
22
|
-
INSTEAD, EDIT THE TYPESCRIPT SOURCES UNDER THE WWW FOLDER. \n \
|
|
23
|
-
FOR MORE INFORMATION, PLEASE SEE CONTRIBUTING.md. \n \
|
|
24
|
-
*********************************************************************************************/ \n\n\n";
|
|
25
|
-
|
|
26
|
-
/* TypeScript compilation parameters */
|
|
27
|
-
var tsCompileOptions = {
|
|
28
|
-
"noImplicitAny": true,
|
|
29
|
-
"noEmitOnError": true,
|
|
30
|
-
"target": "ES5",
|
|
31
|
-
"module": "commonjs",
|
|
32
|
-
"sourceMap": false,
|
|
33
|
-
"sortOutput": true,
|
|
34
|
-
"removeComments": true
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
function spawnCommand(command, args, callback, silent, detached) {
|
|
38
|
-
var options = { maxBuffer: 1024 * 1024 };
|
|
39
|
-
if (detached) {
|
|
40
|
-
options.detached = true;
|
|
41
|
-
options.stdio = ["ignore"];
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
var spawnProcess = child_process.spawn(command, args, options);
|
|
45
|
-
|
|
46
|
-
if (!silent) spawnProcess.stdout.pipe(process.stdout);
|
|
47
|
-
if (!silent) spawnProcess.stderr.pipe(process.stderr);
|
|
48
|
-
|
|
49
|
-
if (!detached) {
|
|
50
|
-
spawnProcess.on('exit', function (code) {
|
|
51
|
-
callback && callback(code === 0 ? undefined : "Error code: " + code);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
return spawnProcess;
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
function execCommand(command, args, callback, silent) {
|
|
59
|
-
var execProcess = child_process.exec(command + " " + args.join(" "), { maxBuffer: 1024 * 1024 });
|
|
60
|
-
|
|
61
|
-
if (!silent) execProcess.stdout.pipe(process.stdout);
|
|
62
|
-
if (!silent) execProcess.stderr.pipe(process.stderr);
|
|
63
|
-
|
|
64
|
-
execProcess.on('error', function (error) {
|
|
65
|
-
callback && callback(error);
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
execProcess.on('exit', function (code) {
|
|
69
|
-
callback && callback(code === 0 ? undefined : "Error code: " + code);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
return execProcess;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
function runTests(callback, options) {
|
|
76
|
-
var command = "mocha";
|
|
77
|
-
var args = ["./bin/test"];
|
|
78
|
-
|
|
79
|
-
// pass arguments supplied by test tasks
|
|
80
|
-
if (options.android) args.push("--android");
|
|
81
|
-
if (options.ios) args.push("--ios");
|
|
82
|
-
if (options.setup) args.push("--setup");
|
|
83
|
-
|
|
84
|
-
// pass arguments from command line
|
|
85
|
-
// the fourth argument is the first argument after the task name
|
|
86
|
-
for (var i = 3; i < process.argv.length; i++) {
|
|
87
|
-
if (process.argv[i] === "--report") {
|
|
88
|
-
// Set up the mocha junit reporter.
|
|
89
|
-
args.push("--reporter");
|
|
90
|
-
args.push("mocha-junit-reporter");
|
|
91
|
-
|
|
92
|
-
// Set the mocha reporter to the correct output file.
|
|
93
|
-
args.push("--reporter-options");
|
|
94
|
-
var filename = "./test-results.xml";
|
|
95
|
-
if (options.android && !options.ios) filename = "./test-android.xml";
|
|
96
|
-
else if (options.ios && !options.android) filename = "./test-ios.xml";
|
|
97
|
-
args.push("mochaFile=" + filename);
|
|
98
|
-
// Delete previous test result file so TFS doesn't read the old file if the tests exit before saving
|
|
99
|
-
del(filename);
|
|
100
|
-
} else args.push(process.argv[i]);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
execCommand(command, args, callback);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
gulp.task("compile", function (callback) {
|
|
107
|
-
runSequence("compile-test", callback);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
gulp.task("compile-test", function () {
|
|
111
|
-
var ts = require("gulp-typescript");
|
|
112
|
-
var insert = require("gulp-insert");
|
|
113
|
-
|
|
114
|
-
return gulp.src([testPath + tsFiles])
|
|
115
|
-
.pipe(ts(tsCompileOptions))
|
|
116
|
-
.pipe(insert.prepend(compiledSourceWarningMessage))
|
|
117
|
-
.pipe(gulp.dest(path.join(binPath, testPath)));
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
gulp.task("tslint", function () {
|
|
121
|
-
var tslint = require('gulp-tslint');
|
|
122
|
-
|
|
123
|
-
// Configuration options adapted from TypeScript project:
|
|
124
|
-
// https://github.com/Microsoft/TypeScript/blob/master/tslint.json
|
|
125
|
-
|
|
126
|
-
var config = {
|
|
127
|
-
"rules": {
|
|
128
|
-
"class-name": true,
|
|
129
|
-
"comment-format": [true,
|
|
130
|
-
"check-space"
|
|
131
|
-
],
|
|
132
|
-
"indent": [true,
|
|
133
|
-
"spaces"
|
|
134
|
-
],
|
|
135
|
-
"one-line": [true,
|
|
136
|
-
"check-open-brace"
|
|
137
|
-
],
|
|
138
|
-
"no-unreachable": true,
|
|
139
|
-
"no-unused-variable": true,
|
|
140
|
-
"no-use-before-declare": true,
|
|
141
|
-
"quotemark": [true,
|
|
142
|
-
"double"
|
|
143
|
-
],
|
|
144
|
-
"semicolon": true,
|
|
145
|
-
"whitespace": [true,
|
|
146
|
-
"check-branch",
|
|
147
|
-
"check-operator",
|
|
148
|
-
"check-separator",
|
|
149
|
-
"check-type"
|
|
150
|
-
],
|
|
151
|
-
"typedef-whitespace": [true, {
|
|
152
|
-
"call-signature": "nospace",
|
|
153
|
-
"index-signature": "nospace",
|
|
154
|
-
"parameter": "nospace",
|
|
155
|
-
"property-declaration": "nospace",
|
|
156
|
-
"variable-declaration": "nospace"
|
|
157
|
-
}]
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return gulp.src([testPath + tsFiles, "!" + testPath + "/typings/*"])
|
|
162
|
-
.pipe(tslint({ configuration: config }))
|
|
163
|
-
.pipe(tslint.report("verbose"));
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
gulp.task("clean", function () {
|
|
167
|
-
return del([binPath + "/**"], { force: true });
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
gulp.task("default", function (callback) {
|
|
171
|
-
runSequence("clean", "compile", "tslint", callback);
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
////////////////////////////////////////////////////////////////////////
|
|
175
|
-
// Test Tasks //////////////////////////////////////////////////////////
|
|
176
|
-
|
|
177
|
-
////////////////////////////////////////////////////////////////////////
|
|
178
|
-
// Standalone Tasks
|
|
179
|
-
//
|
|
180
|
-
// Run the tests without setting up the test projects.
|
|
181
|
-
// Don't run these without running a setup task first!
|
|
182
|
-
|
|
183
|
-
// Run on Android standalone
|
|
184
|
-
gulp.task("test-run-android", function (callback) {
|
|
185
|
-
var options = {
|
|
186
|
-
android: true
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
runTests(callback, options);
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
// Run on iOS standalone
|
|
193
|
-
gulp.task("test-run-ios", function (callback) {
|
|
194
|
-
var options = {
|
|
195
|
-
ios: true,
|
|
196
|
-
ui: true,
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
runTests(callback, options);
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
////////////////////////////////////////////////////////////////////////
|
|
203
|
-
// Setup Tasks
|
|
204
|
-
//
|
|
205
|
-
// Sets up the test project directories that the tests use and starts emulators.
|
|
206
|
-
// Must run before running a standalone suite of tests!
|
|
207
|
-
|
|
208
|
-
// Sets up the test projects and starts an Android emulator
|
|
209
|
-
gulp.task("test-setup-android", function (callback) {
|
|
210
|
-
var options = {
|
|
211
|
-
setup: true,
|
|
212
|
-
android: true
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
runTests(callback, options);
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
// Sets up the test projects and starts an iOS emulator
|
|
219
|
-
gulp.task("test-setup-ios", function (callback) {
|
|
220
|
-
var options = {
|
|
221
|
-
setup: true,
|
|
222
|
-
ios: true
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
runTests(callback, options);
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
// Sets up the test projects and starts both emulators
|
|
229
|
-
gulp.task("test-setup-both", function (callback) {
|
|
230
|
-
var options = {
|
|
231
|
-
setup: true,
|
|
232
|
-
android: true,
|
|
233
|
-
ios: true
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
runTests(callback, options);
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
// Builds, sets up test projects, and starts the Android emulator
|
|
240
|
-
gulp.task("test-setup-build-android", function (callback) {
|
|
241
|
-
runSequence("default", "test-setup-android", callback);
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
// Builds, sets up test projects, and starts the iOS emulator
|
|
245
|
-
gulp.task("test-setup-build-ios", function (callback) {
|
|
246
|
-
runSequence("default", "test-setup-ios", callback);
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
// Builds, sets up test projects, and starts both emulators
|
|
250
|
-
gulp.task("test-setup-build-both", function (callback) {
|
|
251
|
-
runSequence("default", "test-setup-both", callback);
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
////////////////////////////////////////////////////////////////////////
|
|
255
|
-
// Fast Test Tasks
|
|
256
|
-
//
|
|
257
|
-
// Runs tests but doesn't build or start emulators.
|
|
258
|
-
|
|
259
|
-
// Run on Android fast
|
|
260
|
-
gulp.task("test-android-fast", ["test-setup-android"], function (callback) {
|
|
261
|
-
runSequence("test-run-android", callback);
|
|
262
|
-
});
|
|
263
|
-
|
|
264
|
-
// Run on iOS fast
|
|
265
|
-
gulp.task("test-ios-fast", ["test-setup-ios"], function (callback) {
|
|
266
|
-
runSequence("test-run-ios", callback);
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
////////////////////////////////////////////////////////////////////////
|
|
270
|
-
// Fast Composition Test Tasks
|
|
271
|
-
//
|
|
272
|
-
// Run tests but doesn't build or start emulators.
|
|
273
|
-
|
|
274
|
-
// Run on iOS fast
|
|
275
|
-
gulp.task("test-fast", ["test-setup-both"], function (callback) {
|
|
276
|
-
runSequence("test-run-android", "test-run-ios", callback);
|
|
277
|
-
});
|
|
278
|
-
|
|
279
|
-
////////////////////////////////////////////////////////////////////////
|
|
280
|
-
// Test Tasks
|
|
281
|
-
//
|
|
282
|
-
// Run tests, build, and start emulators.
|
|
283
|
-
|
|
284
|
-
// Run on Android
|
|
285
|
-
gulp.task("test-android", ["test-setup-build-android"], function (callback) {
|
|
286
|
-
runSequence("test-run-android", callback);
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
// Run on iOS
|
|
290
|
-
gulp.task("test-ios", ["test-setup-build-ios"], function (callback) {
|
|
291
|
-
runSequence("test-run-ios", callback);
|
|
292
|
-
});
|
|
293
|
-
|
|
294
|
-
////////////////////////////////////////////////////////////////////////
|
|
295
|
-
// Composition Test Tasks
|
|
296
|
-
//
|
|
297
|
-
// Run tests, build, and start emulators.
|
|
298
|
-
|
|
299
|
-
// Run on Android and iOS
|
|
300
|
-
gulp.task("test", ["test-setup-build-both"], function (callback) {
|
|
301
|
-
runSequence("test-run-android", "test-run-ios", callback);
|
|
302
|
-
});
|