)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"02f260cf127163bc4c7d9056a9578bbdee3bdf25","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"76980de8_f4924a45","updated":"2026-01-30 14:26:52.000000000","message":"I like this improvement. My only real issue is with the now apparently redundant/repetitive following paragraph.","commit_id":"c35433b7bafdb6861fed9a4c6a2ac478f7ec6019"}],"CONTRIBUTING.rst":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"02f260cf127163bc4c7d9056a9578bbdee3bdf25","unresolved":true,"context_lines":[{"line_number":133,"context_line":"Notes on Testing"},{"line_number":134,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"Swift has several test suites that are run on every proposed change:"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"* ``test/unit``"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"13a5156c_c2e5acb3","line":136,"range":{"start_line":136,"start_character":43,"end_line":136,"end_character":45},"updated":"2026-01-30 14:26:52.000000000","message":"\"by the OpenDev CI infrastructure\"","commit_id":"c35433b7bafdb6861fed9a4c6a2ac478f7ec6019"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"02f260cf127163bc4c7d9056a9578bbdee3bdf25","unresolved":true,"context_lines":[{"line_number":144,"context_line":"* ``test/functional``"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"  These are black-box tests exercising the public Swift API through the"},{"line_number":147,"context_line":"  proxy-server. These should be able to pass against any Swift cluster."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"* ``test/probe``"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5af18a58_9170b4a9","line":147,"updated":"2026-01-30 14:26:52.000000000","message":"nit: (although some tests may skip depending on the cluster\u0027s configuration).","commit_id":"c35433b7bafdb6861fed9a4c6a2ac478f7ec6019"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"02f260cf127163bc4c7d9056a9578bbdee3bdf25","unresolved":true,"context_lines":[{"line_number":163,"context_line":"  see their README.rst."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Running the unit and functional tests above against Swift in your development"},{"line_number":166,"context_line":"environment (ie your SAIO) will catch most issues. Any patch you propose is"},{"line_number":167,"context_line":"expected to be both tested and documented and all tests should pass. All"},{"line_number":168,"context_line":"tests *must* pass for a patch to merge."},{"line_number":169,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"aa22619f_5202e470","line":166,"range":{"start_line":166,"start_character":13,"end_line":166,"end_character":15},"updated":"2026-01-30 14:26:52.000000000","message":"nit: (existing) s/ie/i.e./","commit_id":"c35433b7bafdb6861fed9a4c6a2ac478f7ec6019"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"02f260cf127163bc4c7d9056a9578bbdee3bdf25","unresolved":true,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":".. code-block:: console"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    cd test/unit/common/middleware/ \u0026\u0026 pytest test_healthcheck.py"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"To check which parts of your code are being exercised by a test, you can"},{"line_number":178,"context_line":"run tox and then point your browser to swift/cover/index.html:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a754c5b_f19e9d4c","line":175,"updated":"2026-01-30 14:26:52.000000000","message":"(off-topic) this recommendation has the unfortunate consequence of leaving you in a sub-dir. I\u0027d go for:\n\n``pytest test/unit/common/middleware/test_healthcheck.py``","commit_id":"c35433b7bafdb6861fed9a4c6a2ac478f7ec6019"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"02f260cf127163bc4c7d9056a9578bbdee3bdf25","unresolved":true,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    tox -e py3 -- test.unit.common.middleware.test_healthcheck:TestHealthCheck.test_healthcheck"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"Swift\u0027s unit tests are designed to test small parts of the code in"},{"line_number":185,"context_line":"isolation. The functional tests validate that the entire system is"},{"line_number":186,"context_line":"working from an external perspective (they are \"black-box\" tests). You"},{"line_number":187,"context_line":"can even run functional tests against public Swift endpoints. The"},{"line_number":188,"context_line":"probetests are designed to test much of Swift\u0027s internal processes. For"},{"line_number":189,"context_line":"example, a test may write data, intentionally corrupt it, and then"},{"line_number":190,"context_line":"ensure that the correct processes detect and repair it."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"When your patch is submitted for code review, it will automatically be"},{"line_number":193,"context_line":"tested on the OpenStack CI infrastructure. In addition to many of the"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1801e0ec_42072ba0","line":190,"range":{"start_line":184,"start_character":0,"end_line":190,"end_character":55},"updated":"2026-01-30 14:26:52.000000000","message":"this now feels a little repetitive","commit_id":"c35433b7bafdb6861fed9a4c6a2ac478f7ec6019"}]}
