Merge pull request #736 from gfyoung/copy-example-files

Use example files to allow proper git-ignoring
This commit is contained in:
Steven Black
2018-09-06 16:07:29 -04:00
committed by GitHub
5 changed files with 40 additions and 49 deletions
View File
View File
+9 -37
View File
@@ -904,44 +904,10 @@ class TestWriteOpeningHeader(BaseMockDir):
):
self.assertNotIn(expected, contents)
def test_no_preamble(self):
# We should not even attempt to read this, as it is a directory.
hosts_dir = os.path.join(self.test_dir, "myhosts")
os.mkdir(hosts_dir)
kwargs = dict(extensions="", outputsubfolder="",
numberofrules=5, skipstatichosts=True)
with self.mock_property("updateHostsFile.BASEDIR_PATH"):
updateHostsFile.BASEDIR_PATH = self.test_dir
write_opening_header(self.final_file, **kwargs)
contents = self.final_file.getvalue()
contents = contents.decode("UTF-8")
# Expected contents.
for expected in (
"# This hosts file is a merged collection",
"# with a dash of crowd sourcing via Github",
"# Number of unique domains: {count}".format(
count=kwargs["numberofrules"]),
"Fetch the latest version of this file:",
"Project home page: https://github.com/StevenBlack/hosts",
):
self.assertIn(expected, contents)
# Expected non-contents.
for expected in (
"# Extensions added to this file:",
"127.0.0.1 localhost",
"127.0.0.1 local",
"127.0.0.53",
"127.0.1.1",
):
self.assertNotIn(expected, contents)
def test_preamble(self):
def _check_preamble(self, check_copy):
hosts_file = os.path.join(self.test_dir, "myhosts")
hosts_file += ".example" if check_copy else ""
with open(hosts_file, "w") as f:
f.write("peter-piper-picked-a-pepper")
@@ -977,6 +943,12 @@ class TestWriteOpeningHeader(BaseMockDir):
):
self.assertNotIn(expected, contents)
def test_preamble_exists(self):
self._check_preamble(True)
def test_preamble_copy(self):
self._check_preamble(False)
def tearDown(self):
super(TestWriteOpeningHeader, self).tearDown()
self.final_file.close()
+31 -12
View File
@@ -641,9 +641,10 @@ def create_initial_file():
with open(filename, "r") as curFile:
write_data(merge_file, curFile.read())
if os.path.isfile(settings["blacklistfile"]):
with open(settings["blacklistfile"], "r") as curFile:
write_data(merge_file, curFile.read())
maybe_copy_example_file(settings["blacklistfile"])
with open(settings["blacklistfile"], "r") as curFile:
write_data(merge_file, curFile.read())
return merge_file
@@ -739,12 +740,13 @@ def remove_dups_and_excl(merge_file, exclusion_regexes, output_file=None):
"""
number_of_rules = settings["numberofrules"]
if os.path.isfile(settings["whitelistfile"]):
with open(settings["whitelistfile"], "r") as ins:
for line in ins:
line = line.strip(" \t\n\r")
if line and not line.startswith("#"):
settings["exclusions"].append(line)
maybe_copy_example_file(settings["whitelistfile"])
with open(settings["whitelistfile"], "r") as ins:
for line in ins:
line = line.strip(" \t\n\r")
if line and not line.startswith("#"):
settings["exclusions"].append(line)
if not os.path.exists(settings["outputpath"]):
os.makedirs(settings["outputpath"])
@@ -956,10 +958,10 @@ def write_opening_header(final_file, **header_params):
write_data(final_file, "\n")
preamble = path_join_robust(BASEDIR_PATH, "myhosts")
maybe_copy_example_file(preamble)
if os.path.isfile(preamble):
with open(preamble, "r") as f:
write_data(final_file, f.read())
with open(preamble, "r") as f:
write_data(final_file, f.read())
final_file.write(file_contents)
@@ -1213,6 +1215,23 @@ def domain_to_idna(line):
# Helper Functions
def maybe_copy_example_file(file_path):
"""
Given a file path, copy over its ".example" if the path doesn't exist.
If the path does exist, nothing happens in this function.
Parameters
----------
file_path : str
The full file path to check.
"""
if not os.path.isfile(file_path):
example_file_path = file_path + ".example"
shutil.copyfile(example_file_path, file_path)
def get_file_by_url(url):
"""
Get a file data located at a particular URL.
View File