Skip to content

AUTODNS: Enable "get-zones" (ListZones, EnsureZoneExists, GetRegistrarCorrections) #3568

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
May 13, 2025

Conversation

flokli
Copy link
Contributor

@flokli flokli commented May 11, 2025

Best reviewed commit-by commit.

ListZones

We already advertised providers.CanGetZones, but ZoneLister's ListZones() wasn't implemented yet. Adding support is very simple, we just need to POST zone/_search without filters. I made some of the error paths more concise (if err := …; err != nil { … })

EnsureZoneExists

This allows to create new zones. We do some error wrapping before to be able to distinguish a zone not existing from other failures, and then create the zone with dummy values, using the POST /zone endpoint.

Registrar support

Use the GET domain/{name} endpoint to retrieve nameserver config of a domain, and use PUT domain/{name} to update it. Then GetRegistrarCorrections can simply compare the list of nameservers retrieved on getDomain with the desired values, and if different, do a (sparse) request to update these values.

I had to juggle some of the provider initialization around, to be able to use the same code for DomainServiceProvider and RegistrarType. We'll end up with two instances, but considering both deal with rate limiting it should be fine, and much more complicated if we'd try to aggregate clients based on the same settings, as rate-limits are per user.

flokli added 7 commits May 11, 2025 20:54
One wasn't handled, the other one can have the error path dealt with
directly in a conditional.
We already advertised providers.CanGetZones, but ZoneLister's
ListZones() wasn't implemented yet.
This is trying to lookup a zone (as in DNS), not a domain (as in
Registrar).
This allows inspecting on the callsite if zone doesn't exist, or if its
another error.
This implements ZoneCreator for AUTODNS, allowing dnscontrol to create
zones if they don't already exist.

The API insists nameservers and soa to be set, so we use some dummy
values, they'll get overwritten later anyways.

This makes use of the previous error wrapping commit, to check whether
the zone exists currently.
These are sent when an API request triggers a longer-running background task.
Log a FUTUREWORK, if it becomes necessary to poll for completion.
This implements registrar support, allowing to update NS records for
the apex.
@flokli flokli changed the title AUTODNS: implement ListZones AUTODNS: ListZones, EnsureZoneExists, GetRegistrarCorrections May 11, 2025
@flokli
Copy link
Contributor Author

flokli commented May 11, 2025

cc @arnoschoon

@tlimoncelli
Copy link
Contributor

Code looks good to me. @arnoschoon, do you approve?

@arnoschoon
Copy link
Collaborator

Hi @flokli ,

thanks a bunch for adding this functionality. I'm with @tlimoncelli on this, it looks good to me and more importantly most of the tests still execute correctly so managing records keeps working.

