Browse Source

chdir regression test

Now it uses /tmp and cleans the test directory tree if it fails.

Change-Id: I974f52751f284c4587f5e6e979598c07b7d12c65
Signed-off-by: Rafael Fernandez <rafael.fernandez@taisis.com>
Rafael Fernandez 8 years ago
parent
commit
1a90094fbc
2 changed files with 56 additions and 1 deletions
  1. 55 0
      sys/src/regress/chdir.c
  2. 1 1
      sys/src/regress/regress.json

+ 55 - 0
sys/src/regress/chdir.c

@@ -0,0 +1,55 @@
+#include <u.h>
+#include <libc.h>
+
+void check(int, char*);
+void checkDir(int, char *);
+void rmdir(char *);
+void clean();
+
+
+void
+main(){
+	check(chdir("/tmp"), "/tmp");
+	checkDir(create("A", OREAD, DMDIR | 0777), "A");
+	check(chdir("A"), "A");
+	checkDir(create("B", OREAD, DMDIR | 0777), "B");
+	checkDir(create("C", OREAD, DMDIR | 0777), "C");
+	check(chdir("B"), "B");
+	check(chdir(".."), "..");
+	remove("B");
+	check(chdir("C"), "C");
+	check(chdir(".."), "..");
+	remove("C");
+	check(chdir(".."), "..");
+	remove("A");
+	print("PASS\n");
+	exits("PASS");
+}
+
+void
+check(int r, char *d){
+	if(r<0){
+		print("chdir(\"%s\") Err: '%r'\n", d);
+		clean();
+		print("FAIL\n");
+		exits("FAIL");
+	}
+}
+
+void
+checkDir(int r, char *d){
+	if(r<0){
+		print("Error creating dir '%s'\n", d);
+		clean();
+		print("FAIL\n");
+		exits("FAIL");
+	}
+}
+
+void
+clean() {
+	chdir("/tmp");
+	remove("A/B");
+	remove("A/C");
+	remove("A");
+}

+ 1 - 1
sys/src/regress/regress.json

@@ -7,7 +7,7 @@
 		"SourceFilesCmd": [
 			"alarm.c",
 			"args.c",
-			"awake.c",
+			"chdir.c",
 			"conswrite.c",
 			"execl.c",
 			"float.c",