fix(ci): recover directory cache entries

This commit is contained in:
XxJSONDeruloxX committed 2026-10-23 16:20:42 -04:00
1 parent 9835c4e3e1
commit c95e114766
2 files changed
+22

No files matched your search

+3
View File
@@ -22,6 +22,9 @@ else
curl -fsSL --retry 4 --retry-all-errors --connect-timeout 15 --max-time 180 --retry-max-time 240 \
-o "$part" "$url"
verify "$part" || { echo "Checksum mismatch for $url" >&2; exit 1; }
if [ -d "$kept" ]; then
rm -rf -- "$kept"
fi
mv -f "$part" "$kept"
echo "Downloaded and verified pack input: $expected"
fi
+19
View File
@@ -51,6 +51,25 @@ class PackDownloadsTest(unittest.TestCase):
self.assertEqual(len(self.log.read_text().splitlines()), 2)
self.assertEqual((self.cache / self.checksum).read_bytes(), b'verified input')
def test_directory_cache_entry_is_replaced_only_after_verification(self):
entry = self.cache / self.checksum
entry.mkdir()
sentinel = entry / 'old-entry'
sentinel.write_bytes(b'preserve until verified')
self.remote.write_bytes(b'tampered download')
self.assertNotEqual(self.fetch().returncode, 0)
self.assertEqual(sentinel.read_bytes(), b'preserve until verified')
self.assertFalse(self.destination.exists())
self.remote.write_bytes(b'verified input')
result = self.fetch()
self.assertEqual(result.returncode, 0, result.stderr)
self.assertTrue(entry.is_file())
self.assertEqual(entry.read_bytes(), b'verified input')
self.assertEqual(self.destination.read_bytes(), b'verified input')
self.assertEqual(list(self.cache.iterdir()), [entry])
self.assertEqual(self.fetch().returncode, 0)
self.assertEqual(len(self.log.read_text().splitlines()), 2)
def test_changed_pin_cannot_reuse_old_bytes(self):
self.assertEqual(self.fetch().returncode, 0)
self.remote.write_bytes(b'new approved input')