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.
		
		
		
		
		
			
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
			
		
		
	
	
			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.17
 | 
						|
-- 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) {}
 |