diff options
| author | diogo464 <[email protected]> | 2022-02-08 09:21:12 +0000 |
|---|---|---|
| committer | diogo464 <[email protected]> | 2022-02-08 09:21:12 +0000 |
| commit | 92b05a877eb772985d2f4fc9cd198ca642b69b6a (patch) | |
| tree | 4a2edc173b8809e929e4abc47899ae9c6d956684 /dotup_cli/tests | |
| parent | 0992c36733f58750da93921041424fd09f0158ed (diff) | |
removed old code
Diffstat (limited to 'dotup_cli/tests')
| -rw-r--r-- | dotup_cli/tests/cli.rs | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/dotup_cli/tests/cli.rs b/dotup_cli/tests/cli.rs deleted file mode 100644 index c836f63..0000000 --- a/dotup_cli/tests/cli.rs +++ /dev/null | |||
| @@ -1,145 +0,0 @@ | |||
| 1 | use assert_cmd::{assert::Assert, prelude::*}; | ||
| 2 | use dotup::ArchiveLink; | ||
| 3 | use std::{ | ||
| 4 | path::{Path, PathBuf}, | ||
| 5 | process::Command, | ||
| 6 | }; | ||
| 7 | use tempfile::TempDir; | ||
| 8 | |||
| 9 | const DEPOT_FILE_NAME: &str = "depot.toml"; | ||
| 10 | const BIN_NAME: &str = "dotup"; | ||
| 11 | |||
| 12 | fn create_empty_file(path: impl AsRef<Path>) { | ||
| 13 | let path = path.as_ref(); | ||
| 14 | if let Some(parent) = path.parent() { | ||
| 15 | std::fs::create_dir_all(parent).unwrap(); | ||
| 16 | } | ||
| 17 | std::fs::write(path, "").unwrap(); | ||
| 18 | } | ||
| 19 | |||
| 20 | fn prepare_command(dir: &TempDir) -> Command { | ||
| 21 | let mut cmd = Command::cargo_bin(BIN_NAME).unwrap(); | ||
| 22 | cmd.current_dir(dir.path()); | ||
| 23 | cmd | ||
| 24 | } | ||
| 25 | |||
| 26 | fn run_command(dir: &TempDir, cmd: &str) -> Assert { | ||
| 27 | let mut c = prepare_command(dir); | ||
| 28 | c.current_dir(dir.path()); | ||
| 29 | c.args(cmd.split_whitespace()); | ||
| 30 | c.assert() | ||
| 31 | } | ||
| 32 | |||
| 33 | fn prepare_dir() -> TempDir { | ||
| 34 | let dir = TempDir::new().unwrap(); | ||
| 35 | create_empty_file(dir.path().join("o1/file.txt")); | ||
| 36 | create_empty_file(dir.path().join("o1/dir/file.txt")); | ||
| 37 | create_empty_file(dir.path().join("o2/file1.txt")); | ||
| 38 | create_empty_file(dir.path().join("o2/file2.txt")); | ||
| 39 | dir | ||
| 40 | } | ||
| 41 | |||
| 42 | #[test] | ||
| 43 | fn test_cli_init() { | ||
| 44 | let dir = prepare_dir(); | ||
| 45 | let assert = run_command(&dir, "init"); | ||
| 46 | |||
| 47 | assert.success().code(0); | ||
| 48 | assert!(dir.path().join(DEPOT_FILE_NAME).is_file()); | ||
| 49 | } | ||
| 50 | |||
| 51 | #[test] | ||
| 52 | fn test_cli_link() { | ||
| 53 | let dir = prepare_dir(); | ||
| 54 | run_command(&dir, "init").success(); | ||
| 55 | |||
| 56 | let assert = run_command(&dir, "link o1 .config"); | ||
| 57 | assert.success().code(0); | ||
| 58 | |||
| 59 | let assert = run_command(&dir, "link --directory o2 .scripts"); | ||
| 60 | assert.success().code(0); | ||
| 61 | |||
| 62 | let archive = dotup::archive_read(dir.path().join(DEPOT_FILE_NAME)).unwrap(); | ||
| 63 | let link1 = ArchiveLink { | ||
| 64 | origin: PathBuf::from("o1/file.txt"), | ||
| 65 | destination: PathBuf::from(".config/file.txt"), | ||
| 66 | }; | ||
| 67 | let link2 = ArchiveLink { | ||
| 68 | origin: PathBuf::from("o1/dir/file.txt"), | ||
| 69 | destination: PathBuf::from(".config/dir/file.txt"), | ||
| 70 | }; | ||
| 71 | let link3 = ArchiveLink { | ||
| 72 | origin: PathBuf::from("o2"), | ||
| 73 | destination: PathBuf::from(".scripts"), | ||
| 74 | }; | ||
| 75 | |||
| 76 | assert!(archive.links.contains(&link1)); | ||
| 77 | assert!(archive.links.contains(&link2)); | ||
| 78 | assert!(archive.links.contains(&link3)); | ||
| 79 | } | ||
| 80 | |||
| 81 | #[test] | ||
| 82 | fn test_cli_install_uninstall_unlink() { | ||
| 83 | let dir = prepare_dir(); | ||
| 84 | run_command(&dir, "init").success(); | ||
| 85 | run_command(&dir, "link o1 .config").success(); | ||
| 86 | run_command(&dir, "link --directory o2 .scripts").success(); | ||
| 87 | |||
| 88 | let install_dir = TempDir::new().unwrap(); | ||
| 89 | let install_base = format!("{}", install_dir.path().display()); | ||
| 90 | run_command( | ||
| 91 | &dir, | ||
| 92 | &format!("--install-path {} install o1 o2", install_base), | ||
| 93 | ) | ||
| 94 | .success(); | ||
| 95 | |||
| 96 | assert_eq!( | ||
| 97 | std::fs::read_link(install_dir.path().join(".config/file.txt")).unwrap(), | ||
| 98 | dir.path().join("o1/file.txt") | ||
| 99 | ); | ||
| 100 | assert_eq!( | ||
| 101 | std::fs::read_link(install_dir.path().join(".config/dir/file.txt")).unwrap(), | ||
| 102 | dir.path().join("o1/dir/file.txt") | ||
| 103 | ); | ||
| 104 | assert_eq!( | ||
| 105 | std::fs::read_link(install_dir.path().join(".scripts")).unwrap(), | ||
| 106 | dir.path().join("o2") | ||
| 107 | ); | ||
| 108 | |||
| 109 | run_command( | ||
| 110 | &dir, | ||
| 111 | &format!("--install-path {} uninstall o1/file.txt", install_base), | ||
| 112 | ) | ||
| 113 | .success(); | ||
| 114 | assert!(!install_dir.path().join(".config/file.txt").exists()); | ||
| 115 | assert!(install_dir.path().join(".config/dir/file.txt").exists()); | ||
| 116 | assert!(install_dir.path().join(".scripts").exists()); | ||
| 117 | |||
| 118 | run_command( | ||
| 119 | &dir, | ||
| 120 | &format!("--install-path {} uninstall o1", install_base), | ||
| 121 | ) | ||
| 122 | .success(); | ||
| 123 | assert!(!install_dir.path().join(".config/file.txt").exists()); | ||
| 124 | assert!(!install_dir.path().join(".config/dir/file.txt").exists()); | ||
| 125 | assert!(install_dir.path().join(".scripts").exists()); | ||
| 126 | |||
| 127 | assert_eq!( | ||
| 128 | 3, | ||
| 129 | dotup::archive_read(dir.path().join(DEPOT_FILE_NAME)) | ||
| 130 | .unwrap() | ||
| 131 | .links | ||
| 132 | .len() | ||
| 133 | ); | ||
| 134 | |||
| 135 | run_command(&dir, &format!("unlink --uninstall {} o2", install_base)).success(); | ||
| 136 | assert!(!install_dir.path().join(".scripts").exists()); | ||
| 137 | |||
| 138 | assert_eq!( | ||
| 139 | 2, | ||
| 140 | dotup::archive_read(dir.path().join(DEPOT_FILE_NAME)) | ||
| 141 | .unwrap() | ||
| 142 | .links | ||
| 143 | .len() | ||
| 144 | ); | ||
| 145 | } | ||
