respond-framework
Version:
create as fast you think
115 lines (113 loc) • 2.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var fs = require("fs");
var path = require("path");
var _child_process = require("child_process");
var _findTests = require("./helpers/findTests.js");
var _writeTestFile = require("./helpers/writeTestFile.js");
var _openFile = require("./helpers/openFile.js");
var _fetch = require("../../../../helpers/fetch.js");
var _default = exports.default = {
call(req, context) {
this.body = req.body;
this.req = req;
this.context = context;
const {
method,
args
} = req.body;
return this[method](...(0, _fetch.argsOut)(args));
},
findTests(params) {
try {
const tests = (0, _findTests.default)(params);
return {
tests
};
} catch (e) {
console.error(e);
return {
error: 'invalid-test-file',
params: {
reason: e.message
}
};
}
},
writeTestFile({
name,
branch = '',
settings,
events
}) {
const filename = (0, _writeTestFile.default)(name, branch, settings, events);
(0, _openFile.default)(filename);
return {
filename,
success: true
};
},
deleteTestFile(filename) {
fs.rmSync(path.resolve(filename));
return {
filename,
success: true
};
},
openFile(filename) {
(0, _openFile.default)(filename);
return {
success: true
};
},
runTestInTerminal(filename) {
const dir = path.resolve();
const command = `osascript -e 'tell app "Terminal" to do script "cd ${dir} && npm test ${filename}"'`;
const isMac = process.platform === 'darwin';
if (!isMac) {
const error = `Currently test Terminals can only be run on Mac. If you would like this feature on your OS, please provide a PR with the equivalent of this Mac command: ${command}`;
console.error(error);
return {
success: false,
error
};
}
(0, _child_process.execSync)(command);
return {
success: true
};
},
// Wallaby Extension
getWallabyChromeExtensionCode() {
const filename = path.resolve('respond/wallaby/extension.js');
const extension = fs.readFileSync(filename, 'utf-8');
return {
extension
};
},
openEventsFile({
namespace
}) {
(0, _openFile.default)('events/' + namespace + '.js');
return {
success: true
};
},
runTest({
filename,
index,
delay
}) {
const projectDir = path.resolve();
const completeFilename = projectDir + '/' + filename;
const test = (0, _findTests.findTest)(completeFilename);
this.context.io.sockets.emit('wallaby', {
test,
index,
delay
});
}
};