test-bundler-assets passes

This commit is contained in:
David Glasser
2014-06-10 19:13:48 -07:00
parent 31d62a5094
commit 6d3257909d
19 changed files with 158 additions and 36 deletions

View File

@@ -19,7 +19,7 @@ var httpHelpers = require('./http-helpers.js');
var archinfo = require('./archinfo.js');
var tropohouse = require('./tropohouse.js');
var packageCache = require('./package-cache.js');
var PackageLoader = require('./package-loader.js');
var PackageLoader = require('./package-loader.js').PackageLoader;
var PackageSource = require('./package-source.js');
var compiler = require('./compiler.js');
var catalog = require('./catalog.js');

View File

@@ -5,7 +5,7 @@ var buildmessage = require('./buildmessage.js');
var archinfo = require(path.join(__dirname, 'archinfo.js'));
var linker = require('./linker.js');
var Unipackage = require('./unipackage.js').Unipackage;
var PackageLoader = require('./package-loader.js');
var packageLoaderModule = require('./package-loader.js');
var uniload = require('./uniload.js');
var bundler = require('./bundler.js');
var catalog = require('./catalog.js');
@@ -704,7 +704,7 @@ compiler.compile = function (packageSource, options) {
rootPath: packageSource.sourceRoot
}, function () {
var packageLoader = new PackageLoader({
var packageLoader = new packageLoaderModule.PackageLoader({
versions: buildTimeDeps.pluginDependencies[info.name]
});
@@ -782,7 +782,7 @@ compiler.compile = function (packageSource, options) {
});
// Compile builds. Might use our plugins, so needs to happen second.
var packageLoader = new PackageLoader({
var packageLoader = new packageLoaderModule.PackageLoader({
versions: buildTimeDeps.packageDependencies
});
@@ -916,7 +916,7 @@ compiler.checkUpToDate = function (packageSource, unipackage) {
return false;
}
var directDepsPackageLoader = new PackageLoader({
var directDepsPackageLoader = new packageLoaderModule.PackageLoader({
versions: buildTimeDeps.directDependencies
});
var directDepsMatch = _.all(
@@ -949,7 +949,7 @@ compiler.checkUpToDate = function (packageSource, unipackage) {
// For each plugin, check that the resolved build-time deps for
// that plugin match the unipackage's build time deps for it.
var packageLoaderForPlugin = new PackageLoader({
var packageLoaderForPlugin = new packageLoaderModule.PackageLoader({
versions: buildTimeDeps.pluginDependencies[pluginName]
});
var unipackagePluginDeps = unipackage.buildTimePluginDependencies[pluginName];

View File

@@ -13,13 +13,13 @@ var unipackage = require('./unipackage.js');
// - uniloadDir: if specified, versions should be null, and this loader will
// *only* load packages that are already unipackages and are in this
// directory
var PackageLoader = function (options) {
exports.PackageLoader = function (options) {
var self = this;
self.versions = options.versions || null;
self.uniloadDir = options.uniloadDir;
};
_.extend(PackageLoader.prototype, {
_.extend(exports.PackageLoader.prototype, {
// Given the name of a package, return a Unipackage object, or throw an
// error if the package wasn't included in the 'versions' passed on
// initalization or isn't available (for example, hasn't been
@@ -118,5 +118,3 @@ _.extend(PackageLoader.prototype, {
return pkg.getBuildAtArch(arch);
}
});
module.exports = PackageLoader;

View File

@@ -180,7 +180,7 @@ _.extend(Project.prototype, {
};
// Finally, initialize the package loader.
var PackageLoader = require('./package-loader.js');
var PackageLoader = require('./package-loader.js').PackageLoader;
self.packageLoader = new PackageLoader({
versions: newVersions
});

View File

@@ -13,7 +13,7 @@ var inFiber = require('./fiber-helpers.js').inFiber;
var runLog = require('./run-log.js');
var catalog = require('./catalog.js');
var packageCache = require('./package-cache.js');
var PackageLoader = require('./package-loader.js');
var PackageLoader = require('./package-loader.js').PackageLoader;
var stats = require('./stats.js');
// Parse out s as if it were a bash command line.

View File

@@ -320,8 +320,9 @@ var Sandbox = function (options) {
self.env = {};
self.fakeMongo = options.fakeMongo;
console.log("\n XXX warehouse is commented out");
if (_.has(options, 'warehouse') && false) {
if (_.has(options, 'warehouse') &&
console.log("\n XXX warehouse is commented out") &&
false) {
// Make a directory to hold our new warehouse
self.warehouse = path.join(self.root, 'warehouse');
fs.mkdirSync(self.warehouse, 0755);

View File

@@ -8,8 +8,6 @@ var loginTimeoutSecs = 2;
selftest.define("login", ['net'], function () {
var s = new Sandbox;
console.log("XXX: added another timeout between login and username for package loading.");
console.log("Tune these timeouts once constraint solver & desclicification are done.");
var run = s.run("whoami");
run.matchErr("Not logged in");
run.expectExit(1);

View File

@@ -10,7 +10,6 @@ var testUtils = require('../test-utils.js');
// 'app-for-selftest-test-owned'
var commandTimeoutSecs = testUtils.accountsCommandTimeoutSecs;
console.log("XXX: another instance of login taking a while");
var loginTimeoutSecs = 2;
// Run 'meteor logs' or 'meteor mongo' against an app. Options:

View File

@@ -35,12 +35,12 @@ selftest.define("watch", ["slow"], function () {
});
selftest.define("bundler-assets", function () {
console.log("XXX: SYMLINK?!");
console.log("XXX: Meteor test options?");
runOldTest('test-bundler-assets.js');
});
selftest.define("bundler-options", function () {
console.log("XXX: SYMLINK?!");
console.log("XXX: Meteor test options?");
runOldTest('test-bundler-options.js');
});

View File

@@ -0,0 +1 @@
1j3g9zflbqmlt1wjoa05

View File

@@ -0,0 +1,41 @@
application-configuration@1.0.0+local
autopublish@1.0.0+local
autoupdate@1.0.0+local
binary-heap@1.0.0+local
callback-hook@1.0.0+local
check@1.0.0+local
ctl-helper@1.0.0+local
ctl@1.0.0+local
deps@1.0.0+local
ejson@1.0.0+local
follower-livedata@1.0.0+local
geojson-utils@1.0.0+local
html-tools@1.0.0+local
htmljs@1.0.0+local
id-map@1.0.0+local
insecure@1.0.0+local
jquery@1.0.0+local
json@1.0.0+local
livedata@1.0.0+local
logging@1.0.0+local
meteor@1.0.0+local
minifiers@1.0.0+local
minimongo@1.0.0+local
mongo-livedata@1.0.0+local
observe-sequence@1.0.0+local
ordered-dict@1.0.0+local
preserve-inputs@1.0.0+local
random@1.0.0+local
reactive-dict@1.0.0+local
reload@1.0.0+local
retry@1.0.0+local
routepolicy@1.0.0+local
session@1.0.0+local
spacebars-compiler@1.0.0+local
spacebars@1.0.0+local
standard-app-packages@1.0.0+local
templating@1.0.0+local
test-package@1.0.0+local
ui@1.0.0+local
underscore@1.0.0+local
webapp@1.0.0+local

View File

@@ -0,0 +1,6 @@
{
"dependencies": [],
"pluginDependencies": [],
"toolVersion": "meteor-tool@2.0.0",
"format": "1.0"
}

View File

@@ -1,3 +1,8 @@
Package.describe({
name: "test-package",
version: "1.0.0"
});
Package._transitional_registerBuildPlugin({
name: 'addTxt',
use: [],

View File

@@ -0,0 +1,20 @@
{
"dependencies": [
[
"meteor",
"1.0.0+local"
],
[
"underscore",
"1.0.0+local"
]
],
"pluginDependencies": [
[
"addTxt",
{}
]
],
"toolVersion": "meteor-tool@2.0.0",
"format": "1.0"
}

View File

@@ -0,0 +1 @@
1cugp537mjpx0gb4qri

View File

@@ -0,0 +1,40 @@
application-configuration@1.0.0+local
autopublish@1.0.0+local
autoupdate@1.0.0+local
binary-heap@1.0.0+local
callback-hook@1.0.0+local
check@1.0.0+local
ctl-helper@1.0.0+local
ctl@1.0.0+local
deps@1.0.0+local
ejson@1.0.0+local
follower-livedata@1.0.0+local
geojson-utils@1.0.0+local
html-tools@1.0.0+local
htmljs@1.0.0+local
id-map@1.0.0+local
insecure@1.0.0+local
jquery@1.0.0+local
json@1.0.0+local
livedata@1.0.0+local
logging@1.0.0+local
meteor@1.0.0+local
minifiers@1.0.0+local
minimongo@1.0.0+local
mongo-livedata@1.0.0+local
observe-sequence@1.0.0+local
ordered-dict@1.0.0+local
preserve-inputs@1.0.0+local
random@1.0.0+local
reactive-dict@1.0.0+local
reload@1.0.0+local
retry@1.0.0+local
routepolicy@1.0.0+local
session@1.0.0+local
spacebars-compiler@1.0.0+local
spacebars@1.0.0+local
standard-app-packages@1.0.0+local
templating@1.0.0+local
ui@1.0.0+local
underscore@1.0.0+local
webapp@1.0.0+local

View File

@@ -7,6 +7,8 @@ var files = require('../../files.js');
var bundler = require('../../bundler.js');
var uniload = require('../../uniload.js');
var release = require('../../release.js');
var project = require('../../project.js');
var catalog = require('../../catalog.js');
var appWithPublic = path.join(__dirname, 'app-with-public');
var appWithPrivate = path.join(__dirname, 'app-with-private');
@@ -16,23 +18,35 @@ var tmpDir = function () {
return (lastTmpDir = files.mkdtemp());
};
var setAppDir = function (appDir) {
project.project.setRootDir(appDir);
var localPackageDirs = [path.join(appDir, 'packages')];
if (!files.usesWarehouse()) {
// Running from a checkout, so use the Meteor core packages from
// the checkout.
localPackageDirs.push(path.join(
files.getCurrentToolsDir(), 'packages'));
}
catalog.complete.initialize({
localPackageDirs: localPackageDirs
});
};
// These tests make some assumptions about the structure of stars: that there
// are client and server programs inside programs/.
var runTest = function () {
console.log("Bundle app with public/ directory");
assert.doesNotThrow(function () {
setAppDir(appWithPublic);
var tmpOutputDir = tmpDir();
// XXX This (and other calls to this function in the file) is
// pretty terrible. see release.js, #HandlePackageDirsDifferently
release._resetPackageDirs();
var result = bundler.bundle({
appDir: appWithPublic,
outputPath: tmpOutputDir,
nodeModulesMode: 'skip'
})
});
var clientManifest = JSON.parse(
fs.readFileSync(
path.join(tmpOutputDir, "programs", "client", "program.json")
@@ -55,17 +69,19 @@ var runTest = function () {
console.log("Bundle app with private/ directory and package asset");
assert.doesNotThrow(function () {
setAppDir(appWithPrivate);
// Make sure we rebuild this app package.
files.rm_recursive(
path.join(appWithPrivate, "packages", "test-package", ".build"));
var tmpOutputDir = tmpDir();
release._resetPackageDirs([ path.join(appWithPrivate, "packages") ]);
var result = bundler.bundle({
appDir: appWithPrivate,
outputPath: tmpOutputDir,
nodeModulesMode: 'skip'
})
});
var serverManifest = JSON.parse(
fs.readFileSync(
path.join(tmpOutputDir, "programs", "server",
@@ -119,16 +135,12 @@ var runTest = function () {
console.log("Use Assets API from unipackage");
assert.doesNotThrow(function () {
release._resetPackageDirs([ path.join(appWithPrivate, "packages") ]);
var testPackage = uniload.load({
library: release.current.library,
packages: ['test-package']
})['test-package'].TestAsset;
testPackage.go(false /* don't exit when done */);
});
// Be sure to clean up!
release._resetPackageDirs();
};
var Fiber = require('fibers');

View File

@@ -2,7 +2,7 @@ var _ = require('underscore');
var bundler = require('./bundler.js');
var buildmessage = require('./buildmessage.js');
var release = require('./release.js');
var PackageLoader = require("./package-loader.js");
var PackageLoader = require("./package-loader.js").PackageLoader;
var packageCache = require("./package-cache.js");
var files = require('./files.js');

View File

@@ -8,7 +8,7 @@ var path = require('path');
var Builder = require('./builder.js');
var bundler = require('./bundler.js');
var watch = require('./watch.js');
var PackageLoader = require('./package-loader.js');
var PackageLoader = require('./package-loader.js').PackageLoader;
var catalog = require('./catalog.js');
var files = require('./files.js');
var Future = require('fibers/future');
@@ -187,7 +187,7 @@ _.extend(Build.prototype, {
// packages for which `filter(packageName, version)` returns truthy.
var getLoadedPackageVersions = function (versions, filter) {
var result = {};
var PLoader = require("./package-loader.js");
var PLoader = require("./package-loader.js").PackageLoader;
var packageLoader = new PLoader({ versions: versions });
_.each(versions, function (version, packageName) {