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