fork of https://github.com/sourcegraph/zoekt
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 3.1 kB View raw
1package index 2 3import ( 4 "strings" 5 "testing" 6 7 "github.com/sourcegraph/zoekt" 8) 9 10func TestShardName(t *testing.T) { 11 tests := []struct { 12 name string 13 indexDir string 14 prefix string 15 version int 16 shardNum int 17 expected string 18 }{ 19 { 20 name: "short prefix", 21 indexDir: "index", 22 prefix: "short", 23 version: 1, 24 shardNum: 42, 25 expected: "index/short_v1.00042.zoekt", 26 }, 27 { 28 name: "long prefix truncated", 29 indexDir: "index", 30 prefix: strings.Repeat("a", 300), 31 version: 2, 32 shardNum: 1, 33 expected: "index/" + strings.Repeat("a", 200) + "003ef1ba" + "_v2.00001.zoekt", 34 }, 35 { 36 name: "empty indexDir", 37 prefix: "short", 38 version: 1, 39 expected: "short_v1.00000.zoekt", 40 }, 41 } 42 43 for _, test := range tests { 44 t.Run(test.name, func(t *testing.T) { 45 actual := shardName(test.indexDir, test.prefix, test.version, test.shardNum) 46 if actual != test.expected { 47 t.Errorf("expected %q, got %q", test.expected, actual) 48 } 49 }) 50 } 51} 52 53func TestDetermineLanguageIfUnknown(t *testing.T) { 54 tests := []struct { 55 name string 56 doc Document 57 wantLang string 58 skipContent bool 59 }{ 60 { 61 name: "already has language", 62 doc: Document{ 63 Name: "test.java", 64 Language: "Go", 65 Content: []byte("package main"), 66 }, 67 wantLang: "Go", 68 }, 69 { 70 name: "skipped file", 71 doc: Document{ 72 Name: "large.js", 73 SkipReason: SkipReasonTooLarge, 74 Content: []byte(notIndexedMarker + "too large"), 75 }, 76 wantLang: "JavaScript", 77 }, 78 { 79 name: "skipped file with unknown extension", 80 doc: Document{ 81 Name: "deadb33f", 82 SkipReason: SkipReasonBinary, 83 Content: []byte(notIndexedMarker + "binary"), 84 }, 85 wantLang: "", 86 }, 87 } 88 89 for _, tt := range tests { 90 t.Run(tt.name, func(t *testing.T) { 91 DetermineLanguageIfUnknown(&tt.doc) 92 if tt.doc.Language != tt.wantLang { 93 t.Errorf("DetermineLanguageIfUnknown() got language = %v, want %v", tt.doc.Language, tt.wantLang) 94 } 95 }) 96 } 97} 98 99func TestShardBuilderAddDeterminesCategoryBeforeReplacingSkippedContent(t *testing.T) { 100 b, err := NewShardBuilder(&zoekt.Repository{}) 101 if err != nil { 102 t.Fatalf("NewShardBuilder: %v", err) 103 } 104 105 err = b.Add(Document{ 106 Name: "generated.go", 107 Content: []byte("// Code generated by protoc-gen-go. DO NOT EDIT.\npackage generated\n"), 108 SkipReason: SkipReasonTooManyTrigrams, 109 }) 110 if err != nil { 111 t.Fatalf("Add: %v", err) 112 } 113 114 if len(b.categories) != 1 { 115 t.Fatalf("got %d categories, want 1", len(b.categories)) 116 } 117 118 category, err := decodeCategory(b.categories[0]) 119 if err != nil { 120 t.Fatalf("decodeCategory: %v", err) 121 } 122 if category != FileCategoryGenerated { 123 t.Fatalf("got category %v, want %v", category, FileCategoryGenerated) 124 } 125 126 if len(b.languages) != 2 { 127 t.Fatalf("got %d encoded language bytes, want 2", len(b.languages)) 128 } 129 130 langCode := uint16(b.languages[0]) | uint16(b.languages[1])<<8 131 got, ok := b.languageMap["Go"] 132 if !ok { 133 t.Fatalf("languageMap missing Go entry: %#v", b.languageMap) 134 } 135 if got != langCode { 136 t.Fatalf("got stored language code %d, want Go=%d", langCode, got) 137 } 138}