From 123981a94bc17e88051141d962ae44ab9691cdf6 Mon Sep 17 00:00:00 2001
From: Riccardo Casatta <riccardo@casatta.it>
Date: Fri, 16 Aug 2024 09:02:51 +0200
Subject: [PATCH] upgrade electrum, do tests in nix

Now on nix env we provide the env vars of the executables needed for
integration testing, so we can enable tests.

To be coherent with the electrum nix version used, upgrade also the
autodownloaded one.

Note we have to change a test assertion, it seems electrum behaviour
changed, upgrading balances before confirmation.
---
 Cargo.toml        |  2 +-
 flake.nix         | 30 +++++++++++++++---------------
 tests/electrum.rs |  2 +-
 3 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/Cargo.toml b/Cargo.toml
index ca9e98c38..28a934521 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -60,7 +60,7 @@ electrum-client = { version = "0.8", optional = true }
 [dev-dependencies]
 bitcoind = { version = "0.35", features = ["25_0"] }
 elementsd = { version = "0.9", features = ["22_1_1"] }
-electrumd = { version = "0.1.0", features = ["4_1_5"] }
+electrumd = { version = "0.1.0", features = ["4_5_4"] }
 ureq = { version = "2.9", default-features = false, features = ["json"] }
 tempfile = "3.10"
 
diff --git a/flake.nix b/flake.nix
index a543e64ef..c148f9e4d 100644
--- a/flake.nix
+++ b/flake.nix
@@ -36,16 +36,22 @@
           nativeBuildInputs = with pkgs; [ rustToolchain clang ]; # required only at build time
           buildInputs = with pkgs; [ ]; # also required at runtime
 
-          envVars = {
-            LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
-            ELEMENTSD_SKIP_DOWNLOAD = true;
-            BITCOIND_SKIP_DOWNLOAD = true;
-            ELECTRUMD_SKIP_DOWNLOAD = true;
+          envVars =
+            {
+              LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
+              ELEMENTSD_SKIP_DOWNLOAD = true;
+              BITCOIND_SKIP_DOWNLOAD = true;
+              ELECTRUMD_SKIP_DOWNLOAD = true;
 
-            # link rocksdb dynamically
-            ROCKSDB_INCLUDE_DIR = "${pkgs.rocksdb}/include";
-            ROCKSDB_LIB_DIR = "${pkgs.rocksdb}/lib";
-          };
+              # link rocksdb dynamically
+              ROCKSDB_INCLUDE_DIR = "${pkgs.rocksdb}/include";
+              ROCKSDB_LIB_DIR = "${pkgs.rocksdb}/lib";
+
+              # for integration testing
+              BITCOIND_EXE = "${pkgs.bitcoind}/bin/bitcoind";
+              ELEMENTSD_EXE = "${pkgs.bitcoind}/bin/elementsd";
+              ELECTRUMD_EXE = "${pkgs.electrum}/bin/electrum";
+            };
 
           commonArgs = {
             inherit src buildInputs nativeBuildInputs;
@@ -54,16 +60,10 @@
           cargoArtifacts = craneLib.buildDepsOnly commonArgs;
           bin = craneLib.buildPackage (commonArgs // {
             inherit cargoArtifacts;
-
-            # TODO: do testing by providing executables via *_EXE env var for {bitcoin,elements,electrum}d
-            doCheck = false;
           });
           binLiquid = craneLib.buildPackage (commonArgs // {
             inherit cargoArtifacts;
             cargoExtraArgs = "--features liquid";
-
-            # TODO: do testing by providing executables via *_EXE env var for {bitcoin,elements,electrum}d
-            doCheck = false;
           });
 
         in
diff --git a/tests/electrum.rs b/tests/electrum.rs
index 504d16ca8..bb3115029 100644
--- a/tests/electrum.rs
+++ b/tests/electrum.rs
@@ -125,7 +125,7 @@ fn test_electrum() -> Result<()> {
         )?]),
     )?;
     notify_wallet();
-    assert_balance(0.3, -0.161);
+    assert_balance(0.139, 0.0);
 
     tester.mine()?;
     notify_wallet();