MCPcopy
hub / github.com/caddyserver/caddy / TestRecursiveImport

Function TestRecursiveImport

caddyconfig/caddyfile/parse_test.go:374–468  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

372}
373
374func TestRecursiveImport(t *testing.T) {
375 testParseOne := func(input string) (ServerBlock, error) {
376 p := testParser(input)
377 p.Next() // parseOne doesn't call Next() to start, so we must
378 err := p.parseOne()
379 return p.block, err
380 }
381
382 isExpected := func(got ServerBlock) bool {
383 textKeys := got.GetKeysText()
384 if len(textKeys) != 1 || textKeys[0] != "localhost" {
385 t.Errorf("got keys unexpected: expect localhost, got %v", textKeys)
386 return false
387 }
388 if len(got.Segments) != 2 {
389 t.Errorf("got wrong number of segments: expect 2, got %d", len(got.Segments))
390 return false
391 }
392 if len(got.Segments[0]) != 1 || len(got.Segments[1]) != 2 {
393 t.Errorf("got unexpected tokens: %v", got.Segments)
394 return false
395 }
396 return true
397 }
398
399 recursiveFile1, err := filepath.Abs("testdata/recursive_import_test1")
400 if err != nil {
401 t.Fatal(err)
402 }
403 recursiveFile2, err := filepath.Abs("testdata/recursive_import_test2")
404 if err != nil {
405 t.Fatal(err)
406 }
407
408 // test relative recursive import
409 err = os.WriteFile(recursiveFile1, []byte(
410 `localhost
411 dir1
412 import recursive_import_test2`), 0o644)
413 if err != nil {
414 t.Fatal(err)
415 }
416 defer os.Remove(recursiveFile1)
417
418 err = os.WriteFile(recursiveFile2, []byte("dir2 1"), 0o644)
419 if err != nil {
420 t.Fatal(err)
421 }
422 defer os.Remove(recursiveFile2)
423
424 // import absolute path
425 result, err := testParseOne("import " + recursiveFile1)
426 if err != nil {
427 t.Fatal(err)
428 }
429 if !isExpected(result) {
430 t.Error("absolute+relative import failed")
431 }

Callers

nothing calls this directly

Calls 5

testParserFunction · 0.85
parseOneMethod · 0.80
GetKeysTextMethod · 0.80
NextMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected