Skip to content

Commit

Permalink
misc/cgo/test: fix freebsd test failure by moving test to its own pac…
Browse files Browse the repository at this point in the history
…kage.

(The assertion depends on a per-package gensym counter whose
value varies based on what else is in the package.)

LGTM=khr
R=khr, rsc
CC=golang-codereviews
https://golang.org/cl/169930043
  • Loading branch information
adonovan committed Nov 3, 2014
1 parent 489ff75 commit 182ec43
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 27 deletions.
30 changes: 3 additions & 27 deletions misc/cgo/test/issue9026.go
Original file line number Diff line number Diff line change
@@ -1,33 +1,9 @@
package cgotest

/*
typedef struct {} git_merge_file_input;
typedef struct {} git_merge_file_options;
void git_merge_file(
git_merge_file_input *in,
git_merge_file_options *opts) {}
*/
import "C"
import (
"fmt"
"testing"
)

func test9026(t *testing.T) {
var in C.git_merge_file_input
var opts *C.git_merge_file_options
C.git_merge_file(&in, opts)
"./issue9026"
)

// Test that the generated type names are deterministic.
// (Previously this would fail about 10% of the time.)
//
// Brittle: the assertion may fail spuriously when the algorithm
// changes, but should remain stable otherwise.
got := fmt.Sprintf("%T %T", in, opts)
want := "cgotest._Ctype_struct___12 *cgotest._Ctype_struct___13"
if got != want {
t.Errorf("Non-deterministic type names: got %s, want %s", got, want)
}
}
func test9026(t *testing.T) { issue9026.Test(t) }
36 changes: 36 additions & 0 deletions misc/cgo/test/issue9026/issue9026.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package issue9026

// This file appears in its own package since the assertion tests the
// per-package counter used to create fresh identifiers.

/*
typedef struct {} git_merge_file_input;
typedef struct {} git_merge_file_options;
void git_merge_file(
git_merge_file_input *in,
git_merge_file_options *opts) {}
*/
import "C"
import (
"fmt"
"testing"
)

func Test(t *testing.T) {
var in C.git_merge_file_input
var opts *C.git_merge_file_options
C.git_merge_file(&in, opts)

// Test that the generated type names are deterministic.
// (Previously this would fail about 10% of the time.)
//
// Brittle: the assertion may fail spuriously when the algorithm
// changes, but should remain stable otherwise.
got := fmt.Sprintf("%T %T", in, opts)
want := "issue9026._Ctype_struct___0 *issue9026._Ctype_struct___1"
if got != want {
t.Errorf("Non-deterministic type names: got %s, want %s", got, want)
}
}

0 comments on commit 182ec43

Please sign in to comment.