You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
garble/testdata/scripts/test.txt

118 lines
2.3 KiB
Plaintext

# build the test binary
garble test -c
! stdout 'PASS'
binsubstr bar.test$exe 'TestFoo' 'TestSeparateFoo'
! binsubstr bar.test$exe 'LocalFoo|ImportedVar|OriginalFuncName'
# run the tests; OriginalFuncName should be obfuscated
exec ./bar.test -test.v
stdout 'PASS.*TestFoo'
stdout 'PASS.*TestSeparateFoo'
stdout 'package bar, func name:'
stdout 'package bar_test, func name:'
! stdout 'OriginalFuncName'
[short] stop # no need to verify this with -short
# also check that many packages test fine, including a main package and multiple
# test packages
garble test -v . ./somemain ./sometest
stdout 'ok\s+test/bar\s'
stdout 'PASS.*TestFoo'
stdout 'PASS.*TestSeparateFoo'
stdout 'SKIP.*TestWithFlag'
stdout 'package bar, func name:'
stdout 'package bar_test, func name:'
! stdout 'OriginalFuncName'
stdout '\?\s+test/bar/somemain\s'
stdout 'ok\s+test/bar/sometest\s'
# verify that non-build flags are kept
garble test -withflag -v
stdout 'PASS.*TestWithFlag'
# verify with regular cmd/go; OriginalFuncName should appear
go test -v
stdout 'PASS.*TestFoo'
stdout 'PASS.*TestSeparateFoo'
stdout 'package bar, func name: test/bar\.OriginalFuncName'
stdout 'package bar_test, func name: test/bar\.OriginalFuncName'
-- go.mod --
module test/bar
go 1.16
-- bar.go --
package bar
import "runtime"
func LocalFoo() string { return "Foo" }
var ImportedVar = "imported var value"
// OriginalFuncName returns its own func name.
func OriginalFuncName() string {
pc, _, _, _ := runtime.Caller(0)
fn := runtime.FuncForPC(pc)
return fn.Name()
}
-- bar_test.go --
package bar
import "testing"
func TestFoo(t *testing.T) {
t.Log(ImportedVar)
if LocalFoo() != "Foo" {
t.FailNow()
}
t.Logf("package bar, func name: %s", OriginalFuncName())
}
-- bar_separate_test.go --
package bar_test
import (
"flag"
"testing"
"test/bar"
)
var withFlag = flag.Bool("withflag", false, "")
func TestSeparateFoo(t *testing.T) {
t.Log(bar.ImportedVar)
if bar.LocalFoo() != "Foo" {
t.FailNow()
}
t.Logf("package bar_test, func name: %s", bar.OriginalFuncName())
}
func TestWithFlag(t *testing.T) {
if !*withFlag {
t.Skip()
}
}
-- main_test.go --
package bar
import (
"os"
"testing"
)
func TestMain(m *testing.M) {
os.Exit(m.Run())
}
-- somemain/main.go --
package main
func main() {}
-- sometest/foo_test.go --
package sometest
import "testing"
func TestFoo(t *testing.T) {}