From 5c0b22569a363c4d7c1456a114b73da9832cfd0c Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Sat, 8 Nov 2025 12:42:17 +0100 Subject: [PATCH] fix tests --- tests/abstract/test_abstract_blocks.py | 33 ++++++++++++++++++++------ 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/tests/abstract/test_abstract_blocks.py b/tests/abstract/test_abstract_blocks.py index 40ea8f3..3a9ed78 100644 --- a/tests/abstract/test_abstract_blocks.py +++ b/tests/abstract/test_abstract_blocks.py @@ -348,23 +348,42 @@ class TestImagePIL(unittest.TestCase): @classmethod def _start_flask_server(cls): """Start a Flask server for URL testing.""" + import urllib.request + import urllib.error + cls.flask_app = Flask(__name__) cls.flask_port = 5555 # Use a specific port for testing cls.flask_server_running = True - + @cls.flask_app.route('/test.jpg') def serve_test_image(): return send_file(cls.jpg_path, mimetype='image/jpeg') - + + @cls.flask_app.route('/health') + def health_check(): + return 'OK', 200 + def run_flask(): - cls.flask_app.run(host='127.0.0.1', port=cls.flask_port, debug=False, + cls.flask_app.run(host='127.0.0.1', port=cls.flask_port, debug=False, use_reloader=False, threaded=True) - + cls.flask_thread = threading.Thread(target=run_flask, daemon=True) cls.flask_thread.start() - - # Wait for server to start - time.sleep(1) + + # Wait for server to be ready with health check + max_wait = 5 # Maximum 5 seconds + wait_interval = 0.1 # Check every 100ms + elapsed = 0 + + while elapsed < max_wait: + try: + with urllib.request.urlopen(f'http://127.0.0.1:{cls.flask_port}/health', timeout=1) as response: + if response.status == 200: + break + except (urllib.error.URLError, ConnectionRefusedError, OSError): + pass + time.sleep(wait_interval) + elapsed += wait_interval def test_image_url_detection(self): """Test URL detection functionality."""