From 544144debee50937de3bd345b2840c2f864dcb5d Mon Sep 17 00:00:00 2001
From: Peter Stephenson
Date: Sun, 22 Nov 2015 16:53:57 +0000
Subject: 37188: New hash builtin test
---
ChangeLog | 4 +++-
Test/B09hash.ztst | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 74 insertions(+), 1 deletion(-)
create mode 100644 Test/B09hash.ztst
diff --git a/ChangeLog b/ChangeLog
index 9cc4cf93c..2c50e05f8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
2015-11-22 Peter Stephenson
- * 3787: Src/builtin.c: infinite loop in "hash -m".
+ * 37188: Test/B09hash.ztst: new test.
+
+ * 37187: Src/builtin.c: infinite loop in "hash -m".
* 37186: Functions/VCS_Info/VCS_INFO_nvcsformats,
Src/Zle/zle_main.c: a couple of WARN_CREATE_GLOBAL fixes.
diff --git a/Test/B09hash.ztst b/Test/B09hash.ztst
new file mode 100644
index 000000000..49f304838
--- /dev/null
+++ b/Test/B09hash.ztst
@@ -0,0 +1,71 @@
+# The hash builtin is most used for the command hash table, which is
+# populated automatically. This is therefore highly system specific,
+# so mostly we'll test with the directory hash table: the logic is
+# virtually identical but with the different table, and furthermore
+# the shell doesn't care whether the directory exists unless you refer
+# to it in a context that needs one.
+
+%prep
+ populate_hash() {
+ hash -d one=/first/directory
+ hash -d two=/directory/the/second
+ hash -d three=/noch/ein/verzeichnis
+ hash -d four=/bored/with/this/now
+ }
+
+%test
+
+ hash -d
+0:Directory hash initially empty
+
+ populate_hash
+ hash -d
+0:Populating directory hash and output with sort
+>four=/bored/with/this/now
+>one=/first/directory
+>three=/noch/ein/verzeichnis
+>two=/directory/the/second
+
+ hash -rd
+ hash -d
+0:Empty hash
+
+ populate_hash
+ hash -d
+0:Refill hash
+>four=/bored/with/this/now
+>one=/first/directory
+>three=/noch/ein/verzeichnis
+>two=/directory/the/second
+
+ hash -dL
+0:hash -L option
+>hash -d four=/bored/with/this/now
+>hash -d one=/first/directory
+>hash -d three=/noch/ein/verzeichnis
+>hash -d two=/directory/the/second
+
+ hash -dm 't*'
+0:hash -m option
+>three=/noch/ein/verzeichnis
+>two=/directory/the/second
+
+ hash -d five=/yet/more six=/here/we/go seven=/not/yet/eight
+ hash -d
+0:Multiple assignments
+>five=/yet/more
+>four=/bored/with/this/now
+>one=/first/directory
+>seven=/not/yet/eight
+>six=/here/we/go
+>three=/noch/ein/verzeichnis
+>two=/directory/the/second
+
+ hash -d one two three
+0:Multiple arguments with no assignment not in verbose mode
+
+ hash -vd one two three
+0:Multiple arguments with no assignment in verbose mode
+>one=/first/directory
+>two=/directory/the/second
+>three=/noch/ein/verzeichnis
--
cgit 1.4.1