leo_retriever/
lib.rs

1// Copyright (C) 2019-2025 Provable Inc.
2// This file is part of the Leo library.
3
4// The Leo library is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8
9// The Leo library is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13
14// You should have received a copy of the GNU General Public License
15// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
16
17pub mod retriever;
18pub use retriever::*;
19
20pub mod program_context;
21pub use program_context::*;
22
23#[cfg(test)]
24mod tests {
25    use super::*;
26    use leo_span::{Symbol, symbol::create_session_if_not_set_then};
27
28    use aleo_std::aleo_dir;
29
30    use serial_test::serial;
31    use std::path::PathBuf;
32
33    type CurrentNetwork = snarkvm::prelude::MainnetV0;
34
35    #[test]
36    #[ignore]
37    #[serial]
38    fn temp_dir_test() {
39        // Test pulling nested dependencies from network
40        const BUILD_DIRECTORY: &str = "../tmp/nested";
41        const HOME_DIRECTORY: &str = "../tmp/.aleo";
42        create_session_if_not_set_then(|_| {
43            let build_dir = PathBuf::from(BUILD_DIRECTORY);
44            let home_dir = PathBuf::from(HOME_DIRECTORY);
45            let mut retriever = Retriever::<CurrentNetwork>::new(
46                Symbol::intern("nested"),
47                &build_dir,
48                &home_dir,
49                "http://0.0.0.0:3030".to_string(),
50            )
51            .expect("Failed to build retriever");
52            retriever.retrieve().expect("failed to retrieve");
53            retriever.prepare_local(Symbol::intern("nested")).expect("failed to prepare local");
54            retriever.process_local(Symbol::intern("nested"), true).expect("failed to process local");
55        });
56    }
57
58    #[test]
59    #[ignore]
60    #[serial]
61    fn mac_test() {
62        // Test pulling nested dependencies from network
63        const BUILD_DIRECTORY: &str = "../tmp/nested";
64        create_session_if_not_set_then(|_| {
65            let build_dir = PathBuf::from(BUILD_DIRECTORY);
66
67            println!("aleo_dir: {:?}", aleo_dir());
68            let mut retriever = Retriever::<CurrentNetwork>::new(
69                Symbol::intern("nested"),
70                &build_dir,
71                &aleo_dir(),
72                "http://0.0.0.0:3030".to_string(),
73            )
74            .expect("Failed to build retriever");
75            retriever.retrieve().expect("failed to retrieve");
76            retriever.prepare_local(Symbol::intern("nested")).expect("failed to prepare local");
77            retriever.process_local(Symbol::intern("nested"), true).expect("failed to process local");
78        });
79    }
80
81    #[test]
82    #[ignore]
83    #[serial]
84    fn simple_dir_test() {
85        // Test pulling nested dependencies from network
86        const BUILD_DIRECTORY: &str = "../tmp/simple";
87        const HOME_DIRECTORY: &str = "../tmp/.aleo";
88        create_session_if_not_set_then(|_| {
89            let build_dir = PathBuf::from(BUILD_DIRECTORY);
90            let home_dir = PathBuf::from(HOME_DIRECTORY);
91            let mut retriever = Retriever::<CurrentNetwork>::new(
92                Symbol::intern("simple"),
93                &build_dir,
94                &home_dir,
95                "http://0.0.0.0:3030".to_string(),
96            )
97            .expect("Failed to build retriever");
98            retriever.retrieve().expect("failed to retrieve");
99            retriever.prepare_local(Symbol::intern("simple")).expect("failed to prepare local");
100            retriever.process_local(Symbol::intern("simple"), true).expect("failed to process local");
101        });
102    }
103
104    #[test]
105    #[ignore]
106    #[serial]
107    fn local_dir_test() {
108        // Test pulling nested dependencies from network
109        const BUILD_DIRECTORY: &str = "../tmp/local_test";
110        const HOME_DIRECTORY: &str = "../tmp/.aleo";
111        create_session_if_not_set_then(|_| {
112            let build_dir = PathBuf::from(BUILD_DIRECTORY);
113            let home_dir = PathBuf::from(HOME_DIRECTORY);
114            let mut retriever = Retriever::<CurrentNetwork>::new(
115                Symbol::intern("local_test"),
116                &build_dir,
117                &home_dir,
118                "http://0.0.0.0:3030".to_string(),
119            )
120            .expect("Failed to build retriever");
121            let _deps = retriever.retrieve().expect("failed to retrieve");
122            retriever.prepare_local(Symbol::intern("nested")).expect("failed to prepare local");
123            // retriever.process_local(Symbol::intern("nested")).expect("failed to process local");
124            // retriever.prepare_local(Symbol::intern("local_dep_1")).expect("failed to prepare local");
125        });
126    }
127}