From 834f4e22f38d0e44ad3df9e883f61c8ef5263304 Mon Sep 17 00:00:00 2001 From: Severin Siffert Date: Fri, 31 Jan 2025 20:50:27 +0100 Subject: [PATCH] fix: download remote did files (#4093) --- CHANGELOG.md | 2 ++ .../remote/download_did/canister_ids.json | 5 ++++ e2e/assets/remote/download_did/dfx.json | 25 +++++++++++++++++++ e2e/assets/remote/download_did/main.mo | 3 +++ e2e/tests-dfx/remote.bash | 6 +++++ src/dfx/src/lib/models/canister.rs | 6 ++--- 6 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 e2e/assets/remote/download_did/canister_ids.json create mode 100644 e2e/assets/remote/download_did/dfx.json create mode 100644 e2e/assets/remote/download_did/main.mo diff --git a/CHANGELOG.md b/CHANGELOG.md index b2d0e4fcdd..b22c8f96ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ ### fix: `dfx canister install` and `dfx deploy` with `--no-asset-upgrade` no longer hang indefinitely when wasm is not up to date +### fix: `dfx` downloads `.did` files for remote canisters + ### feat: streamlined output during asset synchronization # 0.25.0 diff --git a/e2e/assets/remote/download_did/canister_ids.json b/e2e/assets/remote/download_did/canister_ids.json new file mode 100644 index 0000000000..037eb88944 --- /dev/null +++ b/e2e/assets/remote/download_did/canister_ids.json @@ -0,0 +1,5 @@ +{ + "hello_backend": { + "ic": "aaaaa-aa" + } +} \ No newline at end of file diff --git a/e2e/assets/remote/download_did/dfx.json b/e2e/assets/remote/download_did/dfx.json new file mode 100644 index 0000000000..55b735ac6d --- /dev/null +++ b/e2e/assets/remote/download_did/dfx.json @@ -0,0 +1,25 @@ +{ + "canisters": { + "hello_backend": { + "main": "main.mo", + "type": "motoko", + "dependencies": [ + "internet_identity" + ] + }, + "internet_identity": { + "type": "custom", + "candid": "https://github.com/dfinity/internet-identity/releases/download/release-2024-12-13/internet_identity.did", + "wasm": "https://github.com/dfinity/internet-identity/releases/download/release-2024-12-13/internet_identity_dev.wasm.gz", + "init_arg": "(opt record { captcha_config = opt record { max_unsolved_captchas= 50:nat64; captcha_trigger = variant {Static = variant {CaptchaDisabled}}}})", + "remote": { + "id": { + "ic": "rdmx6-jaaaa-aaaaa-aaadq-cai" + } + }, + "frontend": {} + } + }, + "output_env_file": ".env", + "version": 1 +} \ No newline at end of file diff --git a/e2e/assets/remote/download_did/main.mo b/e2e/assets/remote/download_did/main.mo new file mode 100644 index 0000000000..608acadb27 --- /dev/null +++ b/e2e/assets/remote/download_did/main.mo @@ -0,0 +1,3 @@ +import II "canister:internet_identity"; + +actor {}; diff --git a/e2e/tests-dfx/remote.bash b/e2e/tests-dfx/remote.bash index 8e8bc5568e..105a35e53f 100644 --- a/e2e/tests-dfx/remote.bash +++ b/e2e/tests-dfx/remote.bash @@ -345,3 +345,9 @@ teardown() { assert_match "CANISTER_ID_REMOTE: qoctq-giaaa-aaaaa-aaaea-cai" assert_contains "CANISTER_CANDID_PATH_REMOTE: $(pwd -P)/remotecandid.did" } + +@test "build step downloads dependency .did files" { + install_asset remote/download_did + assert_command dfx build --ic -v + assert_not_contains ".did file for canister 'internet_identity' does not exist" +} diff --git a/src/dfx/src/lib/models/canister.rs b/src/dfx/src/lib/models/canister.rs index f4f1412cef..afae9c00af 100644 --- a/src/dfx/src/lib/models/canister.rs +++ b/src/dfx/src/lib/models/canister.rs @@ -839,7 +839,7 @@ impl CanisterPool { log: &Logger, build_config: &BuildConfig, ) -> DfxResult<()> { - self.download(build_config).await?; + self.download().await?; let outputs = self.build(env, log, build_config)?; for output in outputs { @@ -849,8 +849,8 @@ impl CanisterPool { Ok(()) } - async fn download(&self, build_config: &BuildConfig) -> DfxResult { - for canister in self.canisters_to_build(build_config) { + async fn download(&self) -> DfxResult { + for canister in self.canisters.iter() { let info = canister.get_info(); if info.is_custom() {