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