fix(release): attach new-api SQL to docker exec

This commit is contained in:
lili 2026-07-23 00:06:42 -07:00
parent b99f67f046
commit beff6a7e27
2 changed files with 12 additions and 1 deletions

View File

@ -104,7 +104,8 @@ class Postgres:
def _run(self, sql: str, operation: str = "query") -> str:
"""执行一条 SQL返回 tuples-only、unaligned、以 | 分隔的原始 stdout。失败即抛。"""
cmd = [
"docker", "exec",
# SQL 只经 stdin 传输docker exec 必须带 -i否则会静默执行空输入并返回成功。
"docker", "exec", "-i",
"-e", f"PGPASSWORD={self._password}",
PG_CONTAINER,
"psql", "-U", PG_USER, "-d", PG_DB,

View File

@ -74,6 +74,16 @@ class ProvisionRequestTest(unittest.TestCase):
self.assertEqual(query.call_count, 3)
self.assertEqual(sleep.call_count, 2)
def test_postgres_attaches_sql_stdin_to_docker_exec(self) -> None:
completed = mock.Mock(returncode=0, stdout="67\n", stderr="")
with mock.patch.object(MODULE.subprocess, "run", return_value=completed) as run:
uid = MODULE.Postgres("secret").query_user_id("neice_051")
self.assertEqual(uid, 67)
command = run.call_args.args[0]
self.assertIn("-i", command)
self.assertEqual(run.call_args.kwargs["input"],
"SELECT id FROM users WHERE username='neice_051';")
if __name__ == "__main__":
unittest.main()