diff options
author | rsc <rsc> | 2007-08-10 17:53:09 +0000 |
---|---|---|
committer | rsc <rsc> | 2007-08-10 17:53:09 +0000 |
commit | 5e03dd86c8de6180ddbddb16974e5af1a010f60b (patch) | |
tree | 60ff85eb84a7fbf124cc17e6ae0bc92d8a50bbc4 | |
parent | 15b326b630d7b52321b0bdaa3af82415a0e3c110 (diff) | |
download | xv6-labs-5e03dd86c8de6180ddbddb16974e5af1a010f60b.tar.gz xv6-labs-5e03dd86c8de6180ddbddb16974e5af1a010f60b.tar.bz2 xv6-labs-5e03dd86c8de6180ddbddb16974e5af1a010f60b.zip |
add test for rm .
-rw-r--r-- | BUGS | 3 | ||||
-rw-r--r-- | usertests.c | 41 |
2 files changed, 41 insertions, 3 deletions
@@ -31,9 +31,6 @@ sysfile.c: general: sizeof parens? -usertests.c: - check for rm of . or .. - L=$HOME/mit/l (for i in *.c; do xoc -x xgnu -x ./nodecleq.zeta --typesonly $i; done) 2>&1 | grep warning diff --git a/usertests.c b/usertests.c index a449ed0..59cb0b3 100644 --- a/usertests.c +++ b/usertests.c @@ -984,6 +984,7 @@ fourteen(void) { int fd; + // DIRSIZ is 14. printf(1, "fourteen test\n"); if(mkdir("12345678901234") != 0){ @@ -1019,6 +1020,45 @@ fourteen(void) printf(1, "fourteen ok\n"); } +void +rmdot(void) +{ + printf(1, "rmdot test\n"); + if(mkdir("dots") != 0){ + printf(1, "mkdir dots failed\n"); + exit(); + } + if(chdir("dots") != 0){ + printf(1, "chdir dots failed\n"); + exit(); + } + if(unlink(".") == 0){ + printf(1, "rm . worked!\n"); + exit(); + } + if(unlink("..") == 0){ + printf(1, "rm .. worked!\n"); + exit(); + } + if(chdir("/") != 0){ + printf(1, "chdir / failed\n"); + exit(); + } + if(unlink("dots/.") == 0){ + printf(1, "unlink dots/. worked!\n"); + exit(); + } + if(unlink("dots/..") == 0){ + printf(1, "unlink dots/.. worked!\n"); + exit(); + } + if(unlink("dots") != 0){ + printf(1, "unlink dots failed!\n"); + exit(); + } + printf(1, "rmdot ok\n"); +} + int main(int argc, char *argv[]) { @@ -1040,6 +1080,7 @@ main(int argc, char *argv[]) preempt(); exitwait(); + rmdot(); fourteen(); bigfile(); subdir(); |