From ea943e606ed358cc23cd91bd0ba7f2508ab81fcf Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Mon, 25 Jan 2021 15:45:23 -0800 Subject: [PATCH 1/5] Avoid . on the end of files, but still test axfr default --- .gitignore | 3 ++- tests/test_octodns_source_axfr.py | 13 +++++++++++-- .../zones/{invalid.records. => invalid.records.tst} | 0 tests/zones/{invalid.zone. => invalid.zone.tst} | 0 tests/zones/{unit.tests. => unit.tests.tst} | 0 5 files changed, 13 insertions(+), 3 deletions(-) rename tests/zones/{invalid.records. => invalid.records.tst} (100%) rename tests/zones/{invalid.zone. => invalid.zone.tst} (100%) rename tests/zones/{unit.tests. => unit.tests.tst} (100%) diff --git a/.gitignore b/.gitignore index 715b687..5192821 100644 --- a/.gitignore +++ b/.gitignore @@ -5,8 +5,8 @@ *.pyc .coverage .env -/config/ /build/ +/config/ coverage.xml dist/ env/ @@ -14,4 +14,5 @@ htmlcov/ nosetests.xml octodns.egg-info/ output/ +tests/zones/unit.tests. tmp/ diff --git a/tests/test_octodns_source_axfr.py b/tests/test_octodns_source_axfr.py index a1d2e1c..8d0a527 100644 --- a/tests/test_octodns_source_axfr.py +++ b/tests/test_octodns_source_axfr.py @@ -9,6 +9,7 @@ import dns.zone from dns.exception import DNSException from mock import patch +from shutil import copyfile from six import text_type from unittest import TestCase @@ -21,7 +22,7 @@ from octodns.record import ValidationError class TestAxfrSource(TestCase): source = AxfrSource('test', 'localhost') - forward_zonefile = dns.zone.from_file('./tests/zones/unit.tests.', + forward_zonefile = dns.zone.from_file('./tests/zones/unit.tests.tst', 'unit.tests', relativize=False) @patch('dns.zone.from_xfr') @@ -44,7 +45,7 @@ class TestAxfrSource(TestCase): class TestZoneFileSource(TestCase): - source = ZoneFileSource('test', './tests/zones') + source = ZoneFileSource('test', './tests/zones', file_extension='tst') def test_zonefiles_with_extension(self): source = ZoneFileSource('test', './tests/zones', 'extension') @@ -53,6 +54,14 @@ class TestZoneFileSource(TestCase): source.populate(valid) self.assertEquals(1, len(valid.records)) + def test_zonefiles_without_extension(self): + copyfile('./tests/zones/unit.tests.tst', './tests/zones/unit.tests.') + source = ZoneFileSource('test', './tests/zones') + # Load zonefiles without a specified file extension + valid = Zone('unit.tests.', []) + source.populate(valid) + self.assertEquals(12, len(valid.records)) + def test_populate(self): # Valid zone file in directory valid = Zone('unit.tests.', []) diff --git a/tests/zones/invalid.records. b/tests/zones/invalid.records.tst similarity index 100% rename from tests/zones/invalid.records. rename to tests/zones/invalid.records.tst diff --git a/tests/zones/invalid.zone. b/tests/zones/invalid.zone.tst similarity index 100% rename from tests/zones/invalid.zone. rename to tests/zones/invalid.zone.tst diff --git a/tests/zones/unit.tests. b/tests/zones/unit.tests.tst similarity index 100% rename from tests/zones/unit.tests. rename to tests/zones/unit.tests.tst From 37381bd2740a899c1944c5a5a274814ee807d1ff Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Mon, 25 Jan 2021 15:50:34 -0800 Subject: [PATCH 2/5] Skip the axfr default name test if we can't create the needed tests file --- tests/test_octodns_source_axfr.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/test_octodns_source_axfr.py b/tests/test_octodns_source_axfr.py index 8d0a527..f732060 100644 --- a/tests/test_octodns_source_axfr.py +++ b/tests/test_octodns_source_axfr.py @@ -55,7 +55,12 @@ class TestZoneFileSource(TestCase): self.assertEquals(1, len(valid.records)) def test_zonefiles_without_extension(self): - copyfile('./tests/zones/unit.tests.tst', './tests/zones/unit.tests.') + try: + copyfile('./tests/zones/unit.tests.tst', + './tests/zones/unit.tests.') + except: + self.skipTest('Unable to create unit.tests. (ending with .) so ' + 'skipping default filename testing.') source = ZoneFileSource('test', './tests/zones') # Load zonefiles without a specified file extension valid = Zone('unit.tests.', []) From dd1dbfbfdd1d66ee4c62487a6394fa5d10f2e443 Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Thu, 28 Jan 2021 12:23:13 -0800 Subject: [PATCH 3/5] Rework copyfile and skip based on feedback from windows test --- tests/test_octodns_source_axfr.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/test_octodns_source_axfr.py b/tests/test_octodns_source_axfr.py index f732060..e0871ee 100644 --- a/tests/test_octodns_source_axfr.py +++ b/tests/test_octodns_source_axfr.py @@ -9,6 +9,7 @@ import dns.zone from dns.exception import DNSException from mock import patch +from os.path import exists from shutil import copyfile from six import text_type from unittest import TestCase @@ -55,12 +56,19 @@ class TestZoneFileSource(TestCase): self.assertEquals(1, len(valid.records)) def test_zonefiles_without_extension(self): - try: - copyfile('./tests/zones/unit.tests.tst', - './tests/zones/unit.tests.') - except: + # Windows doesn't let files end with a `.` so we add a .tst to them in + # the repo and then try and create the `.` version we need for the + # default case (no extension.) + copyfile('./tests/zones/unit.tests.tst', './tests/zones/unit.tests.') + # Unfortunately copyfile silently works and create the file without + # the `.` so we have to check to see if it did that + if exists('./tests/zones/unit.tests'): + # It did so we need to skip this test, that means windows won't + # have full code coverage, but skipping the test is going out of + # our way enough for a os-specific/oddball case. self.skipTest('Unable to create unit.tests. (ending with .) so ' 'skipping default filename testing.') + source = ZoneFileSource('test', './tests/zones') # Load zonefiles without a specified file extension valid = Zone('unit.tests.', []) From 4ce2563d2ec1fdd5b6e3cfbaf4e938f17b2a26e2 Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Thu, 28 Jan 2021 13:24:35 -0800 Subject: [PATCH 4/5] Remove the rest of the . ending files, clean up code and tests for better coverage --- octodns/provider/yaml.py | 6 ++-- octodns/source/axfr.py | 9 ++---- tests/config/simple-split.yaml | 3 ++ .../a.yaml | 0 .../aaaa.yaml | 0 .../cname.yaml | 0 .../real-ish-a.yaml | 0 .../simple-weighted.yaml | 0 .../split/{empty. => empty.tst}/.gitkeep | 0 .../12.yaml | 0 .../2.yaml | 0 .../test.yaml | 0 .../$unit.tests.yaml | 0 .../_srv._tcp.yaml | 0 .../{unit.tests. => unit.tests.tst}/aaaa.yaml | 0 .../cname.yaml | 0 .../dname.yaml | 0 .../excluded.yaml | 0 .../ignored.yaml | 0 .../included.yaml | 0 .../{unit.tests. => unit.tests.tst}/mx.yaml | 0 .../naptr.yaml | 0 .../{unit.tests. => unit.tests.tst}/ptr.yaml | 0 .../{unit.tests. => unit.tests.tst}/spf.yaml | 0 .../{unit.tests. => unit.tests.tst}/sub.yaml | 0 .../{unit.tests. => unit.tests.tst}/txt.yaml | 0 .../www.sub.yaml | 0 .../{unit.tests. => unit.tests.tst}/www.yaml | 0 .../{unordered. => unordered.tst}/abc.yaml | 0 .../{unordered. => unordered.tst}/xyz.yaml | 0 tests/test_octodns_provider_yaml.py | 31 ++++++++++++------- tests/test_octodns_source_axfr.py | 4 +-- 32 files changed, 30 insertions(+), 23 deletions(-) rename tests/config/split/{dynamic.tests. => dynamic.tests.tst}/a.yaml (100%) rename tests/config/split/{dynamic.tests. => dynamic.tests.tst}/aaaa.yaml (100%) rename tests/config/split/{dynamic.tests. => dynamic.tests.tst}/cname.yaml (100%) rename tests/config/split/{dynamic.tests. => dynamic.tests.tst}/real-ish-a.yaml (100%) rename tests/config/split/{dynamic.tests. => dynamic.tests.tst}/simple-weighted.yaml (100%) rename tests/config/split/{empty. => empty.tst}/.gitkeep (100%) rename tests/config/split/{subzone.unit.tests. => subzone.unit.tests.tst}/12.yaml (100%) rename tests/config/split/{subzone.unit.tests. => subzone.unit.tests.tst}/2.yaml (100%) rename tests/config/split/{subzone.unit.tests. => subzone.unit.tests.tst}/test.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/$unit.tests.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/_srv._tcp.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/aaaa.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/cname.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/dname.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/excluded.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/ignored.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/included.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/mx.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/naptr.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/ptr.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/spf.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/sub.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/txt.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/www.sub.yaml (100%) rename tests/config/split/{unit.tests. => unit.tests.tst}/www.yaml (100%) rename tests/config/split/{unordered. => unordered.tst}/abc.yaml (100%) rename tests/config/split/{unordered. => unordered.tst}/xyz.yaml (100%) diff --git a/octodns/provider/yaml.py b/octodns/provider/yaml.py index 55a1632..3deca01 100644 --- a/octodns/provider/yaml.py +++ b/octodns/provider/yaml.py @@ -239,11 +239,13 @@ class SplitYamlProvider(YamlProvider): # instead of a file matching the record name. CATCHALL_RECORD_NAMES = ('*', '') - def __init__(self, id, directory, *args, **kwargs): + def __init__(self, id, directory, extension='.', *args, **kwargs): super(SplitYamlProvider, self).__init__(id, directory, *args, **kwargs) + self.extension = extension def _zone_directory(self, zone): - return join(self.directory, zone.name) + filename = '{}{}'.format(zone.name[:-1], self.extension) + return join(self.directory, filename) def populate(self, zone, target=False, lenient=False): self.log.debug('populate: name=%s, target=%s, lenient=%s', zone.name, diff --git a/octodns/source/axfr.py b/octodns/source/axfr.py index ed3f98f..e21f29f 100644 --- a/octodns/source/axfr.py +++ b/octodns/source/axfr.py @@ -216,7 +216,7 @@ class ZoneFileSource(AxfrBaseSource): # (optional, default true) check_origin: false ''' - def __init__(self, id, directory, file_extension=None, check_origin=True): + def __init__(self, id, directory, file_extension='.', check_origin=True): self.log = logging.getLogger('ZoneFileSource[{}]'.format(id)) self.log.debug('__init__: id=%s, directory=%s, file_extension=%s, ' 'check_origin=%s', id, @@ -229,12 +229,7 @@ class ZoneFileSource(AxfrBaseSource): self._zone_records = {} def _load_zone_file(self, zone_name): - - zone_filename = zone_name - if self.file_extension: - zone_filename = '{}{}'.format(zone_name, - self.file_extension.lstrip('.')) - + zone_filename = '{}{}'.format(zone_name[:-1], self.file_extension) zonefiles = listdir(self.directory) if zone_filename in zonefiles: try: diff --git a/tests/config/simple-split.yaml b/tests/config/simple-split.yaml index d106506..a798258 100644 --- a/tests/config/simple-split.yaml +++ b/tests/config/simple-split.yaml @@ -4,14 +4,17 @@ providers: in: class: octodns.provider.yaml.SplitYamlProvider directory: tests/config/split + extension: .tst dump: class: octodns.provider.yaml.SplitYamlProvider directory: env/YAML_TMP_DIR + extension: .tst # This is sort of ugly, but it shouldn't hurt anything. It'll just write out # the target file twice where it and dump are both used dump2: class: octodns.provider.yaml.SplitYamlProvider directory: env/YAML_TMP_DIR + extension: .tst simple: class: helpers.SimpleProvider geo: diff --git a/tests/config/split/dynamic.tests./a.yaml b/tests/config/split/dynamic.tests.tst/a.yaml similarity index 100% rename from tests/config/split/dynamic.tests./a.yaml rename to tests/config/split/dynamic.tests.tst/a.yaml diff --git a/tests/config/split/dynamic.tests./aaaa.yaml b/tests/config/split/dynamic.tests.tst/aaaa.yaml similarity index 100% rename from tests/config/split/dynamic.tests./aaaa.yaml rename to tests/config/split/dynamic.tests.tst/aaaa.yaml diff --git a/tests/config/split/dynamic.tests./cname.yaml b/tests/config/split/dynamic.tests.tst/cname.yaml similarity index 100% rename from tests/config/split/dynamic.tests./cname.yaml rename to tests/config/split/dynamic.tests.tst/cname.yaml diff --git a/tests/config/split/dynamic.tests./real-ish-a.yaml b/tests/config/split/dynamic.tests.tst/real-ish-a.yaml similarity index 100% rename from tests/config/split/dynamic.tests./real-ish-a.yaml rename to tests/config/split/dynamic.tests.tst/real-ish-a.yaml diff --git a/tests/config/split/dynamic.tests./simple-weighted.yaml b/tests/config/split/dynamic.tests.tst/simple-weighted.yaml similarity index 100% rename from tests/config/split/dynamic.tests./simple-weighted.yaml rename to tests/config/split/dynamic.tests.tst/simple-weighted.yaml diff --git a/tests/config/split/empty./.gitkeep b/tests/config/split/empty.tst/.gitkeep similarity index 100% rename from tests/config/split/empty./.gitkeep rename to tests/config/split/empty.tst/.gitkeep diff --git a/tests/config/split/subzone.unit.tests./12.yaml b/tests/config/split/subzone.unit.tests.tst/12.yaml similarity index 100% rename from tests/config/split/subzone.unit.tests./12.yaml rename to tests/config/split/subzone.unit.tests.tst/12.yaml diff --git a/tests/config/split/subzone.unit.tests./2.yaml b/tests/config/split/subzone.unit.tests.tst/2.yaml similarity index 100% rename from tests/config/split/subzone.unit.tests./2.yaml rename to tests/config/split/subzone.unit.tests.tst/2.yaml diff --git a/tests/config/split/subzone.unit.tests./test.yaml b/tests/config/split/subzone.unit.tests.tst/test.yaml similarity index 100% rename from tests/config/split/subzone.unit.tests./test.yaml rename to tests/config/split/subzone.unit.tests.tst/test.yaml diff --git a/tests/config/split/unit.tests./$unit.tests.yaml b/tests/config/split/unit.tests.tst/$unit.tests.yaml similarity index 100% rename from tests/config/split/unit.tests./$unit.tests.yaml rename to tests/config/split/unit.tests.tst/$unit.tests.yaml diff --git a/tests/config/split/unit.tests./_srv._tcp.yaml b/tests/config/split/unit.tests.tst/_srv._tcp.yaml similarity index 100% rename from tests/config/split/unit.tests./_srv._tcp.yaml rename to tests/config/split/unit.tests.tst/_srv._tcp.yaml diff --git a/tests/config/split/unit.tests./aaaa.yaml b/tests/config/split/unit.tests.tst/aaaa.yaml similarity index 100% rename from tests/config/split/unit.tests./aaaa.yaml rename to tests/config/split/unit.tests.tst/aaaa.yaml diff --git a/tests/config/split/unit.tests./cname.yaml b/tests/config/split/unit.tests.tst/cname.yaml similarity index 100% rename from tests/config/split/unit.tests./cname.yaml rename to tests/config/split/unit.tests.tst/cname.yaml diff --git a/tests/config/split/unit.tests./dname.yaml b/tests/config/split/unit.tests.tst/dname.yaml similarity index 100% rename from tests/config/split/unit.tests./dname.yaml rename to tests/config/split/unit.tests.tst/dname.yaml diff --git a/tests/config/split/unit.tests./excluded.yaml b/tests/config/split/unit.tests.tst/excluded.yaml similarity index 100% rename from tests/config/split/unit.tests./excluded.yaml rename to tests/config/split/unit.tests.tst/excluded.yaml diff --git a/tests/config/split/unit.tests./ignored.yaml b/tests/config/split/unit.tests.tst/ignored.yaml similarity index 100% rename from tests/config/split/unit.tests./ignored.yaml rename to tests/config/split/unit.tests.tst/ignored.yaml diff --git a/tests/config/split/unit.tests./included.yaml b/tests/config/split/unit.tests.tst/included.yaml similarity index 100% rename from tests/config/split/unit.tests./included.yaml rename to tests/config/split/unit.tests.tst/included.yaml diff --git a/tests/config/split/unit.tests./mx.yaml b/tests/config/split/unit.tests.tst/mx.yaml similarity index 100% rename from tests/config/split/unit.tests./mx.yaml rename to tests/config/split/unit.tests.tst/mx.yaml diff --git a/tests/config/split/unit.tests./naptr.yaml b/tests/config/split/unit.tests.tst/naptr.yaml similarity index 100% rename from tests/config/split/unit.tests./naptr.yaml rename to tests/config/split/unit.tests.tst/naptr.yaml diff --git a/tests/config/split/unit.tests./ptr.yaml b/tests/config/split/unit.tests.tst/ptr.yaml similarity index 100% rename from tests/config/split/unit.tests./ptr.yaml rename to tests/config/split/unit.tests.tst/ptr.yaml diff --git a/tests/config/split/unit.tests./spf.yaml b/tests/config/split/unit.tests.tst/spf.yaml similarity index 100% rename from tests/config/split/unit.tests./spf.yaml rename to tests/config/split/unit.tests.tst/spf.yaml diff --git a/tests/config/split/unit.tests./sub.yaml b/tests/config/split/unit.tests.tst/sub.yaml similarity index 100% rename from tests/config/split/unit.tests./sub.yaml rename to tests/config/split/unit.tests.tst/sub.yaml diff --git a/tests/config/split/unit.tests./txt.yaml b/tests/config/split/unit.tests.tst/txt.yaml similarity index 100% rename from tests/config/split/unit.tests./txt.yaml rename to tests/config/split/unit.tests.tst/txt.yaml diff --git a/tests/config/split/unit.tests./www.sub.yaml b/tests/config/split/unit.tests.tst/www.sub.yaml similarity index 100% rename from tests/config/split/unit.tests./www.sub.yaml rename to tests/config/split/unit.tests.tst/www.sub.yaml diff --git a/tests/config/split/unit.tests./www.yaml b/tests/config/split/unit.tests.tst/www.yaml similarity index 100% rename from tests/config/split/unit.tests./www.yaml rename to tests/config/split/unit.tests.tst/www.yaml diff --git a/tests/config/split/unordered./abc.yaml b/tests/config/split/unordered.tst/abc.yaml similarity index 100% rename from tests/config/split/unordered./abc.yaml rename to tests/config/split/unordered.tst/abc.yaml diff --git a/tests/config/split/unordered./xyz.yaml b/tests/config/split/unordered.tst/xyz.yaml similarity index 100% rename from tests/config/split/unordered./xyz.yaml rename to tests/config/split/unordered.tst/xyz.yaml diff --git a/tests/test_octodns_provider_yaml.py b/tests/test_octodns_provider_yaml.py index 15e90da..38dfc11 100644 --- a/tests/test_octodns_provider_yaml.py +++ b/tests/test_octodns_provider_yaml.py @@ -207,18 +207,20 @@ class TestSplitYamlProvider(TestCase): def test_zone_directory(self): source = SplitYamlProvider( - 'test', join(dirname(__file__), 'config/split')) + 'test', join(dirname(__file__), 'config/split'), + extension='.tst') zone = Zone('unit.tests.', []) self.assertEqual( - join(dirname(__file__), 'config/split/unit.tests.'), + join(dirname(__file__), 'config/split/unit.tests.tst'), source._zone_directory(zone)) def test_apply_handles_existing_zone_directory(self): with TemporaryDirectory() as td: - provider = SplitYamlProvider('test', join(td.dirname, 'config')) - makedirs(join(td.dirname, 'config', 'does.exist.')) + provider = SplitYamlProvider('test', join(td.dirname, 'config'), + extension='.tst') + makedirs(join(td.dirname, 'config', 'does.exist.tst')) zone = Zone('does.exist.', []) self.assertTrue(isdir(provider._zone_directory(zone))) @@ -227,7 +229,8 @@ class TestSplitYamlProvider(TestCase): def test_provider(self): source = SplitYamlProvider( - 'test', join(dirname(__file__), 'config/split')) + 'test', join(dirname(__file__), 'config/split'), + extension='.tst') zone = Zone('unit.tests.', []) dynamic_zone = Zone('dynamic.tests.', []) @@ -246,9 +249,10 @@ class TestSplitYamlProvider(TestCase): with TemporaryDirectory() as td: # Add some subdirs to make sure that it can create them directory = join(td.dirname, 'sub', 'dir') - zone_dir = join(directory, 'unit.tests.') - dynamic_zone_dir = join(directory, 'dynamic.tests.') - target = SplitYamlProvider('test', directory) + zone_dir = join(directory, 'unit.tests.tst') + dynamic_zone_dir = join(directory, 'dynamic.tests.tst') + target = SplitYamlProvider('test', directory, + extension='.tst') # We add everything plan = target.plan(zone) @@ -335,7 +339,8 @@ class TestSplitYamlProvider(TestCase): def test_empty(self): source = SplitYamlProvider( - 'test', join(dirname(__file__), 'config/split')) + 'test', join(dirname(__file__), 'config/split'), + extension='.tst') zone = Zone('empty.', []) @@ -345,7 +350,8 @@ class TestSplitYamlProvider(TestCase): def test_unsorted(self): source = SplitYamlProvider( - 'test', join(dirname(__file__), 'config/split')) + 'test', join(dirname(__file__), 'config/split'), + extension='.tst') zone = Zone('unordered.', []) @@ -356,14 +362,15 @@ class TestSplitYamlProvider(TestCase): source = SplitYamlProvider( 'test', join(dirname(__file__), 'config/split'), - enforce_order=False) + extension='.tst', enforce_order=False) # no exception source.populate(zone) self.assertEqual(2, len(zone.records)) def test_subzone_handling(self): source = SplitYamlProvider( - 'test', join(dirname(__file__), 'config/split')) + 'test', join(dirname(__file__), 'config/split'), + extension='.tst') # If we add `sub` as a sub-zone we'll reject `www.sub` zone = Zone('unit.tests.', ['sub']) diff --git a/tests/test_octodns_source_axfr.py b/tests/test_octodns_source_axfr.py index e0871ee..44e04d0 100644 --- a/tests/test_octodns_source_axfr.py +++ b/tests/test_octodns_source_axfr.py @@ -46,10 +46,10 @@ class TestAxfrSource(TestCase): class TestZoneFileSource(TestCase): - source = ZoneFileSource('test', './tests/zones', file_extension='tst') + source = ZoneFileSource('test', './tests/zones', file_extension='.tst') def test_zonefiles_with_extension(self): - source = ZoneFileSource('test', './tests/zones', 'extension') + source = ZoneFileSource('test', './tests/zones', '.extension') # Load zonefiles with a specified file extension valid = Zone('ext.unit.tests.', []) source.populate(valid) From 858628a867218e566013cde9d5a5fa920ecce382 Mon Sep 17 00:00:00 2001 From: Ross McFarland Date: Fri, 5 Feb 2021 12:06:46 -0800 Subject: [PATCH 5/5] Update yaml test path to work on windows --- tests/test_octodns_provider_yaml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_octodns_provider_yaml.py b/tests/test_octodns_provider_yaml.py index 38dfc11..f255238 100644 --- a/tests/test_octodns_provider_yaml.py +++ b/tests/test_octodns_provider_yaml.py @@ -213,7 +213,7 @@ class TestSplitYamlProvider(TestCase): zone = Zone('unit.tests.', []) self.assertEqual( - join(dirname(__file__), 'config/split/unit.tests.tst'), + join(dirname(__file__), 'config/split', 'unit.tests.tst'), source._zone_directory(zone)) def test_apply_handles_existing_zone_directory(self):