Fix extension tests on release branches

Conrad Irwin and Max created

Co-Authored-By: Max <max@zed.dev>

Change summary

crates/extension_host/src/extension_store_test.rs |  1 
crates/extension_host/src/wasm_host/wit.rs        | 19 ++++++++++------
2 files changed, 13 insertions(+), 7 deletions(-)

Detailed changes

crates/extension_host/src/extension_store_test.rs 🔗

@@ -616,6 +616,7 @@ async fn test_extension_store_with_test_extension(cx: &mut TestAppContext) {
         })
         .detach();
     });
+    std::fs::remove_dir_all(test_extension_dir.join("target")).unwrap();
 
     extension_store
         .update(cx, |store, cx| {

crates/extension_host/src/wasm_host/wit.rs 🔗

@@ -78,13 +78,18 @@ impl Extension {
         version: SemanticVersion,
         component: &Component,
     ) -> Result<Self> {
-        // Note: The release channel can be used to stage a new version of the extension API.
-        let allow_latest_version = match release_channel {
-            ReleaseChannel::Dev | ReleaseChannel::Nightly => true,
-            ReleaseChannel::Stable | ReleaseChannel::Preview => false,
-        };
-
-        if allow_latest_version && version >= latest::MIN_VERSION {
+        if version >= latest::MIN_VERSION {
+            // Note: The release channel can be used to stage a new version of the extension API.
+            // We always allow the latest in tests so that the extension tests pass on release branches.
+            let allow_latest_version = match dbg!(release_channel) {
+                ReleaseChannel::Dev | ReleaseChannel::Nightly => true,
+                ReleaseChannel::Stable | ReleaseChannel::Preview => cfg!(test),
+            };
+            if !allow_latest_version {
+                Err(anyhow!(
+                    "unreleased versions of the extension API can only be used on development builds of Zed"
+                ))?;
+            }
             let extension =
                 latest::Extension::instantiate_async(store, component, latest::linker())
                     .await