#[doc(hidden)]
pub extern crate url;
extern crate self as env_url;
pub use derive_env_url::*;
pub use url::{ParseError, Url};
pub trait ServiceURL {
fn service_url() -> Result<Url, ParseError>;
}
#[cfg(test)]
#[ctor::ctor]
fn setup_test_env() {
std::env::remove_var("REDIS_URL");
std::env::remove_var("REDIS_URL_ENV");
std::env::remove_var("REDIS_SCHEME");
std::env::remove_var("REDIS_SCHEME_ENV");
std::env::remove_var("REDIS_PATH");
std::env::remove_var("REDIS_PATH_ENV");
std::env::remove_var("REDIS_QUERY");
std::env::remove_var("REDIS_QUERY_ENV");
std::env::remove_var("REDIS_USERINFO");
std::env::remove_var("REDIS_USERINFO_ENV");
}
#[cfg(test)]
mod tests {
use env_url::*;
#[derive(EnvURL)]
#[env_url(env_prefix = "REDIS", default = "redis://127.0.0.1:6379")]
struct RedisDB;
#[test]
fn it_creates_url() -> Result<(), ParseError> {
let url = RedisDB::service_url()?;
assert_eq!(url.as_str(), "redis://127.0.0.1:6379");
Ok(())
}
}