1pub mod packs;
2
3#[cfg(test)]
4mod test_util {
5 use configuration::Configuration;
6 use packs::parsing::ruby::zeitwerk::get_zeitwerk_constant_resolver;
7 use std::collections::{HashMap, HashSet};
8 use std::path::PathBuf;
9
10 use packs::configuration;
11
12 use crate::packs::configuration::from_raw;
13 use crate::packs::constant_resolver::ConstantResolver;
14 use crate::packs::pack::Pack;
15 use crate::packs::raw_configuration::RawConfiguration;
16 use crate::packs::walk_directory::WalkDirectoryResult;
17 use crate::packs::{self};
18
19 pub const SIMPLE_APP: &str = "tests/fixtures/simple_app";
20
21 pub fn get_absolute_root(fixture_name: &str) -> PathBuf {
22 PathBuf::from(fixture_name).canonicalize().unwrap()
23 }
24
25 pub fn get_zeitwerk_constant_resolver_for_fixture(
26 fixture_name: &str,
27 ) -> anyhow::Result<Box<dyn ConstantResolver>> {
28 let absolute_root = get_absolute_root(fixture_name);
29 let configuration = configuration::get(&absolute_root, &10)?;
30
31 Ok(get_zeitwerk_constant_resolver(
32 &configuration.pack_set,
33 &configuration.constant_resolver_configuration(),
34 ))
35 }
36
37 #[allow(clippy::derivable_impls)]
41 impl Default for Pack {
42 fn default() -> Self {
43 Self {
44 yml: Default::default(),
45 name: Default::default(),
46 relative_path: Default::default(),
47 dependencies: Default::default(),
48 ignored_dependencies: Default::default(),
49 ignored_private_constants: Default::default(),
50 private_constants: Default::default(),
51 package_todo: Default::default(),
52 visible_to: Default::default(),
53 public_folder: Default::default(),
54 layer: Default::default(),
55 enforce_dependencies: Default::default(),
56 enforce_privacy: Default::default(),
57 enforce_visibility: Default::default(),
58 enforce_folder_privacy: Default::default(),
59 enforce_folder_visibility: None,
60 enforce_layers: Default::default(),
61 client_keys: Default::default(),
62 owner: Default::default(),
63 enforcement_globs_ignore: Default::default(),
64 }
65 }
66 }
67
68 impl Default for Configuration {
69 fn default() -> Self {
70 let default_absolute_root = std::env::current_dir().unwrap();
71 let root_pack = Pack {
72 name: ".".to_owned(),
73 ..Pack::default()
74 };
75
76 let included_packs: HashSet<Pack> =
77 vec![root_pack].into_iter().collect();
78
79 let walk_directory_result = WalkDirectoryResult {
80 included_files: HashSet::new(),
81 included_packs,
82 owning_package_yml_for_file: HashMap::new(),
83 };
84 from_raw(
85 &default_absolute_root,
86 RawConfiguration::default(),
87 walk_directory_result,
88 &0,
89 )
90 .unwrap() }
92 }
93}