blob: 40ed7b5fef8bebfe43f9bcac960ebdc51773a302 [file] [log] [blame]
Elliott Hughes50d32072015-01-14 03:43:49 -06001#!/bin/bash
2
3[ -f testing.sh ] && . testing.sh
4
5if [ "$(id -u)" -ne 0 ]
6then
7 echo "SKIPPED: chown (not root)"
8 continue 2>/dev/null
9 exit
10fi
11
12# We chown between user "root" and the last user in /etc/passwd,
13# and group "root" and the last group in /etc/group.
14
15USR="$(sed -n '$s/:.*//p' /etc/passwd)"
16GRP="$(sed -n '$s/:.*//p' /etc/group)"
17
18# Set up a little testing hierarchy
19
20rm -rf testdir &&
21mkdir testdir &&
22touch testdir/file
23F=testdir/file
24
25# Wrapper to reset groups and return results
26
27OUT="&& echo \$(ls -l testdir/file | awk '{print \$3,\$4}')"
28
29#testing "name" "command" "result" "infile" "stdin"
30
31# Basic smoketest
32testing "chown initial" "chown root:root $F $OUT" "root root\n" "" ""
33testing "chown usr:grp" "chown $USR:$GRP $F $OUT" "$USR $GRP\n" "" ""
34testing "chown root" "chown root $F $OUT" "root $GRP\n" "" ""
35# TODO: can we test "owner:"?
36testing "chown :grp" "chown root:root $F && chown :$GRP $F $OUT" \
37 "root $GRP\n" "" ""
38testing "chown :" "chown $USR:$GRP $F && chown : $F $OUT" \
39 "$USR $GRP\n" "" ""
40
41rm -rf testdir