oficina / docs Public

Clone
git clone https://amadan.net/oficina/docs

Plain git — no account needed to clone.

Download

Download this file

1#!/usr/bin/env python3
2"""Verify loading/populated/empty/failure/retry against delayed HTTP responses."""
3import http.server
4import json
5import os
6from pathlib import Path
7import subprocess
8import threading
9import time
10
11APP = "Docs"
12root = Path(__file__).resolve().parents[2]
13class Handler(http.server.BaseHTTPRequestHandler):
14 count = 0
15 def do_GET(self):
16 type(self).count += 1
17 number = type(self).count
18 time.sleep(0.2)
19 item = ({"sqid": "fixture", "title": "Fixture"} if APP == "Docs" else
20 {"ID": 1, "Title": "Fixture", "TabID": 1, "TabName": "Sheet1"})
21 items = [] if number == 2 else [item]
22 payload = {"documents": items, "can_create": True} if APP == "Docs" else {"Sheets": items}
23 data = json.dumps(payload).encode()
24 self.send_response(503 if number == 3 else 200)
25 self.send_header("Content-Length", str(len(data)))
26 self.end_headers()
27 self.wfile.write(data)
28 def log_message(self, *_):
29 pass
30with http.server.ThreadingHTTPServer(("127.0.0.1", 0), Handler) as server:
31 threading.Thread(target=server.serve_forever, daemon=True).start()
32 result = subprocess.run(["swift", "test", "--package-path", str(root / "native/apple"),
33 "--filter", "HomeLoadingTests"],
34 env=dict(os.environ, HOME_LOADING_TEST_ORIGIN=f"http://127.0.0.1:{server.server_port}"), timeout=180)
35 server.shutdown()
36 raise SystemExit(result.returncode)
37