summaryrefslogtreecommitdiff
path: root/tests/chown.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/chown.test')
-rwxr-xr-xtests/chown.test41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/chown.test b/tests/chown.test
new file mode 100755
index 0000000..40ed7b5
--- /dev/null
+++ b/tests/chown.test
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+[ -f testing.sh ] && . testing.sh
+
+if [ "$(id -u)" -ne 0 ]
+then
+ echo "SKIPPED: chown (not root)"
+ continue 2>/dev/null
+ exit
+fi
+
+# We chown between user "root" and the last user in /etc/passwd,
+# and group "root" and the last group in /etc/group.
+
+USR="$(sed -n '$s/:.*//p' /etc/passwd)"
+GRP="$(sed -n '$s/:.*//p' /etc/group)"
+
+# Set up a little testing hierarchy
+
+rm -rf testdir &&
+mkdir testdir &&
+touch testdir/file
+F=testdir/file
+
+# Wrapper to reset groups and return results
+
+OUT="&& echo \$(ls -l testdir/file | awk '{print \$3,\$4}')"
+
+#testing "name" "command" "result" "infile" "stdin"
+
+# Basic smoketest
+testing "chown initial" "chown root:root $F $OUT" "root root\n" "" ""
+testing "chown usr:grp" "chown $USR:$GRP $F $OUT" "$USR $GRP\n" "" ""
+testing "chown root" "chown root $F $OUT" "root $GRP\n" "" ""
+# TODO: can we test "owner:"?
+testing "chown :grp" "chown root:root $F && chown :$GRP $F $OUT" \
+ "root $GRP\n" "" ""
+testing "chown :" "chown $USR:$GRP $F && chown : $F $OUT" \
+ "$USR $GRP\n" "" ""
+
+rm -rf testdir