crates/extension_host/Cargo.toml 🔗
@@ -12,6 +12,9 @@ workspace = true
path = "src/extension_host.rs"
doctest = false
+[features]
+test-support = []
+
[dependencies]
anyhow.workspace = true
async-compression.workspace = true
Conrad Irwin and Max created
Co-Authored-By: Max <max@zed.dev>
cc @maxdeviant
Release Notes:
- N/A
---------
Co-authored-by: Max <max@zed.dev>
crates/extension_host/Cargo.toml | 3 +++
crates/extension_host/src/wasm_host/wit.rs | 21 ++++++++++++++-------
crates/extensions_ui/Cargo.toml | 1 +
3 files changed, 18 insertions(+), 7 deletions(-)
@@ -12,6 +12,9 @@ workspace = true
path = "src/extension_host.rs"
doctest = false
+[features]
+test-support = []
+
[dependencies]
anyhow.workspace = true
async-compression.workspace = true
@@ -80,13 +80,20 @@ 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 release_channel {
+ ReleaseChannel::Dev | ReleaseChannel::Nightly => true,
+ ReleaseChannel::Stable | ReleaseChannel::Preview => {
+ cfg!(any(test, feature = "test-support"))
+ }
+ };
+ 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
@@ -52,6 +52,7 @@ async-tar.workspace = true
ctor.workspace = true
editor = { workspace = true, features = ["test-support"] }
env_logger.workspace = true
+extension_host = {workspace = true, features = ["test-support"] }
fs = { workspace = true, features = ["test-support"] }
gpui = { workspace = true, features = ["test-support"] }
http_client.workspace = true