diff --git a/README.md b/README.md index b8a7093ac..7951c626f 100644 --- a/README.md +++ b/README.md @@ -103,4 +103,10 @@ The `Publish Atlas website` workflow revalidates and regenerates `site/` before The atlas covers interactive commands, nested subcommands, CLI flags, configuration, environment variables, shortcuts, hooks, permissions, MCP, skills, and agent controls across all six ecosystems. It stays a living reference rather than a claim that fast-moving vendor surfaces can ever be permanently complete. See [the roadmap](docs/ROADMAP.md). +## Acknowledgements + +Thanks to the people who have improved the atlas beyond its data: + +- [@WhiteHades](https://github.com/WhiteHades) — case-sensitive CLI flag ranking, accessible skip links and mobile navigation, route collision checks, HTTPS redirect enforcement, and validation that reports malformed records instead of raising. + Released under the [MIT License](LICENSE). diff --git a/tests/test_check_sources.py b/tests/test_check_sources.py index 6985d12a7..519147831 100644 --- a/tests/test_check_sources.py +++ b/tests/test_check_sources.py @@ -13,9 +13,15 @@ class SourceCheckerTests(unittest.TestCase): def setUp(self): self.responses = {} self.requests = [] - self.enterContext(patch.object(urllib.request, "_opener", None)) + # TestCase.enterContext is 3.11+; start/addCleanup keeps the suite runnable on 3.10. + self.start_patch(patch.object(urllib.request, "_opener", None)) for handler, method in ((urllib.request.HTTPSHandler, "https_open"), (urllib.request.HTTPHandler, "http_open")): - self.enterContext(patch.object(handler, method, side_effect=self.respond)) + self.start_patch(patch.object(handler, method, side_effect=self.respond)) + + def start_patch(self, patcher): + value = patcher.start() + self.addCleanup(patcher.stop) + return value def respond(self, request): self.requests.append(request.full_url)