summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2023-01-20 14:31:00 -0500
committerChet Ramey <chet.ramey@case.edu>2023-01-20 14:31:00 -0500
commita37b2af98533ace0ca90b3a2187481ee08e2615f (patch)
treeafa99a2c3e1a3dfc072d79203ab4e39c2a38a996 /tests
parent992bd861ab509f5a4783f90d40a590c8f7fd772a (diff)
downloadbash-a37b2af98533ace0ca90b3a2187481ee08e2615f.tar.gz
fix terminal pgrp issue with async jobs in non-interactive shells; history_expand change to first argument
Diffstat (limited to 'tests')
-rw-r--r--tests/alias.right14
-rw-r--r--tests/alias.tests1
-rw-r--r--tests/alias7.sub92
3 files changed, 107 insertions, 0 deletions
diff --git a/tests/alias.right b/tests/alias.right
index 76f32076..5dbc5d32 100644
--- a/tests/alias.right
+++ b/tests/alias.right
@@ -43,3 +43,17 @@ bar
baz
<áa>
<aá>
+bar
+foo bar x
+foo
+x
+bar
+x
+bar
+x
+foo=v bar=
+foo
+foo in v
+bash: -c: line 7: syntax error near unexpected token `do'
+bash: -c: line 7: `do echo foo=$foo bar=$bar'
+foo=v bar=
diff --git a/tests/alias.tests b/tests/alias.tests
index 15eac5b1..fd390c20 100644
--- a/tests/alias.tests
+++ b/tests/alias.tests
@@ -63,3 +63,4 @@ ${THIS_SH} ./alias3.sub
${THIS_SH} ./alias4.sub
${THIS_SH} ./alias5.sub
${THIS_SH} ./alias6.sub
+${THIS_SH} ./alias7.sub
diff --git a/tests/alias7.sub b/tests/alias7.sub
new file mode 100644
index 00000000..b2aeb150
--- /dev/null
+++ b/tests/alias7.sub
@@ -0,0 +1,92 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# Change bash to expand the next word following aliases ending with a space
+# that are more than one level deep. Change how bash handles the expand-next-word
+# flag when recognizing a reserved word.
+#
+# Bash never did this before post-bash-5.2
+
+: ${THIS_SH:=./bash}
+
+shopt -s expand_aliases 2>/dev/null
+
+alias a1='echo '
+alias a2=a1
+
+alias foo=bar
+alias x=xtra
+
+a2 foo
+unalias foo
+
+alias e='echo '
+alias f='foo '
+alias b=bar
+
+e f b x
+
+alias e=echo
+
+a2 foo;e x
+
+unalias e f b
+
+alias e=echo
+alias foo='bar '
+alias c=';'
+
+a2 foo c e x
+
+unalias foo e c
+
+alias file='/dev/null ;'
+alias e=echo
+alias foo='bar '
+alias c='< '
+alias x=xtra
+a2 foo c file e x
+
+unalias a1 a2 e foo c x file
+
+alias foo=bar
+
+alias al=' '
+alias foo=bar
+
+al for foo in v
+do echo foo=$foo bar=$bar
+done
+
+al case foo in foo) echo foo;; bar) echo bar;; esac
+
+# one difference between bash in default and posix modes is that default mode
+# bash allows reserved words to be aliased, which posix says is a no-no
+
+${THIS_SH} -c '
+shopt -s expand_aliases 2>/dev/null
+alias al=" "
+alias foo=bar
+alias for=echo
+al for foo in v
+do echo foo=$foo bar=$bar
+done' bash
+
+${THIS_SH} -o posix -c '
+alias al=" "
+alias foo=bar
+alias for=echo
+al for foo in v
+do echo foo=$foo bar=$bar
+done' bash