aboutsummaryrefslogtreecommitdiff
path: root/tests/ln.test
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2014-09-20 13:09:14 -0500
committerRob Landley <rob@landley.net>2014-09-20 13:09:14 -0500
commit387edf547eb09b27ca6d49772eb048d729f09cf4 (patch)
tree59d482f33735690cab6d90723393afa1e2c8dce5 /tests/ln.test
parentd3df423a6cde0c6282658ff628574771d3824d71 (diff)
downloadtoybox-387edf547eb09b27ca6d49772eb048d729f09cf4.tar.gz
Move testsuite out of scripts/test into its own top level tests directory, and make ctrl-c kill "make test" more reliably.
Diffstat (limited to 'tests/ln.test')
-rw-r--r--tests/ln.test70
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/ln.test b/tests/ln.test
new file mode 100644
index 00000000..aea3ab04
--- /dev/null
+++ b/tests/ln.test
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>
+# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>
+
+[ -f testing.sh ] && . testing.sh
+
+#testing "name" "command" "result" "infile" "stdin"
+#set -x
+
+echo file1 > file
+testing "ln create_hardlink" "ln file hlink && [ file -ef hlink ] &&
+ echo 'yes'" "yes\n" "" ""
+testing "ln create_softlink" "ln -s file slink && [ -L slink ] &&
+ readlink slink" "file\n" "" ""
+rm slink hlink
+
+echo hlink1 > hlink
+testing "ln force_create_hardlink" "ln -f file hlink &&
+ [ file -ef hlink ] && cat hlink 2>/dev/null" "file1\n" "" ""
+
+echo slink1 > slink
+testing "ln force_create_softlink" "ln -f -s file slink &&
+ [ -L slink ] && readlink slink" "file\n" "" ""
+rm slink hlink
+
+echo hlink1 > hlink
+set +e
+testing "ln preserves_hardlinks" "ln file hlink 2>/dev/null || echo 'yes'" \
+ "yes\n" "" ""
+
+echo slink1 > slink
+set +e
+testing "ln preserves_softlinks" "ln -s file slink 2>/dev/null || echo 'yes'" \
+ "yes\n" "" ""
+rm slink hlink
+
+mkdir dir
+testing "ln multilevel_symbolic_links" "ln -s dir slink &&
+ ln -s file slink && [ -L slink -a -L slink/file ] &&
+ readlink slink && readlink slink/file" "dir\nfile\n" "" ""
+rm slink
+
+testing "ln no_dereference" "ln -s dir slink &&
+ ln -n -s file slink 2>/dev/null || [ -L slink ] && readlink slink" \
+ "dir\n" "" ""
+rm -rf file dir slink
+
+touch file1 file2 && mkdir dir
+testing "ln create_multiple_hardlinks" "ln file* dir/ &&
+ [ file1 -ef dir/file1 -a file2 -ef dir/file2 ] && echo 'yes'" "yes\n" "" ""
+rm -rf file* dir
+
+touch file1 file2 && mkdir dir
+testing "ln create_multiple_softlinks" "ln -s file* dir/ &&
+ [ -L dir/file1 -a -L dir/file2 ] && readlink dir/file1 &&
+ readlink dir/file2" "file1\nfile2\n" "" ""
+rm -rf file* dir
+
+echo file1 > file
+testing "ln create_softlink_and_remove_sourcefile" "ln -s file slink &&
+ [ -L slink ] && rm file && cat slink 2>/dev/null || echo 'yes' " \
+ "yes\n" "" ""
+rm -f file slink
+
+echo file1 > file
+testing "ln create_hardlink_and_remove_sourcefile" "ln file hlink &&
+ [ file -ef hlink ] && rm file && [ -f hlink ] && echo 'yes'" \
+ "yes\n" "" ""
+rm -f file hlink