mirror of
https://github.com/Steffo99/micronfig.git
synced 2024-11-21 23:54:20 +00:00
Write a couple tests for the core library
This commit is contained in:
parent
e8e17647cb
commit
5c7a6e90dd
7 changed files with 70 additions and 2 deletions
|
@ -4,6 +4,7 @@
|
|||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/micronfig/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/micronfig/tests" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
|
|
|
@ -22,3 +22,6 @@ envdot = ["regex"]
|
|||
[dependencies]
|
||||
micronfig_macros = { version = "0.3.0", path = "../micronfig_macros" }
|
||||
regex = { version = "1.10.2", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
tempfile = { version = "3.9.0" }
|
|
@ -21,3 +21,34 @@ pub fn get(key: &OsStr) -> Option<String> {
|
|||
|
||||
Some(data)
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
pub(crate) mod tests {
|
||||
use super::*;
|
||||
use crate::testing::tempfile_fixture;
|
||||
|
||||
#[test]
|
||||
fn it_works() {
|
||||
let file = tempfile_fixture("XYZ");
|
||||
std::env::set_var("LETTERS_FILE", file.as_os_str());
|
||||
|
||||
let value = get("LETTERS".as_ref());
|
||||
assert_eq!(value, Some("XYZ".to_string()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn missing_envvar() {
|
||||
std::env::remove_var("THIS_ENVVAR_DOES_NOT_EXIST_FILE");
|
||||
let value = get("THIS_ENVVAR_DOES_NOT_EXIST".as_ref());
|
||||
assert_eq!(value, None)
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn missing_file() {
|
||||
std::env::set_var("NONEXISTENT_FILE", "/this/file/does/not/exist");
|
||||
let value = get("NONEXISTENT".as_ref());
|
||||
println!("{:?}", value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,3 +6,23 @@ use std::ffi::OsStr;
|
|||
pub fn get(key: &OsStr) -> Option<String> {
|
||||
std::env::var(key).ok()
|
||||
}
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
pub(crate) mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn it_works() {
|
||||
std::env::set_var("LETTERS", "XYZ");
|
||||
let value = get("LETTERS".as_ref());
|
||||
assert_eq!(value, Some("XYZ".to_string()));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn missing_envvar() {
|
||||
std::env::remove_var("THIS_ENVVAR_DOES_NOT_EXIST");
|
||||
let value = get("THIS_ENVVAR_DOES_NOT_EXIST".as_ref());
|
||||
assert_eq!(value, None);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,5 +6,7 @@ pub mod envvars;
|
|||
pub mod envfiles;
|
||||
#[cfg(feature = "envdot")]
|
||||
pub mod envdot;
|
||||
#[cfg(test)]
|
||||
mod testing;
|
||||
|
||||
pub use micronfig_macros::config;
|
||||
|
|
11
micronfig/src/testing.rs
Normal file
11
micronfig/src/testing.rs
Normal file
|
@ -0,0 +1,11 @@
|
|||
pub fn tempfile_fixture(content: &str) -> tempfile::TempPath {
|
||||
use std::io::Write;
|
||||
|
||||
let mut file = tempfile::NamedTempFile::new()
|
||||
.expect("the tempfile fixture to be created successfully");
|
||||
write!(file, "{}", content)
|
||||
.expect("to be able to write into the tempfile fixture");
|
||||
|
||||
file.into_temp_path()
|
||||
}
|
||||
|
|
@ -182,8 +182,8 @@ pub fn config(input: TokenStream) -> TokenStream {
|
|||
#[allow(non_snake_case)]
|
||||
pub(crate) fn #identifier() -> &'static #type_final_option {
|
||||
#identifier::_lock.get_or_init(|| {
|
||||
let key: std::ffi::OsString = #identifier_string.into();
|
||||
let value: Option<std::string::String> = _cache().get(&key);
|
||||
let key = #identifier_string.as_ref();
|
||||
let value: Option<std::string::String> = _cache().get(key);
|
||||
|
||||
#require_code
|
||||
#conversion_code
|
||||
|
|
Loading…
Reference in a new issue