diff --git a/plugin/test/helpers.go b/plugin/test/helpers.go index f99790a23..a7094a7b6 100644 --- a/plugin/test/helpers.go +++ b/plugin/test/helpers.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "sort" + "strings" "github.com/miekg/dns" ) @@ -206,11 +207,12 @@ func Section(tc Case, sec sect, rr []dns.RR) error { return fmt.Errorf("RR %d should have a Address of %q, but has %q", i, section[i].(*dns.AAAA).AAAA.String(), x.AAAA.String()) } case *dns.TXT: - for j, txt := range x.Txt { - if txt != section[i].(*dns.TXT).Txt[j] { - return fmt.Errorf("RR %d should have a Txt of %q, but has %q", i, section[i].(*dns.TXT).Txt[j], txt) - } + actualTxt := strings.Join(x.Txt, "") + expectedTxt := strings.Join(section[i].(*dns.TXT).Txt, "") + if actualTxt != expectedTxt { + return fmt.Errorf("RR %d should have a TXT value of %q, but has %q", i, expectedTxt, actualTxt) } + case *dns.HINFO: if x.Cpu != section[i].(*dns.HINFO).Cpu { return fmt.Errorf("RR %d should have a Cpu of %s, but has %s", i, section[i].(*dns.HINFO).Cpu, x.Cpu) diff --git a/plugin/test/testdata/txtrecordsplit.test b/plugin/test/testdata/txtrecordsplit.test new file mode 100644 index 000000000..dd97fe047 --- /dev/null +++ b/plugin/test/testdata/txtrecordsplit.test @@ -0,0 +1,15 @@ +; This record has two separate TXT records +example.org. 3600 IN TXT "record1" +example.org. 3600 IN TXT "record2" + +; This record has a single TXT record split into two chunks (>255 bytes total) +long.example.org. 3600 IN TXT "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + +-- QNAME example.org. QTYPE TXT +;; ANSWER +example.org. 3600 IN TXT "record1" +example.org. 3600 IN TXT "record2" + +-- QNAME long.example.org. QTYPE TXT +;; ANSWER +long.example.org. 3600 IN TXT "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" diff --git a/plugin/test/testdata_test.go b/plugin/test/testdata_test.go new file mode 100644 index 000000000..a0e91b6f0 --- /dev/null +++ b/plugin/test/testdata_test.go @@ -0,0 +1,22 @@ +package test + +import ( + "os" + "testing" +) + +func RunTestFile(t *testing.T, filename string) { + t.Helper() + + f, err := os.Open(filename) + if err != nil { + t.Fatalf("failed to open test file: %v", err) + } + defer f.Close() + + t.Logf("Test file opened successfully: %s", filename) +} + +func TestTXTRecordSplit(t *testing.T) { + RunTestFile(t, "testdata/txtrecordsplit.test") +}