Skip to content

Commit ae7ff69

Browse files
committed
Merge branch 'master' into trevj-cloud-deploy
2 parents 5e2bf6e + 8cc65a2 commit ae7ff69

File tree

9 files changed

+527
-570
lines changed

9 files changed

+527
-570
lines changed

Gruntfile.coffee

Lines changed: 430 additions & 566 deletions
Large diffs are not rendered by default.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"grunt-vulcanize": "^0.6.0",
5757
"ipaddr.js": "^1.0.4",
5858
"jasmine-core": "^2.3.4",
59+
"lodash": "^3.10.1",
5960
"request": "^2.53.0",
6061
"socks5-http-client": "^1.0.2",
6162
"ssh2": "0.4.12",

src/bridge/onetime.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
/// <reference path='../../../third_party/typings/es6-promise/es6-promise.d.ts' />
22
/// <reference path='../../../third_party/typings/jasmine/jasmine.d.ts' />
33

4+
import freedomMocker = require('../freedom/mocks/mock-freedom-in-module-env');
5+
import mockFreedomRtcPeerConnection = require('../freedom/mocks/mock-rtcpeerconnection');
6+
freedom = freedomMocker.makeMockFreedomInModuleEnv();
47
import onetime = require('./onetime');
58

69
interface Clown {

src/build-tools/common-grunt-rules.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
/// <reference path='../../../third_party/typings/node/node.d.ts' />
44

5+
import fs = require('fs');
56
import path = require('path');
67

78
export interface RuleConfig {
@@ -95,6 +96,21 @@ export class Rule {
9596
}
9697
}
9798

99+
public jasmineSingleSpec(file :string) :JasmineRule {
100+
return {
101+
src: [
102+
require.resolve('arraybuffer-slice'),
103+
require.resolve('es6-promise'),
104+
path.join(this.config.thirdPartyBuildPath, 'promise-polyfill.js'),
105+
],
106+
options: {
107+
specs: [ path.join(this.config.devBuildPath, file + '.spec.static.js') ],
108+
outfile: path.join(this.config.devBuildPath, file, '/SpecRunner.html'),
109+
keepRunner: true
110+
}
111+
}
112+
}
113+
98114
// Grunt browserify target creator
99115
public browserify(filepath:string, options = {
100116
browserifyOptions: { standalone: 'browserified_exports' }
@@ -215,4 +231,65 @@ export class Rule {
215231
return { files: allFilesForlibPaths.concat(copyInfo.files) };
216232
}
217233

234+
public buildAndRunTest(test :string, gruntConfig :{[c :string] :{[t :string] :Object}},
235+
coverage?:boolean) :string[] {
236+
var name = test + 'Spec';
237+
var browserifyRule = this.browserifySpec(test);
238+
var jasmineRule = this.jasmineSingleSpec(test);
239+
240+
if (coverage) {
241+
name += 'Cov';
242+
browserifyRule = this.addCoverageToBrowserify(browserifyRule);
243+
jasmineRule = this.addCoverageToSpec(jasmineRule);
244+
}
245+
246+
gruntConfig['browserify'][name] = browserifyRule;
247+
gruntConfig['jasmine'][name] = jasmineRule;
248+
249+
return [
250+
'browserify:' + name,
251+
'jasmine:' + name,
252+
];
253+
}
254+
255+
/*
256+
* Returns a list of tests that exist within the directory structure of a
257+
* project.
258+
*
259+
* rootDir is the directory under which the layout will match what this file
260+
* expects for paths being passed in (i.e. under devBuildPath)
261+
*
262+
* getTests('src');
263+
* Lists all tests under the src/ directory
264+
* getTests('src', 'generic_ui/scripts');
265+
* Lists all tests under the generic_ui/scripts directory, all paths
266+
* relative to src/
267+
* getTests('src', undefined, ['integration-tests']);
268+
* Lists all the tests under src/ ignoring anything named integration-tests
269+
*/
270+
public getTests(rootDir :string, current :string = '', ignore :string[] = []) {
271+
var tests :string[] = [];
272+
273+
var files = fs.readdirSync(path.join(rootDir, current));
274+
for (var f in files) {
275+
if (ignore.indexOf(files[f]) !== -1) {
276+
continue;
277+
}
278+
279+
var file = path.join(current, files[f]);
280+
281+
var stats = fs.statSync(path.join(rootDir, file));
282+
if (stats.isDirectory()) {
283+
tests = tests.concat(this.getTests(rootDir, file, ignore));
284+
} else {
285+
var match = /(.+)\.spec\.ts/.exec(file);
286+
if (match) {
287+
tests.push(match[1]);
288+
}
289+
}
290+
}
291+
292+
return tests;
293+
}
294+
218295
} // class Rule

src/nat/probe.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import logging = require('../logging/logging');
88
// We keep this running on Amazon EC2 and the source
99
// may be found here:
1010
// https://github.com/uProxy/uproxy-probe/blob/master/python-src/probe-server.py
11-
var TEST_SERVER = '54.68.73.184';
11+
var TEST_SERVER = '52.34.126.245';
1212
var TEST_PORT = 6666;
1313

1414
var log :logging.Log = new logging.Log('probe');

src/transformers/arithmetic.spec.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
/// <reference path='../../../third_party/typings/es6-promise/es6-promise.d.ts' />
22
/// <reference path='../../../third_party/typings/jasmine/jasmine.d.ts' />
33

4+
import freedomMocker = require('../freedom/mocks/mock-freedom-in-module-env');
5+
freedom = freedomMocker.makeMockFreedomInModuleEnv();
6+
47
import arithmetic = require('./arithmetic');
58
import arraybuffers = require('../arraybuffers/arraybuffers');
69
import decompression = require('./decompressionShaper');
@@ -28,7 +31,7 @@ describe('Arithmetic coding and decoding - short inputs', function() {
2831
it('decoding short input', function() {
2932
let encoded = arraybuffers.hexStringToArrayBuffer("ca.0.1.2.3.0.0.0.8");
3033
let target = arraybuffers.hexStringToArrayBuffer("0.1.2.3");
31-
let result = decoder.decode(encoded);
34+
let result = decoder.decode(encoded).slice(0, -2);
3235
expect(arraybuffers.byteEquality(result, target)).toBe(true);
3336
});
3437
});
@@ -52,7 +55,7 @@ describe('Arithmetic coding and decoding - long inputs', function() {
5255
it('decoding long input', function() {
5356
let encoded = arraybuffers.hexStringToArrayBuffer("ca.0.1.0.5c.21.12.a4.42.48.4e.43.6a.4e.47.54.66.37.31.45.42.0.6.0.21.34.47.4a.39.65.49.69.4d.75.59.55.35.43.38.49.6a.3a.69.7a.72.51.34.77.72.57.66.70.31.6b.57.66.44.64.0.0.0.80.29.0.8.9a.85.cd.95.50.c8.ee.a.0.24.0.4.6e.7e.1e.ff.0.8.0.14.3.45.95.42.22.f0.da.66.3e.8e.b8.cc.79.a1.f7.ba.1.f.d5.0.80.28.0.4.e2.28.43.3.0.0.0.74");
5457
let target = arraybuffers.hexStringToArrayBuffer("0.1.0.5c.21.12.a4.42.48.4e.43.6a.4e.47.54.66.37.31.45.42.0.6.0.21.34.47.4a.39.65.49.69.4d.75.59.55.35.43.38.49.6a.3a.69.7a.72.51.34.77.72.57.66.70.31.6b.57.66.44.64.0.0.0.80.29.0.8.9a.85.cd.95.50.c8.ee.a.0.24.0.4.6e.7e.1e.ff.0.8.0.14.3.45.95.42.22.f0.da.66.3e.8e.b8.cc.79.a1.f7.ba.1.f.d5.0.80.28.0.4.e2.28.43.3");
55-
let decoded = decoder.decode(encoded);
58+
let decoded = decoder.decode(encoded).slice(0, -2);
5659
expect(arraybuffers.byteEquality(decoded, target)).toBe(true);
5760
});
5861
})

src/transformers/caesar.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
/// <reference path='../../../third_party/typings/es6-promise/es6-promise.d.ts' />
22
/// <reference path='../../../third_party/typings/jasmine/jasmine.d.ts' />
33

4+
import freedomMocker = require('../freedom/mocks/mock-freedom-in-module-env');
5+
freedom = freedomMocker.makeMockFreedomInModuleEnv();
6+
47
import caesar = require('./caesar');
58

69
describe("caesar cipher", function() {

src/turn/frontend.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/// <reference path='../../../third_party/typings/es6-promise/es6-promise.d.ts' />
22
/// <reference path='../../../third_party/typings/jasmine/jasmine.d.ts' />
33

4+
import freedomMocker = require('../freedom/mocks/mock-freedom-in-module-env');
5+
freedom = freedomMocker.makeMockFreedomInModuleEnv({
6+
'core.udpsocket': (() => { /* MT */ }), // this only needs to be defined for test to work
7+
});
8+
49
import turn_frontend = require('./frontend');
510
import messages = require('./messages');
611
import net = require('../net/net.types');

src/webrtc/peerconnection.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import RTCPeerConnection = freedom.RTCPeerConnection.RTCPeerConnection;
1010
import RTCDataChannelInit = freedom.RTCPeerConnection.RTCDataChannelInit;
1111

1212
import freedomMocker = require('../freedom/mocks/mock-freedom-in-module-env');
13+
freedom = freedomMocker.makeMockFreedomInModuleEnv();
1314

1415
import signals = require('./signals');
1516
import peerconnection = require('./peerconnection');
@@ -45,7 +46,7 @@ describe('PeerConnection', function() {
4546

4647
// Mock synchronously emit onmessage immediately after ondatachannel.
4748
mockRtcDataChannel.handleEvent('onmessage', {text: 'foo'});
48-
49+
4950
pc.peerOpenedChannelQueue.setSyncNextHandler((dc:datachannel.DataChannel) => {
5051
dc.dataFromPeerQueue.setSyncNextHandler((data:datachannel.Data) => {
5152
expect(data.str).toEqual('foo');

0 commit comments

Comments
 (0)