]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
On Windows, make sure not to leave empty directories
authorMichihiro NAKAJIMA <ggcueroad@gmail.com>
Fri, 18 Dec 2009 16:33:36 +0000 (11:33 -0500)
committerMichihiro NAKAJIMA <ggcueroad@gmail.com>
Fri, 18 Dec 2009 16:33:36 +0000 (11:33 -0500)
when tests are success.

SVN-Revision: 1761

cpio/test/main.c
libarchive/test/main.c
tar/test/main.c

index c37c0746e78dffcfdea0a513112dbacb8ffbfd64..f40f38db0fa86c69a109149bed2d94bef5b7ecee 100644 (file)
@@ -1707,7 +1707,19 @@ test_run(int i, const char *tmpdir)
        if (tests[i].failures == 0) {
                if (!keep_temp_files && assertChdir(tmpdir)) {
 #if defined(_WIN32) && !defined(__CYGWIN__)
-                       systemf("rmdir /S /Q %s", tests[i].name);
+                       /* Make sure not to leave empty directories.
+                        * Sometimes a processing of closing files used by tests
+                        * is not done, then rmdir will be failed and it will
+                        * leave a empty test directory. So we should wait a few
+                        * seconds and retry rmdir. */
+                       int r, t;
+                       for (t = 0; t < 10; t++) {
+                               if (t > 0)
+                                       Sleep(1000);
+                               r = systemf("rmdir /S /Q %s", tests[i].name);
+                               if (r == 0)
+                                       break;
+                       }
                        systemf("del %s", logfilename);
 #else
                        systemf("rm -rf %s", tests[i].name);
index b35cc23498a22a266fc12570fde887782978ecb3..0c4e2f7749d0927a7b8d8f15870e4283facfc961 100644 (file)
@@ -1703,7 +1703,19 @@ test_run(int i, const char *tmpdir)
        if (tests[i].failures == 0) {
                if (!keep_temp_files && assertChdir(tmpdir)) {
 #if defined(_WIN32) && !defined(__CYGWIN__)
-                       systemf("rmdir /S /Q %s", tests[i].name);
+                       /* Make sure not to leave empty directories.
+                        * Sometimes a processing of closing files used by tests
+                        * is not done, then rmdir will be failed and it will
+                        * leave a empty test directory. So we should wait a few
+                        * seconds and retry rmdir. */
+                       int r, t;
+                       for (t = 0; t < 10; t++) {
+                               if (t > 0)
+                                       Sleep(1000);
+                               r = systemf("rmdir /S /Q %s", tests[i].name);
+                               if (r == 0)
+                                       break;
+                       }
                        systemf("del %s", logfilename);
 #else
                        systemf("rm -rf %s", tests[i].name);
index 19391eb97eb4c5b8febfe744ee1e64bd09417e6b..cbf453c56b44de4d78e73358bb5802be7d235857 100644 (file)
@@ -1708,7 +1708,19 @@ test_run(int i, const char *tmpdir)
        if (tests[i].failures == 0) {
                if (!keep_temp_files && assertChdir(tmpdir)) {
 #if defined(_WIN32) && !defined(__CYGWIN__)
-                       systemf("rmdir /S /Q %s", tests[i].name);
+                       /* Make sure not to leave empty directories.
+                        * Sometimes a processing of closing files used by tests
+                        * is not done, then rmdir will be failed and it will
+                        * leave a empty test directory. So we should wait a few
+                        * seconds and retry rmdir. */
+                       int r, t;
+                       for (t = 0; t < 10; t++) {
+                               if (t > 0)
+                                       Sleep(1000);
+                               r = systemf("rmdir /S /Q %s", tests[i].name);
+                               if (r == 0)
+                                       break;
+                       }
                        systemf("del %s", logfilename);
 #else
                        systemf("rm -rf %s", tests[i].name);