gotest: multiple +build lines must all be true
The code that handled +build lines did not correctly require them to all be true. While looking into this I discovered that multiple +build lines were mishandled in a different way, because the shell does not preseve line breaks in backquoted data. Look for the +build token to tell us when we are switching from one +build line to another. Reviewed-on: https://go-review.googlesource.com/25460 From-SVN: r239100
This commit is contained in:
parent
ac2c96ab12
commit
9c26dfd08a
@ -1,4 +1,4 @@
|
||||
0fb416a7bed076bdfef168480789bb2994a58de3
|
||||
3096ac81185edacbf800783f0f803d1c419dccdd
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
@ -313,56 +313,60 @@ x)
|
||||
esac
|
||||
|
||||
if test x$tag1 != xnonmatchingtag -a x$tag2 != xnonmatchingtag; then
|
||||
taglines=`sed '/^package /q' < $f | fgrep '// +build '`
|
||||
if test "$taglines" = ""; then
|
||||
omatch=true
|
||||
else
|
||||
omatch=false
|
||||
fi
|
||||
for tags in $taglines; do
|
||||
match=false
|
||||
for tag in $tags; do
|
||||
reverse=false
|
||||
case $tag in
|
||||
"!"*)
|
||||
reverse=true
|
||||
tag=`echo $tag | sed -e 's/^!//'`
|
||||
;;
|
||||
esac
|
||||
tags=`sed '/^package /q' < $f | fgrep '// +build '`
|
||||
omatch=true
|
||||
first=true
|
||||
match=false
|
||||
for tag in $tags; do
|
||||
reverse=false
|
||||
case $tag in
|
||||
"!"*)
|
||||
reverse=true
|
||||
tag=`echo $tag | sed -e 's/^!//'`
|
||||
;;
|
||||
esac
|
||||
|
||||
case $tag in
|
||||
"//" | "+build")
|
||||
;;
|
||||
$goos | $goarch | cgo)
|
||||
match=true
|
||||
;;
|
||||
*,*)
|
||||
match=true
|
||||
for ctag in `echo $tag | sed -e 's/,/ /g'`; do
|
||||
case $ctag in
|
||||
$goos | $goarch | cgo)
|
||||
;;
|
||||
*)
|
||||
match=false
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$reverse" = true; then
|
||||
if test "$match" = true; then
|
||||
match=false
|
||||
else
|
||||
match=true
|
||||
fi
|
||||
case $tag in
|
||||
"//")
|
||||
;;
|
||||
"+build")
|
||||
if test "$first" = "true"; then
|
||||
first=false
|
||||
elif test "$match" = "false"; then
|
||||
omatch=false
|
||||
fi
|
||||
match=false
|
||||
;;
|
||||
$goos | $goarch | cgo)
|
||||
match=true
|
||||
;;
|
||||
*,*)
|
||||
match=true
|
||||
for ctag in `echo $tag | sed -e 's/,/ /g'`; do
|
||||
case $ctag in
|
||||
$goos | $goarch | cgo)
|
||||
;;
|
||||
*)
|
||||
match=false
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$reverse" = true; then
|
||||
if test "$match" = true; then
|
||||
match=false
|
||||
else
|
||||
match=true
|
||||
fi
|
||||
done
|
||||
if test "$match" = "true"; then
|
||||
omatch=true
|
||||
fi
|
||||
done
|
||||
|
||||
if test "$match" = "false" -a "$first" = "false"; then
|
||||
omatch=false
|
||||
fi
|
||||
|
||||
if test "$omatch" = "true"; then
|
||||
gofiles="$gofiles $f"
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user