anor_common/utils/
build_profile.rs

1/// Build Profile
2/// https://doc.rust-lang.org/cargo/reference/profiles.html
3#[derive(Debug, PartialEq)]
4pub enum BuildProfile {
5    /// cargo build --release
6    Release,
7
8    /// cargo build
9    Dev,
10
11    /// cargo test
12    Test,
13    // Bench,
14    // Doc,
15}
16
17/// Returns whether debug information is included in the build
18pub fn debug_mode() -> bool {
19    #[cfg(debug_assertions)]
20    return true;
21
22    #[cfg(not(debug_assertions))]
23    return false;
24}
25
26/// Returns whether the build profile is test
27pub fn is_cargo_test() -> bool {
28    build_profile() == BuildProfile::Test
29}
30
31/// Returns a `BuildProfile` value according to the build
32pub fn build_profile() -> BuildProfile {
33    if cfg!(test) {
34        return BuildProfile::Test;
35    }
36    if debug_mode() {
37        return BuildProfile::Dev;
38    }
39
40    BuildProfile::Release
41}
42
43#[cfg(test)]
44mod test {
45    use crate::utils::build_profile::*;
46
47    #[test]
48    fn build_profile_test() {
49        assert_eq!(build_profile(), BuildProfile::Test);
50    }
51
52    #[test]
53    fn is_build_profile_test_() {
54        assert!(is_cargo_test());
55    }
56
57    #[test]
58    fn debug_mode_test() {
59        assert!(debug_mode());
60    }
61}