diff --git a/Makefile b/Makefile index db89961..05cea8e 100644 --- a/Makefile +++ b/Makefile @@ -129,10 +129,10 @@ upload: build ## Upload the code @twine upload dist/things.py* db-to-things: - @cp tests/main.sqlite* ~/Library/Group\ Containers/JLMPQHK86H.com.culturedcode.ThingsMac/Things\ Database.thingsdatabase/ + @cp tests/main.sqlite* ~/Library/Group\ Containers/JLMPQHK86H.com.culturedcode.ThingsMac/ThingsData-*/Things\ Database.thingsdatabase/ db-from-things: - @cp ~/Library/Group\ Containers/JLMPQHK86H.com.culturedcode.ThingsMac/Things\ Database.thingsdatabase/main.sqlite* tests/ + @cp ~/Library/Group\ Containers/JLMPQHK86H.com.culturedcode.ThingsMac/ThingsData-*/Things\ Database.thingsdatabase/main.sqlite* tests info: pipenv --venv diff --git a/tests/db2022/main.sqlite b/tests/db2022/main.sqlite new file mode 100644 index 0000000..846d35b Binary files /dev/null and b/tests/db2022/main.sqlite differ diff --git a/tests/db2022/main.sqlite-shm b/tests/db2022/main.sqlite-shm new file mode 100644 index 0000000..33d7b42 Binary files /dev/null and b/tests/db2022/main.sqlite-shm differ diff --git a/tests/db2022/main.sqlite-wal b/tests/db2022/main.sqlite-wal new file mode 100644 index 0000000..580b64f Binary files /dev/null and b/tests/db2022/main.sqlite-wal differ diff --git a/tests/main.sqlite b/tests/main.sqlite index 846d35b..587f3ae 100644 Binary files a/tests/main.sqlite and b/tests/main.sqlite differ diff --git a/tests/main.sqlite-shm b/tests/main.sqlite-shm index 33d7b42..fe9ac28 100644 Binary files a/tests/main.sqlite-shm and b/tests/main.sqlite-shm differ diff --git a/tests/main.sqlite-wal b/tests/main.sqlite-wal index 580b64f..e69de29 100644 Binary files a/tests/main.sqlite-wal and b/tests/main.sqlite-wal differ diff --git a/tests/main.sqlite.temporary-shm b/tests/main.sqlite.temporary-shm new file mode 100644 index 0000000..d80de6a Binary files /dev/null and b/tests/main.sqlite.temporary-shm differ diff --git a/tests/test_things.py b/tests/test_things.py index 6065a5f..d62d346 100644 --- a/tests/test_things.py +++ b/tests/test_things.py @@ -13,6 +13,7 @@ TEST_DATABASE_FILEPATH = "tests/main.sqlite" +TEST_DATABASE_FILEPATH_2022 = "tests/db2022/main.sqlite" THINGSDB = things.database.ENVIRONMENT_VARIABLE_WITH_FILEPATH # type: ignore @@ -243,7 +244,12 @@ def test_areas(self): def test_database_version(self): version = things.Database().get_version() - self.assertEqual(18, version) + self.assertEqual(24, version) + + def test_database_version_mismatch(self): + os.environ[THINGSDB] = TEST_DATABASE_FILEPATH_2022 + with self.assertRaises(AssertionError): + things.deadlines() def test_last(self): last_tasks = things.last("0d") diff --git a/things/database.py b/things/database.py index c52a652..8b53770 100755 --- a/things/database.py +++ b/things/database.py @@ -148,6 +148,8 @@ class Database: Print every SQL query performed. Some may contain '?' and ':' characters which correspond to SQLite parameter tokens. See https://www.sqlite.org/lang_expr.html#varparam + + :raises AssertionError: If the database version is too old. """ debug = False @@ -164,6 +166,11 @@ def __init__(self, filepath=None, print_sql=False): if self.print_sql: self.execute_query_count = 0 + # Test for migrated database in Things 3.15.16+ + # -------------------------------- + assert self.get_version() > 21, "Database too new! "\ + "Run 'pip install things.py==0.0.14' to downgrade."; + # Automated migration to new database location in Things 3.12.6/3.13.1 # -------------------------------- try: