a.addfile(l)
             return name
 
-        with tarfile.open(tar_path,mode="a") as a:
-            checkme = \
-                [ add_symlink(a, "symlinks/foo", "internal-file")
-                , add_symlink(a, "symlinks/bar", "/absolute/path")
-                , add_symlink(a, "symlinks/baz", "../parent/../../paths") ]
+        try:
+            with tarfile.open(tar_path,mode="a") as a:
+                checkme = \
+                    [ add_symlink(a, "symlinks/foo", "internal-file")
+                    , add_symlink(a, "symlinks/bar", "/absolute/path")
+                    , add_symlink(a, "symlinks/baz", "../parent/../../paths") ]
+        except tarfile.ReadError as e:
+            if self.MODE == '#' or self.MODE.endswith ("gz"):
+                checkme = []
+            else:
+                raise
+        except ValueError as e:
+            if self.MODE.startswith ('#'):
+                checkme = []
+            else:
+                raise
 
         deltatar.restore_backup(target_path="source_dir",
                                 backup_tar_path=tar_path)
         This simulates a symlink attack with a link pointing to some external
         path that is abused to write outside the extraction prefix.
         '''
-
         password, paramversion = self.ENCRYPTION or (None, None)
         deltatar = DeltaTar(mode=self.MODE, password=password,
                             crypto_paramversion=paramversion,
         testpath = "symlinks/pernicious-link"
         testdst = "/tmp/does/not/exist"
 
-        with tarfile.open(tar_path,mode="w") as a:
-            add_symlink(a, testpath, testdst)
-            add_symlink(a, testpath, testdst+"X")
-            add_symlink(a, testpath, testdst+"XXX")
-            add_file(a, testpath)
+        try:
+            with tarfile.open(tar_path, mode="a") as a:
+                add_symlink(a, testpath, testdst)
+                add_symlink(a, testpath, testdst+"X")
+                add_symlink(a, testpath, testdst+"XXX")
+                add_file(a, testpath)
+        except tarfile.ReadError as e:
+            if self.MODE == '#' or self.MODE.endswith ("gz"):
+                pass
+            else:
+                raise
+        except ValueError as e:
+            if self.MODE.startswith ('#'):
+                pass # O_APPEND of concat archives not feasible
+            else:
+                raise
 
         deltatar.restore_backup(target_path="source_dir",
                                 backup_tar_path=tar_path)