diff --git a/Makefile b/Makefile index 342e5059..2752d791 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ test-master: cd _test/install/gitclone && docker build --no-cache . cd _test/regress/issue103 && docker build --no-cache . cd _test/regress/issue193 && docker build --no-cache . + cd _test/regress/issue317 && docker build --no-cache . @echo "everything is OK" test-release: diff --git a/_test/regress/issue317/Dockerfile b/_test/regress/issue317/Dockerfile new file mode 100644 index 00000000..c043b3a9 --- /dev/null +++ b/_test/regress/issue317/Dockerfile @@ -0,0 +1,5 @@ +FROM golang:1.16-alpine AS build + +COPY . /root + +RUN /root/test.bash diff --git a/_test/regress/issue317/expected.txt b/_test/regress/issue317/expected.txt new file mode 100644 index 00000000..2608afc0 --- /dev/null +++ b/_test/regress/issue317/expected.txt @@ -0,0 +1,2 @@ +/root/target.go:11:2: uncheckedTypeAssert: avoid unchecked type assertions as they can panic (rules.go:27) +/root/target.go:13:19: badCond: statement always true (diag.go:14) diff --git a/_test/regress/issue317/go.mod b/_test/regress/issue317/go.mod new file mode 100644 index 00000000..0e623910 --- /dev/null +++ b/_test/regress/issue317/go.mod @@ -0,0 +1,3 @@ +module issue317 + +go 1.17 diff --git a/_test/regress/issue317/rules.go b/_test/regress/issue317/rules.go new file mode 100644 index 00000000..ed18f9c5 --- /dev/null +++ b/_test/regress/issue317/rules.go @@ -0,0 +1,15 @@ +//go:build ignore +// +build ignore + +package main + +import ( + "github.com/quasilyte/go-ruleguard/dsl" + corerules "github.com/quasilyte/go-ruleguard/rules" + uber "github.com/quasilyte/uber-rules" +) + +func init() { + dsl.ImportRules("", corerules.Bundle) + dsl.ImportRules("", uber.Bundle) +} diff --git a/_test/regress/issue317/target.go b/_test/regress/issue317/target.go new file mode 100644 index 00000000..6fd043ff --- /dev/null +++ b/_test/regress/issue317/target.go @@ -0,0 +1,14 @@ +package main + +import ( + "fmt" + "strings" +) + +func main() { + var k interface{} + + msg := k.(string) // expects warning + + fmt.Println(msg, strings.Count("foo", "bar") >= 0) +} diff --git a/_test/regress/issue317/test.bash b/_test/regress/issue317/test.bash new file mode 100755 index 00000000..f517dd09 --- /dev/null +++ b/_test/regress/issue317/test.bash @@ -0,0 +1,18 @@ +set -e + +apk update && apk add git + +cd /root + +GO111MODULE=on go get -v github.com/quasilyte/go-ruleguard/cmd/ruleguard@master +go get -v github.com/quasilyte/go-ruleguard/dsl +go get -v github.com/quasilyte/uber-rules +go get -v github.com/quasilyte/go-ruleguard/rules +# Try running with different rules file order. + +export CGO_ENABLED=0 + +ruleguard -rules rules.go . > actual.txt 2>&1 || true +diff -u actual.txt /root/expected.txt + +echo SUCCESS