Browse Source

Add a couple of tests

Eric Andersen 22 years ago
parent
commit
46de710e62
4 changed files with 166 additions and 2 deletions
  1. 9 0
      test/misc/.cvsignore
  2. 86 2
      test/misc/Makefile
  3. 25 0
      test/misc/dirent.c
  4. 46 0
      test/misc/fdopen.c

+ 9 - 0
test/misc/.cvsignore

@@ -1,2 +1,11 @@
 outb
 sem
+fdopen
+dirent
+dirent.out
+dirent_glibc
+dirent_glibc.out
+dirent64
+dirent64.out
+dirent64_glibc
+dirent64_glibc.out

+ 86 - 2
test/misc/Makefile

@@ -19,7 +19,9 @@
 TESTDIR=../
 include $(TESTDIR)/Rules.mak
 
-TARGETS=sem outb
+CFLAGS64=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+
+TARGETS=sem fdopen dirent_diff dirent64_diff #outb
 all: $(TARGETS)
 
 outb: outb.c ../testsuite.h Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(CC)
@@ -44,7 +46,89 @@ sem: sem.c Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(CC)
 	-./$@
 	-@ echo " "
 
+fdopen: fdopen.c Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(CC)
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Compiling vs uClibc: "
+	-@ echo " "
+	$(CC) $(CFLAGS) -c $< -o $@.o
+	$(CC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LIBS)
+	$(STRIPTOOL) -x -R .note -R .comment $@
+	-./$@
+	-@ echo " "
+
+dirent_source:
+	-@ rm -f $(TARGETS)
+	-@ echo "-------"
+	-@ echo "dirent.c source: "
+	-@ echo " "
+	-@ cat dirent.c
+	-@ echo " "
+
+dirent: dirent.c Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(CC)
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Compiling vs uClibc: "
+	-@ echo " "
+	$(CC) $(CFLAGS) -c $< -o $@.o
+	$(CC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LIBS)
+	$(STRIPTOOL) -x -R .note -R .comment $@
+	-./$@ dirent.c > $@.out
+	-@ echo " "
+
+dirent_glibc: dirent.c Makefile
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Compiling vs GNU libc: "
+	-@ echo " "
+	$(HOSTCC) $(GLIBC_CFLAGS) -c $< -o $@.o
+	$(HOSTCC) $(GLIBC_LDFLAGS) $@.o -o $@
+	$(STRIPTOOL) -x -R .note -R .comment $@
+	-./$@ dirent.c > $@.out
+	-@ echo " "
+
+dirent_diff: dirent dirent_glibc
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Diffing dirent output: "
+	-@ echo " "
+	-diff -u dirent_glibc.out dirent.out
+	-@ echo " "
+
+dirent64: dirent.c Makefile $(TESTDIR)/Config $(TESTDIR)/Rules.mak $(CC)
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Compiling vs uClibc: "
+	-@ echo " "
+	$(CC) $(CFLAGS) $(CFLAGS64) -c $< -o $@.o
+	$(CC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LIBS)
+	$(STRIPTOOL) -x -R .note -R .comment $@
+	-./$@ dirent.c > $@.out
+	-@ echo " "
+
+dirent64_glibc: dirent.c Makefile
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Compiling vs GNU libc: "
+	-@ echo " "
+	$(HOSTCC) $(GLIBC_CFLAGS) $(CFLAGS64) -c $< -o $@.o
+	$(HOSTCC) $(GLIBC_LDFLAGS) $@.o -o $@
+	$(STRIPTOOL) -x -R .note -R .comment $@
+	-./$@ dirent.c > $@.out
+	-@ echo " "
+
+dirent64_diff: dirent64 dirent64_glibc
+	-@ echo "-------"
+	-@ echo " "
+	-@ echo "Diffing dirent64 output: "
+	-@ echo " "
+	-diff -u dirent64_glibc.out dirent64.out
+	-@ echo " "
+
 clean:
-	rm -f *.[oa] *~ core $(TARGETS)
+	rm -f *.[oa] *~ core dirent dirent_glibc dirent_glibc.out dirent.out \
+		dirent64 dirent64_glibc dirent64_glibc.out dirent64.out \
+		outb sem fdopen
+
 
 

+ 25 - 0
test/misc/dirent.c

@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <dirent.h>
+
+int main(int argc, char **argv)
+{
+
+    DIR *dirh;
+    struct dirent *dirp;
+    static char mydir[20] = "/tmp";
+
+    if ((dirh = opendir(mydir)) == NULL) {
+	perror("opendir");
+	return 1;
+    }
+
+    for (dirp = readdir(dirh); dirp != NULL; dirp = readdir(dirh)) {
+	printf("Got dir entry: %s\n",dirp->d_name);
+    }
+
+    closedir(dirh);
+    return 0;
+}
+

+ 46 - 0
test/misc/fdopen.c

@@ -0,0 +1,46 @@
+/* Test for fdopen bugs.  */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#define assert(x) \
+  if (!(x)) \
+    { \
+      fputs ("test failed: " #x "\n", stderr); \
+      retval = 1; \
+      goto the_end; \
+    }
+
+char buffer[256];
+
+int
+main (int argc, char *argv[])
+{
+  char *name;
+  FILE *fp = NULL;
+  int retval = 0;
+  int fd;
+
+  name = tmpnam (NULL);
+  fp = fopen (name, "w");
+  assert (fp != NULL)
+  fputs ("foobar and baz", fp);
+  fclose (fp);
+  fp = NULL;
+
+  fd = open (name, O_RDWR|O_CREAT);
+  assert (fd != -1);
+  assert (lseek (fd, 5, SEEK_SET) == 5);
+
+  fp = fdopen (fd, "a");
+  assert (fp != NULL);
+  assert (ftell (fp) == 14);
+
+the_end:
+  if (fp != NULL)
+    fclose (fp);
+  unlink (name);
+
+  return retval;
+}