aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/tests/dependency_resolver/default_policy_test.rs
blob: 979261ef0f159e06144f0d611ebcb28b9f0390b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//! ref: composer/tests/Composer/Test/DependencyResolver/DefaultPolicyTest.php

use indexmap::IndexMap;
use shirabe::dependency_resolver::default_policy::DefaultPolicy;
use shirabe::repository::array_repository::ArrayRepository;
use shirabe::repository::lock_array_repository::LockArrayRepository;
use shirabe::repository::repository_set::RepositorySet;
use shirabe::util::platform::Platform;

#[allow(dead_code)]
struct Fixtures {
    repository_set: RepositorySet,
    repo: ArrayRepository,
    repo_locked: LockArrayRepository,
    policy: DefaultPolicy,
}

fn set_up() -> Fixtures {
    let repository_set = RepositorySet::new(
        "dev",
        IndexMap::new(),
        vec![],
        IndexMap::new(),
        IndexMap::new(),
        IndexMap::new(),
    );
    let repo = ArrayRepository::new(vec![]).unwrap();
    let repo_locked = LockArrayRepository::new(vec![]).unwrap();

    let policy = DefaultPolicy::new(false, false, None);

    Fixtures {
        repository_set,
        repo,
        repo_locked,
        policy,
    }
}

fn tear_down() {
    Platform::clear_env("COMPOSER_PREFER_DEV_OVER_PRERELEASE");
}

struct TearDown;
impl Drop for TearDown {
    fn drop(&mut self) {
        tear_down();
    }
}

// These build a Pool from packages and exercise DefaultPolicy::selectPreferredPackages.
// Constructing the packages/constraints parses versions through a look-around regex the
// regex crate cannot compile, and the setup mirrors the solver fixtures.
macro_rules! stub {
    ($name:ident) => {
        #[test]
        #[ignore = "not yet ported (DefaultPolicy over a Pool; constraint parsing uses a look-around regex)"]
        fn $name() {
            let _tear_down = TearDown;
            let _fixtures = set_up();
            todo!()
        }
    };
}

stub!(test_select_single);
stub!(test_select_newest);
stub!(test_select_newest_picks_latest);
stub!(test_select_newest_picks_latest_stable_with_prefer_stable);
stub!(test_select_lowest_with_prefer_dev_over_prerelease);
stub!(test_select_lowest_prefers_prerelease_over_dev);
stub!(test_select_lowest_with_prefer_stable_still_prefers_stable);
stub!(test_select_newest_with_dev_picks_non_dev);
stub!(test_select_newest_with_preferred_version_picks_preferred_version_if_available);
stub!(test_select_newest_with_preferred_version_picks_newest_otherwise);
stub!(test_select_newest_with_preferred_version_picks_lowest_if_prefer_lowest);
stub!(test_repository_ordering_affects_priority);
stub!(test_select_local_repos_first);
stub!(test_select_all_providers);
stub!(test_prefer_non_replacing_from_same_repo);
stub!(test_prefer_replacing_package_from_same_vendor);
stub!(test_select_lowest);