Skip to content

Commit 04a6359

Browse files
committed
fix(cln): parse msat strings and fix default socket path
- CLN's listpeerchannels returns msat values as strings (e.g. "5000000msat"). as_u64() silently returned 0, making all balance assertions incorrect. - Update default socket path to match docker-compose mount point (/tmp/cln-data/regtest/lightning-rpc).
1 parent 8a8f3c7 commit 04a6359

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

tests/common/cln.rs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@ use serde_json::json;
1616

1717
use super::external_node::{ExternalChannel, ExternalNode, TestFailure};
1818

19+
/// Parse a CLN msat value which may be a plain integer or a string like "5000000msat".
20+
fn parse_cln_msat(val: &serde_json::Value) -> u64 {
21+
if let Some(n) = val.as_u64() {
22+
return n;
23+
}
24+
if let Some(s) = val.as_str() {
25+
return s.trim_end_matches("msat").parse().unwrap_or(0);
26+
}
27+
0
28+
}
29+
1930
pub(crate) struct TestClnNode {
2031
client: Arc<LightningRPC>,
2132
listen_addr: SocketAddress,
@@ -27,8 +38,8 @@ impl TestClnNode {
2738
}
2839

2940
pub(crate) fn from_env() -> Self {
30-
let sock =
31-
std::env::var("CLN_SOCKET_PATH").unwrap_or_else(|_| "/tmp/lightning-rpc".to_string());
41+
let sock = std::env::var("CLN_SOCKET_PATH")
42+
.unwrap_or_else(|_| "/tmp/cln-data/regtest/lightning-rpc".to_string());
3243
let listen_addr: SocketAddress = std::env::var("CLN_P2P_ADDR")
3344
.unwrap_or_else(|_| "127.0.0.1:19846".to_string())
3445
.parse()
@@ -307,8 +318,8 @@ impl ExternalNode for TestClnNode {
307318
.as_str()
308319
.ok_or_else(|| self.make_error("list_channels: missing channel_id".to_string()))?
309320
.to_string();
310-
let total_msat = ch["total_msat"].as_u64().unwrap_or(0);
311-
let to_us_msat = ch["to_us_msat"].as_u64().unwrap_or(0);
321+
let total_msat = parse_cln_msat(&ch["total_msat"]);
322+
let to_us_msat = parse_cln_msat(&ch["to_us_msat"]);
312323
let funding_txid = ch["funding_txid"].as_str().map(|s| s.to_string());
313324
let state = ch["state"].as_str().unwrap_or("");
314325
channels.push(ExternalChannel {

0 commit comments

Comments
 (0)