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

Function TestDirectiveImport

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

Source from the content-addressed store, hash-verified

468}
469
470func TestDirectiveImport(t *testing.T) {
471 testParseOne := func(input string) (ServerBlock, error) {
472 p := testParser(input)
473 p.Next() // parseOne doesn't call Next() to start, so we must
474 err := p.parseOne()
475 return p.block, err
476 }
477
478 isExpected := func(got ServerBlock) bool {
479 textKeys := got.GetKeysText()
480 if len(textKeys) != 1 || textKeys[0] != "localhost" {
481 t.Errorf("got keys unexpected: expect localhost, got %v", textKeys)
482 return false
483 }
484 if len(got.Segments) != 2 {
485 t.Errorf("got wrong number of segments: expect 2, got %d", len(got.Segments))
486 return false
487 }
488 if len(got.Segments[0]) != 1 || len(got.Segments[1]) != 8 {
489 t.Errorf("got unexpected tokens: %v", got.Segments)
490 return false
491 }
492 return true
493 }
494
495 directiveFile, err := filepath.Abs("testdata/directive_import_test")
496 if err != nil {
497 t.Fatal(err)
498 }
499
500 err = os.WriteFile(directiveFile, []byte(`prop1 1
501 prop2 2`), 0o644)
502 if err != nil {
503 t.Fatal(err)
504 }
505 defer os.Remove(directiveFile)
506
507 // import from existing file
508 result, err := testParseOne(`localhost
509 dir1
510 proxy {
511 import testdata/directive_import_test
512 transparent
513 }`)
514 if err != nil {
515 t.Fatal(err)
516 }
517 if !isExpected(result) {
518 t.Error("directive import failed")
519 }
520
521 // import from nonexistent file
522 _, err = testParseOne(`localhost
523 dir1
524 proxy {
525 import testdata/nonexistent_file
526 transparent
527 }`)

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