diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-02 16:56:53 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2016-08-02 16:56:53 +1200 |
commit | 75836ba0146d8e28b198ff15b875f8cf95901e35 (patch) | |
tree | 15eba71cef68277d82706006528ba0d148f845b8 /test/bin | |
parent | Add tests for awk/sed scripts (diff) | |
download | dotfiles-75836ba0146d8e28b198ff15b875f8cf95901e35.tar.gz dotfiles-75836ba0146d8e28b198ff15b875f8cf95901e35.zip |
Slightly nicer text syntax
Also remove Awk test; because Awk can do things beyond simple filtering
and may do something with its arguments other than reading them, it
can't really be tested like that
Diffstat (limited to 'test/bin')
-rwxr-xr-x | test/bin | 28 |
1 files changed, 19 insertions, 9 deletions
@@ -1,13 +1,23 @@ #!/bin/sh for bin in bin/* ; do - if sed 1q "$bin" | grep -q 'bash$' ; then - bash -n "$bin" || exit 1 - elif sed 1q "$bin" | grep -q 'sh$' ; then - sh -n "$bin" || exit 1 - elif sed 1q "$bin" | grep -q 'awk -f$' ; then - "$bin" /dev/null >/dev/null || exit 1 - elif sed 1q "$bin" | grep -q 'sed -f$' ; then - "$bin" /dev/null >/dev/null || exit 1 - fi + hb=$(sed 1q "$bin") || exit + case $hb in + *bash) + bash -n "$bin" || exit 1 + ;; + *sh) + sh -n "$bin" || exit 1 + ;; + *'sed -f') + sed -f "$bin" /dev/null >/dev/null || exit 1 + ;; + *'awk -f') + # Not sure how to test these yet + ;; + *) + printf 2>&1 'Unknown hashbang for %s\n' "$bin" + exit 1 + ;; + esac done printf 'All shell scripts in bin parsed successfully.\n' |