aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-01-26 01:55:27 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2025-01-26 01:55:27 +0100
commit8bc965791eda605f29cf0138b1596bb1fcffcb0c (patch)
tree34c896c272fdfa5e139952ce1ef8fad03ba1eb82 /src
parent4c7d60b6554634957a4244e981b970b1e36d5fa6 (diff)
Add binstall
Diffstat (limited to 'src')
-rw-r--r--src/command/sync_up.rs110
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();
+ }
+}