// extensions.rs // ************************************************************************* // * Copyright (C) 2020 Daniel Mueller (deso@posteo.net) * // * * // * This program is free software: you can redistribute it and/or modify * // * it under the terms of the GNU General Public License as published by * // * the Free Software Foundation, either version 3 of the License, or * // * (at your option) any later version. * // * * // * This program is distributed in the hope that it will be useful, * // * but WITHOUT ANY WARRANTY; without even the implied warranty of * // * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * // * GNU General Public License for more details. * // * * // * You should have received a copy of the GNU General Public License * // * along with this program. If not, see . * // ************************************************************************* use std::env; use std::fs; use std::io; use super::*; use crate::commands::resolve_extension; use crate::Error; #[test] fn discover_extensions() -> crate::Result<()> { let dir1 = tempfile::tempdir()?; let dir2 = tempfile::tempdir()?; { let ext1_path = dir1.path().join("nitrocli-ext1"); let ext2_path = dir1.path().join("nitrocli-ext2"); let ext3_path = dir2.path().join("nitrocli-super-1337-extensions111one"); let _ext1 = fs::File::create(&ext1_path)?; let _ext2 = fs::File::create(&ext2_path)?; let _ext3 = fs::File::create(&ext3_path)?; let path = env::join_paths(&[dir1.path(), dir2.path()]).map_err(|err| err.to_string())?; assert_eq!( resolve_extension(&path, ffi::OsStr::new("ext1"))?, ext1_path ); assert_eq!( resolve_extension(&path, ffi::OsStr::new("ext2"))?, ext2_path ); assert_eq!( resolve_extension(&path, ffi::OsStr::new("super-1337-extensions111one"))?, ext3_path ); match resolve_extension(&ffi::OsStr::new(""), ffi::OsStr::new("ext1")) { Err(Error::IoError(err)) if err.kind() == io::ErrorKind::NotFound => { let expected = io::Error::new(io::ErrorKind::NotFound, "extension nitrocli-ext1 not found"); assert_eq!(err.to_string(), expected.to_string()) } r => panic!("Unexpected variant found: {:?}", r), } } Ok(()) }