#!/usr/bin/env python3 """Verify loading/populated/empty/failure/retry against delayed HTTP responses.""" import http.server import json import os from pathlib import Path import subprocess import threading import time APP = "Docs" root = Path(__file__).resolve().parents[2] class Handler(http.server.BaseHTTPRequestHandler): count = 0 def do_GET(self): type(self).count += 1 number = type(self).count time.sleep(0.2) item = ({"sqid": "fixture", "title": "Fixture"} if APP == "Docs" else {"ID": 1, "Title": "Fixture", "TabID": 1, "TabName": "Sheet1"}) items = [] if number == 2 else [item] payload = {"documents": items, "can_create": True} if APP == "Docs" else {"Sheets": items} data = json.dumps(payload).encode() self.send_response(503 if number == 3 else 200) self.send_header("Content-Length", str(len(data))) self.end_headers() self.wfile.write(data) def log_message(self, *_): pass with http.server.ThreadingHTTPServer(("127.0.0.1", 0), Handler) as server: threading.Thread(target=server.serve_forever, daemon=True).start() result = subprocess.run(["swift", "test", "--package-path", str(root / "native/apple"), "--filter", "HomeLoadingTests"], env=dict(os.environ, HOME_LOADING_TEST_ORIGIN=f"http://127.0.0.1:{server.server_port}"), timeout=180) server.shutdown() raise SystemExit(result.returncode)