)]}'
{"osc_placement/tests/functional/base.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"65b7ae70590f946b98a1923d78e258312633787a","unresolved":true,"context_lines":[{"line_number":66,"context_line":"        self.cmd \u003d kwargs[\u0027cmd\u0027]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"class PlacementServerLogFixture(fixtures.Fixture):"},{"line_number":70,"context_line":"    \"\"\"Capture logs from the placement server to prevent stderr pollution."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    Since PlacementFixture runs the placement API server in-process,"}],"source_content_type":"text/x-python","patch_set":2,"id":"58a17de5_07efe263","line":69,"updated":"2026-08-05 11:02:49.000000000","message":"Is there any reason we can\u0027t just use `fixtures.FakeLogger`? I\u0027m pretty sure:\n\n```\nfake_logger \u003d fixtures.FakeLogger(\n    \u0027placement\u0027, level\u003dlogging.DEBUG,\n)\nself.useFixture(fake_logger)\n```\n\nWould do the trick. You can access logs with `.output` then?","commit_id":"e831127ae5a9a6316db1fe4879768ba2966fdc66"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"65b7ae70590f946b98a1923d78e258312633787a","unresolved":true,"context_lines":[{"line_number":89,"context_line":"        # Get the placement logger specifically and add our handler"},{"line_number":90,"context_line":"        self.placement_logger \u003d logging.getLogger(\u0027placement\u0027)"},{"line_number":91,"context_line":"        self.placement_logger.addHandler(self.handler)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # Store the original level and handlers"},{"line_number":94,"context_line":"        self.original_level \u003d self.placement_logger.level"},{"line_number":95,"context_line":"        self.original_handlers \u003d self.placement_logger.handlers[:]"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Set the placement logger to propagate\u003dFalse to prevent it from"},{"line_number":98,"context_line":"        # sending logs to parent loggers (including root logger)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b0725bca_18d79182","line":95,"range":{"start_line":92,"start_character":1,"end_line":95,"end_character":66},"updated":"2026-08-05 11:02:49.000000000","message":"I suspect you meant to restore these but forgot? If not, why keep them?","commit_id":"e831127ae5a9a6316db1fe4879768ba2966fdc66"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"65b7ae70590f946b98a1923d78e258312633787a","unresolved":true,"context_lines":[{"line_number":107,"context_line":"        self.handler.close()"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        # Restore original propagate setting"},{"line_number":110,"context_line":"        self.placement_logger.propagate \u003d True"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"class BaseTestCase(base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"643c3072_6fc185a5","line":110,"updated":"2026-08-05 11:02:49.000000000","message":"Are you sure it wasn\u0027t `False` before?","commit_id":"e831127ae5a9a6316db1fe4879768ba2966fdc66"}],"tox.ini":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"65b7ae70590f946b98a1923d78e258312633787a","unresolved":true,"context_lines":[{"line_number":9,"context_line":"passenv \u003d"},{"line_number":10,"context_line":"  OS_DEBUG"},{"line_number":11,"context_line":"setenv \u003d"},{"line_number":12,"context_line":"  PYTHONDONTWRITEBYTECODE\u003d1"},{"line_number":13,"context_line":"  VIRTUAL_ENV\u003d{envdir}"},{"line_number":14,"context_line":"  LANGUAGE\u003den_US"},{"line_number":15,"context_line":"  LC_ALL\u003den_US.utf-8"},{"line_number":16,"context_line":"  OS_TEST_TIMEOUT\u003d160"},{"line_number":17,"context_line":"deps \u003d"},{"line_number":18,"context_line":"  -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}"},{"line_number":19,"context_line":"  -r{toxinidir}/test-requirements.txt"}],"source_content_type":"text/x-properties","patch_set":2,"id":"edcfebd5_1562e0e5","line":16,"range":{"start_line":12,"start_character":27,"end_line":16,"end_character":21},"updated":"2026-08-05 11:02:49.000000000","message":"You don\u0027t need any of these, I suspect (I know you definitely don\u0027t need `VIRTUAL_ENV` since tox 3.x)","commit_id":"e831127ae5a9a6316db1fe4879768ba2966fdc66"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"65b7ae70590f946b98a1923d78e258312633787a","unresolved":true,"context_lines":[{"line_number":43,"context_line":"deps \u003d"},{"line_number":44,"context_line":"  {[testenv]deps}"},{"line_number":45,"context_line":"  # openstack-placement\u003e\u003d1.0.0"},{"line_number":46,"context_line":"  git+https://opendev.org/openstack/placement#egg\u003dopenstack-placement"},{"line_number":47,"context_line":"commands \u003d stestr --test-path\u003d./osc_placement/tests/functional run {posargs}"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"[testenv:functional-py39]"}],"source_content_type":"text/x-properties","patch_set":2,"id":"5603cf45_b51d748d","line":46,"updated":"2026-08-05 11:02:49.000000000","message":"This isn\u0027t called out in the commit message. Does it belong here?","commit_id":"e831127ae5a9a6316db1fe4879768ba2966fdc66"}]}
