Re: [RFC] Add basic syntax check on shell scripts
- From
Stefano Lattarini <stefano.lattarini@gmail.com>
- Date
- Dec 2, 2012, 14:30 UTC
- Message-ID
- <50BB65EA.5080805@gmail.com>
- In-Reply-To
- <201212021417.25525.tboegi@web.de>
On 12/02/2012 02:17 PM, Torsten Bögershausen wrote:
Show 12 quoted lines
> The test suite needs to be run on different platforms. > As it may be difficult for contributors to catch syntax > which work on GNU/linux, but is unportable, make a quick check > for the most common problems. > "sed -i", "echo -n" or "array in shell scripts" > This list is not complete, and may need to be extended > > Signed-off-by: Torsten Bögershausen <tboegi@web.de> > --- > We add 1 second test execution time > Is this a useful idea at all? >
FWIW, I think such an idea is useful (and also easy to implement, so another +1 from me).
Show 21 quoted lines
> t/t99999-syntax-check.sh | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > create mode 100755 t/t99999-syntax-check.sh > > diff --git a/t/t99999-syntax-check.sh b/t/t99999-syntax-check.sh > new file mode 100755 > index 0000000..c4a9289 > --- /dev/null > +++ b/t/t99999-syntax-check.sh > @@ -0,0 +1,28 @@ > +#!/bin/sh > + > +test_description='Basic check if shell syntax is portable' > + > +. ./test-lib.sh > + > + > +test_expect_success 'No arrays in shell scripts' ' > + >expected && > + (grep -i -n "^[ ]*declare[ ][ ]*" ../*.sh ../../git-* >actual 2>&1 || : ) && >
Here I'd simply use:
! grep -n "^declare[ ][ ]*" ../*.sh ../../*.sh
And similarly for the tests below.
In addition, the globs above still miss some files ('perf/perf-lib.sh' and 'valgrind/analyze.sh', for example); so we might want to improve it, using, say, "git ls-files" (or find(1), in case the test is to be run also from distribution tarballs).
HTH, Stefano