[arch-projects] [dbscripts] [PATCH 07/11] test/lib/common.inc: use `grep &>/dev/null` instead of `grep -q`.

Dave Reisner d at falconindy.com
Mon May 18 00:38:33 UTC 2015


On Sun, May 17, 2015 at 07:44:15PM -0400, Luke Shumaker wrote:
> `grep -q` may exit as soon as it finds a match; the program piped in to it
> might not be finished writing, and consequently print a message about a
> "write error" to stderr.
> 
> I'll add that this is not purely hypothetical--it happened to me while
> testing.

The rationale doesn't make sense to me. If the program writing to the
input side of the pipe is the one throwing the error, why should piping
grep's output to /dev/null change this?

> ---
>  test/lib/common.inc | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/test/lib/common.inc b/test/lib/common.inc
> index 5b06616..83c54bd 100644
> --- a/test/lib/common.inc
> +++ b/test/lib/common.inc
> @@ -177,7 +177,7 @@ checkAnyPackageDB() {
>  
>  		for db in "${DBEXT}" "${FILESEXT}"; do
>  			( [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" ] \
> -				&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep -q "${pkg}") \
> +				&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep "${pkg}" &>/dev/null) \
>  				|| fail "${pkg} not in ${repo}/os/${arch}/${repo}${db%.tar.*}"
>  		done
>  	done
> @@ -221,7 +221,7 @@ checkPackageDB() {
>  
>  	for db in "${DBEXT}" "${FILESEXT}"; do
>  		( [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" ] \
> -			&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep -q "${pkg}") \
> +			&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep "${pkg}" &>/dev/null) \
>  			|| fail "${pkg} not in ${repo}/os/${arch}/${repo}${db%.tar.*}"
>  	done
>  }
> @@ -247,7 +247,7 @@ checkRemovedPackageDB() {
>  
>  	for db in "${DBEXT}" "${FILESEXT}"; do
>  		( [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" ] \
> -			&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep -q "${pkgbase}") \
> +			&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep "${pkgbase}" &>/dev/null) \
>  			&& fail "${pkgbase} should not be in ${repo}/os/${arch}/${repo}${db%.tar.*}"
>  	done
>  }
> @@ -273,7 +273,7 @@ checkRemovedAnyPackageDB() {
>  	for db in "${DBEXT}" "${FILESEXT}"; do
>  		for arch in "${ARCH_BUILD[@]}"; do
>  			( [ -r "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" ] \
> -				&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep -q "${pkgbase}") \
> +				&& bsdtar -xf "${FTP_BASE}/${repo}/os/${arch}/${repo}${db%.tar.*}" -O | grep "${pkgbase}" &>/dev/null) \
>  				&& fail "${pkgbase} should not be in ${repo}/os/${arch}/${repo}${db%.tar.*}"
>  		done
>  	done
> -- 
> 2.4.1


More information about the arch-projects mailing list