test: improve test failure message

This commit is contained in:
Ankush Menat 2021-08-31 21:59:06 +05:30
parent 765a255a00
commit c663ab7d44
No known key found for this signature in database
GPG key ID: CB36108D7E7ECE21

View file

@ -63,6 +63,28 @@ def clean(value):
return value
def missing_in_backup(doctypes, file):
"""Checks if the list of doctypes exist in the database.sql.gz file supplied
Args:
doctypes (list): List of DocTypes to be checked
file (str): Path of the database file
Returns:
doctypes(list): doctypes that are missing in backup
"""
predicate = (
'COPY public."tab{}"'
if frappe.conf.db_type == "postgres"
else "CREATE TABLE `tab{}`"
)
with gzip.open(file, "rb") as f:
content = f.read().decode("utf8").lower()
return [doctype for doctype in doctypes
if predicate.format(doctype).lower() not in content]
def exists_in_backup(doctypes, file):
"""Checks if the list of doctypes exist in the database.sql.gz file supplied
@ -73,14 +95,8 @@ def exists_in_backup(doctypes, file):
Returns:
bool: True if all tables exist
"""
predicate = (
'COPY public."tab{}"'
if frappe.conf.db_type == "postgres"
else "CREATE TABLE `tab{}`"
)
with gzip.open(file, "rb") as f:
content = f.read().decode("utf8")
return all(predicate.format(doctype).lower() in content.lower() for doctype in doctypes)
missing_doctypes = missing_in_backup(doctypes, file)
return len(missing_doctypes) == 0
class BaseTestCommands(unittest.TestCase):
@ -222,7 +238,7 @@ class TestCommands(BaseTestCommands):
self.execute("bench --site {site} backup --verbose")
self.assertEqual(self.returncode, 0)
database = fetch_latest_backups(partial=True)["database"]
self.assertTrue(exists_in_backup(backup["includes"]["includes"], database))
self.assertEqual([], missing_in_backup(backup["includes"]["includes"], database))
# test 8: take a backup with frappe.conf.backup.excludes
self.execute(
@ -233,7 +249,7 @@ class TestCommands(BaseTestCommands):
self.assertEqual(self.returncode, 0)
database = fetch_latest_backups(partial=True)["database"]
self.assertFalse(exists_in_backup(backup["excludes"]["excludes"], database))
self.assertTrue(exists_in_backup(backup["includes"]["includes"], database))
self.assertEqual([], missing_in_backup(backup["includes"]["includes"], database))
# test 9: take a backup with --include (with frappe.conf.excludes still set)
self.execute(
@ -242,7 +258,7 @@ class TestCommands(BaseTestCommands):
)
self.assertEqual(self.returncode, 0)
database = fetch_latest_backups(partial=True)["database"]
self.assertTrue(exists_in_backup(backup["includes"]["includes"], database))
self.assertEqual([], missing_in_backup(backup["includes"]["includes"], database))
# test 10: take a backup with --exclude
self.execute(
@ -257,7 +273,7 @@ class TestCommands(BaseTestCommands):
self.execute("bench --site {site} backup --ignore-backup-conf")
self.assertEqual(self.returncode, 0)
database = fetch_latest_backups()["database"]
self.assertTrue(exists_in_backup(backup["excludes"]["excludes"], database))
self.assertEqual([], missing_in_backup(backup["excludes"]["excludes"], database))
def test_restore(self):
# step 0: create a site to run the test on