From f2fb351c391dca7c188a8623e71519619c2ce9a0 Mon Sep 17 00:00:00 2001 From: Mat M Date: Sun, 8 Dec 2019 00:25:53 +0100 Subject: Do not symlink a symlink in mkrc We have a bug when calling mkrc(1) on a symlink: ```sh mkrc ~/.vimrc # links ~/.vimrc to ~/.dotfiles/vimrc mkrc ~/.vimrc # deletes ~/.dotfiles/vimrc ``` This catches that case ahead of time, preventing the user from running mkrc(1) on a symlink. Fix #144. --- test/mkrc-no-symlinks.t | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 test/mkrc-no-symlinks.t (limited to 'test/mkrc-no-symlinks.t') diff --git a/test/mkrc-no-symlinks.t b/test/mkrc-no-symlinks.t new file mode 100644 index 0000000..e37d56a --- /dev/null +++ b/test/mkrc-no-symlinks.t @@ -0,0 +1,26 @@ + $ . "$TESTDIR/helper.sh" + +Passing a linked file is rejected. +We need a second path not under what will be $HOME + + $ EXTDIR="${CRAMTMP}2" + > mkdir -p "$EXTDIR" + > echo 'Content' > "$EXTDIR/example" + > ln -s "$EXTDIR/example" "$HOME/.example" + + $ mkrc .example + '.example' is a symlink. Cannot process file. + [1] + + $ refute "is a symlink" -h $HOME/.dotfiles/.example + +Passing a file in one linked dir is rejected + + $ mkdir "$HOME/.config" + > ln -s "$EXTDIR/" "$HOME/.config/tmpdir" + + $ mkrc -v .config/tmpdir/example + '.config/tmpdir/example' path contains a symlink (tmpdir). Cannot process file. + [1] + + $ refute "is a symlink" -h "$HOME/.dotfiles/config/tmpdir/example" -- cgit v1.2.3