From 67c38e8dd06af1bf1f720d346f004ccfc1eed4c8 Mon Sep 17 00:00:00 2001 From: sanket1729 Date: Wed, 8 Jun 2022 16:06:30 -0700 Subject: [PATCH 1/2] Add the missing file for testing miniscripts When moving from integration tests repo to `cargo test`, I forgot to add the test file for miniscript tests from cpp. --- tests/data/random_ms.txt | 34 ++++++++++++++++++++++++++++++++++ tests/test_cpp.rs | 18 ++++++++---------- 2 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 tests/data/random_ms.txt diff --git a/tests/data/random_ms.txt b/tests/data/random_ms.txt new file mode 100644 index 000000000..4aa5d4fc8 --- /dev/null +++ b/tests/data/random_ms.txt @@ -0,0 +1,34 @@ +and_b(lltvln:after(1231488000),s:pk(03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a)) +uuj:and_v(v:multi(2,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a,025601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc),after(1231488000)) +or_b(un:multi(2,03daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729,024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97),al:older(16)) +j:and_v(vdv:after(1567547623),older(16)) +t:and_v(vu:hash256(H),v:sha256(H)) +t:andor(multi(3,02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e,03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556,02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13),v:older(4194305),v:sha256(H)) +or_d(multi(1,02f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9),or_b(multi(3,022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01,032fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f,03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a),su:after(500000))) +or_d(sha256(H),and_n(un:after(499999999),older(4194305))) +and_v(or_i(v:multi(2,02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5,03774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb),v:multi(2,03e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a,025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc)),sha256(H)) +j:and_b(multi(2,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97),s:or_i(older(1),older(4252898))) +and_b(older(16),s:or_d(sha256(H),n:after(1567547623))) +j:and_v(v:ripemd160(H),or_d(sha256(H),older(16))) +and_b(hash256(H),a:and_b(hash256(H),a:older(1))) +thresh(2,multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),a:multi(1,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),ac:pk_k(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01)) +and_n(sha256(H),t:or_i(v:older(4252898),v:older(16))) +or_d(nd:and_v(v:older(4252898),v:older(4252898)),sha256(H)) +c:and_v(or_c(sha256(H),v:multi(1,02c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db)),pk_k(03acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe)) +c:and_v(or_c(multi(2,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00,02352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5),v:ripemd160(H)),pk_k(03fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556)) +and_v(andor(hash256(H),v:hash256(H),v:older(50000)),after(1231488000)) +andor(hash256(H),j:and_v(v:ripemd160(H),older(4194305)),ripemd160(H)) +or_i(c:and_v(v:after(500000),pk_k(02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5)),sha256(H)) +thresh(2,c:pk_h(025cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc),s:sha256(H),a:ripemd160(H)) +and_n(sha256(H),uc:and_v(v:older(16),pk_k(03fe72c435413d33d48ac09c9161ba8b09683215439d62b7940502bda8b202e6ce))) +and_n(c:pk_k(03daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729),and_b(l:older(15),a:older(16))) +c:or_i(and_v(v:older(16),pk_h(02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e)),pk_h(026a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4)) +or_d(c:pk_h(02e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13),andor(c:pk_k(024ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97),older(2016),after(1567547623))) +c:andor(ripemd160(H),pk_h(02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e),and_v(v:hash256(H),pk_h(03d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a))) +c:andor(u:ripemd160(H),pk_h(03daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729),or_i(pk_h(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01),pk_h(0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798))) +c:or_i(andor(c:pk_h(03d30199d74fb5a22d47b6e054e2f378cedacffcb89904a61d75d0dbd407143e65),pk_h(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01),pk_h(02c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5)),pk_k(02d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e)) +multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00) +multi(1,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00) +thresh(2,multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),a:multi(1,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00)) +thresh(2,multi(2,03a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),a:multi(1,036d2b085e9e382ed10b69fc311a03f8641ccfff21574de0927513a49d9a688a00),ac:pk_k(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01)) +c:pk_k(022f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01) \ No newline at end of file diff --git a/tests/test_cpp.rs b/tests/test_cpp.rs index 70e7f0daa..d92194ba7 100644 --- a/tests/test_cpp.rs +++ b/tests/test_cpp.rs @@ -28,25 +28,23 @@ pub(crate) fn parse_miniscripts( ) -> Vec> { // File must exist in current path before this produces output let mut desc_vec = vec![]; - if let Ok(lines) = read_lines("./random_ms.txt") { - // Consumes the iterator, returns an (Optional) String - for line in lines { - let ms = test_util::parse_insane_ms(&line.unwrap(), pubdata); - let wsh = Descriptor::new_wsh(ms).unwrap(); - desc_vec.push(wsh.derived_descriptor(secp, 0).unwrap()); - } + // Consumes the iterator, returns an (Optional) String + for line in read_lines("tests/data/random_ms.txt") { + let ms = test_util::parse_insane_ms(&line.unwrap(), pubdata); + let wsh = Descriptor::new_wsh(ms).unwrap(); + desc_vec.push(wsh.derived_descriptor(secp, 0).unwrap()); } desc_vec } // The output is wrapped in a Result to allow matching on errors // Returns an Iterator to the Reader of the lines of the file. -fn read_lines

(filename: P) -> io::Result>> +fn read_lines

(filename: P) -> io::Lines> where P: AsRef, { - let file = File::open(filename)?; - Ok(io::BufReader::new(file).lines()) + let file = File::open(filename).expect("File not found"); + io::BufReader::new(file).lines() } /// Quickly create a BTC amount. From 1ab637f86d16cfb0708c263858b243d8e8eb91b7 Mon Sep 17 00:00:00 2001 From: sanket1729 Date: Wed, 8 Jun 2022 16:08:11 -0700 Subject: [PATCH 2/2] Move setup tests to a single test Initially setup tests were run once per each integration test. This makes it run only once --- tests/setup/mod.rs | 5 ----- tests/test_cpp.rs | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/setup/mod.rs b/tests/setup/mod.rs index 9ff0eff13..6a7f27e37 100644 --- a/tests/setup/mod.rs +++ b/tests/setup/mod.rs @@ -22,8 +22,3 @@ pub fn setup() -> BitcoinD { ); bitcoind } - -#[test] -fn test_setup() { - setup(); -} diff --git a/tests/test_cpp.rs b/tests/test_cpp.rs index d92194ba7..90d120a0d 100644 --- a/tests/test_cpp.rs +++ b/tests/test_cpp.rs @@ -239,6 +239,11 @@ pub fn test_from_cpp_ms(cl: &Client, testdata: &TestData) { } } +#[test] +fn test_setup() { + setup::setup(); +} + #[test] fn tests_from_cpp() { let cl = &setup::setup().client;