forked from cryptpad/cryptpad
-
Notifications
You must be signed in to change notification settings - Fork 0
/
runtests.js
87 lines (78 loc) · 2.87 KB
/
runtests.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
// jshint esversion: 6, browser: false, node: true
// This file is for automated testing, it should probably not be invoked for any other purpose.
// It will:
// 1. npm install
// 2. bower install
// 3. launch the server
// 4. run the tests on the machine
const Spawn = require('child_process').spawn;
const processes = [];
const killAll = (cb) => {
processes.forEach((p) => { p.kill(); });
setTimeout(() => {
processes.forEach((p) => {
console.log("Process [" + p.command + "] did not end, using kill-9");
p.kill('SIGKILL');
});
cb();
}, 10);
};
const error = (msg) => {
killAll(() => {
throw new Error(msg);
});
};
const run = (cmd, args, cb) => {
const proc = Spawn(cmd, args);
processes.push(proc);
proc.procName = cmd + ' ' + args.join(' ');
console.log('>>' + proc.procName);
proc.stdout.on('data', (data) => { process.stdout.write(data); });
proc.stderr.on('data', (data) => { process.stderr.write(data); });
proc.on('close', (code) => {
const idx = processes.indexOf(proc);
if (idx === -1) {
error("process " + proc.procName + " disappeared from list");
return;
}
processes.splice(idx, 1);
if (code) {
error("Process [" + proc.procName + "] ended with " + code);
}
cb();
});
};
run('npm', ['install'], () => {
const nThen = require('nthen');
nThen((waitFor) => {
if (process.platform === 'darwin') {
run('bash', ['-c',
'ps -ef | grep -v grep | grep \'Google Chrome.app/Contents/MacOS/Google Chrome\'' +
' | awk \'{print $2}\' | while read x; do kill $x; done'
], waitFor());
run('bash', ['-c',
'ps -ef | grep -v grep | grep \'/usr/bin/safaridriver\'' +
' | awk \'{print $2}\' | while read x; do kill $x; done'
], waitFor());
run('bash', ['-c',
'ps -ef | grep -v grep | grep \'/Applications/Firefox.app/Contents/MacOS/firefox-bin\'' +
' | awk \'{print $2}\' | while read x; do kill $x; done'
], waitFor());
run('bash', ['-c',
'lsof | grep \'TCP .*:hbci (LISTEN)\'' +
' | awk \'{print $2}\' | while read x; do kill $x; done'
], waitFor());
run('bash', ['-c', 'rm -rf ./blob ./blobstage ./datastore'], waitFor());
run('bash', ['-c', 'caffeinate -u -t 2'], waitFor());
}
}).nThen((waitFor) => {
run('bower', ['install'], waitFor());
}).nThen((waitFor) => {
run('npm', ['run', 'fresh'], ()=>{});
run('node', ['./TestSelenium.js'], waitFor());
}).nThen((waitFor) => {
if (process.platform === 'darwin') {
run('bash', ['-c', 'pmset displaysleepnow'], waitFor());
}
}).nThen(killAll);
});