github.com/grafana/pyroscope@v1.18.0/pkg/frontend/vcs/source/golang/golang_test.go (about) 1 package golang 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestIsStandardLibraryPath(t *testing.T) { 10 for _, tt := range []struct { 11 input string 12 expectedPath string 13 expectedVersion string 14 expectedOk bool 15 }{ 16 { 17 input: "github.com/grafana/grafana/pkg/frontend/vcs.go", 18 expectedOk: false, 19 }, 20 { 21 input: "/usr/local/go/src/bufio/bufio.go", 22 expectedPath: "bufio/bufio.go", 23 expectedOk: true, 24 }, 25 { 26 input: "$GOROOT/src/unicode/utf8/utf8.go", 27 expectedPath: "unicode/utf8/utf8.go", 28 expectedOk: true, 29 }, 30 { 31 input: "fmt/scan.go", 32 expectedPath: "fmt/scan.go", 33 expectedOk: true, 34 }, 35 { 36 input: "$GOROOT/src/vendor/golang.org/x/crypto/cryptobyte/asn1.go", 37 expectedPath: "vendor/golang.org/x/crypto/cryptobyte/asn1.go", 38 expectedOk: true, 39 }, 40 { 41 input: "/usr/local/go/src/vendor/golang.org/x/net/http2/hpack/tables.go", 42 expectedPath: "vendor/golang.org/x/net/http2/hpack/tables.go", 43 expectedOk: true, 44 }, 45 { 46 input: "/usr/local/Cellar/go/1.21.3/libexec/src/runtime/netpoll_kqueue.go", 47 expectedPath: "runtime/netpoll_kqueue.go", 48 expectedVersion: "1.21.3", 49 expectedOk: true, 50 }, 51 { 52 input: "/opt/hostedtoolcache/go/1.21.6/x64/src/runtime/mgc.go", 53 expectedPath: "runtime/mgc.go", 54 expectedVersion: "1.21.6", 55 expectedOk: true, 56 }, 57 { 58 input: "/Users/pyroscope/.golang/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.6.darwin-arm64/src/runtime/proc.go", 59 expectedPath: "runtime/proc.go", 60 expectedVersion: "1.24.6", 61 expectedOk: true, 62 }, 63 { 64 input: "/Users/christian/.golang/packages/pkg/mod/golang.org/toolchain@v0.0.1-go1.25rc1.darwin-arm64/src/runtime/type.go", 65 expectedPath: "runtime/type.go", 66 expectedVersion: "1.25rc1", 67 expectedOk: true, 68 }, 69 } { 70 t.Run(tt.input, func(t *testing.T) { 71 actualPath, actualVersion, ok := IsStandardLibraryPath(tt.input) 72 if !tt.expectedOk { 73 require.False(t, ok) 74 } 75 require.Equal(t, tt.expectedPath, actualPath) 76 require.Equal(t, tt.expectedVersion, actualVersion) 77 }) 78 } 79 } 80 81 func TestVendorRelativePath(t *testing.T) { 82 for _, tt := range []struct { 83 in string 84 expected string 85 expectedOk bool 86 }{ 87 { 88 in: "/drone/src/vendor/google.golang.org/protobuf/proto/merge.go", 89 expected: "/vendor/google.golang.org/protobuf/proto/merge.go", 90 expectedOk: true, 91 }, 92 { 93 in: "google.golang.org/protobuf/proto/merge.go", 94 expected: "", 95 expectedOk: false, 96 }, 97 } { 98 t.Run(tt.in, func(t *testing.T) { 99 actual, ok := VendorRelativePath(tt.in) 100 if !tt.expectedOk { 101 require.False(t, ok) 102 } 103 require.Equal(t, tt.expected, actual) 104 }) 105 } 106 }