coliru

A minimal, flexible, dotfile installer
git clone https://git.ashermorgan.net/coliru/
Log | Files | Refs | README

commit fc172d952d479f42dec5761b2f53a909c1373686
parent 12cf0824dfc11f983a3725ac9a3cc4fcb435a6f1
Author: Asher Morgan <59518073+ashermorgan@users.noreply.github.com>
Date:   Thu,  4 Jul 2024 14:24:49 -0700

Test working directory of executing scripts

Diffstat:
Mexamples/test/scripts/script.bat | 3+--
Mexamples/test/scripts/script.sh | 2+-
Mtests/common/mod.rs | 13++++++++++---
Mtests/local.rs | 12++++++------
Mtests/ssh.rs | 12++++++------
5 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/examples/test/scripts/script.bat b/examples/test/scripts/script.bat @@ -1,4 +1,3 @@ @ECHO OFF ECHO script.bat called with %* -REM Windows doesn't support ~/, but it will be edited by copy_manifest() -ECHO script.bat called with %* > ~/log.txt +ECHO script.bat called with %* > scripts/log.txt diff --git a/examples/test/scripts/script.sh b/examples/test/scripts/script.sh @@ -1,4 +1,4 @@ #!/usr/bin/env sh echo "script.sh called with $@" -echo "script.sh called with $@" > ~/log.txt +echo "script.sh called with $@" > scripts/log.txt diff --git a/tests/common/mod.rs b/tests/common/mod.rs @@ -20,12 +20,16 @@ pub struct TempDirs { /// A temporary directory that is mounted to the SSH server under $HOME pub ssh: PathBuf, + + /// A temporary directory that is mounted to the SSH server under ~/.coliru + pub ssh_cwd: PathBuf, } impl Drop for TempDirs { fn drop(&mut self) { - fs::remove_dir_all(&self.ssh).unwrap(); - fs::remove_dir_all(&self.local).unwrap(); fs::remove_dir_all(&self.home).unwrap(); + fs::remove_dir_all(&self.local).unwrap(); + fs::remove_dir_all(&self.ssh).unwrap(); + fs::remove_dir_all(&self.ssh_cwd).unwrap(); } } impl TempDirs { @@ -36,16 +40,19 @@ impl TempDirs { let home = dir.join("home").join(name); let local = dir.join("local").join(name); let ssh = dir.join("ssh").join(name); + let ssh_cwd = dir.join("ssh").join(".coliru").join(name); assert_eq!(home.exists(), false); assert_eq!(local.exists(), false); assert_eq!(ssh.exists(), false); + assert_eq!(ssh_cwd.exists(), false); fs::create_dir_all(&home).unwrap(); fs::create_dir_all(&local).unwrap(); fs::create_dir_all(&ssh).unwrap(); + fs::create_dir_all(&ssh_cwd).unwrap(); - TempDirs { home, local, ssh } + TempDirs { home, local, ssh, ssh_cwd } } } diff --git a/tests/local.rs b/tests/local.rs @@ -30,7 +30,7 @@ script.sh called with arg1 linux let git_contents = read_file(&dirs.home.join(".gitconfig")); let vim1_contents = read_file(&dirs.home.join(".vimrc")); let vim2_exists = dirs.home.join("_vimrc").exists(); - let log_contents = read_file(&dirs.home.join("log.txt")); + let log_contents = read_file(&dirs.local.join("log.txt")); assert_eq!(bash_contents, "bash #2\n"); assert_eq!(git_contents, "git #1\n"); assert_eq!(vim1_contents, "vim #2\n"); @@ -90,7 +90,7 @@ script.sh called with arg1 linux ^windows let git_exists = dirs.home.join(".gitconfig").exists(); let vim1_contents = read_file(&dirs.home.join(".vimrc")); let vim2_exists = dirs.home.join("_vimrc").exists(); - let log_contents = read_file(&dirs.home.join("log.txt")); + let log_contents = read_file(&dirs.local.join("log.txt")); assert_eq!(bash_contents, "bash #2\n"); assert_eq!(git_exists, false); assert_eq!(vim1_contents, "vim #2\n"); @@ -122,7 +122,7 @@ script.sh called with arg1 macos let git_contents = read_file(&dirs.home.join(".gitconfig")); let vim1_contents = read_file(&dirs.home.join(".vimrc")); let vim2_exists = dirs.home.join("_vimrc").exists(); - let log_contents = read_file(&dirs.home.join("log.txt")); + let log_contents = read_file(&dirs.local.join("log.txt")); assert_eq!(bash_contents, "bash #2\n"); assert_eq!(git_contents, "git #1\n"); assert_eq!(vim1_contents, "vim #2\n"); @@ -150,7 +150,7 @@ fn test_local_dry_run() { let git_exists = dirs.home.join(".gitconfig").exists(); let vim1_exists = dirs.home.join(".vimrc").exists(); let vim2_exists = dirs.home.join("_vimrc").exists(); - let log_exists = dirs.home.join("log.txt").exists(); + let log_exists = dirs.local.join("log.txt").exists(); assert_eq!(bash_exists, false); assert_eq!(git_exists, false); assert_eq!(vim1_exists, false); @@ -209,7 +209,7 @@ script.sh called with arg1 linux let git_contents = read_file(&dirs.home.join(".gitconfig")); let vim1_contents = read_file(&dirs.home.join(".vimrc")); let vim2_exists = dirs.home.join("_vimrc").exists(); - let log_contents = read_file(&dirs.home.join("log.txt")); + let log_contents = read_file(&dirs.local.join("log.txt")); assert_eq!(bash_contents, "bash #1\n"); assert_eq!(git_contents, "git #1\n"); assert_eq!(vim1_contents, "vim #1\n"); @@ -330,7 +330,7 @@ script.sh called with arg1 linux write_file(&dirs.local.join("gitconfig"), "git #2\n"); let bash_contents = read_file(&dirs.home.join(".bashrc")); let git_contents = read_file(&dirs.home.join(".gitconfig")); - let log_contents = read_file(&dirs.home.join("log.txt")); + let log_contents = read_file(&dirs.local.join("log.txt")); assert_eq!(bash_contents, "bash #2\n"); assert_eq!(git_contents, "git #1\n"); assert_eq!(log_contents, "script.sh called with arg1 linux\n"); diff --git a/tests/ssh.rs b/tests/ssh.rs @@ -27,7 +27,7 @@ script.sh called with arg1 linux let git_contents = read_file(&dirs.ssh.join(".gitconfig")); let vim1_contents = read_file(&dirs.ssh.join(".vimrc")); let vim2_exists = dirs.ssh.join("_vimrc").exists(); - let log_contents = read_file(&dirs.ssh.join("log.txt")); + let log_contents = read_file(&dirs.ssh_cwd.join("log.txt")); assert_eq!(bash_contents, "bash #1\n"); assert_eq!(git_contents, "git #1\n"); assert_eq!(vim1_contents, "vim #1\n"); @@ -55,7 +55,7 @@ script.sh called with arg1 linux ^windows let git_exists = dirs.ssh.join(".gitconfig").exists(); let vim1_contents = read_file(&dirs.ssh.join(".vimrc")); let vim2_exists = dirs.ssh.join("_vimrc").exists(); - let log_contents = read_file(&dirs.ssh.join("log.txt")); + let log_contents = read_file(&dirs.ssh_cwd.join("log.txt")); assert_eq!(bash_contents, "bash #1\n"); assert_eq!(git_exists, false); assert_eq!(vim1_contents, "vim #1\n"); @@ -84,7 +84,7 @@ script.sh called with arg1 macos let git_contents = read_file(&dirs.ssh.join(".gitconfig")); let vim1_contents = read_file(&dirs.ssh.join(".vimrc")); let vim2_exists = dirs.ssh.join("_vimrc").exists(); - let log_contents = read_file(&dirs.ssh.join("log.txt")); + let log_contents = read_file(&dirs.ssh_cwd.join("log.txt")); assert_eq!(bash_contents, "bash #1\n"); assert_eq!(git_contents, "git #1\n"); assert_eq!(vim1_contents, "vim #1\n"); @@ -111,7 +111,7 @@ fn test_ssh_dry_run() { let git_exists = dirs.ssh.join(".gitconfig").exists(); let vim1_exists = dirs.ssh.join(".vimrc").exists(); let vim2_exists = dirs.ssh.join("_vimrc").exists(); - let log_exists = dirs.ssh.join("log.txt").exists(); + let log_exists = dirs.ssh_cwd.join("log.txt").exists(); assert_eq!(bash_exists, false); assert_eq!(git_exists, false); assert_eq!(vim1_exists, false); @@ -140,7 +140,7 @@ script.sh called with arg1 linux let git_contents = read_file(&dirs.ssh.join(".gitconfig")); let vim1_contents = read_file(&dirs.ssh.join(".vimrc")); let vim2_exists = dirs.ssh.join("_vimrc").exists(); - let log_contents = read_file(&dirs.ssh.join("log.txt")); + let log_contents = read_file(&dirs.ssh_cwd.join("log.txt")); assert_eq!(bash_contents, "bash #1\n"); assert_eq!(git_contents, "git #1\n"); assert_eq!(vim1_contents, "vim #1\n"); @@ -197,7 +197,7 @@ script.sh called with arg1 linux // Assert files are correctly copied/run let bash_contents = read_file(&dirs.ssh.join(".bashrc")); let git_contents = read_file(&dirs.ssh.join(".gitconfig")); - let log_contents = read_file(&dirs.ssh.join("log.txt")); + let log_contents = read_file(&dirs.ssh_cwd.join("log.txt")); assert_eq!(bash_contents, "bash #1\n"); assert_eq!(git_contents, "git #1\n"); assert_eq!(log_contents, "script.sh called with arg1 linux\n");