Skip to content

Commit 0537881

Browse files
committed
progress with pytest runner
1 parent cb64f91 commit 0537881

File tree

9 files changed

+126
-449
lines changed

9 files changed

+126
-449
lines changed

lib/create-runner.js

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1-
"use strict";
2-
var child = require('child_process');
3-
function createRunner(config, testFile) {
4-
return child.exec([
5-
'python -m pytest',
6-
'--cache-clear',
7-
'-x',
8-
'--tb=no',
9-
'--tap-stream',
10-
testFile
11-
].join(' '), function (error, stdout, stderr) {
12-
if (error !== null) {
13-
console.log("exec error: " + error);
14-
}
15-
});
16-
}
17-
Object.defineProperty(exports, "__esModule", { value: true });
18-
exports.default = createRunner;
1+
"use strict";
2+
var child = require('child_process');
3+
function createRunner(config, testFile) {
4+
var python = '/usr/local/bin/python';
5+
return child.exec([
6+
python,
7+
'-m pytest',
8+
'--tap-stream',
9+
'-x',
10+
'--tb=no',
11+
testFile
12+
].join(' '), function (error, stdout, stderr) {
13+
console.log("stdout: " + stdout);
14+
console.log("stderr: " + stderr);
15+
if (error !== null) {
16+
console.log("exec error: " + error);
17+
}
18+
});
19+
}
20+
Object.defineProperty(exports, "__esModule", { value: true });
21+
exports.default = createRunner;

lib/exists.js

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
"use strict";
2-
var fs = require('fs');
3-
function fileExists(path) {
4-
try {
5-
fs.accessSync(path, fs.F_OK);
6-
}
7-
catch (e) {
8-
if (e) {
9-
if (e.code !== 'ENOENT') {
10-
console.log(e);
11-
}
12-
return false;
13-
}
14-
}
15-
return true;
16-
}
17-
Object.defineProperty(exports, "__esModule", { value: true });
18-
exports.default = fileExists;
1+
"use strict";
2+
var fs = require('fs');
3+
function fileExists(path) {
4+
try {
5+
fs.accessSync(path, fs.F_OK);
6+
}
7+
catch (e) {
8+
if (e) {
9+
if (e.code !== 'ENOENT') {
10+
console.log(e);
11+
}
12+
return false;
13+
}
14+
}
15+
return true;
16+
}
17+
Object.defineProperty(exports, "__esModule", { value: true });
18+
exports.default = fileExists;

lib/parse-tap.js

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,48 @@
1-
"use strict";
2-
var isTap = /^# TAP/m;
3-
var finalTestNumber = /^1..([0-9+])$/m;
4-
var testError = /^# E\s+(.+)$/m;
5-
function formatFailureMessage(message) {
6-
return message.split('_').join(' ');
7-
}
8-
function parseTap(data) {
9-
if (!data.match(isTap)) {
10-
console.log('No TAP output');
11-
return;
12-
}
13-
if (!data.match(finalTestNumber)) {
14-
console.log('Could not parse final test number');
15-
return;
16-
}
17-
var finalTest = parseInt(data.match(finalTestNumber)[1], 10);
18-
var final = null;
19-
if (data.match(testError)) {
20-
var failingLineRegex = new RegExp("^not ok " + finalTest + " - (.+)$", 'm');
21-
var line = data.match(failingLineRegex)[1];
22-
var taskPosition = parseInt(line.match(/Test([0-9]+)/)[1], 10);
23-
var message = formatFailureMessage(line.match(/\.test_(.+)$/)[1]);
24-
if (!message) {
25-
console.log('Error with test. There is no valid test message');
26-
message = '';
27-
}
28-
final = {
29-
completed: false,
30-
msg: formatFailureMessage(message),
31-
taskPosition: taskPosition - 1,
32-
timedOut: false
33-
};
34-
}
35-
else {
36-
var finalPassRegex = new RegExp("^ok " + finalTest + " - (.+)$", 'm');
37-
var line = data.match(finalPassRegex)[1];
38-
var taskPosition = parseInt(line.match(/Test([0-9]+)/)[1], 10);
39-
final = {
40-
completed: true,
41-
msg: "Task " + taskPosition + " Complete",
42-
taskPosition: taskPosition
43-
};
44-
}
45-
return final;
46-
}
47-
Object.defineProperty(exports, "__esModule", { value: true });
48-
exports.default = parseTap;
1+
"use strict";
2+
var isTap = /^# TAP/m;
3+
var finalTestNumber = /^1..([0-9+])$/m;
4+
var testError = /^# E\s+(.+)$/m;
5+
function formatFailureMessage(message) {
6+
return message.split('_').join(' ');
7+
}
8+
function parseTap(data) {
9+
if (!data.match(isTap)) {
10+
console.log('No TAP output');
11+
return;
12+
}
13+
if (!data.match(finalTestNumber)) {
14+
console.log('Could not parse final test number');
15+
return;
16+
}
17+
var finalTest = parseInt(data.match(finalTestNumber)[1], 10);
18+
var final = null;
19+
if (data.match(testError)) {
20+
var failingLineRegex = new RegExp("^not ok " + finalTest + " - (.+)$", 'm');
21+
var line = data.match(failingLineRegex)[1];
22+
var taskPosition = parseInt(line.match(/Test([0-9]+)/)[1], 10);
23+
var message = formatFailureMessage(line.match(/\.test_(.+)$/)[1]);
24+
if (!message) {
25+
console.log('Error with test. There is no valid test message');
26+
message = '';
27+
}
28+
final = {
29+
completed: false,
30+
msg: formatFailureMessage(message),
31+
taskPosition: taskPosition - 1,
32+
timedOut: false
33+
};
34+
}
35+
else {
36+
var finalPassRegex = new RegExp("^ok " + finalTest + " - (.+)$", 'm');
37+
var line = data.match(finalPassRegex)[1];
38+
var taskPosition = parseInt(line.match(/Test([0-9]+)/)[1], 10);
39+
final = {
40+
completed: true,
41+
msg: "Task " + taskPosition + " Complete",
42+
taskPosition: taskPosition
43+
};
44+
}
45+
return final;
46+
}
47+
Object.defineProperty(exports, "__esModule", { value: true });
48+
exports.default = parseTap;

