mescc: Mes C Library: Start test suite.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 24 Feb 2019 08:39:00 +0000 (09:39 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 24 Feb 2019 08:39:00 +0000 (09:39 +0100)
TODO: move strict libc tests from scaffold/test/* here.

* lib/tests/stdlib/getenv.c: New file.
* lib/tests/stdlib/malloc.c: Move from scaffold.
* build-aux/bootstrap.sh.in: Built them.
* build-aux/build-mes.sh: Likewise.

.gitignore
build-aux/bootstrap.sh.in
build-aux/build-mes.sh
lib/tests/stdlib/getenv.c [new file with mode: 0644]
lib/tests/stdlib/malloc.c [new file with mode: 0644]
scaffold/lib/stdlib/malloc.c [new file with mode: 0644]
scaffold/malloc.c [deleted file]

index 55b00357cc2820b509e3f5aff40c8afca0b0a418..857044477da1d9fedaf0bca0ec0107539e6e1288 100644 (file)
@@ -65,7 +65,6 @@
 /scaffold/argv
 /scaffold/hello
 /scaffold/main
-/scaffold/malloc
 /scaffold/micro-mes
 /scaffold/tiny-mes
 /scaffold/mini-mes
index ca1ece6ff85b6e62fed059cd4ea06a823f8d5bda..e87ec4c56d502b95265fa64cf32eb1c739bbd2e0 100644 (file)
@@ -51,9 +51,9 @@ mv lib/libc+gnu.x86-mes-o lib/x86-mes/libc+gnu.o
 
 @GUILE@ -e main -L module scripts/mescc.scm -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/x86-mes-argv scaffold/argv.x86-mes-o -l c-mini
 
-@GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/malloc.x86-mes-o scaffold/malloc.c
+@GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o lib/tests/stdlib/malloc.x86-mes-o lib/tests/stdlib/malloc.c
 
-@GUILE@ -e main -L module scripts/mescc.scm -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/x86-mes-malloc scaffold/malloc.x86-mes-o -l c
+@GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o lib/tests/stdlib/getenv.x86-mes-o lib/tests/stdlib/getenv.c
 
 @GUILE@ -e main -L module scripts/mescc.scm -c -D 'VERSION="@VERSION@"' -D 'MODULEDIR="@moduledir@"' -D 'PREFIX="@prefix@"' -I . -I lib -I include -v -g -L lib/linux/x86-mes -L lib/linux -L lib/x86-mes -L lib -L @MES_SEED@ -o scaffold/micro-mes.x86-mes-o scaffold/micro-mes.c
 
index ff19ec1200a17486f1e6dd1b00eac66627fa44ff..c0b2857bd397f8bcd4b7ecac2e308b0d392ba682 100755 (executable)
@@ -69,10 +69,16 @@ compile scaffold/hello
 compile scaffold/argv
 (libc="-l c-mini" link scaffold/argv)
 
-[ "$mes_p" ] && compile scaffold/malloc
-[ "$mes_p" ] && link scaffold/malloc
+[ "$mes_p" ] && compile lib/tests/stdlib/malloc
+[ "$mes_p" ] && link lib/tests/stdlib/malloc
+
+[ "$mes_p" ] && compile lib/tests/stdlib/getenv
+[ "$mes_p" ] && link lib/tests/stdlib/getenv
+
+
 [ "$mes_p" ] && compile scaffold/micro-mes
 [ "$mes_p" ] && link scaffold/micro-mes
+
 [ "$mes_p" ] && compile scaffold/tiny-mes
 [ "$mes_p" ] && link scaffold/tiny-mes
 #[ "$mes_p" ] && compile scaffold/mini-mes
diff --git a/lib/tests/stdlib/getenv.c b/lib/tests/stdlib/getenv.c
new file mode 100644 (file)
index 0000000..4013079
--- /dev/null
@@ -0,0 +1,38 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2018 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 "libmes.h"
+#include "string.h"
+#include "stdlib.h"
+#define strlen xstrlen
+#define strncmp xstrncmp
+#define getenv xgetenv
+#include "lib/string/strlen.c"
+#include "lib/string/strncmp.c"
+#include "lib/stdlib/getenv.c"
+
+int
+main (int argc, char const *argv[])
+{
+  eputs ("test:getenv\n");
+  if (getenv ("SHELL") == 0)
+    return 1;
+  return 0;
+}
diff --git a/lib/tests/stdlib/malloc.c b/lib/tests/stdlib/malloc.c
new file mode 100644 (file)
index 0000000..4d022d1
--- /dev/null
@@ -0,0 +1,57 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2016,2017 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/>.
+ */
+
+#if POSIX
+#error "POSIX not supported"
+#endif
+
+#include <libmes.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main (int argc, char *argv[])
+{
+  int size = 5000;
+  oputs ("m!\n");
+  //int *p = 0;
+  char *p = 0;
+  p = malloc (size);
+  size = 5000;
+  oputs ("p=");
+  oputs (itoa (p));
+  oputs ("\n");
+  int i;
+  for (i = 0; i < size; i=i+1)
+    {
+      oputs ("set ");
+      oputs (itoa (i));
+      oputs ("\n");
+      p[i] = i;
+    }
+  for (i = 0; i < size; i=i+1)
+    {
+      oputs (itoa (i));
+      oputs (": ");
+      oputs (itoa (p[i]));
+      oputs ("\n");
+    }
+  return 0;
+}
diff --git a/scaffold/lib/stdlib/malloc.c b/scaffold/lib/stdlib/malloc.c
new file mode 100644 (file)
index 0000000..6491fd9
--- /dev/null
@@ -0,0 +1,56 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2016,2017 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/>.
+ */
+
+#if POSIX
+#error "POSIX not supported"
+#endif
+
+#include <libmes.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main (int argc, char *argv[])
+{
+  int size = 5000;
+  puts ("m!\n");
+  //int *p = 0;
+  char *p = 0;
+  p = malloc (size);
+  size = 5000;
+  puts ("p=");
+  puts (itoa (p));
+  puts ("\n");
+  for (int i = 0; i < size; i++)
+    {
+      puts ("set ");
+      puts (itoa (i));
+      puts ("\n");
+      p[i] = i;
+    }
+  for (int i = 0; i < size; i++)
+    {
+      puts (itoa (i));
+      puts (": ");
+      puts (itoa (p[i]));
+      puts ("\n");
+    }
+  return 0;
+}
diff --git a/scaffold/malloc.c b/scaffold/malloc.c
deleted file mode 100644 (file)
index 6491fd9..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*-comment-start: "//";comment-end:""-*-
- * GNU Mes --- Maxwell Equations of Software
- * Copyright © 2016,2017 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/>.
- */
-
-#if POSIX
-#error "POSIX not supported"
-#endif
-
-#include <libmes.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int
-main (int argc, char *argv[])
-{
-  int size = 5000;
-  puts ("m!\n");
-  //int *p = 0;
-  char *p = 0;
-  p = malloc (size);
-  size = 5000;
-  puts ("p=");
-  puts (itoa (p));
-  puts ("\n");
-  for (int i = 0; i < size; i++)
-    {
-      puts ("set ");
-      puts (itoa (i));
-      puts ("\n");
-      p[i] = i;
-    }
-  for (int i = 0; i < size; i++)
-    {
-      puts (itoa (i));
-      puts (": ");
-      puts (itoa (p[i]));
-      puts ("\n");
-    }
-  return 0;
-}