test/java/module/tools/jrepo/JRepoTest.java
Print this page
@@ -47,11 +47,11 @@
/*
* Check common error reporting.
*/
check(!jr.run(new String[] {" "}) && usageOK(0));
check(!jr.run(getArgs("notASubCcommand")) && usageOK(0));
- check(!jr.run(getArgs("list -+")) && usageOK(1));
+ check(!jr.run(getArgs("list -+")) && usageOK(-5));
/*
* Do many tests on a LocalRepository, then a few on a URLRepository
* as a sanity check.
*/
@@ -67,14 +67,14 @@
JamUtils.recursiveDelete(jamDir);
jamDir.mkdirs();
/* Check install command */
- check(!jr.run(getArgs("install")) && usageOK(0));
- check(!jr.run(getArgs("install repo module")) && usageOK(0));
+ check(!jr.run(getArgs("install")) && usageOK(-3));
+ check(!jr.run(getArgs("install repo module")) && usageOK(-3));
check(!jr.run(getArgs("install -r repoDoesNotExist module")) && errorOK(1));
- check(!jr.run(getArgs("install -p -r repoDoesNotExist module")) && errorOK(13));
+ check(!jr.run(getArgs("install -p -r repoDoesNotExist module")) && errorOK(4));
// Create a directory for a local repository.
File localRepoDir = new File(tmp, "JRepoTestLocalRepoDir");
JamUtils.recursiveDelete(localRepoDir);
localRepoDir.mkdirs();
@@ -85,39 +85,39 @@
// Each install must be of a different module
// Verify silent output
File jamFile = JamBuilder.createJam(
- "jrepotest", "Example", "JRepoModuleA", "1.0", "platform", "arch", false, jamDir);
+ "jrepotest", "Example", "JRepoModuleA", "1.0", "platform1", "archA", false, jamDir);
jamFile.deleteOnExit();
String jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("install -r " + repo + " " + jam)) && outputOK(0));
// Verify verbose output
jamFile = JamBuilder.createJam(
- "jrepotest", "Example", "JRepoModuleB", "1.0", "platform", "arch", false, jamDir);
+ "jrepotest", "Example", "JRepoModuleB", "1.0", "platform2", "archB", false, jamDir);
jamFile.deleteOnExit();
jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("ins -v -r " + repo + " " + jam)) && outputOK(1));
// Verify multiple versions of same named module
jamFile = JamBuilder.createJam(
- "jrepotest", "Example", "JRepoModuleB", "2.0", "platform", "arch", false, jamDir);
+ "jrepotest", "Example", "JRepoModuleB", "2.0", "platform3", "archC", false, jamDir);
jamFile.deleteOnExit();
jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("install -v -r " + repo + " " + jam)) && outputOK(1));
jamFile = JamBuilder.createJam(
- "jrepotest", "Example", "JRepoModuleB", "2.5", "platform", "arch", false, jamDir);
+ "jrepotest", "Example", "JRepoModuleB", "2.5", "platform4", "archD", false, jamDir);
jamFile.deleteOnExit();
jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("install -v -r " + repo + " " + jam)) && outputOK(1));
// Verify modules are installed
check(jr.run(getArgs("list -v -r " + repo)) && outputOK(6));
// Verify -p is not applicable to install
- check(!jr.run(getArgs("install -p -r " + repo + " " + jam)) && usageOK(1));
+ check(!jr.run(getArgs("install -p -r " + repo + " " + jam)) && usageOK(-4));
/* Check list command */
check(!jr.run(getArgs("list")) && errorOK(0));
check(jr.run(getArgs("list -p")) && outputOK(14));
@@ -128,10 +128,13 @@
check(jr.run(getArgs("lis -r " + repo)) && outputOK(6));
check(jr.run(getArgs("li -p -r " + repo)) && outputOK(20));
check(jr.run(getArgs("l -v -r " + repo)) && outputOK(6));
check(jr.run(getArgs("list -p -v -r " + repo)) && outputOK(28));
+ // Check that repositories are shown in sorted order
+ check(jr.run(getArgs("l -v -r " + repo)) && sortedOK());
+
// Nonexist things are not there
check(!jr.run(getArgs("list ThisWillNotBeFound")) && outputOK(0));
check(!jr.run(getArgs("list -v ThisWillNotBeFound")) && errorOK(1));
// Bootstrap repository contents are there
@@ -152,21 +155,21 @@
check(jr.run(getArgs("list -v -r " + repo + " JRepo")) && outputOK(6));
check(jr.run(getArgs("list -p -v -r " + repo + " JR")) && outputOK(14));
/* Check uninstall command */
- check(!jr.run(getArgs("uninstall")) && usageOK(0));
- check(!jr.run(getArgs("uninstall repo MODULE")) && usageOK(0));
+ check(!jr.run(getArgs("uninstall")) && usageOK(-3));
+ check(!jr.run(getArgs("uninstall repo MODULE")) && usageOK(-3));
check(!jr.run(getArgs("uninstall -r repoDoesNotExist module")) && errorOK(1));
- check(!jr.run(getArgs("uninstall -p -r repoDoesNotExist module")) && errorOK(13));
+ check(!jr.run(getArgs("uninstall -p -r repoDoesNotExist module")) && errorOK(4));
check(!jr.run(getArgs("uninstall -r " + repo + " Fred")) && errorOK(0));
check(!jr.run(getArgs("uninstall -v -r " + repo + " Fred")) && errorOK(1));
// Install one more module for tests below
jamFile = JamBuilder.createJam(
- "jrepotest", "Example", "JRepoModuleC", "1.0", "platform", "arch", false, jamDir);
+ "jrepotest", "Example", "JRepoModuleC", "1.0", "platform5", "archE", false, jamDir);
jamFile.deleteOnExit();
jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("ins -v -r " + repo + " " + jam)) && outputOK(1));
// Verify a straightforward uninstall.
@@ -188,16 +191,16 @@
check(jr.run(getArgs("un -v -f -r " + repo + " JRepoModuleB")) && outputOK(2));
check(jr.run(getArgs("list -v -r " + repo)) && outputOK(3));
// Install more modules to verify -i works
jamFile = JamBuilder.createJam(
- "jrepotest", "Interact", "JRepoModuleD", "2.7", "platform", "arch", false, jamDir);
+ "jrepotest", "Interact", "JRepoModuleD", "2.7", "platform6", "archF", false, jamDir);
jamFile.deleteOnExit();
jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("install -v -r " + repo + " " + jam)) && outputOK(1));
jamFile = JamBuilder.createJam(
- "jrepotest", "Interact", "JRepoModuleD", "3.1", "platform", "arch", false, jamDir);
+ "jrepotest", "Interact", "JRepoModuleD", "3.1", "platform7", "archG", false, jamDir);
jamFile.deleteOnExit();
jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("install -v -r " + repo + " " + jam)) && outputOK(1));
// This reader will let us delete the module JRepoModuleD version 3.1.
@@ -234,17 +237,17 @@
Repository urlrepo = Modules.newURLRepository("JRepoTestURLRepository",
new URL(urlRepoPath), config);
// Verify multiple versions of same named module
jamFile = JamBuilder.createJam(
- "jrepotest", "Example", "URLModuleX", "7.0", "platform", "arch", false, jamDir);
+ "jrepotest", "Example", "URLModuleX", "7.0", "platform8", "archH", false, jamDir);
jamFile.deleteOnExit();
jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("install -v -r " + urlRepoPath + " " + jam)) && outputOK(1));
jamFile = JamBuilder.createJam(
- "jrepotest", "Example", "URLModuleX", "13.0", "platform", "arch", false, jamDir);
+ "jrepotest", "Example", "URLModuleX", "13.0", "platform9", "archI", false, jamDir);
jamFile.deleteOnExit();
jam = jamFile.getCanonicalPath();
check(jr.run(getArgs("install -v -r " + urlRepoPath + " " + jam)) && outputOK(1));
// Verify list
@@ -310,14 +313,40 @@
return checkOutput(len, berr);
}
/** Check that usage is provided as expected. */
static boolean usageOK(int len) throws Throwable {
- // Add number of default lines of usage output to given value.
- return checkOutput(12 + len, berr);
+ // If len < 0, use negative of that, else use len + default
+ return checkOutput(len < 0 ? -len : 20 + len, berr);
}
+ /** Check that output is sorted, after skipping the firsts header line. */
+ static boolean sortedOK() throws Throwable {
+ int numFailed = failed;
+ String allLines = bout.toString();
+ if (debug) System.err.println("Checking sort order on '" + allLines + "'");
+ BufferedReader r = new BufferedReader(new StringReader(allLines));
+ check(r.readLine() != null); // Skip heading
+ List<String> lines = new ArrayList<String>();
+ String s;
+ while ((s = r.readLine()) != null) {
+ check(!lines.contains(s));
+ check(lines.add(s));
+ }
+ String prev = lines.get(2);
+ for (int i = 3; i < lines.size(); i++) {
+ String cur = lines.get(i);
+ if (!check(prev.compareTo(cur) < 0)) {
+ System.err.println(
+ "'" + prev + "'\nis not less than \n'" + cur + "'");
+ }
+ prev = cur;
+ }
+ bout.reset();
+ return numFailed == failed;
+ }
+
//--------------------- Infrastructure ---------------------------
static volatile int passed = 0, failed = 0;
static boolean pass() {passed++; return true;}
static boolean fail() {failed++; Thread.dumpStack(); return false;}
static boolean fail(String msg) {System.err.println(msg); return fail();}