=== RUN   TestDNSProviders
Testing Profile="AUTODNS" (TYPE="AUTODNS")
=== RUN   TestDNSProviders/ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty
    helpers_integration_test.go:169: 
        - DELETE final.ample-kitten.dev TXT "TestDNSProviders was successful!" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/00:A:Create_A
    helpers_integration_test.go:169: 
        + CREATE testa.ample-kitten.dev A 1.1.1.1 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/00:A:Change_A_target
    helpers_integration_test.go:169: 
        ± MODIFY testa.ample-kitten.dev A (1.1.1.1 ttl=300) -> (3.3.3.3 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#01
    helpers_integration_test.go:169: 
        - DELETE testa.ample-kitten.dev A 3.3.3.3 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/01:Apex:Create_A
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev A 2.2.2.2 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/01:Apex:Change_A_target
    helpers_integration_test.go:169: 
        ± MODIFY ample-kitten.dev A (2.2.2.2 ttl=300) -> (4.4.4.4 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#02
    helpers_integration_test.go:169: 
        - DELETE ample-kitten.dev A 4.4.4.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/02:Protocol-Wildcard:Create_wildcard
    helpers_integration_test.go:169: 
        + CREATE *.ample-kitten.dev A 3.3.3.3 ttl=300
        + CREATE www.ample-kitten.dev A 5.5.5.5 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/02:Protocol-Wildcard:Delete_wildcard
    helpers_integration_test.go:169: 
        - DELETE *.ample-kitten.dev A 3.3.3.3 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#03
    helpers_integration_test.go:169: 
        - DELETE www.ample-kitten.dev A 5.5.5.5 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/03:AAAA:Create_AAAA
    helpers_integration_test.go:169: 
        + CREATE testaaaa.ample-kitten.dev AAAA 2607:f8b0:4006:820::2006 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/03:AAAA:Change_AAAA_target
    helpers_integration_test.go:169: 
        ± MODIFY testaaaa.ample-kitten.dev AAAA (2607:f8b0:4006:820::2006 ttl=300) -> (2607:f8b0:4006:820::2013 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#04
    helpers_integration_test.go:169: 
        - DELETE testaaaa.ample-kitten.dev AAAA 2607:f8b0:4006:820::2013 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/04:CNAME:Create_a_CNAME
    helpers_integration_test.go:169: 
        + CREATE testcname.ample-kitten.dev CNAME www.google.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/04:CNAME:Change_CNAME_target
    helpers_integration_test.go:169: 
        ± MODIFY testcname.ample-kitten.dev CNAME (www.google.com. ttl=300) -> (www.yahoo.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#05
    helpers_integration_test.go:169: 
        - DELETE testcname.ample-kitten.dev CNAME www.yahoo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/05:CNAME-short:Create_a_CNAME
    helpers_integration_test.go:169: 
        + CREATE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE testcname.ample-kitten.dev CNAME foo.ample-kitten.dev. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#06
    helpers_integration_test.go:169: 
        - DELETE testcname.ample-kitten.dev CNAME foo.ample-kitten.dev. ttl=300
        - DELETE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/06:MX:Create_MX
    helpers_integration_test.go:169: 
        + CREATE testmx.ample-kitten.dev MX 5 foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/06:MX:Change_MX_target
    helpers_integration_test.go:169: 
        ± MODIFY testmx.ample-kitten.dev MX (5 foo.com. ttl=300) -> (5 bar.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/06:MX:Change_MX_p
    helpers_integration_test.go:169: 
        ± MODIFY testmx.ample-kitten.dev MX (5 bar.com. ttl=300) -> (100 bar.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#07
    helpers_integration_test.go:169: 
        - DELETE testmx.ample-kitten.dev MX 100 bar.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/07:TXT:Create_TXT
    helpers_integration_test.go:169: 
        + CREATE testtxt.ample-kitten.dev TXT "simple" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/07:TXT:Change_TXT_target
    helpers_integration_test.go:169: 
        ± MODIFY testtxt.ample-kitten.dev TXT ("simple" ttl=300) -> ("changed" ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#08
    helpers_integration_test.go:169: 
        - DELETE testtxt.ample-kitten.dev TXT "changed" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:CreateManyAtLabel
    helpers_integration_test.go:169: 
        + CREATE www.ample-kitten.dev A 1.1.1.1 ttl=300
        + CREATE www.ample-kitten.dev A 2.2.2.2 ttl=300
        + CREATE www.ample-kitten.dev A 3.3.3.3 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:Empty
    helpers_integration_test.go:169: 
        - DELETE www.ample-kitten.dev A 1.1.1.1 ttl=300
        - DELETE www.ample-kitten.dev A 2.2.2.2 ttl=300
        - DELETE www.ample-kitten.dev A 3.3.3.3 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:Create_an_A_record
    helpers_integration_test.go:169: 
        + CREATE www.ample-kitten.dev A 1.1.1.1 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:Add_at_label1
    helpers_integration_test.go:169: 
        + CREATE www.ample-kitten.dev A 2.2.2.2 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:Add_at_label2
    helpers_integration_test.go:169: 
        + CREATE www.ample-kitten.dev A 3.3.3.3 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#09
    helpers_integration_test.go:169: 
        - DELETE www.ample-kitten.dev A 1.1.1.1 ttl=300
        - DELETE www.ample-kitten.dev A 2.2.2.2 ttl=300
        - DELETE www.ample-kitten.dev A 3.3.3.3 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:CreateManyTypesAtLabel
    helpers_integration_test.go:169: 
        + CREATE testmx.ample-kitten.dev MX 100 bar.com. ttl=300
        + CREATE testmx.ample-kitten.dev MX 5 foo.com. ttl=300
        + CREATE www.ample-kitten.dev A 1.1.1.1 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:Empty
    helpers_integration_test.go:169: 
        - DELETE testmx.ample-kitten.dev MX 100 bar.com. ttl=300
        - DELETE testmx.ample-kitten.dev MX 5 foo.com. ttl=300
        - DELETE www.ample-kitten.dev A 1.1.1.1 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:Create_an_A_record
    helpers_integration_test.go:169: 
        + CREATE www.ample-kitten.dev A 1.1.1.1 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:Add_Type_At_Label
    helpers_integration_test.go:169: 
        + CREATE testmx.ample-kitten.dev MX 5 foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:Add_Type_At_Label#01
    helpers_integration_test.go:169: 
        + CREATE testmx.ample-kitten.dev MX 100 bar.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#10
    helpers_integration_test.go:169: 
        - DELETE testmx.ample-kitten.dev MX 100 bar.com. ttl=300
        - DELETE testmx.ample-kitten.dev MX 5 foo.com. ttl=300
        - DELETE www.ample-kitten.dev A 1.1.1.1 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/10:Attl:Create_Arc
    helpers_integration_test.go:169: 
        + CREATE testa.ample-kitten.dev A 1.1.1.1 ttl=333
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/10:Attl:Change_TTL
    helpers_integration_test.go:169: 
        ± MODIFY-TTL testa.ample-kitten.dev A 1.1.1.1 ttl=(333->999)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#11
    helpers_integration_test.go:169: 
        - DELETE testa.ample-kitten.dev A 1.1.1.1 ttl=999
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/11:TTL:Start
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev A 8.8.8.8 ttl=666
        + CREATE www.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE www.ample-kitten.dev A 5.6.7.8 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/11:TTL:Change_a_ttl
    helpers_integration_test.go:169: 
        ± MODIFY-TTL ample-kitten.dev A 8.8.8.8 ttl=(666->1000)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/11:TTL:Change_single_target_from_set
    helpers_integration_test.go:169: 
        ± MODIFY www.ample-kitten.dev A (1.2.3.4 ttl=300) -> (2.2.2.2 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/11:TTL:Change_all_ttls
    helpers_integration_test.go:169: 
        ± MODIFY-TTL ample-kitten.dev A 8.8.8.8 ttl=(1000->500)
        ± MODIFY-TTL www.ample-kitten.dev A 2.2.2.2 ttl=(300->400)
        ± MODIFY-TTL www.ample-kitten.dev A 5.6.7.8 ttl=(300->400)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#12
    helpers_integration_test.go:169: 
        - DELETE ample-kitten.dev A 8.8.8.8 ttl=500
        - DELETE www.ample-kitten.dev A 2.2.2.2 ttl=400
        - DELETE www.ample-kitten.dev A 5.6.7.8 ttl=400
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/12:add_to_label_and_change_orig_ttl:Setup
    helpers_integration_test.go:169: 
        + CREATE www.ample-kitten.dev A 5.6.7.8 ttl=400
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/12:add_to_label_and_change_orig_ttl:Add_at_same_label,_new_ttl
    helpers_integration_test.go:169: 
        ± MODIFY-TTL www.ample-kitten.dev A 5.6.7.8 ttl=(400->700)
        + CREATE www.ample-kitten.dev A 1.2.3.4 ttl=700
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#13
    helpers_integration_test.go:169: 
        - DELETE www.ample-kitten.dev A 1.2.3.4 ttl=700
        - DELETE www.ample-kitten.dev A 5.6.7.8 ttl=700
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/13:TypeChange:Create_A
    helpers_integration_test.go:169: 
        + CREATE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/13:TypeChange:Change_to_MX
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev MX 5 mx.google.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/13:TypeChange:Change_back_to_A
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev MX 5 mx.google.com. ttl=300
        + CREATE foo.ample-kitten.dev A 4.5.6.7 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#14
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev A 4.5.6.7 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/14:TypeChangeHard:Create_a_CNAME
    helpers_integration_test.go:169: 
        + CREATE foo.ample-kitten.dev CNAME google.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/14:TypeChangeHard:Change_to_A_record
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev CNAME google.com. ttl=300
        + CREATE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/14:TypeChangeHard:Change_back_to_CNAME
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev CNAME google2.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/15:HTTPS_***SKIPPED(CanUseHTTPS_not_supported)***:Empty
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev CNAME google2.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/16:SVCB_***SKIPPED(CanUseSVCB_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#15
=== RUN   TestDNSProviders/ample-kitten.dev/17:CNAME:Record_pointing_to_@
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev CNAME ample-kitten.dev. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#16
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev CNAME ample-kitten.dev. ttl=300
        - DELETE ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/18:ApexMX:Record_pointing_to_@
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev MX 8 ample-kitten.dev. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#17
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev MX 8 ample-kitten.dev. ttl=300
        - DELETE ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/19:NullMX:create
    helpers_integration_test.go:147: ***SKIPPED(PROVIDER DOES NOT SUPPORT '[mx has null target]' ::"19:NullMX")
=== RUN   TestDNSProviders/ample-kitten.dev/19:NullMX:unnull
    helpers_integration_test.go:169: 
        + CREATE nmx.ample-kitten.dev A 1.2.3.3 ttl=300
        + CREATE www.ample-kitten.dev A 1.2.3.9 ttl=300
        + CREATE nmx.ample-kitten.dev MX 9 www.ample-kitten.dev. ttl=300
        + CREATE nmx.ample-kitten.dev MX 3 nmx.ample-kitten.dev. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/19:NullMX:renull
    helpers_integration_test.go:147: ***SKIPPED(PROVIDER DOES NOT SUPPORT '[mx has null target]' ::"19:NullMX")
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#18
    helpers_integration_test.go:169: 
        - DELETE nmx.ample-kitten.dev MX 3 nmx.ample-kitten.dev. ttl=300
        - DELETE nmx.ample-kitten.dev MX 9 www.ample-kitten.dev. ttl=300
        - DELETE www.ample-kitten.dev A 1.2.3.9 ttl=300
        - DELETE nmx.ample-kitten.dev A 1.2.3.3 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/20:NullMXApex:create
    helpers_integration_test.go:147: ***SKIPPED(PROVIDER DOES NOT SUPPORT '[mx has null target]' ::"20:NullMXApex")
=== RUN   TestDNSProviders/ample-kitten.dev/20:NullMXApex:unnull
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev A 1.2.3.2 ttl=300
        + CREATE www.ample-kitten.dev A 1.2.3.8 ttl=300
        + CREATE ample-kitten.dev MX 8 www.ample-kitten.dev. ttl=300
        + CREATE ample-kitten.dev MX 2 ample-kitten.dev. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/20:NullMXApex:renull
    helpers_integration_test.go:147: ***SKIPPED(PROVIDER DOES NOT SUPPORT '[mx has null target]' ::"20:NullMXApex")
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#19
    helpers_integration_test.go:169: 
        - DELETE ample-kitten.dev MX 2 ample-kitten.dev. ttl=300
        - DELETE ample-kitten.dev MX 8 www.ample-kitten.dev. ttl=300
        - DELETE www.ample-kitten.dev A 1.2.3.8 ttl=300
        - DELETE ample-kitten.dev A 1.2.3.2 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/21:NS:NS_for_subdomain
    helpers_integration_test.go:169: 
        + CREATE xyz.ample-kitten.dev NS ns2.foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/21:NS:Dual_NS_for_subdomain
    helpers_integration_test.go:169: 
        + CREATE xyz.ample-kitten.dev NS ns1.foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/21:NS:NS_Record_pointing_to_@
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev NS ample-kitten.dev. ttl=300
        - DELETE xyz.ample-kitten.dev NS ns1.foo.com. ttl=300
        - DELETE xyz.ample-kitten.dev NS ns2.foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#20
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev NS ample-kitten.dev. ttl=300
        - DELETE ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/22:complex_TXT:a_0-byte_TXT
    helpers_integration_test.go:169: 
        + CREATE foo0.ample-kitten.dev TXT "" ttl=300
        Zone update for ample-kitten.dev
    helpers_integration_test.go:174: Request to /v1/zone/ample-kitten.dev/a.ns14.net failed: {"stid":"20250513-app3-267949","messages":[{"text":"The resource record is incomplete.","objects":[{"type":"records/value[0]"}],"code":"EF020542","status":"ERROR"}],"status":{"code":"E0202","text":"Zone could not be updated on the name server.","type":"ERROR"},"object":{"type":"Zone","value":"ample-kitten.dev"}}
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#21
=== RUN   TestDNSProviders/ample-kitten.dev/23:TXT_backslashes:TXT_with_backslashs
    helpers_integration_test.go:169: 
        + CREATE fooosbs1.ample-kitten.dev TXT "1back\\slash" ttl=300
        + CREATE fooosbs2.ample-kitten.dev TXT "2back\\\\slash" ttl=300
        + CREATE fooosbs3.ample-kitten.dev TXT "3back\\\\\\slash" ttl=300
        + CREATE fooosbs4.ample-kitten.dev TXT "4back\\\\\\\\slash" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#22
    helpers_integration_test.go:169: 
        - DELETE fooosbs1.ample-kitten.dev TXT "1back\\slash" ttl=300
        - DELETE fooosbs2.ample-kitten.dev TXT "2back\\\\slash" ttl=300
        - DELETE fooosbs3.ample-kitten.dev TXT "3back\\\\\\slash" ttl=300
        - DELETE fooosbs4.ample-kitten.dev TXT "4back\\\\\\\\slash" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/24:Case_Sensitivity:Create_CAPS
    helpers_integration_test.go:169: 
        + CREATE bar.ample-kitten.dev MX 5 bar.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/24:Case_Sensitivity:Downcase_label
    helpers_integration_test.go:169: 
        + CREATE decoy.ample-kitten.dev A 1.1.1.1 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/24:Case_Sensitivity:Downcase_target
    helpers_integration_test.go:169: 
        ± MODIFY decoy.ample-kitten.dev A (1.1.1.1 ttl=300) -> (2.2.2.2 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/24:Case_Sensitivity:Upcase_both
    helpers_integration_test.go:169: 
        ± MODIFY decoy.ample-kitten.dev A (2.2.2.2 ttl=300) -> (3.3.3.3 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#23
    helpers_integration_test.go:169: 
        - DELETE bar.ample-kitten.dev MX 5 bar.com. ttl=300
        - DELETE decoy.ample-kitten.dev A 3.3.3.3 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/25:testByLabel:initial
    helpers_integration_test.go:169: 
        + CREATE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev A 2.3.4.5 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/25:testByLabel:changeOne
    helpers_integration_test.go:169: 
        ± MODIFY foo.ample-kitten.dev A (2.3.4.5 ttl=300) -> (3.4.5.6 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/25:testByLabel:deleteOne
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev A 3.4.5.6 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/25:testByLabel:addOne
    helpers_integration_test.go:169: 
        + CREATE foo.ample-kitten.dev A 3.4.5.6 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#24
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE foo.ample-kitten.dev A 3.4.5.6 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/26:testByRecordSet:initial
    helpers_integration_test.go:169: 
        + CREATE bar.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev A 2.3.4.5 ttl=300
        + CREATE foo.ample-kitten.dev A 3.4.5.6 ttl=300
        + CREATE foo.ample-kitten.dev MX 20 bar.ample-kitten.dev. ttl=300
        + CREATE foo.ample-kitten.dev MX 10 foo.ample-kitten.dev. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/26:testByRecordSet:changeOne
    helpers_integration_test.go:169: 
        ± MODIFY foo.ample-kitten.dev A (3.4.5.6 ttl=300) -> (8.8.8.8 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/26:testByRecordSet:deleteOne
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev A 8.8.8.8 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/26:testByRecordSet:addOne
    helpers_integration_test.go:169: 
        + CREATE foo.ample-kitten.dev A 8.8.8.8 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#25
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev MX 10 foo.ample-kitten.dev. ttl=300
        - DELETE foo.ample-kitten.dev MX 20 bar.ample-kitten.dev. ttl=300
        - DELETE bar.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE foo.ample-kitten.dev A 2.3.4.5 ttl=300
        - DELETE foo.ample-kitten.dev A 8.8.8.8 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/27:IDNA:Internationalized_name
    helpers_integration_test.go:169: 
        + CREATE xn--ndaaa.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/27:IDNA:Change_IDN
    helpers_integration_test.go:169: 
        ± MODIFY xn--ndaaa.ample-kitten.dev A (1.2.3.4 ttl=300) -> (2.2.2.2 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/27:IDNA:Internationalized_CNAME_Target
    helpers_integration_test.go:169: 
        + CREATE a.ample-kitten.dev CNAME xn--ndaaa.com. ttl=300
        - DELETE xn--ndaaa.ample-kitten.dev A 2.2.2.2 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#26
    helpers_integration_test.go:169: 
        - DELETE a.ample-kitten.dev CNAME xn--ndaaa.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/28:IDNAs_in_CNAME_targets:IDN_CNAME_AND_Target
    helpers_integration_test.go:169: 
        + CREATE xn--o-0gab.ample-kitten.dev CNAME xn--ndaaa.xn--vhquv. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#27
    helpers_integration_test.go:169: 
        - DELETE xn--o-0gab.ample-kitten.dev CNAME xn--ndaaa.xn--vhquv. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/29:pager101:99_records
    helpers_integration_test.go:169: 
        + CREATE pager101-rec0000.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0001.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0002.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0003.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0004.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0005.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0006.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0007.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0008.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0009.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0010.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0011.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0012.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0013.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0014.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0015.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0016.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0017.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0018.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0019.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0020.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0021.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0022.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0023.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0024.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0025.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0026.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0027.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0028.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0029.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0030.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0031.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0032.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0033.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0034.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0035.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0036.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0037.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0038.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0039.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0040.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0041.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0042.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0043.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0044.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0045.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0046.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0047.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0048.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0049.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0050.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0051.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0052.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0053.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0054.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0055.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0056.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0057.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0058.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0059.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0060.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0061.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0062.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0063.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0064.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0065.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0066.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0067.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0068.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0069.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0070.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0071.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0072.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0073.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0074.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0075.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0076.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0077.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0078.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0079.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0080.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0081.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0082.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0083.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0084.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0085.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0086.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0087.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0088.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0089.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0090.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0091.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0092.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0093.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0094.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0095.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0096.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0097.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE pager101-rec0098.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/29:pager101:100_records
    helpers_integration_test.go:169: 
        + CREATE pager101-rec0099.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/29:pager101:101_records
    helpers_integration_test.go:169: 
        + CREATE pager101-rec0100.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/30:pager601_***SKIPPED(disabled_by_only)***:Empty
    helpers_integration_test.go:169: 
        - DELETE pager101-rec0000.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0001.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0002.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0003.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0004.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0005.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0006.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0007.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0008.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0009.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0010.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0011.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0012.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0013.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0014.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0015.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0016.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0017.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0018.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0019.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0020.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0021.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0022.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0023.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0024.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0025.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0026.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0027.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0028.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0029.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0030.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0031.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0032.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0033.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0034.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0035.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0036.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0037.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0038.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0039.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0040.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0041.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0042.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0043.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0044.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0045.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0046.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0047.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0048.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0049.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0050.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0051.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0052.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0053.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0054.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0055.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0056.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0057.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0058.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0059.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0060.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0061.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0062.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0063.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0064.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0065.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0066.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0067.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0068.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0069.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0070.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0071.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0072.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0073.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0074.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0075.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0076.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0077.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0078.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0079.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0080.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0081.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0082.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0083.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0084.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0085.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0086.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0087.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0088.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0089.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0090.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0091.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0092.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0093.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0094.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0095.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0096.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0097.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0098.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0099.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE pager101-rec0100.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/31:pager1201_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/32:batchRecordswithOthers_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#28
=== RUN   TestDNSProviders/ample-kitten.dev/33:CAA:CAA_record
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev CAA 0 issue "letsencrypt.org" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/33:CAA:CAA_change_tag
    helpers_integration_test.go:169: 
        ± MODIFY ample-kitten.dev CAA (0 issue "letsencrypt.org" ttl=300) -> (0 issuewild "letsencrypt.org" ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/33:CAA:CAA_change_target
    helpers_integration_test.go:169: 
        ± MODIFY ample-kitten.dev CAA (0 issuewild "letsencrypt.org" ttl=300) -> (0 issuewild "example.com" ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/33:CAA:CAA_change_flag
    helpers_integration_test.go:169: 
        ± MODIFY ample-kitten.dev CAA (0 issuewild "example.com" ttl=300) -> (128 issuewild "example.com" ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/33:CAA:CAA_many_records
    helpers_integration_test.go:169: 
        ± MODIFY ample-kitten.dev CAA (128 issuewild "example.com" ttl=300) -> (128 issuewild ";" ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/33:CAA:CAA_whitespace
    helpers_integration_test.go:169: 
        ± MODIFY ample-kitten.dev CAA (128 issuewild ";" ttl=300) -> (0 issue "letsencrypt.org; validationmethods=dns-01; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234" ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/34:LOC_***SKIPPED(CanUseLOC_not_supported)***:Empty
    helpers_integration_test.go:169: 
        - DELETE ample-kitten.dev CAA 0 issue "letsencrypt.org; validationmethods=dns-01; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/35:NAPTR_***SKIPPED(CanUseNAPTR_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#29
=== RUN   TestDNSProviders/ample-kitten.dev/36:PTR:Create_PTR_record
    helpers_integration_test.go:169: 
        + CREATE 4.ample-kitten.dev PTR foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/36:PTR:Modify_PTR_record
    helpers_integration_test.go:169: 
        ± MODIFY 4.ample-kitten.dev PTR (foo.com. ttl=300) -> (bar.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/37:SOA_***SKIPPED(CanUseSOA_not_supported)***:Empty
    helpers_integration_test.go:169: 
        - DELETE 4.ample-kitten.dev PTR bar.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#30
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:SRV_record
    helpers_integration_test.go:169: 
        + CREATE _sip._tcp.ample-kitten.dev SRV 5 6 7 foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:Second_SRV_record,_same_prio
    helpers_integration_test.go:169: 
        + CREATE _sip._tcp.ample-kitten.dev SRV 5 60 70 foo2.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:3_SRV
    helpers_integration_test.go:169: 
        + CREATE _sip._tcp.ample-kitten.dev SRV 15 65 75 foo3.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:Delete_one
    helpers_integration_test.go:169: 
        - DELETE _sip._tcp.ample-kitten.dev SRV 5 60 70 foo2.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:Change_Target
    helpers_integration_test.go:169: 
        ± MODIFY _sip._tcp.ample-kitten.dev SRV (15 65 75 foo3.com. ttl=300) -> (15 65 75 foo4.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:Change_Priority
    helpers_integration_test.go:169: 
        ± MODIFY _sip._tcp.ample-kitten.dev SRV (5 6 7 foo.com. ttl=300) -> (52 6 7 foo.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:Change_Weight
    helpers_integration_test.go:169: 
        ± MODIFY _sip._tcp.ample-kitten.dev SRV (52 6 7 foo.com. ttl=300) -> (52 62 7 foo.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:Change_Port
    helpers_integration_test.go:169: 
        ± MODIFY _sip._tcp.ample-kitten.dev SRV (52 62 7 foo.com. ttl=300) -> (52 62 72 foo.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:Empty
    helpers_integration_test.go:169: 
        - DELETE _sip._tcp.ample-kitten.dev SRV 15 65 75 foo4.com. ttl=300
        - DELETE _sip._tcp.ample-kitten.dev SRV 52 62 72 foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/38:SRV:Null_Target
    helpers_integration_test.go:169: 
        + CREATE _sip._tcp.ample-kitten.dev SRV 15 65 75 . ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#31
    helpers_integration_test.go:169: 
        - DELETE _sip._tcp.ample-kitten.dev SRV 15 65 75 . ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/39:SRV:Create_SRV333
    helpers_integration_test.go:169: 
        + CREATE _sip._tcp.ample-kitten.dev SRV 5 6 7 foo.com. ttl=333
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/39:SRV:Change_TTL999
    helpers_integration_test.go:169: 
        ± MODIFY-TTL _sip._tcp.ample-kitten.dev SRV 5 6 7 foo.com. ttl=(333->999)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/40:SSHFP_***SKIPPED(CanUseSSHFP_not_supported)***:Empty
    helpers_integration_test.go:169: 
        - DELETE _sip._tcp.ample-kitten.dev SRV 5 6 7 foo.com. ttl=999
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/41:TLSA_***SKIPPED(CanUseTLSA_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/42:DS_***SKIPPED(CanUseDS_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/43:DS_(children_only)_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/44:DS_(children_only)_CLOUDNS_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/45:DHCID_***SKIPPED(CanUseDHCID_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/46:DNAME_***SKIPPED(CanUseDNAME_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/47:DNSKEY_***SKIPPED(CanUseDNSKEY_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#32
=== RUN   TestDNSProviders/ample-kitten.dev/48:ALIAS_on_apex:ALIAS_at_root
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev ALIAS foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/48:ALIAS_on_apex:change_it
    helpers_integration_test.go:169: 
        ± MODIFY ample-kitten.dev ALIAS (foo.com. ttl=300) -> (foo2.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#33
    helpers_integration_test.go:169: 
        - DELETE ample-kitten.dev ALIAS foo2.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/49:ALIAS_to_nonfqdn:ALIAS_at_root
    helpers_integration_test.go:169: 
        + CREATE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE ample-kitten.dev ALIAS foo.ample-kitten.dev. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#34
    helpers_integration_test.go:169: 
        - DELETE ample-kitten.dev ALIAS foo.ample-kitten.dev. ttl=300
        - DELETE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/50:ALIAS_on_subdomain:ALIAS_at_subdomain
    helpers_integration_test.go:169: 
        + CREATE test.ample-kitten.dev ALIAS foo.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/50:ALIAS_on_subdomain:change_it
    helpers_integration_test.go:169: 
        ± MODIFY test.ample-kitten.dev ALIAS (foo.com. ttl=300) -> (foo2.com. ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/51:AZURE_ALIAS_A_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty
    helpers_integration_test.go:169: 
        - DELETE test.ample-kitten.dev ALIAS foo2.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/52:AZURE_ALIAS_CNAME_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/53:R53_ALIAS2_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/54:R53_ALIAS_ORDER_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/55:R53_ALIAS_CNAME_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/56:R53_ALIAS_Loop_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/57:R53_alias_pre-existing_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/58:R53_alias_evaluate_target_health_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/59:CF_REDIRECT_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/60:CF_REDIRECT_CONVERT_***SKIPPED(excluded_by_alltrue([false]))***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/61:CLOUDFLAREAPI_SINGLE_REDIRECT_***SKIPPED(excluded_by_alltrue([false]))***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/62:CF_PROXY_A_create_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/63:CF_PROXY_A_off_to_X_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/64:CF_PROXY_A_on_to_X_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/65:CF_PROXY_A_full1_to_X_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/66:CF_PROXY_A_full2_to_X_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/67:CF_PROXY_CNAME_create_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/68:CF_PROXY_CNAME_off_to_X_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/69:CF_PROXY_CNAME_on_to_X_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/70:CF_PROXY_CNAME_full_to_X_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/71:CF_WORKER_ROUTE_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#35
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:Create_some_records
    helpers_integration_test.go:169: 
        + CREATE bar.ample-kitten.dev A 5.5.5.5 ttl=300
        + CREATE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev A 2.3.4.5 ttl=300
        + CREATE foo.ample-kitten.dev TXT "simple" ttl=300
        + CREATE mail.ample-kitten.dev CNAME ghs.googlehosted.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_label
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_label,type
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#01
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_label,type,target
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#02
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_type
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#03
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_type,target
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#04
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_target
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#05
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_manytypes
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#06
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_label,type,target=*
=== RUN   TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#07
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#36
    helpers_integration_test.go:169: 
        - DELETE bar.ample-kitten.dev A 5.5.5.5 ttl=300
        - DELETE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE foo.ample-kitten.dev A 2.3.4.5 ttl=300
        - DELETE foo.ample-kitten.dev TXT "simple" ttl=300
        - DELETE mail.ample-kitten.dev CNAME ghs.googlehosted.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:Create_some_records
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE ample-kitten.dev A 2.3.4.5 ttl=300
        + CREATE ample-kitten.dev TXT "simple" ttl=300
        + CREATE bar.ample-kitten.dev A 5.5.5.5 ttl=300
        + CREATE mail.ample-kitten.dev CNAME ghs.googlehosted.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_label
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_label,type
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#01
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_label,type,target
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#02
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_type
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#03
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_type,target
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#04
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_target
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#05
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_manytypes
=== RUN   TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#06
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#37
    helpers_integration_test.go:169: 
        - DELETE ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE ample-kitten.dev A 2.3.4.5 ttl=300
        - DELETE ample-kitten.dev TXT "simple" ttl=300
        - DELETE bar.ample-kitten.dev A 5.5.5.5 ttl=300
        - DELETE mail.ample-kitten.dev CNAME ghs.googlehosted.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:Create_some_records
    helpers_integration_test.go:169: 
        + CREATE ample-kitten.dev A 2.2.2.2 ttl=300
        + CREATE ample-kitten.dev TXT "asimple" ttl=300
        + CREATE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.ample-kitten.dev TXT "simple" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:ignore_unsafe_apex
=== RUN   TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:VERIFY_PREVIOUS
=== RUN   TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:ignore_unsafe_label
=== RUN   TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:VERIFY_PREVIOUS#01
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#38
    helpers_integration_test.go:169: 
        - DELETE ample-kitten.dev A 2.2.2.2 ttl=300
        - DELETE ample-kitten.dev TXT "asimple" ttl=300
        - DELETE foo.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE foo.ample-kitten.dev TXT "simple" ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:Create_some_records
    helpers_integration_test.go:169: 
        + CREATE bar.bat.ample-kitten.dev A 5.5.5.5 ttl=300
        + CREATE foo.bat.ample-kitten.dev A 1.2.3.4 ttl=300
        + CREATE foo.bat.ample-kitten.dev A 2.3.4.5 ttl=300
        + CREATE foo.bat.ample-kitten.dev TXT "simple" ttl=300
        + CREATE mail.bat.ample-kitten.dev CNAME ghs.googlehosted.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:ignore_label=foo.*
=== RUN   TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:VERIFY_PREVIOUS
=== RUN   TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:ignore_label=foo.bat,type
=== RUN   TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:VERIFY_PREVIOUS#01
=== RUN   TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:ignore_target=*.domain
=== RUN   TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:VERIFY_PREVIOUS#02
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#39
    helpers_integration_test.go:169: 
        - DELETE bar.bat.ample-kitten.dev A 5.5.5.5 ttl=300
        - DELETE foo.bat.ample-kitten.dev A 1.2.3.4 ttl=300
        - DELETE foo.bat.ample-kitten.dev A 2.3.4.5 ttl=300
        - DELETE foo.bat.ample-kitten.dev TXT "simple" ttl=300
        - DELETE mail.bat.ample-kitten.dev CNAME ghs.googlehosted.com. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:Create_some_records
    helpers_integration_test.go:169: 
        + CREATE foo.ample-kitten.dev A 1.1.1.1 ttl=300
        + CREATE foo.ample-kitten.dev A 10.10.10.10 ttl=300
        + CREATE foo.ample-kitten.dev AAAA 2003:dd:d7ff::fe71:aaaa ttl=300
        + CREATE foo.ample-kitten.dev MX 10 aspmx.l.google.com. ttl=300
        + CREATE foo.ample-kitten.dev MX 20 alt1.aspmx.l.google.com. ttl=300
        + CREATE zzz.ample-kitten.dev A 3.3.3.3 ttl=300
        + CREATE zzz.ample-kitten.dev A 4.4.4.4 ttl=300
        + CREATE zzz.ample-kitten.dev AAAA 2003:dd:d7ff::fe71:cccc ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:IGNORE_change_ByZone
    helpers_integration_test.go:169: 
        2 records not being deleted because of IGNORE*():
            zzz.ample-kitten.dev. A 3.3.3.3
            zzz.ample-kitten.dev. A 4.4.4.4
        ± MODIFY foo.ample-kitten.dev A (10.10.10.10 ttl=300) -> (11.11.11.11 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:VERIFY_PREVIOUS
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:IGNORE_change_ByLabel
    helpers_integration_test.go:169: 
        2 records not being deleted because of IGNORE*():
            foo.ample-kitten.dev. MX 10 aspmx.l.google.com.
            foo.ample-kitten.dev. MX 20 alt1.aspmx.l.google.com.
        ± MODIFY foo.ample-kitten.dev A (11.11.11.11 ttl=300) -> (12.12.12.12 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:VERIFY_PREVIOUS#01
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:IGNORE_change_ByRecordSet
    helpers_integration_test.go:169: 
        3 records not being deleted because of IGNORE*():
            foo.ample-kitten.dev. AAAA 2003:dd:d7ff::fe71:aaaa
            foo.ample-kitten.dev. MX 10 aspmx.l.google.com.
            foo.ample-kitten.dev. MX 20 alt1.aspmx.l.google.com.
        ± MODIFY foo.ample-kitten.dev A (12.12.12.12 ttl=300) -> (13.13.13.13 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:VERIFY_PREVIOUS#02
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:IGNORE_change_ByRecord
    helpers_integration_test.go:169: 
        1 records not being deleted because of IGNORE*():
            foo.ample-kitten.dev. A 1.1.1.1
        ± MODIFY foo.ample-kitten.dev A (13.13.13.13 ttl=300) -> (14.14.14.14 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:VERIFY_PREVIOUS#03
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#40
    helpers_integration_test.go:169: 
        - DELETE foo.ample-kitten.dev A 1.1.1.1 ttl=300
        - DELETE foo.ample-kitten.dev A 14.14.14.14 ttl=300
        - DELETE foo.ample-kitten.dev AAAA 2003:dd:d7ff::fe71:aaaa ttl=300
        - DELETE foo.ample-kitten.dev MX 10 aspmx.l.google.com. ttl=300
        - DELETE foo.ample-kitten.dev MX 20 alt1.aspmx.l.google.com. ttl=300
        - DELETE zzz.ample-kitten.dev A 3.3.3.3 ttl=300
        - DELETE zzz.ample-kitten.dev A 4.4.4.4 ttl=300
        - DELETE zzz.ample-kitten.dev AAAA 2003:dd:d7ff::fe71:cccc ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/77:IGNORE_TARGET_b2285:Create_some_records
    helpers_integration_test.go:169: 
        + CREATE bar.ample-kitten.dev CNAME redact2.acm-validations.aws. ttl=300
        + CREATE foo.ample-kitten.dev CNAME redact1.acm-validations.aws. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/77:IGNORE_TARGET_b2285:Add_a_new_record_-_ignoring_test.foo.com.
=== RUN   TestDNSProviders/ample-kitten.dev/77:IGNORE_TARGET_b2285:VERIFY_PREVIOUS
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#41
    helpers_integration_test.go:169: 
        - DELETE bar.ample-kitten.dev CNAME redact2.acm-validations.aws. ttl=300
        - DELETE foo.ample-kitten.dev CNAME redact1.acm-validations.aws. ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/78:IGNORE_everything_b2822:Create_some_records
    helpers_integration_test.go:169: 
        + CREATE dyndns-city1.ample-kitten.dev A 91.42.1.1 ttl=300
        + CREATE dyndns-city1.ample-kitten.dev AAAA 2003:dd:d7ff::fe71:ce77 ttl=300
        + CREATE dyndns-city2.ample-kitten.dev A 91.42.1.2 ttl=300
        + CREATE dyndns-city2.ample-kitten.dev AAAA 2003:dd:d7ff::fe71:ce78 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/78:IGNORE_everything_b2822:ignore_them_all
=== RUN   TestDNSProviders/ample-kitten.dev/78:IGNORE_everything_b2822:VERIFY_PREVIOUS
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#42
    helpers_integration_test.go:169: 
        - DELETE dyndns-city1.ample-kitten.dev A 91.42.1.1 ttl=300
        - DELETE dyndns-city1.ample-kitten.dev AAAA 2003:dd:d7ff::fe71:ce77 ttl=300
        - DELETE dyndns-city2.ample-kitten.dev A 91.42.1.2 ttl=300
        - DELETE dyndns-city2.ample-kitten.dev AAAA 2003:dd:d7ff::fe71:ce78 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:Create_some_records
    helpers_integration_test.go:169: 
        + CREATE testdefined.ample-kitten.dev A 9.9.9.9 ttl=300
        + CREATE testignore.ample-kitten.dev A 8.8.8.8 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:ignore
=== RUN   TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:VERIFY_PREVIOUS
=== RUN   TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:Verify_nothing_changed
=== RUN   TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:VERIFY_PREVIOUS#01
=== RUN   TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:ignore_with_change
    helpers_integration_test.go:169: 
        1 records not being deleted because of IGNORE*():
            testignore.ample-kitten.dev. A 8.8.8.8
        ± MODIFY testdefined.ample-kitten.dev A (9.9.9.9 ttl=300) -> (2.2.2.2 ttl=300)
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:VERIFY_PREVIOUS#02
=== RUN   TestDNSProviders/ample-kitten.dev/80:structured_TXT_***SKIPPED(disabled_by_only)***:Empty
    helpers_integration_test.go:169: 
        - DELETE testdefined.ample-kitten.dev A 2.2.2.2 ttl=300
        - DELETE testignore.ample-kitten.dev A 8.8.8.8 ttl=300
        Zone update for ample-kitten.dev
=== RUN   TestDNSProviders/ample-kitten.dev/81:structured_TXT_as_native_records_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/82:PORKBUN_URLFWD_tests_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/83:GCORE_metadata_tests_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/84:NAMECHEAP_url_redirect_records_***SKIPPED(disabled_by_only)***:Empty
=== RUN   TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#43
=== RUN   TestDNSProviders/ample-kitten.dev/85:final:final
    helpers_integration_test.go:169: 
        + CREATE final.ample-kitten.dev TXT "TestDNSProviders was successful!" ttl=300
        Zone update for ample-kitten.dev
--- FAIL: TestDNSProviders (484.36s)
    --- FAIL: TestDNSProviders/ample-kitten.dev (484.36s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty (1.77s)
        --- PASS: TestDNSProviders/ample-kitten.dev/00:A:Create_A (1.58s)
        --- PASS: TestDNSProviders/ample-kitten.dev/00:A:Change_A_target (2.45s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#01 (2.25s)
        --- PASS: TestDNSProviders/ample-kitten.dev/01:Apex:Create_A (2.41s)
        --- PASS: TestDNSProviders/ample-kitten.dev/01:Apex:Change_A_target (2.65s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#02 (2.22s)
        --- PASS: TestDNSProviders/ample-kitten.dev/02:Protocol-Wildcard:Create_wildcard (2.45s)
        --- PASS: TestDNSProviders/ample-kitten.dev/02:Protocol-Wildcard:Delete_wildcard (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#03 (2.25s)
        --- PASS: TestDNSProviders/ample-kitten.dev/03:AAAA:Create_AAAA (5.03s)
        --- PASS: TestDNSProviders/ample-kitten.dev/03:AAAA:Change_AAAA_target (1.43s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#04 (2.20s)
        --- PASS: TestDNSProviders/ample-kitten.dev/04:CNAME:Create_a_CNAME (2.47s)
        --- PASS: TestDNSProviders/ample-kitten.dev/04:CNAME:Change_CNAME_target (2.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#05 (2.17s)
        --- PASS: TestDNSProviders/ample-kitten.dev/05:CNAME-short:Create_a_CNAME (2.56s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#06 (2.14s)
        --- PASS: TestDNSProviders/ample-kitten.dev/06:MX:Create_MX (2.45s)
        --- PASS: TestDNSProviders/ample-kitten.dev/06:MX:Change_MX_target (4.49s)
        --- PASS: TestDNSProviders/ample-kitten.dev/06:MX:Change_MX_p (1.45s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#07 (2.01s)
        --- PASS: TestDNSProviders/ample-kitten.dev/07:TXT:Create_TXT (2.52s)
        --- PASS: TestDNSProviders/ample-kitten.dev/07:TXT:Change_TXT_target (2.57s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#08 (2.24s)
        --- PASS: TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:CreateManyAtLabel (2.46s)
        --- PASS: TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:Empty (2.17s)
        --- PASS: TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:Create_an_A_record (2.45s)
        --- PASS: TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:Add_at_label1 (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/08:ManyAtOnce:Add_at_label2 (2.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#09 (4.79s)
        --- PASS: TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:CreateManyTypesAtLabel (7.87s)
        --- PASS: TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:Empty (1.14s)
        --- PASS: TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:Create_an_A_record (2.04s)
        --- PASS: TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:Add_Type_At_Label (2.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/09:manyTypesAtOnce:Add_Type_At_Label#01 (3.36s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#10 (1.54s)
        --- PASS: TestDNSProviders/ample-kitten.dev/10:Attl:Create_Arc (2.44s)
        --- PASS: TestDNSProviders/ample-kitten.dev/10:Attl:Change_TTL (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#11 (2.28s)
        --- PASS: TestDNSProviders/ample-kitten.dev/11:TTL:Start (2.39s)
        --- PASS: TestDNSProviders/ample-kitten.dev/11:TTL:Change_a_ttl (2.68s)
        --- PASS: TestDNSProviders/ample-kitten.dev/11:TTL:Change_single_target_from_set (3.43s)
        --- PASS: TestDNSProviders/ample-kitten.dev/11:TTL:Change_all_ttls (1.89s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#12 (2.32s)
        --- PASS: TestDNSProviders/ample-kitten.dev/12:add_to_label_and_change_orig_ttl:Setup (3.21s)
        --- PASS: TestDNSProviders/ample-kitten.dev/12:add_to_label_and_change_orig_ttl:Add_at_same_label,_new_ttl (1.81s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#13 (2.20s)
        --- PASS: TestDNSProviders/ample-kitten.dev/13:TypeChange:Create_A (2.46s)
        --- PASS: TestDNSProviders/ample-kitten.dev/13:TypeChange:Change_to_MX (2.76s)
        --- PASS: TestDNSProviders/ample-kitten.dev/13:TypeChange:Change_back_to_A (2.57s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#14 (3.42s)
        --- PASS: TestDNSProviders/ample-kitten.dev/14:TypeChangeHard:Create_a_CNAME (4.98s)
        --- PASS: TestDNSProviders/ample-kitten.dev/14:TypeChangeHard:Change_to_A_record (3.16s)
        --- PASS: TestDNSProviders/ample-kitten.dev/14:TypeChangeHard:Change_back_to_CNAME (1.83s)
        --- PASS: TestDNSProviders/ample-kitten.dev/15:HTTPS_***SKIPPED(CanUseHTTPS_not_supported)***:Empty (1.81s)
        --- PASS: TestDNSProviders/ample-kitten.dev/16:SVCB_***SKIPPED(CanUseSVCB_not_supported)***:Empty (0.42s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#15 (0.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/17:CNAME:Record_pointing_to_@ (2.71s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#16 (2.16s)
        --- PASS: TestDNSProviders/ample-kitten.dev/18:ApexMX:Record_pointing_to_@ (2.46s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#17 (2.24s)
        --- SKIP: TestDNSProviders/ample-kitten.dev/19:NullMX:create (0.00s)
        --- PASS: TestDNSProviders/ample-kitten.dev/19:NullMX:unnull (2.42s)
        --- SKIP: TestDNSProviders/ample-kitten.dev/19:NullMX:renull (0.00s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#18 (2.21s)
        --- SKIP: TestDNSProviders/ample-kitten.dev/20:NullMXApex:create (0.00s)
        --- PASS: TestDNSProviders/ample-kitten.dev/20:NullMXApex:unnull (2.53s)
        --- SKIP: TestDNSProviders/ample-kitten.dev/20:NullMXApex:renull (0.00s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#19 (2.12s)
        --- PASS: TestDNSProviders/ample-kitten.dev/21:NS:NS_for_subdomain (2.58s)
        --- PASS: TestDNSProviders/ample-kitten.dev/21:NS:Dual_NS_for_subdomain (2.58s)
        --- PASS: TestDNSProviders/ample-kitten.dev/21:NS:NS_Record_pointing_to_@ (2.64s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#20 (2.27s)
        --- FAIL: TestDNSProviders/ample-kitten.dev/22:complex_TXT:a_0-byte_TXT (1.76s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#21 (0.63s)
        --- PASS: TestDNSProviders/ample-kitten.dev/23:TXT_backslashes:TXT_with_backslashs (2.82s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#22 (2.16s)
        --- PASS: TestDNSProviders/ample-kitten.dev/24:Case_Sensitivity:Create_CAPS (2.46s)
        --- PASS: TestDNSProviders/ample-kitten.dev/24:Case_Sensitivity:Downcase_label (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/24:Case_Sensitivity:Downcase_target (2.59s)
        --- PASS: TestDNSProviders/ample-kitten.dev/24:Case_Sensitivity:Upcase_both (2.69s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#23 (2.20s)
        --- PASS: TestDNSProviders/ample-kitten.dev/25:testByLabel:initial (2.43s)
        --- PASS: TestDNSProviders/ample-kitten.dev/25:testByLabel:changeOne (2.69s)
        --- PASS: TestDNSProviders/ample-kitten.dev/25:testByLabel:deleteOne (2.65s)
        --- PASS: TestDNSProviders/ample-kitten.dev/25:testByLabel:addOne (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#24 (2.26s)
        --- PASS: TestDNSProviders/ample-kitten.dev/26:testByRecordSet:initial (2.42s)
        --- PASS: TestDNSProviders/ample-kitten.dev/26:testByRecordSet:changeOne (2.68s)
        --- PASS: TestDNSProviders/ample-kitten.dev/26:testByRecordSet:deleteOne (2.64s)
        --- PASS: TestDNSProviders/ample-kitten.dev/26:testByRecordSet:addOne (2.68s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#25 (2.21s)
        --- PASS: TestDNSProviders/ample-kitten.dev/27:IDNA:Internationalized_name (2.44s)
        --- PASS: TestDNSProviders/ample-kitten.dev/27:IDNA:Change_IDN (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/27:IDNA:Internationalized_CNAME_Target (2.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#26 (2.22s)
        --- PASS: TestDNSProviders/ample-kitten.dev/28:IDNAs_in_CNAME_targets:IDN_CNAME_AND_Target (2.47s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#27 (2.25s)
        --- PASS: TestDNSProviders/ample-kitten.dev/29:pager101:99_records (2.40s)
        --- PASS: TestDNSProviders/ample-kitten.dev/29:pager101:100_records (3.16s)
        --- PASS: TestDNSProviders/ample-kitten.dev/29:pager101:101_records (2.18s)
        --- PASS: TestDNSProviders/ample-kitten.dev/30:pager601_***SKIPPED(disabled_by_only)***:Empty (2.30s)
        --- PASS: TestDNSProviders/ample-kitten.dev/31:pager1201_***SKIPPED(disabled_by_only)***:Empty (0.35s)
        --- PASS: TestDNSProviders/ample-kitten.dev/32:batchRecordswithOthers_***SKIPPED(disabled_by_only)***:Empty (0.68s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#28 (0.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/33:CAA:CAA_record (3.07s)
        --- PASS: TestDNSProviders/ample-kitten.dev/33:CAA:CAA_change_tag (2.29s)
        --- PASS: TestDNSProviders/ample-kitten.dev/33:CAA:CAA_change_target (3.75s)
        --- PASS: TestDNSProviders/ample-kitten.dev/33:CAA:CAA_change_flag (1.65s)
        --- PASS: TestDNSProviders/ample-kitten.dev/33:CAA:CAA_many_records (2.57s)
        --- PASS: TestDNSProviders/ample-kitten.dev/33:CAA:CAA_whitespace (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/34:LOC_***SKIPPED(CanUseLOC_not_supported)***:Empty (2.28s)
        --- PASS: TestDNSProviders/ample-kitten.dev/35:NAPTR_***SKIPPED(CanUseNAPTR_not_supported)***:Empty (0.40s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#29 (0.68s)
        --- PASS: TestDNSProviders/ample-kitten.dev/36:PTR:Create_PTR_record (2.81s)
        --- PASS: TestDNSProviders/ample-kitten.dev/36:PTR:Modify_PTR_record (2.50s)
        --- PASS: TestDNSProviders/ample-kitten.dev/37:SOA_***SKIPPED(CanUseSOA_not_supported)***:Empty (3.08s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#30 (0.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:SRV_record (3.73s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:Second_SRV_record,_same_prio (1.73s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:3_SRV (2.64s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:Delete_one (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:Change_Target (2.68s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:Change_Priority (2.68s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:Change_Weight (2.69s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:Change_Port (2.63s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:Empty (2.25s)
        --- PASS: TestDNSProviders/ample-kitten.dev/38:SRV:Null_Target (2.41s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#31 (2.21s)
        --- PASS: TestDNSProviders/ample-kitten.dev/39:SRV:Create_SRV333 (3.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/39:SRV:Change_TTL999 (1.80s)
        --- PASS: TestDNSProviders/ample-kitten.dev/40:SSHFP_***SKIPPED(CanUseSSHFP_not_supported)***:Empty (2.24s)
        --- PASS: TestDNSProviders/ample-kitten.dev/41:TLSA_***SKIPPED(CanUseTLSA_not_supported)***:Empty (0.45s)
        --- PASS: TestDNSProviders/ample-kitten.dev/42:DS_***SKIPPED(CanUseDS_not_supported)***:Empty (0.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/43:DS_(children_only)_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty (0.73s)
        --- PASS: TestDNSProviders/ample-kitten.dev/44:DS_(children_only)_CLOUDNS_***SKIPPED(CanUseDSForChildren_not_supported)***:Empty (0.62s)
        --- PASS: TestDNSProviders/ample-kitten.dev/45:DHCID_***SKIPPED(CanUseDHCID_not_supported)***:Empty (0.92s)
        --- PASS: TestDNSProviders/ample-kitten.dev/46:DNAME_***SKIPPED(CanUseDNAME_not_supported)***:Empty (0.89s)
        --- PASS: TestDNSProviders/ample-kitten.dev/47:DNSKEY_***SKIPPED(CanUseDNSKEY_not_supported)***:Empty (0.31s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#32 (0.79s)
        --- PASS: TestDNSProviders/ample-kitten.dev/48:ALIAS_on_apex:ALIAS_at_root (2.38s)
        --- PASS: TestDNSProviders/ample-kitten.dev/48:ALIAS_on_apex:change_it (3.05s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#33 (1.99s)
        --- PASS: TestDNSProviders/ample-kitten.dev/49:ALIAS_to_nonfqdn:ALIAS_at_root (2.39s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#34 (2.14s)
        --- PASS: TestDNSProviders/ample-kitten.dev/50:ALIAS_on_subdomain:ALIAS_at_subdomain (2.43s)
        --- PASS: TestDNSProviders/ample-kitten.dev/50:ALIAS_on_subdomain:change_it (2.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/51:AZURE_ALIAS_A_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty (2.20s)
        --- PASS: TestDNSProviders/ample-kitten.dev/52:AZURE_ALIAS_CNAME_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty (0.48s)
        --- PASS: TestDNSProviders/ample-kitten.dev/53:R53_ALIAS2_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.70s)
        --- PASS: TestDNSProviders/ample-kitten.dev/54:R53_ALIAS_ORDER_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.63s)
        --- PASS: TestDNSProviders/ample-kitten.dev/55:R53_ALIAS_CNAME_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/56:R53_ALIAS_Loop_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.75s)
        --- PASS: TestDNSProviders/ample-kitten.dev/57:R53_alias_pre-existing_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.63s)
        --- PASS: TestDNSProviders/ample-kitten.dev/58:R53_alias_evaluate_target_health_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (0.63s)
        --- PASS: TestDNSProviders/ample-kitten.dev/59:CF_REDIRECT_***SKIPPED(disabled_by_only)***:Empty (0.70s)
        --- PASS: TestDNSProviders/ample-kitten.dev/60:CF_REDIRECT_CONVERT_***SKIPPED(excluded_by_alltrue([false]))***:Empty (1.63s)
        --- PASS: TestDNSProviders/ample-kitten.dev/61:CLOUDFLAREAPI_SINGLE_REDIRECT_***SKIPPED(excluded_by_alltrue([false]))***:Empty (0.42s)
        --- PASS: TestDNSProviders/ample-kitten.dev/62:CF_PROXY_A_create_***SKIPPED(disabled_by_only)***:Empty (0.29s)
        --- PASS: TestDNSProviders/ample-kitten.dev/63:CF_PROXY_A_off_to_X_***SKIPPED(disabled_by_only)***:Empty (1.32s)
        --- PASS: TestDNSProviders/ample-kitten.dev/64:CF_PROXY_A_on_to_X_***SKIPPED(disabled_by_only)***:Empty (0.31s)
        --- PASS: TestDNSProviders/ample-kitten.dev/65:CF_PROXY_A_full1_to_X_***SKIPPED(disabled_by_only)***:Empty (0.32s)
        --- PASS: TestDNSProviders/ample-kitten.dev/66:CF_PROXY_A_full2_to_X_***SKIPPED(disabled_by_only)***:Empty (1.48s)
        --- PASS: TestDNSProviders/ample-kitten.dev/67:CF_PROXY_CNAME_create_***SKIPPED(disabled_by_only)***:Empty (0.29s)
        --- PASS: TestDNSProviders/ample-kitten.dev/68:CF_PROXY_CNAME_off_to_X_***SKIPPED(disabled_by_only)***:Empty (0.30s)
        --- PASS: TestDNSProviders/ample-kitten.dev/69:CF_PROXY_CNAME_on_to_X_***SKIPPED(disabled_by_only)***:Empty (0.28s)
        --- PASS: TestDNSProviders/ample-kitten.dev/70:CF_PROXY_CNAME_full_to_X_***SKIPPED(disabled_by_only)***:Empty (0.65s)
        --- PASS: TestDNSProviders/ample-kitten.dev/71:CF_WORKER_ROUTE_***SKIPPED(disabled_by_only)***:Empty (0.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#35 (0.74s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:Create_some_records (2.59s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_label (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS (1.34s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_label,type (2.06s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#01 (1.70s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_label,type,target (1.26s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#02 (0.62s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_type (1.02s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#03 (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_type,target (1.38s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#04 (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_target (1.27s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#05 (1.34s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_manytypes (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#06 (1.34s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:ignore_label,type,target=* (1.32s)
        --- PASS: TestDNSProviders/ample-kitten.dev/72:IGNORE_main:VERIFY_PREVIOUS#07 (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#36 (2.29s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:Create_some_records (2.38s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_label (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS (1.34s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_label,type (1.37s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#01 (1.29s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_label,type,target (1.40s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#02 (1.26s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_type (1.34s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#03 (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_type,target (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#04 (1.35s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_target (1.37s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#05 (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:apex_manytypes (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/73:IGNORE_apex:VERIFY_PREVIOUS#06 (1.54s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#37 (1.96s)
        --- PASS: TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:Create_some_records (2.45s)
        --- PASS: TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:ignore_unsafe_apex (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:VERIFY_PREVIOUS (1.37s)
        --- PASS: TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:ignore_unsafe_label (1.30s)
        --- PASS: TestDNSProviders/ample-kitten.dev/74:IGNORE_unsafe:VERIFY_PREVIOUS#01 (1.52s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#38 (2.05s)
        --- PASS: TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:Create_some_records (2.91s)
        --- PASS: TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:ignore_label=foo.* (1.08s)
        --- PASS: TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:VERIFY_PREVIOUS (1.79s)
        --- PASS: TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:ignore_label=foo.bat,type (0.64s)
        --- PASS: TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:VERIFY_PREVIOUS#01 (1.36s)
        --- PASS: TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:ignore_target=*.domain (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/75:IGNORE_wilds:VERIFY_PREVIOUS#02 (1.31s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#39 (2.20s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:Create_some_records (2.47s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:IGNORE_change_ByZone (2.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:VERIFY_PREVIOUS (1.39s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:IGNORE_change_ByLabel (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:VERIFY_PREVIOUS#01 (1.29s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:IGNORE_change_ByRecordSet (2.66s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:VERIFY_PREVIOUS#02 (1.34s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:IGNORE_change_ByRecord (2.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/76:IGNORE_with_modify:VERIFY_PREVIOUS#03 (1.33s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#40 (2.29s)
        --- PASS: TestDNSProviders/ample-kitten.dev/77:IGNORE_TARGET_b2285:Create_some_records (2.40s)
        --- PASS: TestDNSProviders/ample-kitten.dev/77:IGNORE_TARGET_b2285:Add_a_new_record_-_ignoring_test.foo.com. (0.67s)
        --- PASS: TestDNSProviders/ample-kitten.dev/77:IGNORE_TARGET_b2285:VERIFY_PREVIOUS (1.32s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#41 (2.16s)
        --- PASS: TestDNSProviders/ample-kitten.dev/78:IGNORE_everything_b2822:Create_some_records (2.51s)
        --- PASS: TestDNSProviders/ample-kitten.dev/78:IGNORE_everything_b2822:ignore_them_all (1.30s)
        --- PASS: TestDNSProviders/ample-kitten.dev/78:IGNORE_everything_b2822:VERIFY_PREVIOUS (1.34s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#42 (2.21s)
        --- PASS: TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:Create_some_records (2.56s)
        --- PASS: TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:ignore (1.22s)
        --- PASS: TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:VERIFY_PREVIOUS (1.37s)
        --- PASS: TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:Verify_nothing_changed (1.31s)
        --- PASS: TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:VERIFY_PREVIOUS#01 (1.32s)
        --- PASS: TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:ignore_with_change (2.77s)
        --- PASS: TestDNSProviders/ample-kitten.dev/79:IGNORE_w/change_b3227:VERIFY_PREVIOUS#02 (1.27s)
        --- PASS: TestDNSProviders/ample-kitten.dev/80:structured_TXT_***SKIPPED(disabled_by_only)***:Empty (2.20s)
        --- PASS: TestDNSProviders/ample-kitten.dev/81:structured_TXT_as_native_records_***SKIPPED(disabled_by_only)***:Empty (0.43s)
        --- PASS: TestDNSProviders/ample-kitten.dev/82:PORKBUN_URLFWD_tests_***SKIPPED(disabled_by_only)***:Empty (6.14s)
        --- PASS: TestDNSProviders/ample-kitten.dev/83:GCORE_metadata_tests_***SKIPPED(disabled_by_only)***:Empty (0.31s)
        --- PASS: TestDNSProviders/ample-kitten.dev/84:NAMECHEAP_url_redirect_records_***SKIPPED(disabled_by_only)***:Empty (0.28s)
        --- PASS: TestDNSProviders/ample-kitten.dev/Clean_Slate:Empty#43 (1.30s)
        --- PASS: TestDNSProviders/ample-kitten.dev/85:final:final (3.41s)
=== RUN   TestDualProviders
Testing Profile="AUTODNS" (TYPE="AUTODNS")
    provider_test.go:29: Skipping.  DocDualHost == Cannot
--- SKIP: TestDualProviders (0.89s)
=== RUN   TestNameserverDots
Testing Profile="AUTODNS" (TYPE="AUTODNS")
    provider_test.go:108: Skipping.  DocDualHost == Cannot
--- SKIP: TestNameserverDots (0.28s)
=== RUN   TestDuplicateNameservers
Testing Profile="AUTODNS" (TYPE="AUTODNS")
    provider_test.go:140: Skipping.  DocDualHost == Cannot
--- SKIP: TestDuplicateNameservers (0.28s)
FAIL
exit status 1
FAIL	github.com/StackExchange/dnscontrol/v4/integrationTest	486.267s

Except FAIL: TestDNSProviders/ample-kitten.dev which is something @tlimoncelli can explain.

@arnoschoon arnoschoon self-requested a review May 13, 2025 13:51
Copy link
Collaborator

@arnoschoon arnoschoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I said managing DNS records works properly, but I'm confused about the domain management (registrar) part but that might be a limit of my test setup since the used domain is not one I actually registered.

@flokli
Copy link
Contributor Author

flokli commented May 13, 2025

Except FAIL: TestDNSProviders/ample-kitten.dev which is something @tlimoncelli can explain.

This is the exact failing testcase:

FAIL: TestDNSProviders/ample-kitten.dev/22:complex_TXT:a_0-byte_TXT

Highly doubt that's due to the changes in this PR.

@flokli
Copy link
Contributor Author

flokli commented May 13, 2025

[...], but I'm confused about the domain management (registrar) part but that might be a limit of my test setup since the used domain is not one I actually registered.

Which parts are you confused about? Happy to clarify things.

@tlimoncelli
Copy link
Contributor

As I said managing DNS records works properly, but I'm confused about the domain management (registrar) part but that might be a limit of my test setup since the used domain is not one I actually registered.

Sounds like AUTODNS doesn't support 0-length TXT records. This will fix it:

--- a/providers/autodns/auditrecords.go
+++ b/providers/autodns/auditrecords.go
@@ -12,6 +12,7 @@ func AuditRecords(records []*models.RecordConfig) []error {
        a := rejectif.Auditor{}
 
        a.Add("MX", rejectif.MxNull)      // Last verified 2022-03-25
+       a.Add("TXT", rejectif.TxtIsEmpty) // Last verified 2025-05-13
 
        return a.Audit(records)
 }

@flokli
Copy link
Contributor Author

flokli commented May 13, 2025

pushed, thanks!

@tlimoncelli tlimoncelli changed the title AUTODNS: ListZones, EnsureZoneExists, GetRegistrarCorrections AUTODNS: Enable "get-zones" (ListZones, EnsureZoneExists, GetRegistrarCorrections) May 13, 2025
@tlimoncelli tlimoncelli merged commit be081cd into StackExchange:main May 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants