| |
| # Testcase for issue 64661. This testcase is intended to verify that |
| # we don't try to send swig-generated Go files through the cover tool |
| # for "go test -cover" runs on packages that have *.swig source files. |
| |
| [!exec:swig] skip |
| [!cgo] skip |
| |
| go test -v -count=1 -coverprofile=foo.p |
| stdout 'coverage: 100.0% of statements' |
| |
| -- go.mod -- |
| module simple |
| |
| go 1.21 |
| -- main.c -- |
| /* A global variable */ |
| double Foo = 3.0; |
| |
| /* Compute the greatest common divisor of positive integers */ |
| int gcd(int x, int y) { |
| int g; |
| g = y; |
| while (x > 0) { |
| g = x; |
| x = y % x; |
| y = g; |
| } |
| return g; |
| } |
| |
| |
| -- main.go -- |
| package main |
| |
| import ( |
| "fmt" |
| ) |
| |
| func main() { |
| // Call our gcd() function |
| x := 42 |
| y := 105 |
| g := Gcd(x, y) |
| fmt.Println("The gcd of", x, "and", y, "is", g) |
| |
| // Manipulate the Foo global variable |
| |
| // Output its current value |
| fmt.Println("Foo =", GetFoo()) |
| |
| // Change its value |
| SetFoo(3.1415926) |
| |
| // See if the change took effect |
| fmt.Println("Foo =", GetFoo()) |
| } |
| -- main.swig -- |
| %module main |
| |
| %inline %{ |
| extern int gcd(int x, int y); |
| extern double Foo; |
| %} |
| -- main_test.go -- |
| package main |
| |
| import "testing" |
| |
| func TestSwigFuncs(t *testing.T) { |
| main() |
| } |