summary refs log tree commit diff
path: root/Test
diff options
context:
space:
mode:
authorPeter Stephenson <p.w.stephenson@ntlworld.com>2015-11-22 16:53:57 +0000
committerPeter Stephenson <p.w.stephenson@ntlworld.com>2015-11-22 16:53:57 +0000
commit544144debee50937de3bd345b2840c2f864dcb5d (patch)
treef70391a81dfd414b4c6261457c70c602cc592432 /Test
parentb0323cab3b845f1cfa3bc4bc029de86b207ec26e (diff)
downloadzsh-544144debee50937de3bd345b2840c2f864dcb5d.tar.gz
zsh-544144debee50937de3bd345b2840c2f864dcb5d.tar.xz
zsh-544144debee50937de3bd345b2840c2f864dcb5d.zip
37188: New hash builtin test
Diffstat (limited to 'Test')
-rw-r--r--Test/B09hash.ztst71
1 files changed, 71 insertions, 0 deletions
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