MCPcopy Index your code
hub / github.com/perkeep/perkeep / testConfig

Function testConfig

pkg/serverinit/serverinit_test.go:173–223  ·  view source on GitHub ↗
(name string, t *testing.T)

Source from the content-addressed store, hash-verified

171}
172
173func testConfig(name string, t *testing.T) {
174 wantedError := func() error {
175 slurp, err := os.ReadFile(strings.Replace(name, ".json", ".err", 1))
176 if os.IsNotExist(err) {
177 return nil
178 }
179 if err != nil {
180 t.Fatalf("Error reading .err file: %v", err)
181 }
182 return errors.New(string(slurp))
183 }
184 b, err := replaceRingPath(name)
185 if err != nil {
186 t.Fatalf("Could not read %s: %v", name, err)
187 }
188 b = backslashEscape(b)
189 var hiLevelConf serverconfig.Config
190 if err := json.Unmarshal(b, &hiLevelConf); err != nil {
191 t.Fatalf("Could not unmarshal %s into a serverconfig.Config: %v", name, err)
192 }
193
194 lowLevelConf, err := serverinit.GenLowLevelConfig(&hiLevelConf)
195 if g, w := strings.TrimSpace(fmt.Sprint(err)), strings.TrimSpace(fmt.Sprint(wantedError())); g != w {
196 t.Fatalf("test %s: got GenLowLevelConfig error %q; want %q", name, g, w)
197 }
198 if err != nil {
199 return
200 }
201 if err := (&jsonconfig.ConfigParser{}).CheckTypes(lowLevelConf.Export_Obj()); err != nil {
202 t.Fatalf("Error while parsing low-level conf generated from %v: %v", name, err)
203 }
204
205 // TODO(mpl): should we stop execution (and not update golden files)
206 // if the comparison fails? Currently this is not the case.
207 wantFile := strings.Replace(name, ".json", "-want.json", 1)
208 wantConf, err := configParser().ReadFile(wantFile)
209 if err != nil {
210 t.Fatalf("test %s: ReadFile: %v", name, err)
211 }
212 if *updateGolden {
213 contents, err := json.MarshalIndent(lowLevelConf.Export_Obj(), "", "\t")
214 if err != nil {
215 t.Fatal(err)
216 }
217 contents = canonicalizeGolden(t, contents)
218 if err := os.WriteFile(wantFile, contents, 0644); err != nil {
219 t.Fatal(err)
220 }
221 }
222 compareConfigurations(t, name, lowLevelConf.Export_Obj(), wantConf)
223}
224
225func compareConfigurations(t *testing.T, name, g interface{}, w interface{}) {
226 var got, want bytes.Buffer

Callers 1

TestConfigsFunction · 0.85

Calls 8

replaceRingPathFunction · 0.85
backslashEscapeFunction · 0.85
configParserFunction · 0.85
canonicalizeGoldenFunction · 0.85
compareConfigurationsFunction · 0.85
Export_ObjMethod · 0.80
FatalMethod · 0.80
FatalfMethod · 0.65

Tested by

no test coverage detected