Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vhnX6-006MYn-2s for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Jan 2026 11:34:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vhnX4-00CzOv-2W for pgsql-hackers@arkaria.postgresql.org; Mon, 19 Jan 2026 11:34:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vhnX4-00CzOm-1S for pgsql-hackers@lists.postgresql.org; Mon, 19 Jan 2026 11:34:54 +0000 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vhnX2-001KNx-06 for pgsql-hackers@postgresql.org; Mon, 19 Jan 2026 11:34:54 +0000 Received: by mail-ot1-x32e.google.com with SMTP id 46e09a7af769-7cfd57f0bf7so2599154a34.3 for ; Mon, 19 Jan 2026 03:34:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1768822488; x=1769427288; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=3/iQ/ervnPBTQ05JFeAazjmZMkaKJEKCFiQqrjlaaGM=; b=RrpbkIR9uhJiGf3OIyOW77N59+VuITbVMaUdPg6fr0hHTJob4520BCYBZu3RyxqTZT PMgYazZF7kc1/pFX0o36nkZjrQ0d52jBNylVFwE81vYqUdQwzqt3aGT8l4LfP+4BNezZ 6bKbOIgMMleSKUwoPyF+SKQQZZoRDrCJVE2F5V1LumASe2p9naeInPtfkHbhDhFIMfSq Nzq7RTKuD/TcMUofvEZLBS3g3pkGv54OMuAnrl6f5ec7z58XGmBQMmerIyowpnlv6YWp T543oM9B+EaPv8Hy6odItMlon6eLPrNVQvI/9+UcuGhzMiJqgb44Wxo/LVp8zpO93+ND Ul+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768822488; x=1769427288; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=3/iQ/ervnPBTQ05JFeAazjmZMkaKJEKCFiQqrjlaaGM=; b=BsuWWxNVIXljS1hevW4m5hD9C+K8LV1ONEx6ZBzaV9uMF5OHeitu1pnRProKVdc9ie oYqfZOll/oa6Y0CsNKdBnrY3XH2rOgKzP2OCS+8M/8kPcLfLEqt8+AR5p7YFtfWE8OKA z62T+8KIkUR5xCwC78cgm3VUQOGlFR2VEdOiSVB0YtswtVAuoEIoQ4HksKg1j9FKDjLR R7kKNktTEqHsHR7HTQ7EmIx+LKklpZ/mmDHh+iORjjKQb1MJG54eWsp0WLFFfUVgk8g0 CYJt6ravTjz/lBF80PlqlBjZ4BN6tMesCOd/qIK8xy3PRsNr3/PH27b0oWTT1P+vf6+s hKJw== X-Gm-Message-State: AOJu0YzI4Ur1NI+WH9NKCCealYFc6VlxxJV4gFVPkpew4MgSnjdcTf5f Ql85b1nB0kQoG+68j+FCwFmGPNvekdXRSZNgiLVFGvWQxYD39dEHz47Z2MoloeF964ss2IQfqC5 rwXQnS1LLqAuF7uL5p/D8pEq3nBgVy8+AjvGTK/ek2+tromGthboK6OFO11FR X-Gm-Gg: AY/fxX4/zgZu1n5Kdb7PjG5JU3ixOHca+61YCFmyb+efmJ0zbZLX8e78h1i9QiNaIQD iCbcMxkn+55GabbfsPqHw5lAFx7K5yxVK+xedqasFs6aWJrhVa/K5fsPPWbw3iqZuIpAYcrymWB +ZTTJ1nkahtAlBsDnYwn5ry/AFXZHC+S5uNbNuO4QH1j8d7lLvUIIw8mmbetDGbnfgtcFaeQC9P Ctg+xMglVWoqBMn72GCvSIY1jM+yoakf4ttO8sdJ8UhhAA8V8DZg3JX9JrkhIyJ5ASLHsrE X-Received: by 2002:a05:6830:f88:b0:7cf:da97:57d5 with SMTP id 46e09a7af769-7cfdeebbdf4mr6258073a34.34.1768822488265; Mon, 19 Jan 2026 03:34:48 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aleksander Alekseev Date: Mon, 19 Jan 2026 14:34:37 +0300 X-Gm-Features: AZwV_QgFC-hwiXdjz-2w9Q4WPEwo6hqHsZWzBFciYa1BkXWdA244GsHm13h2PyM Message-ID: Subject: Re: RFC: adding pytest as a supported test framework To: PostgreSQL Hackers Cc: Jelte Fennema-Nio , Andres Freund , Jacob Champion , Robert Haas , Daniel Gustafsson , Tom Lane , Peter Eisentraut , Nazir Bilal Yavuz Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi, > v10 attached to resolve merge conflicts. I tested and reviewed patches 0001 .. 0003 on Linux x64. All in all the code is in a pretty good shape except for several TODOs: ``` # TODO: proper quoting v = v.replace("\\", "\\\\") v = v.replace("'", "\\'") v = "'{}'".format(v) ``` and: ``` # TODO: rather than using callback(), consider explicitly signaling # the fn() implementation to stop early if we get an exception. # Otherwise we'll hang until the end of the timeout. self._thread = threading.Thread(target=_bg) self.callback(self._join) ``` Are there any plans to rewrite this code? If not, maybe there should be no TODOs in the comments? Also leaving this: ``` # XXX interacts poorly with testwrap's boilerplate diagnostics # self.print("TAP version 13") ``` ... doesn't seem to be particularly useful. I see XXX but what are actionable items? If there are none, perhaps there shouldn't be XXX here. I haven't looked at 0004 and 0005. -- Best regards, Aleksander Alekseev