Rewrite in class, cleaner
This commit is contained in:
BIN
test/test_data.tar
Normal file
BIN
test/test_data.tar
Normal file
Binary file not shown.
@@ -1,25 +1,34 @@
|
||||
from link_fixer import link_fixer
|
||||
from link_fixer import Link
|
||||
import os
|
||||
from pathlib import Path
|
||||
from shutil import rmtree
|
||||
import tarfile
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
class TestLinkFixer(unittest.TestCase):
|
||||
|
||||
tgt_dir = Path("test/data/tgt_dir")
|
||||
lnk_dir = Path("test/data/lnk_dir")
|
||||
tgt_file = Path("test/data/tgt_dir/tgt_file.txt")
|
||||
ln_non_exists = Path("test/data/link.txt")
|
||||
ln_valid = Path("test/data/lnk_dir/ln_valid")
|
||||
tgt_dir = "test/data/tgt_dir"
|
||||
lnk_dir = "test/data/lnk_dir"
|
||||
tgt_file = "test/data/tgt_dir/tgt_file.txt"
|
||||
ln_non_exists = "test/data/link.txt"
|
||||
ln_valid = "test/data/lnk_dir/ln_valid"
|
||||
ln_valid_path = "../tgt_dir/tgt_file.txt"
|
||||
ln_broken = Path("test/data/lnk_dir/tgt_file.txt")
|
||||
ln_broken = "test/data/lnk_dir/tgt_file.txt"
|
||||
ln_broken_path = "../tgt/tgt_.txt"
|
||||
inexistent = Path("test/data/tgt_dir/inexistent.txt")
|
||||
|
||||
ln_ne_error = "Link argument matches no file or directory"
|
||||
ln_gd_error = "Link is not broken!"
|
||||
ln_ns_error = "Link argument is not a symbolic link"
|
||||
ln_no_target = "test/data/lnk_dir/ln_no_target"
|
||||
tgt_invalid = "test/data/tgt"
|
||||
inexistent = "test/data/tgt_dir/inexistent.txt"
|
||||
|
||||
|
||||
ln_ne_error = "Error: could not access link test/data/link.txt"
|
||||
ln_gd_error = "Error: link test/data/lnk_dr/ln_valid is not broken. Abort."
|
||||
ln_ns_error = "Error: link test/data/tgt_dir/tgt_file.txt is not a link at all. Abort."
|
||||
tgt_invalid_error = "Error: target dir test/data/tgt does not seem to exist or be a directory. Abort."
|
||||
ln_no_target_error = "Error: no match for link target in test/data/tgt_dir"
|
||||
|
||||
|
||||
"""
|
||||
def reset_dir(self, dir_path):
|
||||
if not dir_path.is_dir():
|
||||
if dir_path.exists():
|
||||
@@ -49,29 +58,51 @@ class TestLinkFixer(unittest.TestCase):
|
||||
self.ln_broken.unlink()
|
||||
self.ln_broken.symlink_to(self.ln_broken_path)
|
||||
self.inexistent.unlink()
|
||||
"""
|
||||
def setup_test(self):
|
||||
try:
|
||||
rmtree("test/data")
|
||||
except Exception:
|
||||
sys.exit("Error: couldn't reset test data directory! Cancelling test!")
|
||||
with tarfile.open("test/test_data.tar", "r:*") as tar:
|
||||
tar.extraction_filter = getattr(tarfile, 'data_filter')
|
||||
tar.extractall("test")
|
||||
|
||||
|
||||
def test_link_fixer(self):
|
||||
@patch('builtins.print')
|
||||
def test_link_fixer(self, mock_print):
|
||||
self.setup_test()
|
||||
|
||||
print("Test for inexistent link")
|
||||
with self.assertRaises(SystemExit) as err:
|
||||
link_fixer(self.ln_non_exists, self.tgt_dir)
|
||||
self.assertEqual(err.exception.code, self.ln_ne_error)
|
||||
Link.fix(self.ln_non_exists, self.tgt_dir)
|
||||
self.assertEqual(err.exception_code, self.ln_ne_error)
|
||||
|
||||
print("Test for non-broken link")
|
||||
with self.assertRaises(SystemExit) as err:
|
||||
link_fixer(self.ln_valid, self.tgt_dir)
|
||||
self.assertEqual(err.exception.code, self.ln_gd_error)
|
||||
|
||||
Link.fix(self.ln_valid, self.tgt_dir)
|
||||
self.assertEqual(err.exception.code, self.ln_gd_error)
|
||||
|
||||
print("Test for non-link link")
|
||||
with self.assertRaises(SystemExit) as err:
|
||||
link_fixer(self.tgt_file, self.tgt_dir)
|
||||
self.assertEqual(err.exception.code, self.ln_ns_error)
|
||||
|
||||
print("Test for inexistent ")
|
||||
Link.fix(self.tgt_file, self.tgt_dir)
|
||||
self.assertEqual(err.exception.code, self.ln_ns_error)
|
||||
|
||||
print("Test for invalid target")
|
||||
with self.assertRaises(SystemExit) as err:
|
||||
link
|
||||
Link.fix(self.ln_valid, self.tgt_invalid)
|
||||
self.assertEqual(err.exception.code, self.tgt_invalid_error)
|
||||
|
||||
print("Test for unfound target")
|
||||
with self.assertRaises(SystemExit) as err:
|
||||
Link.fix(self.ln_no_target, self.tgt_dir)
|
||||
self.assertEqual(erro.exception.code, self.ln_no_target_error)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
runner = unittest.TextTestRunner(verbosity=2)
|
||||
unittest.main(verbosity=2)
|
||||
Reference in New Issue
Block a user