fix(release): attach new-api SQL to docker exec
This commit is contained in:
parent
b99f67f046
commit
beff6a7e27
@ -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,
|
||||
|
||||
@ -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()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user