From 6ad48a1e9fe81762a5a1adb2306f10c6924cacf5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= <sybren@stuvel.eu>
Date: Thu, 10 Jan 2019 16:18:34 +0100
Subject: [PATCH] Disconnect from SQLite DB when tearing down tests

This allows the temp directory to be cleaned up on Windows.
---
 flamenco_worker/upstream_update_queue.py | 4 ++++
 tests/test_upstream_update_queue.py      | 5 +++++
 2 files changed, 9 insertions(+)

diff --git a/flamenco_worker/upstream_update_queue.py b/flamenco_worker/upstream_update_queue.py
index c266da3f..26b35ef5 100644
--- a/flamenco_worker/upstream_update_queue.py
+++ b/flamenco_worker/upstream_update_queue.py
@@ -46,6 +46,8 @@ class TaskUpdateQueue:
         self._db.isolation_level = ''
 
     def _disconnect_db(self):
+        if self._db is None:
+            return
         self._log.info('Disconnecting from database %s', self.db_fname)
         self._db.close()
         self._db = None
@@ -91,6 +93,8 @@ class TaskUpdateQueue:
 
             self._log.debug('Inspecting queued task updates.')
             await self.flush_and_catch(loop=loop)
+
+        self._disconnect_db()
         self._log.warning('Stopping work loop')
 
     def _queue(self) -> typing.Iterable[typing.Tuple[int, str, object]]:
diff --git a/tests/test_upstream_update_queue.py b/tests/test_upstream_update_queue.py
index 6a7c894e..8bea08a5 100644
--- a/tests/test_upstream_update_queue.py
+++ b/tests/test_upstream_update_queue.py
@@ -1,6 +1,7 @@
 import asyncio
 import copy
 import datetime
+import logging
 import tempfile
 from unittest.mock import Mock
 
@@ -16,6 +17,8 @@ class TaskUpdateQueueTest(AbstractWorkerTest):
         from flamenco_worker.cli import construct_asyncio_loop
         from tests.mock_responses import CoroMock
 
+        logging.getLogger('flamenco_worker.upstream_update_queue').setLevel(logging.DEBUG)
+
         self.asyncio_loop = construct_asyncio_loop()
         self.shutdown_future = self.asyncio_loop.create_future()
 
@@ -31,6 +34,8 @@ class TaskUpdateQueueTest(AbstractWorkerTest):
         )
 
     def tearDown(self):
+        self.tuqueue._disconnect_db()
+        super().tearDown()
         self.tmpdir.cleanup()
 
     def test_queue_push(self):
-- 
GitLab