From 1e01c13d8aee4e90a8a4f42cb3d225df21ce3b92 Mon Sep 17 00:00:00 2001
From: Federico De Felici <fdf8210@gmail.com>
Date: Tue, 18 Mar 2025 13:11:09 +0100
Subject: [PATCH 1/5] fix: test compilation on windows ends successfully, #5930

---
 stackslib/src/config/chain_data.rs     | 82 ++++++++++++++++++++++++++
 stackslib/src/net/tests/convergence.rs |  8 ++-
 2 files changed, 89 insertions(+), 1 deletion(-)

diff --git a/stackslib/src/config/chain_data.rs b/stackslib/src/config/chain_data.rs
index 78957fac97..29ac8c009d 100644
--- a/stackslib/src/config/chain_data.rs
+++ b/stackslib/src/config/chain_data.rs
@@ -722,6 +722,7 @@ pub mod tests {
     }
 
     #[test]
+    #[cfg(unix)]
     fn test_get_unconfirmed_commits() {
         use std::os::unix::fs::PermissionsExt;
         let shell_code = r#"#!/bin/bash
@@ -808,6 +809,87 @@ EOF
         );
     }
 
+    #[test]
+    #[cfg(windows)]
+    fn test_get_unconfirmed_commits() {
+        let shell_code = r#"@echo off
+(
+echo [
+echo  {
+echo   "txid": "73c318be8cd272a73200b9630089d77a44342d84b2c0d81c937da714152cf402",
+echo   "burn": 555000,
+echo   "address": "1FCcoFSKWvNyhjazNvVdLLw8mGkGdcRMux",
+echo   "input_txid": "ef0dbf0fc4755de5e94843a4da7c1d943571299afb15f32b76bac5d18d8668ce",
+echo   "input_index": 3,
+echo   "pox_addrs": [
+echo       "0014db14133a9dbb1d0e16b60513453e48b6ff2847a9",
+echo       "a91418c42080a1e87fd02dd3fca94c4513f9ecfe741487"
+echo   ]
+echo  }
+echo ]
+)
+"#;
+        let path = "/tmp/test-get-unconfirmed-commits.bat";
+        if fs::metadata(path).is_ok() {
+            fs::remove_file(path).unwrap();
+        }
+        {
+            let mut f = fs::File::create(path).unwrap();
+            f.write_all(shell_code.as_bytes()).unwrap();
+        }
+
+        let ms = MinerStats {
+            unconfirmed_commits_helper: path.to_string(),
+        };
+
+        let mut commits = ms.get_unconfirmed_commits(123, &[]).unwrap();
+        assert_eq!(commits.len(), 1);
+        let commit = commits.pop().unwrap();
+
+        assert_eq!(
+            commit.txid,
+            Txid::from_hex("73c318be8cd272a73200b9630089d77a44342d84b2c0d81c937da714152cf402")
+                .unwrap()
+        );
+        assert_eq!(commit.burn_fee, 555000);
+        assert_eq!(
+            commit.apparent_sender.0,
+            "1FCcoFSKWvNyhjazNvVdLLw8mGkGdcRMux".to_string()
+        );
+        assert_eq!(
+            commit.input.0,
+            Txid::from_hex("ef0dbf0fc4755de5e94843a4da7c1d943571299afb15f32b76bac5d18d8668ce")
+                .unwrap()
+        );
+        assert_eq!(commit.input.1, 3);
+        assert_eq!(commit.block_height, 123);
+
+        assert_eq!(
+            commit.commit_outs,
+            vec![
+                PoxAddress::Addr20(
+                    true,
+                    PoxAddressType20::P2WPKH,
+                    [
+                        219, 20, 19, 58, 157, 187, 29, 14, 22, 182, 5, 19, 69, 62, 72, 182, 255,
+                        40, 71, 169
+                    ]
+                ),
+                PoxAddress::Standard(
+                    StacksAddress::new(
+                        20,
+                        Hash160([
+                            0x18, 0xc4, 0x20, 0x80, 0xa1, 0xe8, 0x7f, 0xd0, 0x2d, 0xd3, 0xfc, 0xa9,
+                            0x4c, 0x45, 0x13, 0xf9, 0xec, 0xfe, 0x74, 0x14
+                        ])
+                    )
+                    .unwrap(),
+                    None
+                )
+            ]
+        );
+    }
+
     #[test]
     fn test_get_spend_and_win_distribution() {
         let active_miners_and_commits = vec![
diff --git a/stackslib/src/net/tests/convergence.rs b/stackslib/src/net/tests/convergence.rs
index 6d9031deae..04b426ee75 100644
--- a/stackslib/src/net/tests/convergence.rs
+++ b/stackslib/src/net/tests/convergence.rs
@@ -21,7 +21,6 @@ use std::collections::{HashMap, HashSet};
 use clarity::vm::types::{QualifiedContractIdentifier, StandardPrincipalData};
 use rand::prelude::*;
 use rand::thread_rng;
-use rlimit;
 
 use crate::core::PEER_VERSION_TESTNET;
 use crate::net::db::*;
@@ -29,7 +28,9 @@ use crate::net::test::*;
 use crate::net::*;
 use crate::util_lib::test::*;
 
+#[cfg(unix)]
 fn setup_rlimit_nofiles() {
+    use rlimit;
     info!("Attempt to set nofile rlimit to 4096 (required for these tests to run)");
     assert!(rlimit::Resource::NOFILE.get().is_ok());
     let (slimit, hlimit) = rlimit::getrlimit(rlimit::Resource::NOFILE).unwrap();
@@ -37,6 +38,11 @@ fn setup_rlimit_nofiles() {
     info!("Successfully set nofile rlimit to 4096");
 }
 
+#[cfg(windows)]
+fn setup_rlimit_nofiles() {
+    //rlimit stub for windows
+}
+
 fn stacker_db_id(i: usize) -> QualifiedContractIdentifier {
     QualifiedContractIdentifier::new(
         StandardPrincipalData::new(0x01, [i as u8; 20]).unwrap(),

From 00aa571df4674ecff15589433390881639272501 Mon Sep 17 00:00:00 2001
From: Federico De Felici <fdf8210@gmail.com>
Date: Tue, 18 Mar 2025 14:49:29 +0100
Subject: [PATCH 2/5] fix: coordinator lock_info_primary_testnet and
 lock_info_other_testnet run on windows. Now 'cargo test testnet' ends
 succesfully on windows os, #5930

---
 stackslib/src/net/mod.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/stackslib/src/net/mod.rs b/stackslib/src/net/mod.rs
index 616ea8f81f..34e5b24a7a 100644
--- a/stackslib/src/net/mod.rs
+++ b/stackslib/src/net/mod.rs
@@ -2877,9 +2877,10 @@ pub mod test {
         pub fn test_path(config: &TestPeerConfig) -> String {
             let random = thread_rng().gen::<u64>();
             let random_bytes = to_hex(&random.to_be_bytes());
+            let multi_os_friendly_name = config.test_name.replace("::", ".");
             format!(
                 "/tmp/stacks-node-tests/units-test-peer/{}-{}",
-                &config.test_name, random_bytes
+                &multi_os_friendly_name, random_bytes
             )
         }
 

From 6388c0b586334afa04cf9f202bdcff73f3ddf82e Mon Sep 17 00:00:00 2001
From: Federico De Felici <fdf8210@gmail.com>
Date: Tue, 25 Mar 2025 12:52:08 +0100
Subject: [PATCH 3/5] fix: use underscore as separator and renaming variable,
 #5930

---
 stackslib/src/net/mod.rs | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/stackslib/src/net/mod.rs b/stackslib/src/net/mod.rs
index 34e5b24a7a..e1bd4c12cb 100644
--- a/stackslib/src/net/mod.rs
+++ b/stackslib/src/net/mod.rs
@@ -2877,10 +2877,10 @@ pub mod test {
         pub fn test_path(config: &TestPeerConfig) -> String {
             let random = thread_rng().gen::<u64>();
             let random_bytes = to_hex(&random.to_be_bytes());
-            let multi_os_friendly_name = config.test_name.replace("::", ".");
+            let cleaned_config_test_name = config.test_name.replace("::", "_");
             format!(
                 "/tmp/stacks-node-tests/units-test-peer/{}-{}",
-                &multi_os_friendly_name, random_bytes
+                &cleaned_config_test_name, random_bytes
             )
         }
 

From 7c5cdeb2da48d55790d507435a8306754629173b Mon Sep 17 00:00:00 2001
From: Federico De Felici <fdf8210@gmail.com>
Date: Thu, 27 Mar 2025 09:21:54 +0100
Subject: [PATCH 4/5] chore: improve comment about rlimit empty stub for
 windows, #5930

---
 stackslib/src/net/tests/convergence.rs | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/stackslib/src/net/tests/convergence.rs b/stackslib/src/net/tests/convergence.rs
index 04b426ee75..7bc4d643ed 100644
--- a/stackslib/src/net/tests/convergence.rs
+++ b/stackslib/src/net/tests/convergence.rs
@@ -40,7 +40,8 @@ fn setup_rlimit_nofiles() {
 
 #[cfg(windows)]
 fn setup_rlimit_nofiles() {
-    //rlimit stub for windows
+    // rlimit empty stub, since windows hasn't a hard file descriptor limit
+    // PR: https://github.com/stacks-network/stacks-core/pull/5937
 }
 
 fn stacker_db_id(i: usize) -> QualifiedContractIdentifier {

From bbd5236c7e9909ad86ee23db441179873f8bd4b0 Mon Sep 17 00:00:00 2001
From: Federico De Felici <fdf8210@gmail.com>
Date: Fri, 28 Mar 2025 08:57:42 +0100
Subject: [PATCH 5/5] chore: remove pr reference from comment, #5930

---
 stackslib/src/net/tests/convergence.rs | 1 -
 1 file changed, 1 deletion(-)

diff --git a/stackslib/src/net/tests/convergence.rs b/stackslib/src/net/tests/convergence.rs
index 7bc4d643ed..4e1f3a064c 100644
--- a/stackslib/src/net/tests/convergence.rs
+++ b/stackslib/src/net/tests/convergence.rs
@@ -41,7 +41,6 @@ fn setup_rlimit_nofiles() {
 #[cfg(windows)]
 fn setup_rlimit_nofiles() {
     // rlimit empty stub, since windows hasn't a hard file descriptor limit
-    // PR: https://github.com/stacks-network/stacks-core/pull/5937
 }
 
 fn stacker_db_id(i: usize) -> QualifiedContractIdentifier {