From: Simon Ruderich Date: Sun, 15 Mar 2009 14:26:26 +0000 (+0100) Subject: lib.sh: Fix m4() to work with arguments with spaces. X-Git-Url: https://ruderich.org/simon/gitweb/?p=config%2Fdotfiles.git;a=commitdiff_plain;h=f30437901deddf4e539294eaddcd2f19af1d778b lib.sh: Fix m4() to work with arguments with spaces. Also added tests for this. --- diff --git a/lib.sh b/lib.sh index c1037be..9e2308d 100644 --- a/lib.sh +++ b/lib.sh @@ -100,7 +100,7 @@ m4() { (echo "define(\`IF', \`ifelse(\`\$1', \`\$2',dnl')dnl define(\`FI', \`)dnl')dnl"; # Run the file (and the default macros) through m4. - cat $file.m4) | $m4 $* >> $file + cat $file.m4) | $m4 "$@" >> $file unset file } diff --git a/tests/lib.sh.test b/tests/lib.sh.test index 4557698..911b4db 100644 --- a/tests/lib.sh.test +++ b/tests/lib.sh.test @@ -7,6 +7,7 @@ # not found). installed ls && echo ls installed installed doesnt-exist && echo doesnt-exist installed + # Simulate BSD `which` like on Mac OS X which doesn't use exit codes. function which() { echo Mac OS X which for $1 >&2 @@ -20,6 +21,7 @@ function which() { installed ls && echo ls installed installed doesnt-exist && echo doesnt-exist installed + # Tests for m4(). echo "Simple test file for m4. IF(TEST,m4) @@ -31,6 +33,7 @@ FI" > tmp/test.m4 m4 tmp/test -DTEST=m4 # Remove the line with the current date as it changes every time. cat tmp/test | grep -v "It was generated from tmp/test.m4" + # Test multiple arguments to m4(). echo "Test with multiple arguments passed to m4. first: FIRST @@ -40,4 +43,15 @@ m4 tmp/test-multiple -DFIRST=first -DSECOND=second # Remove the line with the current date as it changes every time. cat tmp/test-multiple | grep -v "It was generated from tmp/test-multiple.m4" +# Test multiple arguments with spaces to m4(). +echo "Test with multiple arguments with spaces passed to m4. +first: FIRST +second: SECOND +" > tmp/test-multiple-spaces.m4 +m4 tmp/test-multiple-spaces -DFIRST="first with spaces" \ + -DSECOND="second with spaces" +# Remove the line with the current date as it changes every time. +cat tmp/test-multiple-spaces \ + | grep -v "It was generated from tmp/test-multiple-spaces.m4" + # vim: ft=sh diff --git a/tests/lib.sh.test.out b/tests/lib.sh.test.out index e68b995..34cfe6d 100644 --- a/tests/lib.sh.test.out +++ b/tests/lib.sh.test.out @@ -20,3 +20,13 @@ Test with multiple arguments passed to m4. first: first second: second +m4(): generating 'tmp/test-multiple-spaces' from 'tmp/test-multiple-spaces.m4' with options '-DFIRST=first with spaces -DSECOND=second with spaces' +################################### +# WARNING! DO NOT EDIT THIS FILE! # +################################### + + +Test with multiple arguments with spaces passed to m4. +first: first with spaces +second: second with spaces +