diff --git a/t/03-permanent.t b/t/03-permanent.t
index adf3abbbc20e7786f221d0477f6201c56df5ad90..f78a30fa8d19da28aeb63199ff8fa7e9ecd77fc5 100644
--- a/t/03-permanent.t
+++ b/t/03-permanent.t
@@ -1,9 +1,33 @@
 use v5.36;
 use Test::Cmd;
-use Test::More tests =>3;
+use Test::More tests => 4;
 use Test::TA;
+use Archive::Tar;
+use Path::Tiny;
 my $testapp = Test::TA::testapp();
-my $host = Test::TA::testhost();
+my $path_valid = path($testapp->workpath)->child("valid");
+my $path_invalid = path($testapp->workpath)->child("invalid");
+$path_valid->mkdir();
+$path_invalid->mkdir();
+my $tar = Archive::Tar->new();
+my $tarpath = path(__FILE__)->absolute->parent->child("/../testdata.tgz");
+say $tarpath;
+$tar->read($tarpath);
+$tar->setcwd($path_valid);
+$tar->extract();
+$tar->setcwd($path_invalid);
+$tar->extract();
+$path_invalid->visit( # patch files to get invalid bags
+    sub {
+        my ($path, $state) = @_;
+        if ($path =~ m/bag-info.txt$/) {
+            $path->append_utf8("Payload-Oxum: 0.0");
+        }
+        1;
+    },
+        {recurse => 1 }
+);
+
 local $ENV{'HOME'} = $testapp->workpath();
 # tests
 subtest 'help check' => sub {
diff --git a/testdata.tgz b/testdata.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..7214f9ec4fdaee1480d10ee2fe239ae938d700b1
Binary files /dev/null and b/testdata.tgz differ