From df5313187138ee7fbb770e6b45ece072bc292006 Mon Sep 17 00:00:00 2001 From: "Molecule AI Dev Engineer A (Kimi)" Date: Wed, 10 Jun 2026 23:01:36 +0000 Subject: [PATCH] test(provisioner): assert VolumeRemove NOT called on failed copy (data-loss guard #2490) The existing TestMigrateVolumeIfNeeded_CopyFails_PreservesLegacy checked that the legacy volume still exists in the fake client's map, but did not explicitly verify that VolumeRemove(legacyName) was never invoked. Add that assertion to pin the guard against regression: a non-zero copy exit must leave the legacy volume intact for retry. Refs #2490 --- .../internal/provisioner/provisioner_migrate_test.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/workspace-server/internal/provisioner/provisioner_migrate_test.go b/workspace-server/internal/provisioner/provisioner_migrate_test.go index c0be63be..dccf9fea 100644 --- a/workspace-server/internal/provisioner/provisioner_migrate_test.go +++ b/workspace-server/internal/provisioner/provisioner_migrate_test.go @@ -324,6 +324,14 @@ func TestMigrateVolumeIfNeeded_CopyFails_PreservesLegacy(t *testing.T) { if _, ok := cli.volumes[legacyName]; !ok { t.Fatal("legacy volume must be preserved when migration copy fails (data-loss guard)") } + + // VolumeRemove must NOT have been called — the guard is that we return + // before cleanup, leaving the legacy volume intact for retry. + for _, n := range cli.volumeRemoveCalls { + if n == legacyName { + t.Fatalf("VolumeRemove(%s) must NOT be called when copy fails — irreversible data-loss path", legacyName) + } + } } func TestStop_FullIDAbsent_LegacyRemoved(t *testing.T) { -- 2.52.0