Files
meteor/tools/tests/old.js
Ben Newman 117b1a8525 Use chokidar for file watching instead of pathwatcher.
Healthy competition among fs.watch wrappers appears to have produced a
clear winner: https://www.npmjs.com/package/chokidar

This wrapper is better for Meteor than pathwatcher was, because it can
watch directory trees recursively, and it has no trouble watching
nonexistent file paths, whereas pathwatcher would throw an exception.
2016-10-10 14:12:51 -04:00

88 lines
3.1 KiB
JavaScript

var _ = require('underscore');
var Future = require('fibers/future');
var selftest = require('../tool-testing/selftest.js');
var Sandbox = selftest.Sandbox;
var Run = selftest.Run;
var files = require('../fs/files.js');
var release = require('../packaging/release.js');
// old tests don't get to test --release, and always run this release
var maybeFixRelease = function (env) {
if (release.current && release.current.isProperRelease()) {
env.METEOR_SPRINGBOARD_RELEASE = release.current.name;
}
return env;
};
// This runs an old-style unit test. These are just .js files that
// require() whatever bits of the tool they want to test and have at
// them. They exit with 0 on success or something else on failure, and
// they are very chatty about logging their progress to stdout/stderr.
//
// filename is interpreted relative to tools/selftests/old.
var runOldTest = function (filename, extraEnv) {
var s = new Sandbox;
// 'Run' assumes that the first argument is a standard path,
var run = new Run(files.convertToStandardPath(process.execPath), {
// 'args' are treated as-is, so need to be converted before passing into
// 'Run'
args: [files.convertToOSPath(files.pathResolve(
files.convertToStandardPath(__dirname), 'old', filename))],
env: maybeFixRelease(_.extend({
METEOR_TOOL_PATH: s.execPath
}, extraEnv))
});
run.waitSecs(120);
run.expectExit(0);
};
// XXX Why are these tests from checkout?
//
// Most of the self-test framework works by calling a meteor command and waiting
// for something to happen. Instead, the old tests call isolated functions (ex:
// bundler.bundle) and skip the (now, somewhat complicated) initialization
// process that would usually happen before these functions are called. We have
// managed to hack together some stuff to tide this over when running from
// checkout, but dealing with release overrides in not-checkout has mostly been
// a failure.
//
// It would be nice if these tests were to work from release, and maybe ekate
// will take another look at them later, but it is not worth that much more time
// before 0.9.0.
//
selftest.define("bundler-assets", ["checkout"], function () {
runOldTest('test-bundler-assets.js');
});
selftest.define("bundler-options", ["checkout"], function () {
runOldTest('test-bundler-options.js');
});
selftest.define("bundler-npm", ["slow", "net", "checkout"], function () {
runOldTest('test-bundler-npm.js');
});
// This last one's is a shell script!
// XXX pardon the hacky glue to make it work with a sandbox
// If we're running from a checkout, run it both in checkout mode and
// in release mode. If we're not running from a checkout, just run it
// against the installed copy.
selftest.define("old cli tests (bash)", ["slow", "net", "yet-unsolved-windows-failure"], function () {
var s = new Sandbox;
var scriptToRun = files.pathJoin(files.convertToStandardPath(__dirname),
'old', 'cli-test.sh');
var run = new Run(scriptToRun, {
env: maybeFixRelease({
METEOR_TOOL_PATH: s.execPath,
NODE: process.execPath
})
});
run.waitSecs(1000);
run.match("PASSED\n");
run.expectExit(0);
});