test: improve test failure message
This commit is contained in:
parent
765a255a00
commit
c663ab7d44
1 changed files with 28 additions and 12 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue