diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-01-26 01:55:27 +0100 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-01-26 01:55:27 +0100 |
| commit | 8bc965791eda605f29cf0138b1596bb1fcffcb0c (patch) | |
| tree | 34c896c272fdfa5e139952ce1ef8fad03ba1eb82 /src | |
| parent | 4c7d60b6554634957a4244e981b970b1e36d5fa6 (diff) | |
Add binstall
Diffstat (limited to 'src')
| -rw-r--r-- | src/command/sync_up.rs | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/command/sync_up.rs b/src/command/sync_up.rs index b609c34..14ba070 100644 --- a/src/command/sync_up.rs +++ b/src/command/sync_up.rs @@ -44,3 +44,113 @@ impl super::Command for SyncUp { "\t\t\t\tPushes to the git remote if configured" } } + +#[cfg(test)] +mod tests { + use std::fs::create_dir_all; + + use super::*; + use crate::command::Command; + use crate::configuration::Configuration; + + use test_utilities::*; + + #[test] + fn test_sync_up_command() { + let sync_up = SyncUp::new(); + + let test_dir = setup_test_dir(); + let local_dir = test_dir.join("commandlocal"); + let remote_dir = test_dir.join("commandremote"); + create_dir_all(&local_dir).expect("Could not create local test directory"); + create_dir_all(&remote_dir).expect("Could not create remote test directory"); + + create_remote(&remote_dir); + + let remote_dir_as_string = remote_dir.display().to_string(); + create_test_file(&test_dir.join("remoteconfig"), &remote_dir_as_string); + + let mut configuration = Configuration::new(); + configuration.data_directory = local_dir.clone(); + configuration.remote_config = test_dir.join("remoteconfig"); + + create_test_file(&local_dir.join("file1.txt"), "I exist"); + sync_up.execute(None, &configuration, "sync-up") + .expect("Could not sync up to remote"); + assert_file_in_repo_with_contents(&remote_dir_as_string, "file1.txt", "I exist"); + assert_file_in_repo_does_not_exist(&remote_dir_as_string, "file2.txt"); + + create_test_file(&local_dir.join("file2.txt"), "I also exist now, btw"); + sync_up.execute(None, &configuration, "sync-up") + .expect("Could not sync up to remote"); + assert_file_in_repo_with_contents(&remote_dir_as_string, "file1.txt", "I exist"); + assert_file_in_repo_with_contents( + &remote_dir_as_string, + "file2.txt", + "I also exist now, btw", + ); + cleanup_test_dir(&test_dir); + } + + #[test] + fn test_sync_up_fails_with_incorrect_remote() { + let sync_up = SyncUp::new(); + + let test_dir = setup_test_dir(); + create_test_file(&test_dir.join("remoteconfig"), "DO NOT WAAANT"); + + let mut configuration = Configuration::new(); + configuration.data_directory = test_dir.clone(); + configuration.remote_config = test_dir.join("remoteconfig"); + + let result = sync_up.execute(None, &configuration, "sync-up"); + assert!(result.is_err()); + cleanup_test_dir(&test_dir); + } + + #[test] + fn test_sync_up_does_not_fail_if_running_as_dependency() { + let sync_up = SyncUp::new(); + + let test_dir = setup_test_dir(); + create_test_file(&test_dir.join("remoteconfig"), "DO NOT WAAANT"); + + let mut configuration = Configuration::new(); + configuration.data_directory = test_dir.clone(); + configuration.remote_config = test_dir.join("remoteconfig"); + + let result = sync_up.execute(None, &configuration, "NOPE"); + assert!(result.is_ok()); + cleanup_test_dir(&test_dir); + } + + #[test] + fn sync_up_before_dependencies() { + let sync_up = SyncUp::new(); + let dependencies = sync_up.before_dependencies(); + + assert_eq!(dependencies.len(), 0); + } + + #[test] + fn sync_up_after_dependencies() { + let sync_up = SyncUp::new(); + let dependencies = sync_up.after_dependencies(); + + assert_eq!(dependencies.len(), 0); + } + + // These two tests feel pointless but I'm doing it for the coverage :p + + #[test] + fn sync_up_command_output() { + let sync_up = SyncUp::new(); + sync_up.command(); + } + + #[test] + fn sync_up_help_output() { + let sync_up = SyncUp::new(); + sync_up.help(); + } +} |