Fix selftests that create packages with colons

We used to create package directories with the same name as the package
name, but on windows you can't have directories with colons in them.

Now Sandbox.prototype.createPackage takes an additional argument
with the directory name, as distinct from the package name.

This commit updates all the tests that called createPackage to generate
a directory name with no colons.
This commit is contained in:
Avital Oliver
2015-02-05 00:10:38 -08:00
parent 32f34fb2af
commit 59b1e145c6
15 changed files with 119 additions and 75 deletions

View File

@@ -603,13 +603,32 @@ _.extend(Sandbox.prototype, {
// Same as createApp, but with a package.
//
// @param packageDir {String} The directory in which to create the package
// @param packageName {String} The package name to create. This string will
// replace all appearances of ~package-name~
// in any package*.js files in the template
// @param template {String} The package template to use. Found as a
// subdirectory in tests/packages/
//
// For example:
// s.createPackage('mypack', 'empty');
// s.cd('mypack');
createPackage: function (to, template) {
// s.createPackage('me_mypack', me:mypack', 'empty');
// s.cd('me_mypack');
createPackage: function (packageDir, packageName, template) {
var self = this;
files.cp_r(files.pathJoin(__dirname, 'tests', 'packages', template),
files.pathJoin(self.cwd, to));
var packagePath = files.pathJoin(self.cwd, packageDir);
var templatePackagePath = files.pathJoin(
files.convertToStandardPath(__dirname), 'tests', 'packages', template);
files.cp_r(templatePackagePath, packagePath);
_.each(files.readdir(packagePath), function (file) {
if (file.match(/^package.*\.js$/)) {
var packageJsFile = files.pathJoin(packagePath, file);
files.writeFile(
packageJsFile,
files.readFile(packageJsFile, "utf8")
.replace("~package-name~", packageName));
}
});
},
// Change the cwd to be used for subsequent runs. For example:

View File

@@ -58,9 +58,10 @@ selftest.define("can't publish package with colons", ["net", "test-package-serve
testUtils.login(s, username, password);
var packageName = randomizedPackageName(username, "package-with-colons");
s.createPackage(packageName, "package-with-colons");
var packageDirName = "package-with-colons";
s.createPackage(packageDirName, packageName, "package-with-colons");
s.cd(packageName, function () {
s.cd(packageDirName, function () {
var run = s.run("publish", "--create");
run.matchErr("invalid characters");
@@ -81,7 +82,7 @@ selftest.define("can't build local packages with colons", function () {
s.cd(appName, function () {
s.mkdir("packages");
s.cd("packages", function () {
s.createPackage(packageName, "package-with-colons");
s.createPackage("package-with-colons", packageName, "package-with-colons");
});
var run = s.run("add", packageName);

View File

@@ -462,8 +462,9 @@ selftest.define("sync local catalog", ["slow", "net", "test-package-server"], f
// Create a package that has a versionsFrom for the just-published release.
var newPack = packageName + "-b";
s.createPackage(newPack, "package-of-two-versions");
s.cd(newPack, function() {
var newPackDirName = "package-of-two-versions";
s.createPackage(newPackDirName, newPack, "package-of-two-versions");
s.cd(newPackDirName, function() {
var packOpen = s.read("package.js");
packOpen = packOpen + "\nPackage.onUse(function(api) { \n" +
"api.versionsFrom(\"" + releaseTrack + "@0.9\");\n" +
@@ -480,7 +481,7 @@ selftest.define("sync local catalog", ["slow", "net", "test-package-server"], f
// Try to publish the package. Since the package references the release that
// we just published, it needs to resync with the server in order to be able
// to compile itself.
s.cd(newPack, function() {
s.cd(newPackDirName, function() {
run = s.run("publish", "--create");
run.waitSecs(20);
run.match("Done");
@@ -533,8 +534,9 @@ selftest.define("sync local catalog", ["slow", "net", "test-package-server"], f
// `packageName` should be a full package name (i.e. <username>:<package
// name>), and the sandbox should be logged in as that username.
var createAndPublishPackage = selftest.markStack(function (s, packageName) {
s.createPackage(packageName, "package-of-two-versions");
s.cd(packageName, function (){
var packageDirName = "package-of-two-versions";
s.createPackage(packageDirName, packageName, "package-of-two-versions");
s.cd(packageDirName, function (){
var run = s.run("publish", "--create");
run.waitSecs(25);
run.expectExit(0);
@@ -554,8 +556,9 @@ selftest.define("release track defaults to METEOR",
// `versionsFrom`. This implies that it should be prefixed
// by "METEOR@"
var newPack = fullPackageName;
s.createPackage(newPack, "package-of-two-versions");
s.cd(newPack, function() {
var newPackDirName = "random-package";
s.createPackage(newPackDirName, newPack, "package-of-two-versions");
s.cd(newPackDirName, function() {
var packOpen = s.read("package.js");
packOpen = packOpen + "\nPackage.onUse(function(api) { \n" +
"api.versionsFrom(\"" + releaseVersion + "\");\n" +
@@ -566,7 +569,7 @@ selftest.define("release track defaults to METEOR",
// Try to publish the package. The error message should demonstrate
// that we indeed default to the METEOR release track when not
// specified.
s.cd(newPack, function() {
s.cd(newPackDirName, function() {
var run = s.run("publish", "--create");
run.waitSecs(20);
run.matchErr("Unknown release METEOR@" + releaseVersion);
@@ -681,7 +684,7 @@ selftest.define("package specifying a name",
run.match("localhost");
s.cd("packages", function () {
s.createPackage("ac-fake", "fake-accounts-base");
s.createPackage("ac-fake", "ac-fake", "fake-accounts-base");
});
run.waitSecs(5);
@@ -1106,11 +1109,11 @@ selftest.define("show local package w/o version", function () {
// Create a package without version or summary; check that we can show its
// information without crashing.
s.createPackage(name, "package-for-show");
s.createPackage(name, name, "package-for-show");
var packageDir = files.pathJoin(s.root, "home", name);
s.cd(name, function () {
s.cp("completely-empty-package.js", "package.js");
s.cp("package-completely-empty.js", "package.js");
testShowPackage(s, name, {
defaultVersion: "local",
versions: [{ version: "local", directory: packageDir }]
@@ -1153,7 +1156,7 @@ selftest.define("show and search local package", function () {
s.cd("myapp");
s.mkdir("packages");
s.cd("packages", function () {
s.createPackage(name, "package-for-show");
s.createPackage(name, name, "package-for-show");
});
var packageDir = files.pathJoin(s.root, "home", "myapp", "packages", name);
@@ -1195,7 +1198,7 @@ selftest.define("show and search local package", function () {
summary = "This is a test package";
name = "my-local-exports";
packageDir = files.pathJoin(s.root, "home", "myapp", "packages", name);
s.createPackage(name, "package-for-show");
s.createPackage(name, name, "package-for-show");
s.cd(name, function () {
s.cp("package-with-exports.js", "package.js");
});
@@ -1306,11 +1309,13 @@ selftest.define("show and search local overrides server",
// Publish the first version of this package.
createAndPublishPackage(s, fullPackageName);
var packageDirName = "packages-for-show";
// Create a second version of this package. Inside that package directory, we
// should be able to see the local package.
var packageDir = files.pathJoin(s.root, "home", fullPackageName);
s.createPackage(fullPackageName, "package-for-show");
s.cd(fullPackageName, function() {
var packageDir = files.pathJoin(s.root, "home", packageDirName);
s.createPackage(packageDirName, fullPackageName, "package-for-show");
s.cd(packageDirName, function() {
s.cp("package-with-git.js", "package.js");
var summary = "This is a test package";
var git = "www.github.com/meteor/meteor";
@@ -1393,8 +1398,9 @@ selftest.define("show server package",
// Publish a version the package without git or any dependencies. Make sure
// that 'show' renders it correctly.
s.createPackage(fullPackageName, "package-for-show");
s.cd(fullPackageName, function () {
var packageDirName = "package-for-show";
s.createPackage(packageDirName, fullPackageName, "package-for-show");
s.cd(packageDirName, function () {
var run = s.run("publish", "--create");
run.waitSecs(30);
run.expectExit(0);
@@ -1420,7 +1426,7 @@ selftest.define("show server package",
});
// Publish a version of the package with git, but without any dependencies.
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
s.cp("package-with-git.js", "package.js");
var run = s.run("publish");
run.waitSecs(30);
@@ -1446,7 +1452,7 @@ selftest.define("show server package",
});
// Publish a version of the package with exports, and see that they show up.
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
s.cp("package-with-exports.js", "package.js");
var run = s.run("publish");
run.waitSecs(30);
@@ -1486,7 +1492,7 @@ selftest.define("show server package",
createAndPublishPackage(s, baseDependency);
var weakDependency = randomizedPackageName(username, "weak");
createAndPublishPackage(s, weakDependency);
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
// Replace the dependencies placeholders in the package.js file with the
// packages that we have just published.
s.cp("package-with-deps.js", "package.js");
@@ -1706,10 +1712,11 @@ selftest.define("show rc-only package",
var s = new Sandbox();
testUtils.login(s, username, password);
var fullPackageName = randomizedPackageName(username);
var packageDirName = "package-for-show";
// Create a package that has only an rc version.
s.createPackage(fullPackageName, "package-for-show");
s.cd(fullPackageName, function () {
s.createPackage(packageDirName, "package-for-show");
s.cd(packageDirName, function () {
s.cp("package-rc-version.js", "package.js");
var run = s.run("publish", "--create");
run.waitSecs(30);
@@ -2117,9 +2124,10 @@ selftest.define("show package w/many versions",
run.expectExit(0);
};
var fullPackageName = randomizedPackageName(username);
s.createPackage(fullPackageName, "package-of-two-versions");
var packageDir = files.pathJoin(s.root, "home", fullPackageName);
s.cd(fullPackageName, function () {
var packageDirName = "package-of-two-version";
s.createPackage(packageDirName, fullPackageName, "package-of-two-versions");
var packageDir = files.pathJoin(s.root, "home", packageDirName);
s.cd(packageDirName, function () {
var run = s.run("publish", "--create");
run.waitSecs(30);
run.expectExit(0);
@@ -2222,7 +2230,7 @@ selftest.define("show readme excerpt", function () {
// Create a package without version or summary; check that we can show its
// information without crashing.
s.createPackage(name, "package-for-show");
s.createPackage(name, name, "package-for-show");
var packageDir = files.pathJoin(s.root, "home", name);
// We are just going to change the description in the Readme. Some things
@@ -2369,7 +2377,8 @@ selftest.define("show server readme",
// every time we want to check a publication date is sort of expensive.
var today = longformToday();
var fullPackageName = username + ":" + utils.randomToken();
s.createPackage(fullPackageName, "package-for-show");
var packageDirName = "package-for-show";
s.createPackage(packageDirName, fullPackageName, "package-for-show");
var summary = "This is a test package";
// Publish fullPackageName.
@@ -2387,7 +2396,7 @@ selftest.define("show server readme",
};
// Default docs.
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
publish(true);
});
testShowPackageVersion(s, {
@@ -2409,7 +2418,7 @@ selftest.define("show server readme",
// Custom Readme! Publish works.
var git = "https:ilovegit.git";
var staging;
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
staging = staging.replace(/~summary~/g, summary);
@@ -2440,7 +2449,7 @@ selftest.define("show server readme",
});
// Null Readme! Publish works.
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var current = staging.replace(/~version~/g, "1.0.0_1");
s.write("package.js", current.replace(/~documentation~/g, "null"));
publish();
@@ -2466,7 +2475,7 @@ selftest.define("show server readme",
});
// These cause the publish to fail.
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
// README is blank.
var current = staging.replace(/~version~/g, "1.0.0_2");
s.write("package.js", current.replace(/~documentation~/g, "'blank'"));
@@ -2492,7 +2501,7 @@ selftest.define("show server readme",
// If you didn't format things properly, we will still publish and use that as
// an excerpt.
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var current = staging.replace(/~version~/g, "1.0.0_2");
s.write("package.js", current.replace(/~documentation~/g, "'unformat'"));
s.write("unformat", "I did not format this readme");
@@ -2537,7 +2546,8 @@ selftest.define("update package metadata",
// every time we want to check a publication date is sort of expensive.
var today = longformToday();
var fullPackageName = username + ":" + utils.randomToken();
s.createPackage(fullPackageName, "package-for-show");
var packageDirName = "package-for-show";
s.createPackage(packageDirName, fullPackageName, "package-for-show");
var summary = "This is a test package";
var desc = "Test package.";
var git = "www.iheartgit.git";
@@ -2561,7 +2571,7 @@ selftest.define("update package metadata",
};
// Publish the basic show package, using the default settings.
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var run = s.run("publish", "--create");
run.waitSecs(30);
run.expectExit(0);
@@ -2577,7 +2587,7 @@ selftest.define("update package metadata",
}, basePackage));
// add git
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
staging = staging.replace(/~summary~/g, summary);
@@ -2601,7 +2611,7 @@ selftest.define("update package metadata",
// change git & summary
git = "https://www.idoNOTheartgit.com";
summary = "awesome test";
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
staging = staging.replace(/~summary~/g, summary);
@@ -2625,7 +2635,7 @@ selftest.define("update package metadata",
// change readme contents & summary
desc = "This test package is super super awesome";
summary = "more awesome test";
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
staging = staging.replace(/~summary~/g, summary);
@@ -2648,7 +2658,7 @@ selftest.define("update package metadata",
// change readme contents
desc = "Actually this test package is OK";
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
s.write("README.md", "OKTest\n===\n"+ desc);
update();
});
@@ -2665,7 +2675,7 @@ selftest.define("update package metadata",
// change readme file
desc = "description from new file";
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
staging = staging.replace(/~summary~/g, summary);
@@ -2687,7 +2697,7 @@ selftest.define("update package metadata",
}, basePackage));
// remove readme
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
staging = staging.replace(/~summary~/g, summary);
@@ -2706,7 +2716,7 @@ selftest.define("update package metadata",
}, basePackage));
// try to set an invalid summary
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
// Long summary
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
@@ -2743,7 +2753,7 @@ selftest.define("update package metadata",
// try to set an invalid readme
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
var longSummary = Array(30).join(summary);
@@ -2760,7 +2770,7 @@ selftest.define("update package metadata",
});
// try to update non-existent version
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
staging = staging.replace(/~summary~/g, summary);
@@ -2775,8 +2785,9 @@ selftest.define("update package metadata",
// try to update non-existent package
var newPackageName = username + ":" + utils.randomToken();
s.createPackage(newPackageName, "package-for-show");
s.cd(newPackageName, function () {
var newPackageDirName = "packages-for-show";
s.createPackage(newPackageDirName, newPackageName, "package-for-show");
s.cd(newPackageDirName, newPackageName, function () {
var run = s.run("publish", "--update");
run.matchErr("without publishing it first");
run.expectExit(1);
@@ -2788,7 +2799,7 @@ selftest.define("update package metadata",
// try to update dependencies, they don't get upated! (But it still goes
// through, for now).
s.cd(fullPackageName, function () {
s.cd(packageDirName, function () {
var staging = s.read("package-customizable.js");
staging = staging.replace(/~git~/g, git);
staging = staging.replace(/~summary~/g, summary);

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: '~summary~',
version: '~version~',
git: '~git~',

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: 'This is a pre-release version of this package!',
version: '1.3.0-rc.1',
git: 'www.github.com/fake-user/meteor',

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: 'This is a test package with dependencies',
version: '1.2.0',
git: 'www.github.com/meteor/meteor',

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: 'This is a test package',
version: '1.0.1',
git: 'www.github.com/meteor/meteor'

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: 'This is a test package',
version: '1.2.1',
git: 'www.github.com/meteor/meteor'

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: 'This is a test package',
version: '0.9.9'
});

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: "Test package.",
version: "~version~",
documentation: null

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: "Test package.",
version: "1.0.0",
documentation: null

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: ' /* Fill me in! */ ',
version: '1.0.19',
git: ' /* Fill me in! */ ',

View File

@@ -1,4 +1,5 @@
Package.describe({
name: "~package-name~", // replaced via `Sandbox.prototype.createPackage`
summary: "Test package with a binary npm dependency",
version: "1.0.0",
documentation: null

View File

@@ -16,14 +16,16 @@ selftest.define("create-publish-and-search",
testUtils.login(s, username, password);
var packageName = utils.randomToken();
var fullPackageName = username + ":" + packageName;
var fsPackageName = username + "_" + packageName;
var githubUrl = "http://github.com/foo/bar";
var summary = "Package for test";
// Create a package that has a versionsFrom for a nonexistent release and see
// that we throw on it.
var noPack = fullPackageName + "2";
s.createPackage(noPack, "package-of-two-versions");
s.cd(noPack, function() {
var noPackDirName = fsPackageName + "2";
s.createPackage(noPackDirName, noPack, "package-of-two-versions");
s.cd(noPackDirName, function() {
var packOpen = s.read("package.js");
packOpen = packOpen + "\nPackage.onUse(function(api) { \n" +
"api.versionsFrom(\"THIS-RELEASE-DOES-NOT-EXIST@0.9\");\n" +
@@ -40,7 +42,7 @@ selftest.define("create-publish-and-search",
run.expectExit(0);
run.match(fullPackageName);
s.cd(fullPackageName);
s.cd(fsPackageName);
// set a github URL & summary in the package
var packageJsContents = s.read("package.js");
@@ -77,14 +79,15 @@ selftest.define("create-publish-and-search",
// name override.
packageName = utils.randomToken();
var newPackageName = username + ":" + packageName;
var newPackageDirName = packageName;
var minPack = " Package.describe({ " +
"summary: 'Test package: " + packageName + "'," +
"version: '1.0.1'," +
"documentation: null," +
"name: '" + newPackageName + "'});";
s.createPackage(fullPackageName, "package-of-two-versions");
s.cd(fullPackageName, function() {
s.createPackage(newPackageDirName, newPackageName, "package-of-two-versions");
s.cd(newPackageDirName, function() {
s.write("package.js", minPack);
// If we manage to publish without the --create flag, that's probably an
// indicator that we are reading the directory instead of the override, or,
@@ -130,8 +133,8 @@ selftest.define("publish-one-arch",
packageName = utils.randomToken();
fullPackageName = username + ":" + packageName;
s.createPackage(fullPackageName, "package-with-npm");
s.cd(fullPackageName);
s.createPackage(packageName, fullPackageName, "package-with-npm");
s.cd(packageName);
run = s.run("publish", "--create");
run.waitSecs(15);
@@ -155,9 +158,9 @@ selftest.define("list-with-a-new-version",
var run;
// Now, create a package.
s.createPackage(fullPackageName, "package-of-two-versions");
s.createPackage(packageName, fullPackageName, "package-of-two-versions");
// Publish the first version.
s.cd(fullPackageName, function () {
s.cd(packageName, function () {
run = s.run("publish", "--create");
run.waitSecs(15);
run.expectExit(0);
@@ -182,7 +185,7 @@ selftest.define("list-with-a-new-version",
});
// Change the package to increment version and publish the new package.
s.cd(fullPackageName, function () {
s.cd(packageName, function () {
setPackageVersion(s, "1.0.1");
run = s.run("publish");
run.waitSecs(15);
@@ -235,7 +238,7 @@ selftest.define("list-with-a-new-version",
});
// Now publish an 1.0.4-rc4.
s.cd(fullPackageName, function () {
s.cd(packageName, function () {
setPackageVersion(s, "1.0.4-rc.4");
run = s.run("publish");
run.waitSecs(15);
@@ -307,9 +310,9 @@ selftest.define("do-not-update-to-rcs",
var run;
// Now, create a package.
s.createPackage(fullPackageName, "package-of-two-versions");
s.createPackage(packageName, fullPackageName, "package-of-two-versions");
// Publish the first version.
s.cd(fullPackageName, function () {
s.cd(packageName, function () {
run = s.run("publish", "--create");
run.waitSecs(120);
run.match("Published " + fullPackageName + "@");
@@ -323,7 +326,7 @@ selftest.define("do-not-update-to-rcs",
});
// Now publish an 1.0.4-rc.3.
s.cd(fullPackageName, function () {
s.cd(packageName, function () {
setPackageVersion(s, "1.0.4-rc.3");
run = s.run("publish");
run.waitSecs(15);
@@ -386,7 +389,7 @@ selftest.define("do-not-update-to-rcs",
});
// Now publish an 1.0.4-rc.4.
s.cd(fullPackageName, function () {
s.cd(packageName, function () {
setPackageVersion(s, "1.0.4-rc.4");
run = s.run("publish");
run.waitSecs(15);
@@ -424,15 +427,15 @@ selftest.define("package-depends-on-either-version",
// First, we publish fullPackageNameDep at 1.0.0 and publish it..
var fullPackageNameDep = username + ":" + packageNameDependent;
s.createPackage(fullPackageNameDep, "package-of-two-versions");
s.cd(fullPackageNameDep, function() {
s.createPackage(packageNameDependent, fullPackageNameDep, "package-of-two-versions");
s.cd(packageNameDependent, function() {
run = s.run("publish", "--create");
run.waitSecs(20);
run.match("Published");
});
// Then, we publish fullPackageNameDep at 2.0.0
s.cd(fullPackageNameDep, function() {
s.cd(packageNameDependent, function() {
setPackageVersion(s, "2.0.0");
run = s.run("publish");
run.waitSecs(20);
@@ -442,8 +445,8 @@ selftest.define("package-depends-on-either-version",
// Then, we make another one that depends on either version and publish.
var another = utils.randomToken();
var fullPackageAnother = username + ":" + another;
s.createPackage(fullPackageAnother, "package-of-two-versions");
s.cd(fullPackageAnother, function() {
s.createPackage(another, fullPackageAnother, "package-of-two-versions");
s.cd(another, function() {
var packOpen = s.read("package.js");
packOpen = packOpen + "\nPackage.onUse(function(api) { \n" +
"api.use(\"" + fullPackageNameDep +