lib/runner.js

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
1-
"use strict";
2-
var create_runner_1 = require('./create-runner');
3-
var parse_tap_1 = require('./parse-tap');
4-
function runner(testFile, config, handleResult) {
5-
var runner = create_runner_1.default(config, testFile);
6-
var final = null;
7-
return new Promise(function (resolve, reject) {
8-
runner.stdout.on('data', function (data) {
9-
data = data.toString();
10-
final = parse_tap_1.default(data);
11-
final.change = final.taskPosition - config.taskPosition;
12-
final.pass = final.change > 0;
13-
handleResult(final);
14-
});
15-
runner.stderr.on('data', function (data) {
16-
console.log('test error', data.toString());
17-
});
18-
runner.on('close', function (code) {
19-
if (code === 0) {
20-
resolve(final);
21-
}
22-
else {
23-
resolve(final);
24-
}
25-
});
26-
});
27-
}
28-
Object.defineProperty(exports, "__esModule", { value: true });
29-
exports.default = runner;
1+
"use strict";
2+
var create_runner_1 = require('./create-runner');
3+
var parse_tap_1 = require('./parse-tap');
4+
function runner(testFile, config, handleResult) {
5+
var runner = create_runner_1.default(config, testFile);
6+
var final = null;
7+
return new Promise(function (resolve, reject) {
8+
runner.stdout.on('data', function (data) {
9+
data = data.toString();
10+
console.log('DATA', data);
11+
final = parse_tap_1.default(data);
12+
final.change = final.taskPosition - config.taskPosition;
13+
final.pass = final.change > 0;
14+
handleResult(final);
15+
});
16+
runner.stderr.on('data', function (data) {
17+
console.log('test error', data.toString());
18+
});
19+
runner.on('end', function (code) {
20+
if (code === 0) {
21+
resolve(final);
22+
}
23+
else {
24+
resolve(final);
25+
}
26+
});
27+
});
28+
}
29+
Object.defineProperty(exports, "__esModule", { value: true });
30+
exports.default = runner;

src/create-runner.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@ const child = require('child_process');
22

33
export default function createRunner(config: CR.Config, testFile: string) {
44

5+
let python = '/usr/local/bin/python';
6+
57
return child.exec([
6-
'python -m pytest',
7-
'--cache-clear',
8+
python,
9+
'-m pytest',
10+
'--tap-stream',
811
'-x', // stop after first failure
912
'--tb=no', // no traceback
10-
'--tap-stream',
1113
testFile
1214
].join(' '), (error, stdout, stderr) => {
13-
// console.log(`stdout: ${stdout}`);
14-
// console.log(`stderr: ${stderr}`);
15+
console.log(`stdout: ${stdout}`);
16+
console.log(`stderr: ${stderr}`);
1517
if (error !== null) {
1618
console.log(`exec error: ${error}`);
1719
}

src/runner.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default function runner(testFile: string, config: CR.Config,
1616
runner.stdout.on('data', function(data): void {
1717

1818
data = data.toString();
19-
// console.log('DATA', data);
19+
console.log('DATA', data);
2020

2121
// transform data;
2222
final = parseTap(data);
@@ -32,7 +32,7 @@ export default function runner(testFile: string, config: CR.Config,
3232
console.log('test error', data.toString());
3333
});
3434

35-
runner.on('close', function(code: number) {
35+
runner.on('end', function(code: number) {
3636
if (code === 0) {
3737
resolve(final);
3838
} else {

test/reports/fail-at-one.json

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)