From c663ab7d4493be0ad2e738519f4135114f0f2a7a Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Tue, 31 Aug 2021 21:59:06 +0530 Subject: [PATCH] test: improve test failure message --- frappe/tests/test_commands.py | 40 ++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/frappe/tests/test_commands.py b/frappe/tests/test_commands.py index 1797698a11..564ddafe54 100644 --- a/frappe/tests/test_commands.py +++ b/frappe/tests/test_commands.py @@ -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