Skip to content

Commit 9493095

Browse files
authored
Drop test reporter (#109)
1 parent f83aebc commit 9493095

File tree

10 files changed

+146
-177
lines changed

10 files changed

+146
-177
lines changed

crates/pet-conda/tests/ci_test.rs

Lines changed: 50 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -23,32 +23,33 @@ fn setup() {
2323
#[allow(dead_code)]
2424
// We should detect the conda install along with the base env
2525
fn detect_conda_root() {
26+
use std::sync::Arc;
27+
2628
use pet_conda::Conda;
2729
use pet_core::{
2830
manager::EnvManagerType, os_environment::EnvironmentApi,
2931
python_environment::PythonEnvironmentKind, Locator,
3032
};
31-
use pet_reporter::test::create_reporter;
33+
use pet_reporter::{cache::CacheReporter, collect};
3234

3335
setup();
3436
let env = EnvironmentApi::new();
3537

36-
let reporter = create_reporter();
38+
let reporter = Arc::new(collect::create_reporter());
3739
let conda = Conda::from(&env);
38-
conda.find(&reporter);
39-
let result = reporter.get_result();
40+
conda.find(&CacheReporter::new(reporter.clone()));
4041

41-
assert_eq!(result.managers.len(), 1);
42+
let environments = reporter.environments.lock().unwrap().clone();
43+
let managers = reporter.managers.lock().unwrap().clone();
4244

4345
let info = get_conda_info();
4446
let conda_dir = PathBuf::from(info.conda_prefix.clone());
45-
let manager = &result.managers[0];
47+
let manager = &managers[0];
4648
assert_eq!(manager.executable, conda_dir.join("bin").join("conda"));
4749
assert_eq!(manager.tool, EnvManagerType::Conda);
4850
assert_eq!(manager.version, info.conda_version.into());
4951

50-
let env = &result
51-
.environments
52+
let env = &environments
5253
.iter()
5354
.find(|e| e.name == Some("base".into()))
5455
.unwrap();
@@ -107,8 +108,8 @@ fn detect_new_conda_env() {
107108
use pet_core::{
108109
os_environment::EnvironmentApi, python_environment::PythonEnvironmentKind, Locator,
109110
};
110-
use pet_reporter::test::create_reporter;
111-
use std::path::PathBuf;
111+
use pet_reporter::{cache::CacheReporter, collect};
112+
use std::{path::PathBuf, sync::Arc};
112113

113114
setup();
114115
let env_name = "env_with_python";
@@ -119,24 +120,23 @@ fn detect_new_conda_env() {
119120
let env = EnvironmentApi::new();
120121

121122
let conda = Conda::from(&env);
122-
let reporter = create_reporter();
123-
conda.find(&reporter);
124-
let result = reporter.get_result();
123+
let reporter = Arc::new(collect::create_reporter());
124+
conda.find(&CacheReporter::new(reporter.clone()));
125125

126-
assert_eq!(result.managers.len(), 1);
126+
let environments = reporter.environments.lock().unwrap().clone();
127+
let managers = reporter.managers.lock().unwrap().clone();
127128

128-
let manager = &result.managers[0];
129+
let manager = &managers[0];
129130

130131
let info = get_conda_info();
131132
let conda_dir = PathBuf::from(info.conda_prefix.clone());
132-
let env = result
133-
.environments
133+
let env = environments
134134
.iter()
135135
.find(|x| x.name == Some(env_name.into()))
136136
.expect(
137137
format!(
138138
"New Environment not created, detected envs {:?}",
139-
result.environments
139+
environments
140140
)
141141
.as_str(),
142142
);
@@ -211,33 +211,32 @@ fn detect_new_conda_env_without_python() {
211211
use pet_core::{
212212
os_environment::EnvironmentApi, python_environment::PythonEnvironmentKind, Locator,
213213
};
214-
use pet_reporter::test::create_reporter;
215-
use std::path::PathBuf;
214+
use pet_reporter::{cache::CacheReporter, collect};
215+
use std::{path::PathBuf, sync::Arc};
216216

217217
setup();
218218
let env_name = "env_without_python";
219219
create_conda_env(&CondaCreateEnvNameOrPath::Name(env_name.into()), None);
220220
let env = EnvironmentApi::new();
221221

222222
let conda = Conda::from(&env);
223-
let reporter = create_reporter();
224-
conda.find(&reporter);
225-
let result = reporter.get_result();
223+
let reporter = Arc::new(collect::create_reporter());
224+
conda.find(&CacheReporter::new(reporter.clone()));
226225

227-
assert_eq!(result.managers.len(), 1);
226+
let environments = reporter.environments.lock().unwrap().clone();
227+
let managers = reporter.managers.lock().unwrap().clone();
228228

229-
let manager = &result.managers[0];
229+
let manager = &managers[0];
230230

231231
let info = get_conda_info();
232232
let conda_dir = PathBuf::from(info.conda_prefix.clone());
233-
let env = result
234-
.environments
233+
let env = environments
235234
.iter()
236235
.find(|x| x.name == Some(env_name.into()))
237236
.expect(
238237
format!(
239238
"New Environment not created, detected envs {:?}",
240-
result.environments
239+
environments
241240
)
242241
.as_str(),
243242
);
@@ -257,12 +256,14 @@ fn detect_new_conda_env_without_python() {
257256
#[allow(dead_code)]
258257
// Detect envs created without Python in a custom directory using the -p flag
259258
fn detect_new_conda_env_created_with_p_flag_without_python() {
259+
use std::sync::Arc;
260+
260261
use common::resolve_test_path;
261262
use pet_conda::Conda;
262263
use pet_core::{
263264
os_environment::EnvironmentApi, python_environment::PythonEnvironmentKind, Locator,
264265
};
265-
use pet_reporter::test::create_reporter;
266+
use pet_reporter::{cache::CacheReporter, collect};
266267

267268
setup();
268269
let env_name = "env_without_python3";
@@ -271,22 +272,21 @@ fn detect_new_conda_env_created_with_p_flag_without_python() {
271272
let env = EnvironmentApi::new();
272273

273274
let conda = Conda::from(&env);
274-
let reporter = create_reporter();
275-
conda.find(&reporter);
276-
let result = reporter.get_result();
275+
let reporter = Arc::new(collect::create_reporter());
276+
conda.find(&CacheReporter::new(reporter.clone()));
277277

278-
assert_eq!(result.managers.len(), 1);
278+
let environments = reporter.environments.lock().unwrap().clone();
279+
let managers = reporter.managers.lock().unwrap().clone();
279280

280-
let manager = &result.managers[0];
281+
let manager = &managers[0];
281282

282-
let env = result
283-
.environments
283+
let env = environments
284284
.iter()
285285
.find(|x| x.prefix == Some(prefix.clone()))
286286
.expect(
287287
format!(
288288
"New Environment ({:?}) not created, detected envs {:?}",
289-
prefix, result.environments
289+
prefix, environments
290290
)
291291
.as_str(),
292292
);
@@ -305,12 +305,17 @@ fn detect_new_conda_env_created_with_p_flag_without_python() {
305305
#[allow(dead_code)]
306306
// Detect envs created Python in a custom directory using the -p flag
307307
fn detect_new_conda_env_created_with_p_flag_with_python() {
308+
use std::sync::Arc;
309+
308310
use common::resolve_test_path;
309311
use pet_conda::Conda;
310312
use pet_core::{
311313
os_environment::EnvironmentApi, python_environment::PythonEnvironmentKind, Locator,
312314
};
313-
use pet_reporter::test::create_reporter;
315+
use pet_reporter::{
316+
cache::{self, CacheReporter},
317+
collect,
318+
};
314319

315320
setup();
316321
let env_name = "env_with_python3";
@@ -323,22 +328,21 @@ fn detect_new_conda_env_created_with_p_flag_with_python() {
323328
let env = EnvironmentApi::new();
324329

325330
let conda = Conda::from(&env);
326-
let reporter = create_reporter();
327-
conda.find(&reporter);
328-
let result = reporter.get_result();
331+
let reporter = Arc::new(collect::create_reporter());
332+
conda.find(&CacheReporter::new(reporter.clone()));
329333

330-
assert_eq!(result.managers.len(), 1);
334+
let environments = reporter.environments.lock().unwrap().clone();
335+
let managers = reporter.managers.lock().unwrap().clone();
331336

332-
let manager = &result.managers[0];
337+
let manager = &managers[0];
333338

334-
let env = result
335-
.environments
339+
let env = environments
336340
.iter()
337341
.find(|x| x.prefix == Some(prefix.clone()))
338342
.expect(
339343
format!(
340344
"New Environment not created, detected envs {:?}",
341-
result.environments
345+
environments
342346
)
343347
.as_str(),
344348
);

crates/pet-pyenv/tests/pyenv_test.rs

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn does_not_find_any_pyenv_envs() {
1111
use pet_core::{self, Locator};
1212
use pet_pyenv;
1313
use pet_pyenv::PyEnv;
14-
use pet_reporter::test::create_reporter;
14+
use pet_reporter::{cache::CacheReporter, collect};
1515
use std::{collections::HashMap, path::PathBuf, sync::Arc};
1616

1717
let environment = create_test_environment(
@@ -23,12 +23,14 @@ fn does_not_find_any_pyenv_envs() {
2323

2424
let conda = Arc::new(Conda::from(&environment));
2525
let locator = PyEnv::from(&environment, conda);
26-
let reporter = create_reporter();
27-
locator.find(&reporter);
28-
let result = reporter.get_result();
26+
let reporter = Arc::new(collect::create_reporter());
27+
locator.find(&CacheReporter::new(reporter.clone()));
2928

30-
assert_eq!(result.managers.is_empty(), true);
31-
assert_eq!(result.environments.is_empty(), true);
29+
let environments = reporter.environments.lock().unwrap().clone();
30+
let managers = reporter.managers.lock().unwrap().clone();
31+
32+
assert_eq!(managers.is_empty(), true);
33+
assert_eq!(environments.is_empty(), true);
3234
}
3335

3436
#[test]
@@ -44,7 +46,7 @@ fn does_not_find_any_pyenv_envs_even_with_pyenv_installed() {
4446
};
4547
use pet_pyenv;
4648
use pet_pyenv::PyEnv;
47-
use pet_reporter::test::create_reporter;
49+
use pet_reporter::{cache::CacheReporter, collect};
4850
use serde_json::json;
4951
use std::{collections::HashMap, path::PathBuf, sync::Arc};
5052

@@ -67,19 +69,19 @@ fn does_not_find_any_pyenv_envs_even_with_pyenv_installed() {
6769

6870
let conda = Arc::new(Conda::from(&environment));
6971
let locator = PyEnv::from(&environment, conda);
70-
let reporter = create_reporter();
71-
locator.find(&reporter);
72-
let result = reporter.get_result();
72+
let reporter = Arc::new(collect::create_reporter());
73+
locator.find(&CacheReporter::new(reporter.clone()));
74+
75+
let managers = reporter.managers.lock().unwrap().clone();
7376

74-
let managers = result.clone().managers;
7577
assert_eq!(managers.len(), 1);
7678

7779
let expected_manager = EnvManager {
7880
executable: pyenv_exe.clone(),
7981
version: None,
8082
tool: EnvManagerType::Pyenv,
8183
};
82-
assert_eq!(json!(expected_manager), json!(result.managers[0]));
84+
assert_eq!(json!(expected_manager), json!(managers[0]));
8385
}
8486

8587
#[test]
@@ -97,7 +99,7 @@ fn find_pyenv_envs() {
9799
};
98100
use pet_pyenv;
99101
use pet_pyenv::PyEnv;
100-
use pet_reporter::test::create_reporter;
102+
use pet_reporter::{cache::CacheReporter, collect};
101103
use serde_json::json;
102104
use std::{collections::HashMap, path::PathBuf, sync::Arc};
103105

@@ -123,11 +125,13 @@ fn find_pyenv_envs() {
123125

124126
let conda = Arc::new(Conda::from(&environment));
125127
let locator = PyEnv::from(&environment, conda);
126-
let reporter = create_reporter();
127-
locator.find(&reporter);
128-
let mut result = reporter.get_result();
128+
let reporter = Arc::new(collect::create_reporter());
129+
locator.find(&CacheReporter::new(reporter.clone()));
130+
131+
let mut environments = reporter.environments.lock().unwrap().clone();
132+
let mut managers = reporter.managers.lock().unwrap().clone();
129133

130-
assert_eq!(result.managers.len(), 2);
134+
assert_eq!(managers.len(), 2);
131135

132136
let expected_pyenv_manager = EnvManager {
133137
executable: pyenv_exe.clone(),
@@ -144,9 +148,9 @@ fn find_pyenv_envs() {
144148
expected_pyenv_manager.clone(),
145149
expected_conda_manager.clone(),
146150
];
147-
result.managers.sort();
151+
managers.sort();
148152
expected.sort();
149-
assert_eq!(expected, result.managers);
153+
assert_eq!(expected, managers);
150154

151155
let expected_3_9_9 = PythonEnvironment {
152156
display_name: None,
@@ -356,8 +360,8 @@ fn find_pyenv_envs() {
356360
expected_pypy,
357361
];
358362
expected_envs.sort();
359-
result.environments.sort();
360-
assert_eq!(json!(expected_envs), json!(result.environments));
363+
environments.sort();
364+
assert_eq!(json!(expected_envs), json!(environments));
361365
}
362366

363367
#[test]

crates/pet-python-utils/src/executable.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ pub fn should_search_for_environments_in_path<P: AsRef<Path>>(path: &P) -> bool
184184
// Mostly copied from https://github.com/github/gitignore/blob/main/Python.gitignore
185185
let folders_to_ignore = [
186186
"node_modules",
187+
".cargo",
188+
".devcontainer",
189+
".github",
187190
".git",
188191
".tox",
189192
".nox",
@@ -195,6 +198,7 @@ pub fn should_search_for_environments_in_path<P: AsRef<Path>>(path: &P) -> bool
195198
".pyre",
196199
".ptype",
197200
".pytest_cache",
201+
".vscode",
198202
"__pycache__",
199203
"__pypackages__",
200204
".mypy_cache",

crates/pet-reporter/src/cache.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ use std::{
99
sync::{Arc, Mutex},
1010
};
1111

12+
/// Poorly named, needs to be renamed,
13+
/// The purpose of this reporter was to act as a cache, but since then
14+
/// the requirements of caching have changed and this is no longer a cache.
15+
/// This is merely a decorator class that ensures we do not report the same env/manager more than once.
1216
pub struct CacheReporter {
1317
reporter: Arc<dyn Reporter>,
1418
reported_managers: Arc<Mutex<HashMap<PathBuf, EnvManager>>>,

crates/pet-reporter/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,3 @@ pub mod collect;
66
pub mod environment;
77
pub mod jsonrpc;
88
pub mod stdio;
9-
pub mod test;

0 commit comments

Comments
 (0)