(t *testing.T)
| 468 | } |
| 469 | |
| 470 | func 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 | }`) |
nothing calls this directly
no test coverage detected