]> git.ipfire.org Git - thirdparty/snapper.git/commitdiff
- extended testsuite
authorArvin Schnell <aschnell@suse.de>
Fri, 20 May 2011 13:19:41 +0000 (15:19 +0200)
committerArvin Schnell <aschnell@suse.de>
Fri, 20 May 2011 13:19:41 +0000 (15:19 +0200)
snapper/File.cc
testsuite-real/.gitignore
testsuite-real/Makefile.am
testsuite-real/owner3.cc [new file with mode: 0644]
testsuite-real/run-all

index 65866b527a9189e7b7cc8714bc698f4e170086c8..68fccaf56414b9ad2fa30f81f9bf8bf7662843a8 100644 (file)
@@ -533,7 +533,13 @@ namespace snapper
                                unlink(getAbsolutePath(LOC_SYSTEM).c_str());
                                string tmp;
                                readlink(getAbsolutePath(LOC_PRE), tmp);
-                               symlink(tmp, getAbsolutePath(LOC_SYSTEM));
+                               if (symlink(tmp, getAbsolutePath(LOC_SYSTEM)) != 0)
+                               {
+                                   y2err("symlink failed path:" << getAbsolutePath(LOC_SYSTEM) <<
+                                         " errno:" << errno);
+                                   error = true;
+                               }
+                               lchown(getAbsolutePath(LOC_SYSTEM).c_str(), fs.st_uid, fs.st_gid);
                            } break;
                        }
                    }
index c0e935922b1a76630fc0ea848014d0da72a57381..1d27f1876ff81d3ea009263c32a15965865c51dc 100644 (file)
@@ -4,6 +4,7 @@ permissions1
 permissions2
 owner1
 owner2
+owner3
 missing-directory1
 error1
 error2
index 2acf42fd464f5d472c46b437777350b21a6d99a2..8afc780aa32f17503272aca82eedae9d12a0a287 100644 (file)
@@ -10,7 +10,7 @@ LDADD = ../snapper/libsnapper.la
 
 noinst_SCRIPTS = run-all
 
-noinst_PROGRAMS = simple1 permissions1 permissions2 owner1 owner2      \
+noinst_PROGRAMS = simple1 permissions1 permissions2 owner1 owner2 owner3       \
        missing-directory1 error1 error2 error3 error4
 
 simple1_SOURCES = simple1.cc common.h common.cc
@@ -20,6 +20,7 @@ permissions2_SOURCES = permissions2.cc common.h common.cc
 
 owner1_SOURCES = owner1.cc common.h common.cc
 owner2_SOURCES = owner2.cc common.h common.cc
+owner3_SOURCES = owner3.cc common.h common.cc
 
 missing_directory1_SOURCES = missing-directory1.cc common.h common.cc
 
diff --git a/testsuite-real/owner3.cc b/testsuite-real/owner3.cc
new file mode 100644 (file)
index 0000000..1b1c832
--- /dev/null
@@ -0,0 +1,35 @@
+
+#include <stdlib.h>
+#include <iostream>
+
+#include "common.h"
+
+using namespace std;
+
+
+int
+main()
+{
+    setup();
+
+    run_command("ln --symbolic test1 link");
+    run_command("chown --no-dereference nobody link");
+
+    first_snapshot();
+
+    run_command("rm link");
+    run_command("ln --symbolic test2 link");
+    run_command("chown --no-dereference nobody link");
+
+    second_snapshot();
+
+    check_rollback_statistics(0, 1, 0);
+
+    rollback();
+
+    check_rollback_errors(0, 0, 0);
+
+    check_first();
+
+    exit(EXIT_SUCCESS);
+}
index 5514c5cb640edd670eef788886c4b6a7521641e7..805ef8e5d99a7b106ab6c1ed3a075cc51ebd655e 100755 (executable)
@@ -25,6 +25,7 @@ run permissions2
 
 run owner1
 run owner2
+run owner3
 
 run missing-directory1