use libnewsboat::{cliargsparser::CliArgsParser, configpaths::ConfigPaths}; use section_testing::{enable_sections, section}; use std::env; use tempfile::TempDir; mod configpaths_helpers; enable_sections! { #[test] fn t_configpaths_try_migrate_from_newsbeuter_does_not_migrate_if_config_paths_were_specified_via_cli( ) { let tmp = TempDir::new().unwrap(); env::set_var("HOME", tmp.path()); // ConfigPaths rely on these variables, so let's sanitize them to ensure // that the tests aren't affected env::remove_var("XDG_CONFIG_HOME"); env::remove_var("XDG_DATA_HOME"); if section!("Newsbeuter dotdir exists") { configpaths_helpers::mock_newsbeuter_dotdir(&tmp); } if section!("Newsbeuter XDG dirs exist") { configpaths_helpers::mock_newsbeuter_xdg_dirs(&tmp); } let boat_sentries = configpaths_helpers::FileSentries::new(); let url_file = tmp.path().join("my urls file"); assert!(configpaths_helpers::create_file( &url_file, &boat_sentries.urls )); let cache_file = tmp.path().join("new cache.db"); assert!(configpaths_helpers::create_file( &cache_file, &boat_sentries.cache )); let config_file = tmp.path().join("custom config file"); assert!(configpaths_helpers::create_file( &config_file, &boat_sentries.config )); let parser = CliArgsParser::new(vec![ "newsboat".to_string(), "-u".to_string(), url_file.to_string_lossy().into_owned(), "-c".to_string(), cache_file.to_string_lossy().into_owned(), "-C".to_string(), config_file.to_string_lossy().into_owned(), "-q".to_string(), ]); let mut paths = ConfigPaths::new(); assert!(paths.initialized()); paths.process_args(&parser); // No migration should occur, so should return false. assert!(!paths.try_migrate_from_newsbeuter()); assert_eq!( &configpaths_helpers::file_contents(&url_file), &boat_sentries.urls ); assert_eq!( &configpaths_helpers::file_contents(&config_file), &boat_sentries.config ); assert_eq!( &configpaths_helpers::file_contents(&cache_file), &boat_sentries.cache ); } }