You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
207 lines
7.8 KiB
207 lines
7.8 KiB
7 years ago
|
From 389cc579bc8d5704f9dcc2fd01ffd6307aee6b2b Mon Sep 17 00:00:00 2001
|
||
|
From: TJ Saunders <tj@castaglia.org>
|
||
|
Date: Mon, 17 Apr 2017 20:01:47 -0700
|
||
|
Subject: [PATCH] Address some nits in the unit tests, to help make more
|
||
|
repeatable builds on the variety of testing platforms; addresses Issue #483.
|
||
|
|
||
|
---
|
||
|
tests/api/data.c | 5 +++--
|
||
|
tests/api/fsio.c | 28 ++++++++++++++++++++--------
|
||
|
tests/api/inet.c | 19 ++++++++++---------
|
||
|
tests/api/pool.c | 7 ++++++-
|
||
|
4 files changed, 39 insertions(+), 20 deletions(-)
|
||
|
|
||
|
diff --git a/tests/api/data.c b/tests/api/data.c
|
||
|
index e4442ab..223a3af 100644
|
||
|
--- a/tests/api/data.c
|
||
|
+++ b/tests/api/data.c
|
||
|
@@ -313,8 +313,9 @@ START_TEST (data_sendfile_test) {
|
||
|
mark_point();
|
||
|
res = pr_data_sendfile(fd, &offset, strlen(text));
|
||
|
if (res < 0) {
|
||
|
- fail_unless(errno == ENOTSOCK, "Expected ENOTSOCK (%d), got %s (%d)",
|
||
|
- ENOTSOCK, strerror(errno), errno);
|
||
|
+ fail_unless(errno == ENOTSOCK || errno == EINVAL,
|
||
|
+ "Expected ENOTSOCK (%d) or EINVAL (%d), got %s (%d)", ENOTSOCK, EINVAL,
|
||
|
+ strerror(errno), errno);
|
||
|
}
|
||
|
|
||
|
(void) close(fd);
|
||
|
diff --git a/tests/api/fsio.c b/tests/api/fsio.c
|
||
|
index 508ca46..4677d8f 100644
|
||
|
--- a/tests/api/fsio.c
|
||
|
+++ b/tests/api/fsio.c
|
||
|
@@ -34,6 +34,8 @@ static const char *fsio_test2_path = "/tmp/prt-foo.bar.baz.quxx.quzz";
|
||
|
static const char *fsio_unlink_path = "/tmp/prt-fsio-link.dat";
|
||
|
static const char *fsio_link_path = "/tmp/prt-fsio-symlink.lnk";
|
||
|
static const char *fsio_testdir_path = "/tmp/prt-fsio-test.d";
|
||
|
+static const char *fsio_copy_src_path = "/tmp/prt-fs-src.dat";
|
||
|
+static const char *fsio_copy_dst_path = "/tmp/prt-fs-dst.dat";
|
||
|
|
||
|
/* Fixtures */
|
||
|
|
||
|
@@ -1010,8 +1012,12 @@ START_TEST (fsio_sys_access_dir_test) {
|
||
|
strerror(errno));
|
||
|
|
||
|
if (getenv("TRAVIS") == NULL) {
|
||
|
- uid_t other_uid = 1000;
|
||
|
- gid_t other_gid = 1000;
|
||
|
+ uid_t other_uid;
|
||
|
+ gid_t other_gid;
|
||
|
+
|
||
|
+ /* Deliberately use IDs other than the current ones. */
|
||
|
+ other_uid = uid - 1;
|
||
|
+ other_gid = gid - 1;
|
||
|
|
||
|
/* Next, check that others can access the directory. */
|
||
|
pr_fs_clear_cache2(fsio_testdir_path);
|
||
|
@@ -3297,7 +3303,7 @@ END_TEST
|
||
|
|
||
|
START_TEST (fs_copy_file_test) {
|
||
|
int res;
|
||
|
- char *src_path, *dst_path, *text;
|
||
|
+ char *src_path = NULL, *dst_path = NULL, *text;
|
||
|
pr_fh_t *fh;
|
||
|
|
||
|
res = pr_fs_copy_file(NULL, NULL);
|
||
|
@@ -3305,15 +3311,15 @@ START_TEST (fs_copy_file_test) {
|
||
|
fail_unless(errno == EINVAL, "Expected EINVAL (%d), got %s (%d)", EINVAL,
|
||
|
strerror(errno), errno);
|
||
|
|
||
|
- src_path = "/tmp/prt-fs-src.dat";
|
||
|
+ src_path = fsio_copy_src_path;
|
||
|
res = pr_fs_copy_file(src_path, NULL);
|
||
|
fail_unless(res < 0, "Failed to handle null destination path");
|
||
|
fail_unless(errno == EINVAL, "Expected EINVAL (%d), got %s (%d)", EINVAL,
|
||
|
strerror(errno), errno);
|
||
|
|
||
|
- dst_path = "/tmp/prt-fs-dst.dat";
|
||
|
+ dst_path = fsio_copy_dst_path;
|
||
|
res = pr_fs_copy_file(src_path, dst_path);
|
||
|
- fail_unless(res < 0, "Failed to handle null destination path");
|
||
|
+ fail_unless(res < 0, "Failed to handle nonexistent source path");
|
||
|
fail_unless(errno == ENOENT, "Expected ENOENT (%d), got %s (%d)", ENOENT,
|
||
|
strerror(errno), errno);
|
||
|
|
||
|
@@ -3322,6 +3328,7 @@ START_TEST (fs_copy_file_test) {
|
||
|
fail_unless(errno == EISDIR, "Expected EISDIR (%d), got %s (%d)", EISDIR,
|
||
|
strerror(errno), errno);
|
||
|
|
||
|
+ (void) unlink(src_path);
|
||
|
fh = pr_fsio_open(src_path, O_CREAT|O_EXCL|O_WRONLY);
|
||
|
fail_unless(fh != NULL, "Failed to open '%s': %s", src_path, strerror(errno));
|
||
|
|
||
|
@@ -3347,6 +3354,8 @@ START_TEST (fs_copy_file_test) {
|
||
|
res = pr_fs_copy_file(src_path, src_path);
|
||
|
fail_unless(res == 0, "Failed to copy file to itself: %s", strerror(errno));
|
||
|
|
||
|
+ (void) unlink(dst_path);
|
||
|
+
|
||
|
mark_point();
|
||
|
res = pr_fs_copy_file(src_path, dst_path);
|
||
|
fail_unless(res == 0, "Failed to copy file: %s", strerror(errno));
|
||
|
@@ -3366,10 +3375,13 @@ START_TEST (fs_copy_file2_test) {
|
||
|
char *src_path, *dst_path, *text;
|
||
|
pr_fh_t *fh;
|
||
|
|
||
|
- src_path = "/tmp/prt-fs-src.dat";
|
||
|
- dst_path = "/tmp/prt-fs-dst.dat";
|
||
|
+ src_path = fsio_copy_src_path;
|
||
|
+ dst_path = fsio_copy_dst_path;
|
||
|
flags = PR_FSIO_COPY_FILE_FL_NO_DELETE_ON_FAILURE;
|
||
|
|
||
|
+ (void) unlink(src_path);
|
||
|
+ (void) unlink(dst_path);
|
||
|
+
|
||
|
fh = pr_fsio_open(src_path, O_CREAT|O_EXCL|O_WRONLY);
|
||
|
fail_unless(fh != NULL, "Failed to open '%s': %s", src_path, strerror(errno));
|
||
|
|
||
|
diff --git a/tests/api/inet.c b/tests/api/inet.c
|
||
|
index b75c839..03c4781 100644
|
||
|
--- a/tests/api/inet.c
|
||
|
+++ b/tests/api/inet.c
|
||
|
@@ -508,7 +508,7 @@ START_TEST (inet_connect_ipv4_test) {
|
||
|
conn = pr_inet_create_conn(p, sockfd, NULL, port, FALSE);
|
||
|
fail_unless(conn != NULL, "Failed to create conn: %s", strerror(errno));
|
||
|
|
||
|
- res = pr_inet_connect(p, conn, NULL, 80);
|
||
|
+ res = pr_inet_connect(p, conn, NULL, 180);
|
||
|
fail_unless(res < 0, "Failed to handle null address");
|
||
|
fail_unless(errno == EINVAL, "Expected EINVAL (%d), got %s (%d)", EINVAL,
|
||
|
strerror(errno), errno);
|
||
|
@@ -517,8 +517,8 @@ START_TEST (inet_connect_ipv4_test) {
|
||
|
fail_unless(addr != NULL, "Failed to resolve '127.0.0.1': %s",
|
||
|
strerror(errno));
|
||
|
|
||
|
- res = pr_inet_connect(p, conn, addr, 80);
|
||
|
- fail_unless(res < 0, "Connected to 127.0.0.1#80 unexpectedly");
|
||
|
+ res = pr_inet_connect(p, conn, addr, 180);
|
||
|
+ fail_unless(res < 0, "Connected to 127.0.0.1#180 unexpectedly");
|
||
|
fail_unless(errno == ECONNREFUSED, "Expected ECONNREFUSED (%d), got %s (%d)",
|
||
|
ECONNREFUSED, strerror(errno), errno);
|
||
|
|
||
|
@@ -573,8 +573,8 @@ START_TEST (inet_connect_ipv6_test) {
|
||
|
fail_unless(addr != NULL, "Failed to resolve '::1': %s",
|
||
|
strerror(errno));
|
||
|
|
||
|
- res = pr_inet_connect(p, conn, addr, 80);
|
||
|
- fail_unless(res < 0, "Connected to ::1#80 unexpectedly");
|
||
|
+ res = pr_inet_connect(p, conn, addr, 180);
|
||
|
+ fail_unless(res < 0, "Connected to ::1#180 unexpectedly");
|
||
|
fail_unless(errno == ECONNREFUSED || errno == ENETUNREACH || errno == EADDRNOTAVAIL,
|
||
|
"Expected ECONNREFUSED (%d), ENETUNREACH (%d), or EADDRNOTAVAIL (%d), got %s (%d)",
|
||
|
ECONNREFUSED, ENETUNREACH, EADDRNOTAVAIL, strerror(errno), errno);
|
||
|
@@ -637,7 +637,7 @@ START_TEST (inet_connect_nowait_test) {
|
||
|
conn = pr_inet_create_conn(p, sockfd, NULL, port, FALSE);
|
||
|
fail_unless(conn != NULL, "Failed to create conn: %s", strerror(errno));
|
||
|
|
||
|
- res = pr_inet_connect_nowait(p, conn, NULL, 80);
|
||
|
+ res = pr_inet_connect_nowait(p, conn, NULL, 180);
|
||
|
fail_unless(res < 0, "Failed to handle null address");
|
||
|
fail_unless(errno == EINVAL, "Expected EINVAL (%d), got %s (%d)", EINVAL,
|
||
|
strerror(errno), errno);
|
||
|
@@ -646,8 +646,8 @@ START_TEST (inet_connect_nowait_test) {
|
||
|
fail_unless(addr != NULL, "Failed to resolve '127.0.0.1': %s",
|
||
|
strerror(errno));
|
||
|
|
||
|
- res = pr_inet_connect_nowait(p, conn, addr, 80);
|
||
|
- fail_unless(res != -1, "Connected to 127.0.0.1#80 unexpectedly");
|
||
|
+ res = pr_inet_connect_nowait(p, conn, addr, 180);
|
||
|
+ fail_unless(res != -1, "Connected to 127.0.0.1#180 unexpectedly");
|
||
|
|
||
|
/* Try connecting to Google's DNS server. */
|
||
|
|
||
|
@@ -657,7 +657,8 @@ START_TEST (inet_connect_nowait_test) {
|
||
|
|
||
|
res = pr_inet_connect_nowait(p, conn, addr, 53);
|
||
|
if (res < 0 &&
|
||
|
- errno != ECONNREFUSED) {
|
||
|
+ errno != ECONNREFUSED &&
|
||
|
+ errno != EBADF) {
|
||
|
fail_unless(res != -1, "Failed to connect to 8.8.8.8#53: %s",
|
||
|
strerror(errno));
|
||
|
}
|
||
|
diff --git a/tests/api/pool.c b/tests/api/pool.c
|
||
|
index 8008f1c..d2f4c0d 100644
|
||
|
--- a/tests/api/pool.c
|
||
|
+++ b/tests/api/pool.c
|
||
|
@@ -52,12 +52,17 @@ START_TEST (pool_destroy_pool_test) {
|
||
|
p = make_sub_pool(permanent_pool);
|
||
|
destroy_pool(p);
|
||
|
|
||
|
-#if !defined(PR_USE_DEVEL)
|
||
|
/* What happens if we destroy an already-destroyed pool? Answer: IFF
|
||
|
* --enable-devel was used, THEN destroying an already-destroyed pool
|
||
|
* will result in an exit(2) call from within pool.c, via the
|
||
|
* chk_on_blk_list() function. How impolite.
|
||
|
+ *
|
||
|
+ * And if --enable-devel was NOT used, on SOME systems, this test tickles
|
||
|
+ * other libc/malloc/free behaviors, which are unsettling.
|
||
|
+ *
|
||
|
+ * Sigh. So for now, I'll just leave this here, but commented out.
|
||
|
*/
|
||
|
+#if 0
|
||
|
mark_point();
|
||
|
destroy_pool(p);
|
||
|
#endif
|