-
-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #87 from pulsar-edit/remove-request
Remove `request` Migrate to `superagent` && Fix CI
- Loading branch information
Showing
16 changed files
with
742 additions
and
71 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,279 @@ | ||
var util, | ||
Path= require('path'), | ||
fs = require('fs'); | ||
|
||
var jasmine = require('jasmine-node/lib/jasmine-node/index'); | ||
|
||
process.on("uncaughtException", (err) => { | ||
// Where does our logs go? I can't seem to output in any sane way at all for this | ||
fs.writeFileSync(`${__dirname}/log.txt`, JSON.stringify(err) + "\n", { encoding: "utf8", flag: "a+"}); | ||
fs.writeFileSync(`${__dirname}/log.txt`, JSON.stringify(err.stack) + "\n", { encoding: "utf8", flag: "a+"}); | ||
}); | ||
|
||
|
||
try { | ||
util = require('util') | ||
} catch(e) { | ||
util = require('sys') | ||
} | ||
|
||
var helperCollection = require('jasmine-node/lib/jasmine-node/spec-collection'); | ||
|
||
var specFolders = []; | ||
var watchFolders = []; | ||
|
||
// The following line keeps the jasmine setTimeout in the proper scope | ||
jasmine.setTimeout = jasmine.getGlobal().setTimeout; | ||
jasmine.setInterval = jasmine.getGlobal().setInterval; | ||
for (var key in jasmine) | ||
global[key] = jasmine[key]; | ||
|
||
var isVerbose = false; | ||
var showColors = true; | ||
var teamcity = process.env.TEAMCITY_PROJECT_NAME || false; | ||
var useRequireJs = false; | ||
var extentions = "js"; | ||
var match = '.'; | ||
var matchall = false; | ||
var autotest = false; | ||
var useHelpers = true; | ||
var forceExit = false; | ||
var captureExceptions = false; | ||
var includeStackTrace = true; | ||
|
||
var junitreport = { | ||
report: false, | ||
savePath : "./reports/", | ||
useDotNotation: true, | ||
consolidate: true | ||
} | ||
|
||
var args = process.argv.slice(2); | ||
var existsSync = fs.existsSync || Path.existsSync; | ||
|
||
while(args.length) { | ||
var arg = args.shift(); | ||
|
||
switch(arg) | ||
{ | ||
case '--version': | ||
printVersion(); | ||
case '--color': | ||
showColors = true; | ||
break; | ||
case '--noColor': | ||
case '--nocolor': | ||
showColors = false; | ||
break; | ||
case '--verbose': | ||
isVerbose = true; | ||
break; | ||
case '--coffee': | ||
require('coffee-script'); | ||
extentions = "js|coffee|litcoffee"; | ||
break; | ||
case '-m': | ||
case '--match': | ||
match = args.shift(); | ||
break; | ||
case '--matchall': | ||
matchall = true; | ||
break; | ||
case '--junitreport': | ||
junitreport.report = true; | ||
break; | ||
case '--output': | ||
junitreport.savePath = args.shift(); | ||
break; | ||
case '--teamcity': | ||
teamcity = true; | ||
break; | ||
case '--requireJsSetup': | ||
var setup = args.shift(); | ||
|
||
if(!existsSync(setup)) | ||
throw new Error("RequireJS setup '" + setup + "' doesn't exist!"); | ||
|
||
useRequireJs = setup; | ||
break; | ||
case '--runWithRequireJs': | ||
useRequireJs = useRequireJs || true; | ||
break; | ||
case '--nohelpers': | ||
useHelpers = false; | ||
break; | ||
case '--test-dir': | ||
var dir = args.shift(); | ||
|
||
if(!existsSync(dir)) | ||
throw new Error("Test root path '" + dir + "' doesn't exist!"); | ||
|
||
specFolders.push(dir); // NOTE: Does not look from current working directory. | ||
break; | ||
case '--autotest': | ||
autotest = true; | ||
break; | ||
case '--watch': | ||
var nextWatchDir; | ||
|
||
// Add the following arguments, until we see another argument starting with '-' | ||
while (args[0] && args[0][0] !== '-') { | ||
nextWatchDir = args.shift(); | ||
watchFolders.push(nextWatchDir); | ||
|
||
if (!existsSync(nextWatchDir)) | ||
throw new Error("Watch path '" + watchDir + "' doesn't exist!"); | ||
} | ||
break; | ||
|
||
case '--forceexit': | ||
forceExit = true; | ||
break; | ||
case '--captureExceptions': | ||
captureExceptions = true; | ||
break; | ||
case '--noStack': | ||
includeStackTrace = false; | ||
break; | ||
case '--config': | ||
var configKey = args.shift(); | ||
var configValue = args.shift(); | ||
process.env[configKey]=configValue; | ||
break; | ||
case '-h': | ||
help(); | ||
default: | ||
if (arg.match(/^--params=.*/)) { | ||
break; | ||
} | ||
if (arg.match(/^--/)) help(); | ||
if (arg.match(/^\/.*/)) { | ||
specFolders.push(arg); | ||
} else { | ||
specFolders.push(Path.join(process.cwd(), arg)); | ||
} | ||
break; | ||
} | ||
} | ||
|
||
if (specFolders.length === 0) { | ||
help(); | ||
} else { | ||
// Check to see if all our files exist | ||
for (var idx = 0; idx < specFolders.length; idx++) { | ||
if (!existsSync(specFolders[idx])) { | ||
console.log("File: " + specFolders[idx] + " is missing."); | ||
return; | ||
} | ||
} | ||
} | ||
|
||
if (autotest) { | ||
|
||
var patterns = ['**/*.js']; | ||
|
||
if (extentions.indexOf("coffee") !== -1) { | ||
patterns.push('**/*.coffee'); | ||
} | ||
|
||
require('jasmine-node/lib/jasmine-node/autotest').start(specFolders, watchFolders, patterns); | ||
|
||
return; | ||
} | ||
|
||
var exitCode = 0; | ||
|
||
if (captureExceptions) { | ||
process.on('uncaughtException', function(e) { | ||
console.error(e.stack || e); | ||
exitCode = 1; | ||
process.exit(exitCode); | ||
}); | ||
} | ||
|
||
process.on("exit", onExit); | ||
|
||
function onExit() { | ||
process.removeListener("exit", onExit); | ||
process.exit(exitCode); | ||
} | ||
|
||
var onComplete = function(runner, log) { | ||
process.stdout.write('\n'); | ||
if (runner.results().failedCount == 0) { | ||
exitCode = 0; | ||
} else { | ||
exitCode = 1; | ||
} | ||
if (forceExit) { | ||
process.exit(exitCode); | ||
} | ||
}; | ||
|
||
if(useHelpers){ | ||
specFolders.forEach(function(path){ | ||
jasmine.loadHelpersInFolder(path, | ||
new RegExp("helpers?\\.(" + extentions + ")$", 'i')); | ||
|
||
}) | ||
} | ||
|
||
try { | ||
var regExpSpec = new RegExp(match + (matchall ? "" : "spec\\.") + "(" + extentions + ")$", 'i') | ||
} catch (error) { | ||
console.error("Failed to build spec-matching regex: " + error); | ||
process.exit(2); | ||
} | ||
|
||
|
||
var options = { | ||
specFolders: specFolders, | ||
onComplete: onComplete, | ||
isVerbose: isVerbose, | ||
showColors: showColors, | ||
teamcity: teamcity, | ||
useRequireJs: useRequireJs, | ||
regExpSpec: regExpSpec, | ||
junitreport: junitreport, | ||
includeStackTrace: includeStackTrace | ||
} | ||
|
||
jasmine.executeSpecsInFolder(options); | ||
|
||
|
||
function help(){ | ||
process.stdout.write([ | ||
'USAGE: jasmine-node [--color|--noColor] [--verbose] [--coffee] directory' | ||
, '' | ||
, 'Options:' | ||
, ' --autotest - rerun automatically the specs when a file changes' | ||
, ' --watch PATH - when used with --autotest, watches the given path(s) and runs all tests if a change is detected' | ||
, ' --color - use color coding for output' | ||
, ' --noColor - do not use color coding for output' | ||
, ' -m, --match REGEXP - load only specs containing "REGEXPspec"' | ||
, ' --matchall - relax requirement of "spec" in spec file names' | ||
, ' --verbose - print extra information per each test run' | ||
, ' --coffee - load coffee-script which allows execution .coffee files' | ||
, ' --junitreport - export tests results as junitreport xml format' | ||
, ' --output - defines the output folder for junitreport files' | ||
, ' --teamcity - converts all console output to teamcity custom test runner commands. (Normally auto detected.)' | ||
, ' --runWithRequireJs - loads all specs using requirejs instead of node\'s native require method' | ||
, ' --requireJsSetup - file run before specs to include and configure RequireJS' | ||
, ' --test-dir - the absolute root directory path where tests are located' | ||
, ' --nohelpers - does not load helpers.' | ||
, ' --forceexit - force exit once tests complete.' | ||
, ' --captureExceptions- listen to global exceptions, report them and exit (interferes with Domains)' | ||
, ' --config NAME VALUE- set a global variable in process.env' | ||
, ' --noStack - suppress the stack trace generated from a test failure' | ||
, ' --version - show the current version' | ||
, ' -h, --help - display this help and exit' | ||
, '' | ||
].join("\n")); | ||
|
||
process.exit(-1); | ||
} | ||
|
||
function printVersion(){ | ||
console.log("1.10.2"); | ||
process.exit(0); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/usr/bin/env node | ||
|
||
require("jasmine-focused"); | ||
require("./local-jasmine-node.js"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.