Skip to content

Commit 6c349e2

Browse files
committed
fix(integration_tests): make deletion more robust
1 parent 0c6fe1f commit 6c349e2

File tree

1 file changed

+48
-5
lines changed

1 file changed

+48
-5
lines changed

integration_test/scripts/run-tests.js

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -827,6 +827,7 @@ class TestRunner {
827827
// Function names from firebase functions:list are just the name, no region suffix
828828
const functionName = func.trim();
829829
const region = DEFAULT_REGION;
830+
let deleted = false;
830831

831832
this.log(` Deleting function: ${functionName} in region: ${region}`, "warn");
832833

@@ -836,22 +837,64 @@ class TestRunner {
836837
`firebase functions:delete ${functionName} --project ${projectId} --region ${region} --force`,
837838
{ silent: true }
838839
);
839-
this.log(` ✅ Deleted via Firebase CLI: ${functionName}`);
840+
841+
// Verify the function was actually deleted
842+
this.log(` Verifying deletion of ${functionName}...`, "info");
843+
try {
844+
const listResult = await this.exec(
845+
`firebase functions:list --project ${projectId}`,
846+
{ silent: true }
847+
);
848+
849+
// Check if function still exists in the list
850+
const functionStillExists = listResult.stdout.includes(functionName);
851+
852+
if (!functionStillExists) {
853+
this.log(` ✅ Verified: Function deleted via Firebase CLI: ${functionName}`, "success");
854+
deleted = true;
855+
} else {
856+
this.log(` ⚠️ Function still exists after Firebase CLI delete: ${functionName}`, "warn");
857+
}
858+
} catch (listError) {
859+
// If we can't list functions, assume deletion worked
860+
this.log(` ✅ Deleted via Firebase CLI (unverified): ${functionName}`, "success");
861+
deleted = true;
862+
}
840863
} catch (firebaseError) {
841-
// If Firebase CLI fails, try gcloud as fallback
842-
this.log(` Firebase CLI failed, trying gcloud for: ${functionName}`, "warn");
864+
this.log(` ⚠️ Firebase CLI delete failed for ${functionName}: ${firebaseError.message}`, "warn");
865+
}
866+
867+
// If not deleted yet, try gcloud as fallback
868+
if (!deleted) {
869+
this.log(` Trying gcloud for: ${functionName}`, "warn");
843870
try {
844871
await this.exec(
845872
`gcloud functions delete ${functionName} --region=${region} --project=${projectId} --quiet`,
846873
{ silent: true }
847874
);
848-
this.log(` ✅ Deleted via gcloud: ${functionName}`);
875+
876+
// Verify deletion
877+
try {
878+
await this.exec(
879+
`gcloud functions describe ${functionName} --region=${region} --project=${projectId}`,
880+
{ silent: true }
881+
);
882+
// If describe succeeds, function still exists
883+
this.log(` ⚠️ Function still exists after gcloud delete: ${functionName}`, "warn");
884+
} catch {
885+
// If describe fails, function was deleted
886+
this.log(` ✅ Deleted via gcloud: ${functionName}`, "success");
887+
deleted = true;
888+
}
849889
} catch (gcloudError) {
850890
this.log(` ❌ Failed to delete: ${functionName}`, "error");
851-
this.log(` Firebase error: ${firebaseError.message}`, "error");
852891
this.log(` Gcloud error: ${gcloudError.message}`, "error");
853892
}
854893
}
894+
895+
if (!deleted) {
896+
this.log(` ❌ Failed to delete function ${functionName} via any method`, "error");
897+
}
855898
} catch (e) {
856899
this.log(` ❌ Unexpected error deleting ${func}: ${e.message}`, "error");
857900
}

0 commit comments

Comments
 (0)