xref: /titanic_50/usr/src/lib/libshell/common/tests/alias.sh (revision 3e14f97f673e8a630f076077de35afdd43dc1587)
1da2e3ebdSchin########################################################################
2da2e3ebdSchin#                                                                      #
3da2e3ebdSchin#               This software is part of the ast package               #
4*3e14f97fSRoger A. Faulkner#          Copyright (c) 1982-2010 AT&T Intellectual Property          #
5da2e3ebdSchin#                      and is licensed under the                       #
6da2e3ebdSchin#                  Common Public License, Version 1.0                  #
77c2fbfb3SApril Chin#                    by AT&T Intellectual Property                     #
8da2e3ebdSchin#                                                                      #
9da2e3ebdSchin#                A copy of the License is available at                 #
10da2e3ebdSchin#            http://www.opensource.org/licenses/cpl1.0.txt             #
11da2e3ebdSchin#         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         #
12da2e3ebdSchin#                                                                      #
13da2e3ebdSchin#              Information and Software Systems Research               #
14da2e3ebdSchin#                            AT&T Research                             #
15da2e3ebdSchin#                           Florham Park NJ                            #
16da2e3ebdSchin#                                                                      #
17da2e3ebdSchin#                  David Korn <dgk@research.att.com>                   #
18da2e3ebdSchin#                                                                      #
19da2e3ebdSchin########################################################################
20da2e3ebdSchinfunction err_exit
21da2e3ebdSchin{
22da2e3ebdSchin	print -u2 -n "\t"
23da2e3ebdSchin	print -u2 -r ${Command}[$1]: "${@:2}"
24da2e3ebdSchin	let Errors+=1
25da2e3ebdSchin}
26da2e3ebdSchinalias err_exit='err_exit $LINENO'
27da2e3ebdSchin
28da2e3ebdSchinCommand=${0##*/}
29da2e3ebdSchininteger Errors=0
3034f9b3eeSRoland Mainz
3134f9b3eeSRoland Mainztmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
3234f9b3eeSRoland Mainztrap "cd /; rm -rf $tmp" EXIT
3334f9b3eeSRoland Mainz
34da2e3ebdSchinalias foo='print hello'
35da2e3ebdSchinif	[[ $(foo) != hello ]]
36da2e3ebdSchinthen	err_exit 'foo, where foo is alias for "print hello" failed'
37da2e3ebdSchinfi
38da2e3ebdSchinif	[[ $(foo world) != 'hello world' ]]
39da2e3ebdSchinthen	err_exit 'foo world, where foo is alias for "print hello" failed'
40da2e3ebdSchinfi
41da2e3ebdSchinalias foo='print hello '
42da2e3ebdSchinalias bar=world
43da2e3ebdSchinif	[[ $(foo bar) != 'hello world' ]]
44da2e3ebdSchinthen	err_exit 'foo bar, where foo is alias for "print hello " failed'
45da2e3ebdSchinfi
46da2e3ebdSchinif	[[ $(foo \bar) != 'hello bar' ]]
47da2e3ebdSchinthen	err_exit 'foo \bar, where foo is alias for "print hello " failed'
48da2e3ebdSchinfi
49da2e3ebdSchinalias bar='foo world'
50da2e3ebdSchinif	[[ $(bar) != 'hello world' ]]
51da2e3ebdSchinthen	err_exit 'bar, where bar is alias for "foo world" failed'
52da2e3ebdSchinfi
53da2e3ebdSchinif	[[ $(alias bar) != "bar='foo world'" ]]
54da2e3ebdSchinthen	err_exit 'alias bar, where bar is alias for "foo world" failed'
55da2e3ebdSchinfi
56da2e3ebdSchinunalias foo  || err_exit  "unalias foo failed"
57da2e3ebdSchinalias foo 2> /dev/null  && err_exit "alias for non-existent alias foo returns true"
58da2e3ebdSchinunset bar
59da2e3ebdSchinalias bar="print foo$bar"
60da2e3ebdSchinbar=bar
61da2e3ebdSchinif	[[ $(bar) != foo ]]
62da2e3ebdSchinthen	err_exit 'alias bar, where bar is alias for "print foo$bar" failed'
63da2e3ebdSchinfi
64da2e3ebdSchinunset bar
65da2e3ebdSchinalias bar='print hello'
66da2e3ebdSchinif	[[ $bar != '' ]]
67da2e3ebdSchinthen	err_exit 'alias bar cause variable bar to be set'
68da2e3ebdSchinfi
69da2e3ebdSchinalias !!=print
70da2e3ebdSchinif	[[ $(!! hello 2>/dev/null) != hello ]]
71da2e3ebdSchinthen	err_exit 'alias for !!=print not working'
72da2e3ebdSchinfi
73da2e3ebdSchinalias foo=echo
74da2e3ebdSchinif	[[ $(print  "$(foo bar)" ) != bar  ]]
75da2e3ebdSchinthen	err_exit 'alias in command substitution not working'
76da2e3ebdSchinfi
77da2e3ebdSchin( unalias foo)
78da2e3ebdSchinif	[[ $(foo bar 2> /dev/null)  != bar  ]]
79da2e3ebdSchinthen	err_exit 'alias not working after unalias in subshell'
80da2e3ebdSchinfi
81da2e3ebdSchinbuiltin -d rm 2> /dev/null
82da2e3ebdSchinif	whence rm > /dev/null
83da2e3ebdSchinthen	[[ ! $(alias -t | grep rm= ) ]] && err_exit 'tracked alias not set'
84da2e3ebdSchin	PATH=$PATH
85da2e3ebdSchin	[[ $(alias -t | grep rm= ) ]] && err_exit 'tracked alias not cleared'
86da2e3ebdSchinfi
877c2fbfb3SApril Chinif	hash -r 2>/dev/null && [[ ! $(hash) ]]
8834f9b3eeSRoland Mainzthen	PATH=$tmp:/bin:/usr/bin
897c2fbfb3SApril Chin	for i in foo -foo --
9034f9b3eeSRoland Mainz	do	print ':' > $tmp/$i
9134f9b3eeSRoland Mainz		chmod +x $tmp/$i
927c2fbfb3SApril Chin		hash -r -- $i 2>/dev/null || err_exit "hash -r -- $i failed"
9334f9b3eeSRoland Mainz		[[ $(hash) == $i=$tmp/$i ]] || err_exit "hash -r -- $i failed, expected $i=$tmp/$i, got $(hash)"
947c2fbfb3SApril Chin	done
957c2fbfb3SApril Chinelse	err_exit 'hash -r failed'
967c2fbfb3SApril Chinfi
977c2fbfb3SApril Chin( alias :pr=print) 2> /dev/null || err_exit 'alias beginning with : fails'
987c2fbfb3SApril Chin( alias p:r=print) 2> /dev/null || err_exit 'alias with : in name fails'
99da2e3ebdSchinexit $((Errors))
100