Make comments normative
Fixup the last RR and create a unit test
This commit is contained in:
parent
1807dfe2b0
commit
ffca5f59b1
|
@ -705,24 +705,36 @@ func TestILNP(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestComment(t *testing.T) {
|
func TestComment(t *testing.T) {
|
||||||
|
// Comments we must see
|
||||||
|
comments := map[string]bool{"; this is comment 1": true,
|
||||||
|
"; this is comment 4": true, "; this is comment 6": true,
|
||||||
|
"; this is comment 7": true, "; this is comment 8": true}
|
||||||
zone := `
|
zone := `
|
||||||
foo. IN A 10.0.0.1 ; this is comment1
|
foo. IN A 10.0.0.1 ; this is comment 1
|
||||||
foo. IN A (
|
foo. IN A (
|
||||||
10.0.0.2 ; this is comment2
|
10.0.0.2 ; this is comment2
|
||||||
)
|
)
|
||||||
; this is comment3
|
; this is comment3
|
||||||
foo. IN A 10.0.0.3
|
foo. IN A 10.0.0.3
|
||||||
foo. IN A ( 10.0.0.4 ); this is comment4
|
foo. IN A ( 10.0.0.4 ); this is comment 4
|
||||||
|
|
||||||
foo. IN A 10.0.0.5
|
foo. IN A 10.0.0.5
|
||||||
; this is comment5
|
; this is comment5
|
||||||
|
|
||||||
foo. IN A 10.0.0.6
|
foo. IN A 10.0.0.6
|
||||||
|
|
||||||
|
foo. IN DNSKEY 256 3 5 AwEAAb+8l ; this is comment 6
|
||||||
|
foo. IN NSEC miek.nl. TXT RRSIG NSEC; this is comment 7
|
||||||
|
foo. IN TXT "THIS IS TEXT MAN"; this is comment 8
|
||||||
`
|
`
|
||||||
// TODO(mg): Need to figure out what to test here
|
|
||||||
for x := range ParseZone(strings.NewReader(zone), ".", "") {
|
for x := range ParseZone(strings.NewReader(zone), ".", "") {
|
||||||
if x.Error == nil {
|
if x.Error == nil {
|
||||||
t.Logf("%s:%s\n", x.RR.String(), x.Comment)
|
if x.Comment != "" {
|
||||||
|
if _, ok := comments[x.Comment]; !ok {
|
||||||
|
t.Logf("wrong comment %s", x.Comment)
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
36
zscan_rr.go
36
zscan_rr.go
|
@ -176,7 +176,7 @@ func endingToString(c chan lex, errstr, f string) (string, *ParseError, string)
|
||||||
|
|
||||||
// A remainder of the rdata with embedded spaces, return the parsed string slice (sans the spaces)
|
// A remainder of the rdata with embedded spaces, return the parsed string slice (sans the spaces)
|
||||||
// or an error
|
// or an error
|
||||||
func endingToTxtSlice(c chan lex, errstr, f string) ([]string, *ParseError) {
|
func endingToTxtSlice(c chan lex, errstr, f string) ([]string, *ParseError, string) {
|
||||||
// Get the remaining data until we see a NEWLINE
|
// Get the remaining data until we see a NEWLINE
|
||||||
quote := false
|
quote := false
|
||||||
l := <-c
|
l := <-c
|
||||||
|
@ -191,17 +191,17 @@ func endingToTxtSlice(c chan lex, errstr, f string) ([]string, *ParseError) {
|
||||||
case _BLANK:
|
case _BLANK:
|
||||||
if quote {
|
if quote {
|
||||||
// _BLANK can only be seen in between txt parts.
|
// _BLANK can only be seen in between txt parts.
|
||||||
return nil, &ParseError{f, errstr, l}
|
return nil, &ParseError{f, errstr, l}, ""
|
||||||
}
|
}
|
||||||
case _QUOTE:
|
case _QUOTE:
|
||||||
quote = !quote
|
quote = !quote
|
||||||
default:
|
default:
|
||||||
return nil, &ParseError{f, errstr, l}
|
return nil, &ParseError{f, errstr, l}, ""
|
||||||
}
|
}
|
||||||
l = <-c
|
l = <-c
|
||||||
}
|
}
|
||||||
if quote {
|
if quote {
|
||||||
return nil, &ParseError{f, errstr, l}
|
return nil, &ParseError{f, errstr, l}, ""
|
||||||
}
|
}
|
||||||
case false: // Unquoted text record
|
case false: // Unquoted text record
|
||||||
s = make([]string, 1)
|
s = make([]string, 1)
|
||||||
|
@ -210,7 +210,7 @@ func endingToTxtSlice(c chan lex, errstr, f string) ([]string, *ParseError) {
|
||||||
l = <-c
|
l = <-c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return s, nil
|
return s, nil, l.comment
|
||||||
}
|
}
|
||||||
|
|
||||||
func setA(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
func setA(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
||||||
|
@ -1027,7 +1027,7 @@ func setHIP(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
|
||||||
l = <-c
|
l = <-c
|
||||||
}
|
}
|
||||||
rr.RendezvousServers = xs
|
rr.RendezvousServers = xs
|
||||||
return rr, nil, ""
|
return rr, nil, l.comment
|
||||||
}
|
}
|
||||||
|
|
||||||
func setCERT(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
|
func setCERT(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
|
||||||
|
@ -1054,7 +1054,7 @@ func setCERT(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
|
||||||
} else {
|
} else {
|
||||||
rr.Algorithm = uint8(i)
|
rr.Algorithm = uint8(i)
|
||||||
}
|
}
|
||||||
s, e,c1 := endingToString(c, "bad NAPTR Certificate", f)
|
s, e, c1 := endingToString(c, "bad NAPTR Certificate", f)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return nil, e, c1
|
return nil, e, c1
|
||||||
}
|
}
|
||||||
|
@ -1129,7 +1129,7 @@ func setRRSIG(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
|
||||||
}
|
}
|
||||||
s, e, c1 := endingToString(c, "bad RRSIG Signature", f)
|
s, e, c1 := endingToString(c, "bad RRSIG Signature", f)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return nil, e,c1
|
return nil, e, c1
|
||||||
}
|
}
|
||||||
rr.Signature = s
|
rr.Signature = s
|
||||||
return rr, nil, c1
|
return rr, nil, c1
|
||||||
|
@ -1323,7 +1323,7 @@ func setWKS(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
||||||
}
|
}
|
||||||
l = <-c
|
l = <-c
|
||||||
}
|
}
|
||||||
return rr, nil, ""
|
return rr, nil, l.comment
|
||||||
}
|
}
|
||||||
|
|
||||||
func setSSHFP(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
func setSSHFP(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
||||||
|
@ -1426,7 +1426,7 @@ func setDS(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
||||||
l = <-c
|
l = <-c
|
||||||
if i, e := strconv.Atoi(l.token); e != nil {
|
if i, e := strconv.Atoi(l.token); e != nil {
|
||||||
if i, ok := StringToAlgorithm[strings.ToUpper(l.token)]; !ok {
|
if i, ok := StringToAlgorithm[strings.ToUpper(l.token)]; !ok {
|
||||||
return nil, &ParseError{f, "bad DS Algorithm", l},""
|
return nil, &ParseError{f, "bad DS Algorithm", l}, ""
|
||||||
} else {
|
} else {
|
||||||
rr.Algorithm = i
|
rr.Algorithm = i
|
||||||
}
|
}
|
||||||
|
@ -1613,12 +1613,12 @@ func setSPF(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
||||||
rr := new(SPF)
|
rr := new(SPF)
|
||||||
rr.Hdr = h
|
rr.Hdr = h
|
||||||
|
|
||||||
s, e := endingToTxtSlice(c, "bad SPF Txt", f)
|
s, e, c1 := endingToTxtSlice(c, "bad SPF Txt", f)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return nil, e, ""
|
return nil, e, ""
|
||||||
}
|
}
|
||||||
rr.Txt = s
|
rr.Txt = s
|
||||||
return rr, nil, ""
|
return rr, nil, c1
|
||||||
}
|
}
|
||||||
|
|
||||||
func setTXT(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
func setTXT(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
||||||
|
@ -1626,12 +1626,12 @@ func setTXT(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
||||||
rr.Hdr = h
|
rr.Hdr = h
|
||||||
|
|
||||||
// No _BLANK reading here, because this is all rdata is TXT
|
// No _BLANK reading here, because this is all rdata is TXT
|
||||||
s, e := endingToTxtSlice(c, "bad TXT Txt", f)
|
s, e, c1 := endingToTxtSlice(c, "bad TXT Txt", f)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return nil, e, ""
|
return nil, e, ""
|
||||||
}
|
}
|
||||||
rr.Txt = s
|
rr.Txt = s
|
||||||
return rr, nil, ""
|
return rr, nil, c1
|
||||||
}
|
}
|
||||||
|
|
||||||
// identical to setTXT
|
// identical to setTXT
|
||||||
|
@ -1639,12 +1639,12 @@ func setNINFO(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
||||||
rr := new(NINFO)
|
rr := new(NINFO)
|
||||||
rr.Hdr = h
|
rr.Hdr = h
|
||||||
|
|
||||||
s, e := endingToTxtSlice(c, "bad NINFO ZSData", f)
|
s, e, c1 := endingToTxtSlice(c, "bad NINFO ZSData", f)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return nil, e, ""
|
return nil, e, ""
|
||||||
}
|
}
|
||||||
rr.ZSData = s
|
rr.ZSData = s
|
||||||
return rr, nil, ""
|
return rr, nil, c1
|
||||||
}
|
}
|
||||||
|
|
||||||
func setURI(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
func setURI(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
||||||
|
@ -1666,12 +1666,12 @@ func setURI(h RR_Header, c chan lex, f string) (RR, *ParseError, string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
<-c // _BLANK
|
<-c // _BLANK
|
||||||
s, e := endingToTxtSlice(c, "bad URI Target", f)
|
s, e, c1 := endingToTxtSlice(c, "bad URI Target", f)
|
||||||
if e != nil {
|
if e != nil {
|
||||||
return nil, e, ""
|
return nil, e, ""
|
||||||
}
|
}
|
||||||
rr.Target = s
|
rr.Target = s
|
||||||
return rr, nil, ""
|
return rr, nil, c1
|
||||||
}
|
}
|
||||||
|
|
||||||
func setIPSECKEY(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
|
func setIPSECKEY(h RR_Header, c chan lex, o, f string) (RR, *ParseError, string) {
|
||||||
|
|
Loading…
Reference in New Issue