]> git.ipfire.org Git - thirdparty/libbsd.git/commitdiff
test: Refactor stream testing functions into a new module
authorGuillem Jover <guillem@hadrons.org>
Tue, 22 Sep 2015 18:56:15 +0000 (20:56 +0200)
committerGuillem Jover <guillem@hadrons.org>
Wed, 23 Sep 2015 05:59:34 +0000 (07:59 +0200)
test/Makefile.am
test/fgetln.c
test/test-stream.c [new file with mode: 0644]
test/test-stream.h [new file with mode: 0644]

index 0f5ff4e8e315ecedbd35a54ae6e647b82d040bed..b92aeeb0ffcdc060b2bf48caaee55577374af252 100644 (file)
@@ -25,6 +25,8 @@ if BUILD_LIBBSD_CTOR
 check_PROGRAMS += proctitle
 endif
 
+fgetln_SOURCES = test-stream.c test-stream.h fgetln.c
+
 proctitle_init_SOURCES = proctitle.c
 proctitle_init_CPPFLAGS = $(AM_CPPFLAGS) -DTEST_USE_SETPROCTITLE_INIT=1
 
index d3814d8667901cd07189c4b2e392848eecbb0011..7d1e9dc3961f8e006397e057315aceb5a7b81144 100644 (file)
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <sys/wait.h>
 #include <assert.h>
-#include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <locale.h>
 #include <wchar.h>
 
+#include "test-stream.h"
+
 #define skip(msg) \
        do { \
                printf("skip: %s\n", (msg)); \
@@ -67,58 +67,6 @@ struct file {
        int got_len;
 };
 
-static FILE *
-pipe_feed(const char *fmt, const void **buf, int buf_nmemb)
-{
-       FILE *fp;
-       int rc;
-       int pipefd[2];
-       pid_t pid;
-
-       rc = pipe(pipefd);
-       assert(rc >= 0);
-
-       pid = fork();
-       assert(pid >= 0);
-
-       if (pid == 0) {
-               int line;
-
-               /* Child writes data to pipe. */
-               rc = close(pipefd[0]);
-               assert(rc >= 0);
-
-               fp = fdopen(pipefd[1], "w");
-               assert(fp);
-
-               for (line = 0; line < buf_nmemb; line++) {
-                       rc = fprintf(fp, fmt, buf[line]);
-                       assert(rc >= 0);
-               }
-
-               rc = fclose(fp);
-               assert(rc >= 0);
-
-               _exit(0);
-       } else {
-               /* Parent gets a FILE and reads from it. */
-               rc = close(pipefd[1]);
-               assert(rc >= 0);
-
-               fp = fdopen(pipefd[0], "r");
-               assert(fp);
-
-               return fp;
-       }
-}
-
-static void
-pipe_close(FILE *fp)
-{
-       fclose(fp);
-       wait(NULL);
-}
-
 static void
 test_fgetln_single(void)
 {
diff --git a/test/test-stream.c b/test/test-stream.c
new file mode 100644 (file)
index 0000000..849f419
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright © 2013 Guillem Jover <guillem@hadrons.org>
+ *
+ * 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 name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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 <sys/wait.h>
+#include <assert.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#include "test-stream.h"
+
+FILE *
+pipe_feed(const char *fmt, const void **buf, int buf_nmemb)
+{
+       FILE *fp;
+       int rc;
+       int pipefd[2];
+       pid_t pid;
+
+       rc = pipe(pipefd);
+       assert(rc >= 0);
+
+       pid = fork();
+       assert(pid >= 0);
+
+       if (pid == 0) {
+               int line;
+
+               /* Child writes data to pipe. */
+               rc = close(pipefd[0]);
+               assert(rc >= 0);
+
+               fp = fdopen(pipefd[1], "w");
+               assert(fp);
+
+               for (line = 0; line < buf_nmemb; line++) {
+                       rc = fprintf(fp, fmt, buf[line]);
+                       assert(rc >= 0);
+               }
+
+               rc = fclose(fp);
+               assert(rc >= 0);
+
+               _exit(0);
+       } else {
+               /* Parent gets a FILE and reads from it. */
+               rc = close(pipefd[1]);
+               assert(rc >= 0);
+
+               fp = fdopen(pipefd[0], "r");
+               assert(fp);
+
+               return fp;
+       }
+}
+
+void
+pipe_close(FILE *fp)
+{
+       fclose(fp);
+       wait(NULL);
+}
diff --git a/test/test-stream.h b/test/test-stream.h
new file mode 100644 (file)
index 0000000..cee4e60
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright © 2013 Guillem Jover <guillem@hadrons.org>
+ *
+ * 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 name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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.
+ */
+
+#ifndef LIBBSD_TEST_STREAM
+#define LIBBSD_TEST_STREAM
+
+#include <stdio.h>
+
+FILE *
+pipe_feed(const char *fmt, const void **buf, int buf_nmemb);
+void
+pipe_close(FILE *fp);
+
+#endif