From 6d3257909dead9d228fac752ff2fb286fce6b4d6 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Tue, 10 Jun 2014 19:13:48 -0700 Subject: [PATCH] test-bundler-assets passes --- tools/commands.js | 2 +- tools/compiler.js | 10 ++--- tools/package-loader.js | 6 +-- tools/project.js | 2 +- tools/run-app.js | 2 +- tools/selftest.js | 5 ++- tools/tests/login.js | 2 - tools/tests/logs-mongo-auth.js | 1 - tools/tests/old.js | 4 +- .../old/app-with-private/.meteor/identifier | 1 + .../old/app-with-private/.meteor/versions | 41 +++++++++++++++++++ .../test-package/addTxt-versions.json | 6 +++ .../packages/test-package/package.js | 5 +++ .../test-package/test-package-versions.json | 20 +++++++++ .../old/app-with-public/.meteor/identifier | 1 + .../old/app-with-public/.meteor/versions | 40 ++++++++++++++++++ tools/tests/old/test-bundler-assets.js | 40 +++++++++++------- tools/uniload.js | 2 +- tools/unipackage.js | 4 +- 19 files changed, 158 insertions(+), 36 deletions(-) create mode 100644 tools/tests/old/app-with-private/.meteor/identifier create mode 100644 tools/tests/old/app-with-private/.meteor/versions create mode 100644 tools/tests/old/app-with-private/packages/test-package/addTxt-versions.json create mode 100644 tools/tests/old/app-with-private/packages/test-package/test-package-versions.json create mode 100644 tools/tests/old/app-with-public/.meteor/identifier create mode 100644 tools/tests/old/app-with-public/.meteor/versions diff --git a/tools/commands.js b/tools/commands.js index ac37f84db6..aac3522bca 100644 --- a/tools/commands.js +++ b/tools/commands.js @@ -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'); diff --git a/tools/compiler.js b/tools/compiler.js index ce916cfbbf..ace77a8629 100644 --- a/tools/compiler.js +++ b/tools/compiler.js @@ -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]; diff --git a/tools/package-loader.js b/tools/package-loader.js index ee5d5e92d4..960109ab32 100644 --- a/tools/package-loader.js +++ b/tools/package-loader.js @@ -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; diff --git a/tools/project.js b/tools/project.js index ed254805c7..6b35b54cc6 100644 --- a/tools/project.js +++ b/tools/project.js @@ -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 }); diff --git a/tools/run-app.js b/tools/run-app.js index 6e9a96dc04..ffc5fd3a3c 100644 --- a/tools/run-app.js +++ b/tools/run-app.js @@ -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. diff --git a/tools/selftest.js b/tools/selftest.js index 8729c7f17d..ba981e503d 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -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); diff --git a/tools/tests/login.js b/tools/tests/login.js index e78a276a3e..6df1860509 100644 --- a/tools/tests/login.js +++ b/tools/tests/login.js @@ -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); diff --git a/tools/tests/logs-mongo-auth.js b/tools/tests/logs-mongo-auth.js index 1a9815a1dc..5aba7a3939 100644 --- a/tools/tests/logs-mongo-auth.js +++ b/tools/tests/logs-mongo-auth.js @@ -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: diff --git a/tools/tests/old.js b/tools/tests/old.js index 11c4f0d758..44a7a09a32 100644 --- a/tools/tests/old.js +++ b/tools/tests/old.js @@ -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'); }); diff --git a/tools/tests/old/app-with-private/.meteor/identifier b/tools/tests/old/app-with-private/.meteor/identifier new file mode 100644 index 0000000000..5ed06476f1 --- /dev/null +++ b/tools/tests/old/app-with-private/.meteor/identifier @@ -0,0 +1 @@ +1j3g9zflbqmlt1wjoa05 \ No newline at end of file diff --git a/tools/tests/old/app-with-private/.meteor/versions b/tools/tests/old/app-with-private/.meteor/versions new file mode 100644 index 0000000000..74f6fd8cd7 --- /dev/null +++ b/tools/tests/old/app-with-private/.meteor/versions @@ -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 diff --git a/tools/tests/old/app-with-private/packages/test-package/addTxt-versions.json b/tools/tests/old/app-with-private/packages/test-package/addTxt-versions.json new file mode 100644 index 0000000000..8530176067 --- /dev/null +++ b/tools/tests/old/app-with-private/packages/test-package/addTxt-versions.json @@ -0,0 +1,6 @@ +{ + "dependencies": [], + "pluginDependencies": [], + "toolVersion": "meteor-tool@2.0.0", + "format": "1.0" +} \ No newline at end of file diff --git a/tools/tests/old/app-with-private/packages/test-package/package.js b/tools/tests/old/app-with-private/packages/test-package/package.js index e273422703..596c9d1a44 100644 --- a/tools/tests/old/app-with-private/packages/test-package/package.js +++ b/tools/tests/old/app-with-private/packages/test-package/package.js @@ -1,3 +1,8 @@ +Package.describe({ + name: "test-package", + version: "1.0.0" +}); + Package._transitional_registerBuildPlugin({ name: 'addTxt', use: [], diff --git a/tools/tests/old/app-with-private/packages/test-package/test-package-versions.json b/tools/tests/old/app-with-private/packages/test-package/test-package-versions.json new file mode 100644 index 0000000000..db1b7ee95a --- /dev/null +++ b/tools/tests/old/app-with-private/packages/test-package/test-package-versions.json @@ -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" +} \ No newline at end of file diff --git a/tools/tests/old/app-with-public/.meteor/identifier b/tools/tests/old/app-with-public/.meteor/identifier new file mode 100644 index 0000000000..24f5ec1004 --- /dev/null +++ b/tools/tests/old/app-with-public/.meteor/identifier @@ -0,0 +1 @@ +1cugp537mjpx0gb4qri \ No newline at end of file diff --git a/tools/tests/old/app-with-public/.meteor/versions b/tools/tests/old/app-with-public/.meteor/versions new file mode 100644 index 0000000000..b9c277ed68 --- /dev/null +++ b/tools/tests/old/app-with-public/.meteor/versions @@ -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 diff --git a/tools/tests/old/test-bundler-assets.js b/tools/tests/old/test-bundler-assets.js index 6f98a1b928..48306d82a9 100644 --- a/tools/tests/old/test-bundler-assets.js +++ b/tools/tests/old/test-bundler-assets.js @@ -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'); diff --git a/tools/uniload.js b/tools/uniload.js index 3c5a6f4b72..7c545d2a8a 100644 --- a/tools/uniload.js +++ b/tools/uniload.js @@ -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'); diff --git a/tools/unipackage.js b/tools/unipackage.js index 045839bc48..f7b1000b68 100644 --- a/tools/unipackage.js +++ b/tools/unipackage.js @@ -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) {