test: Add open-read test.
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jun 2019 19:55:44 +0000 (21:55 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 26 Jun 2019 19:55:44 +0000 (21:55 +0200)
* build-aux/test-c.sh: Support running by hand.
* lib/tests/posix/50-open-read.c: New test.
* lib/tests/posix/data/open-read: New file.
* build-aux/check-mescc.sh (TESTS): Add it.

build-aux/check-mescc.sh
build-aux/test-c.sh
lib/tests/posix/50-open-read.c [new file with mode: 0644]
lib/tests/posix/data/open-read [new file with mode: 0644]

index 578346cdb14f0f69d4d108282dddda1dfd44347d..0a18efd7011e5a1505df25caa87213adc1a7d688 100755 (executable)
@@ -105,6 +105,7 @@ lib/tests/stdlib/50-malloc.c
 lib/tests/string/50-strcmp.c
 lib/tests/string/50-strcpy.c
 lib/tests/string/50-strncmp.c
+lib/tests/posix/50-open-read.c
 lib/tests/scaffold/51-pointer-sub.c
 lib/tests/scaffold/54-argc.c
 lib/tests/scaffold/54-argv.c
index 03a886650196135222046a1e55ed7e11a22893f8..0363df4691ac6529d29620175bc9d21052f78877 100755 (executable)
 
 set -e
 
+if test -z "$config_sh"; then
+    . ./config.sh
+fi
+
 if [ "$V" = 2 ]; then
     set -x
 fi
@@ -29,7 +33,7 @@ b=$(dirname "$t")/$(basename "$t" .c)
 o="$b"
 o=lib/tests/${b#*lib/tests/}
 if [ "$o" = "$b" ]; then
-    o=$(basename "$t" .c)
+    o=./$(basename "$t" .c)
 fi
 
 rm -f "$o"
diff --git a/lib/tests/posix/50-open-read.c b/lib/tests/posix/50-open-read.c
new file mode 100644 (file)
index 0000000..2b955b0
--- /dev/null
@@ -0,0 +1,54 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of GNU Mes.
+ *
+ * GNU Mes is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * GNU Mes is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <mes/lib.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+int
+main (int argc, char const *argv[])
+{
+  eputs ("test:getenv\n");
+  char file_name[PATH_MAX];
+  char *srcdir = getenv ("srcdir");
+  if (!srcdir)
+    return 1;
+  strcpy (file_name, srcdir);
+  strcpy (file_name + strlen (srcdir), "/lib/tests/posix/data/open-read");
+  eputs ("test open:");
+  eputs (file_name);
+  eputs ("\n");
+  int filedes = open (file_name, 0, 0);
+  if (filedes <= 2)
+    return 2;
+  char buf[20];
+  int n = read (filedes, buf, sizeof (buf));
+  if (n != 5)
+    return 3;
+  if (strcmp (buf, "hello"))
+    return 4;
+  eputs ("test read: ");
+  eputs (buf);
+  eputs ("\n");
+  return 0;
+}
diff --git a/lib/tests/posix/data/open-read b/lib/tests/posix/data/open-read
new file mode 100644 (file)
index 0000000..b6fc4c6
--- /dev/null
@@ -0,0 +1 @@
+hello
\ No newline at end of file