Remove "open" test with 5 tests using "tryopen".
No change in testing coverage, but better extensibility.

--HG--
branch : HEAD
diff --git a/regress/Makefile.am b/regress/Makefile.am
index 457e462..002a923 100644
--- a/regress/Makefile.am
+++ b/regress/Makefile.am
@@ -7,7 +7,6 @@
 	encrypt \
 	fread \
 	get_comment \
-	open \
 	name_locate \
 	set_comment_all \
 	set_comment_localonly \
@@ -48,7 +47,11 @@
 	fread.test \
 	get_comment.test \
 	name_locate.test \
-	open.test \
+	open_new_but_exists.test \
+	open_new_ok.test \
+	open_nonarchive.test \
+	open_nosuchfile.test \
+	open_ok.test \
 	set_comment_all.test \
 	set_comment_localonly.test \
 	set_comment_removeglobal.test \
diff --git a/regress/open.c b/regress/open.c
deleted file mode 100644
index 78663ba..0000000
--- a/regress/open.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
-  open.c -- test cases for opening zip archives
-  Copyright (C) 1999-2008 Dieter Baron and Thomas Klausner
-
-  This file is part of libzip, a library to manipulate ZIP archives.
-  The authors can be contacted at <libzip@nih.at>
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in
-     the documentation and/or other materials provided with the
-     distribution.
-  3. The names of the authors may not be used to endorse or promote
-     products derived from this software without specific prior
-     written permission.
- 
-  THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS
-  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
-  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-  IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "zip.h"
-
-int open_fail(const char *, int, const char *, int, int);
-int open_success(const char *, int, const char *, int);
-
-const char *prg;
-
-
-int
-main(int argc, char *argv[])
-{
-    int fail;
-    const char *archive;
-    const char *nonarchive;
-
-    fail = 0;
-    prg = argv[0];
-
-    if (argc != 3) {
-        fprintf(stderr, "usage: %s archive non-archive\n", prg);
-        return 1;
-    }
-
-    archive = argv[1];
-    nonarchive = argv[2];
-
-    remove("nosuchfile");
-    fail += open_fail("nosuchfile", 0, "non-existing", ZIP_ER_OPEN, ENOENT);
-    fail += open_fail(nonarchive, 0, "non-zip", ZIP_ER_NOZIP, 0);
-    fail += open_fail(archive, ZIP_EXCL, "existing-excl", ZIP_ER_EXISTS, 0);
-    /* ZIP_ER_OPEN */
-    /* ZIP_ER_READ */
-    /* ZIP_ER_SEEK */
-    /* ZIP_ER_INCONS */
-
-    fail += open_success(archive, 0, "existing", 3);
-    fail += open_success("nosuchfile", ZIP_CREATE, "new", 0);
-
-    exit(fail ? 1 : 0);
-}
-
-
-
-int
-open_fail(const char *fname, int flags, const char *desc, int zerr, int serr)
-{
-    struct zip *z;
-    int ze;
-
-    errno = 0;
-
-    if ((z=zip_open(fname, flags, &ze)) != NULL) {
-	printf("%s: opening `%s' succeeded, though it shouldn't\n", prg, desc);
-	zip_close(z);
-	return 1;
-    }
-    else if (ze != zerr
-	     || (zip_error_get_sys_type(ze) == ZIP_ET_SYS && errno != serr)) {
-	printf("%s: opening `%s' returned wrong error %d/%d, expected %d/%d\n",
-		prg, desc, ze, errno, zerr, serr);
-	return 1;
-    }
-
-    return 0;
-}
-
-
-
-int
-open_success(const char *fname, int flags, const char *desc, int nent)
-{
-    struct zip *z;
-    int ze, num;
-
-    if ((z=zip_open(fname, flags, &ze)) == NULL) {
-	printf("%s: opening `%s' failed (%d)\n", prg, desc, ze);
-	return 1;
-    }
-
-    num = zip_get_num_files(z);
-    if (zip_close(z) == -1) {
-	printf("%s: closing `%s' failed\n", prg, desc);
-	return 1;
-    }
-    
-    if (num != nent) {
-	printf("%s: opening `%s' got wrong number of files %d, expected %d\n",
-		prg, desc, num, nent);
-	return 1;
-    }
-
-    return 0;
-}
diff --git a/regress/open.test b/regress/open.test
deleted file mode 100644
index c4b6a3a..0000000
--- a/regress/open.test
+++ /dev/null
@@ -1,6 +0,0 @@
-# various tests for zip_open
-program open
-args test.zip Makefile.am
-return 0
-file test.zip test.zip test.zip
-file Makefile.am Makefile.am Makefile.am
diff --git a/regress/open_new_but_exists.test b/regress/open_new_but_exists.test
new file mode 100644
index 0000000..612c8c9
--- /dev/null
+++ b/regress/open_new_but_exists.test
@@ -0,0 +1,6 @@
+# zip_open: file shall be created but already exists
+program tryopen
+args -e test.zip
+return 1
+file test.zip test.zip test.zip
+stdout opening `test.zip' returned error 10/0
diff --git a/regress/open_new_ok.test b/regress/open_new_ok.test
new file mode 100644
index 0000000..04a453a
--- /dev/null
+++ b/regress/open_new_ok.test
@@ -0,0 +1,5 @@
+# zip_open: create new archive
+program tryopen
+args -n new.zip
+return 0
+stdout opening `new.zip' succeeded, 0 entries
diff --git a/regress/open_nonarchive.test b/regress/open_nonarchive.test
new file mode 100644
index 0000000..b523abf
--- /dev/null
+++ b/regress/open_nonarchive.test
@@ -0,0 +1,6 @@
+# zip_open: file is not a zip archive
+program tryopen
+file Makefile.am Makefile.am Makefile.am
+args Makefile.am
+return 1
+stdout opening `Makefile.am' returned error 19/2
diff --git a/regress/open_nosuchfile.test b/regress/open_nosuchfile.test
new file mode 100644
index 0000000..bd70a74
--- /dev/null
+++ b/regress/open_nosuchfile.test
@@ -0,0 +1,5 @@
+# zip_open: file doesn't exist
+program tryopen
+args nosuchfile
+return 1
+stdout opening `nosuchfile' returned error 11/2
diff --git a/regress/open_ok.test b/regress/open_ok.test
new file mode 100644
index 0000000..ca3498a
--- /dev/null
+++ b/regress/open_ok.test
@@ -0,0 +1,6 @@
+# zip_open: file opens fine
+program tryopen
+args test.zip
+return 0
+file test.zip test.zip test.zip
+stdout opening `test.zip' succeeded, 3 entries
diff --git a/regress/tryopen.c b/regress/tryopen.c
index 143a37f..fcc280f 100644
--- a/regress/tryopen.c
+++ b/regress/tryopen.c
@@ -85,12 +85,12 @@
 
     if ((z=zip_open(fname, flags, &ze)) != NULL) {
 	count = zip_get_num_files(z);
-	printf("%s: opening `%s' succeeded, %d entries\n", prg, fname, count);
+	printf("opening `%s' succeeded, %d entries\n", fname, count);
 	zip_close(z);
 	return 0;
     }
 
-    printf("%s: opening `%s' returned error %d/%d\n",
-	   prg, fname, ze, errno);
+    printf("opening `%s' returned error %d/%d\n",
+	   fname, ze, errno);
     return 1;
 }