This file is indexed.

/usr/share/gocode/src/github.com/goji/param/struct_test.go is in golang-github-goji-param-dev 0.0~git20160927.d7f49fd-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
package param

import (
	"reflect"
	"testing"
)

type Fruity struct {
	A bool
	B int            `json:"banana"`
	C uint           `param:"cherry"`
	D float64        `json:"durian" param:"dragonfruit"`
	E int            `json:"elderberry" param:"-"`
	F map[string]int `json:"-" param:"fig"`
	G *int           `json:"grape,omitempty"`
	H []int          `param:"honeydew" json:"huckleberry"`
	I string         `foobar:"iyokan"`
	J Cheesy         `param:"jackfruit" cheese:"jarlsberg"`
}

type Cheesy struct {
	A int `param:"affinois"`
	B int `param:"brie"`
	C int `param:"camembert"`
	D int `param:"delice d'argental"`
}

type Private struct {
	Public, private int
}

var fruityType = reflect.TypeOf(Fruity{})
var cheesyType = reflect.TypeOf(Cheesy{})
var privateType = reflect.TypeOf(Private{})

var fruityNames = []string{
	"A", "banana", "cherry", "dragonfruit", "-", "fig", "grape", "honeydew",
	"I", "jackfruit",
}

var fruityCache = map[string]cacheLine{
	"A":           {0, parseBool},
	"banana":      {1, parseInt},
	"cherry":      {2, parseUint},
	"dragonfruit": {3, parseFloat},
	"fig":         {5, parseMap},
	"grape":       {6, parsePtr},
	"honeydew":    {7, parseSlice},
	"I":           {8, parseString},
	"jackfruit":   {9, parseStruct},
}

func assertEqual(t *testing.T, what string, e, a interface{}) {
	if !reflect.DeepEqual(e, a) {
		t.Errorf("Expected %s to be %v, was actually %v", what, e, a)
	}
}

func TestNames(t *testing.T) {
	t.Parallel()

	for i, val := range fruityNames {
		name := extractName(fruityType.Field(i))
		assertEqual(t, "tag", val, name)
	}
}

func TestCacheStruct(t *testing.T) {
	t.Parallel()

	sc := cacheStruct(fruityType)

	if len(sc) != len(fruityCache) {
		t.Errorf("Cache has %d keys, but expected %d", len(sc),
			len(fruityCache))
	}

	for k, v := range fruityCache {
		sck, ok := sc[k]
		if !ok {
			t.Errorf("Could not find key %q in cache", k)
			continue
		}
		if sck.offset != v.offset {
			t.Errorf("Cache for %q: expected offset %d but got %d",
				k, sck.offset, v.offset)
		}
		// We want to compare function pointer equality, and this
		// appears to be the only way
		a := reflect.ValueOf(sck.parse)
		b := reflect.ValueOf(v.parse)
		if a.Pointer() != b.Pointer() {
			t.Errorf("Parse mismatch for %q: %v, expected %v", k, a,
				b)
		}
	}
}

func TestPrivate(t *testing.T) {
	t.Parallel()

	sc := cacheStruct(privateType)
	if len(sc) != 1 {
		t.Error("Expected Private{} to have one cachable field")
	}
}