1package issue9026
2
3// This file appears in its own package since the assertion tests the
4// per-package counter used to create fresh identifiers.
5
6/*
7typedef struct { int i; } git_merge_file_input;
8
9typedef struct { int j; } git_merge_file_options;
10
11void git_merge_file(
12        git_merge_file_input *in,
13        git_merge_file_options *opts) {}
14*/
15import "C"
16import (
17	"fmt"
18	"testing"
19)
20
21func Test(t *testing.T) {
22	var in C.git_merge_file_input
23	var opts *C.git_merge_file_options
24	C.git_merge_file(&in, opts)
25
26	// Test that the generated type names are deterministic.
27	// (Previously this would fail about 10% of the time.)
28	//
29	// Brittle: the assertion may fail spuriously when the algorithm
30	// changes, but should remain stable otherwise.
31	got := fmt.Sprintf("%T %T", in, opts)
32	want := "issue9026._Ctype_struct___0 *issue9026._Ctype_struct___1"
33	if got != want {
34		t.Errorf("Non-deterministic type names: got %s, want %s", got, want)
35	}
36}
37