diff --git a/testgres/node.py b/testgres/node.py index fff06593..8e64da01 100644 --- a/testgres/node.py +++ b/testgres/node.py @@ -865,8 +865,7 @@ def psql(self, "-X", # no .psqlrc "-A", # unaligned output "-t", # print rows only - "-q", # run quietly - dbname + "-q" # run quietly ] # yapf: disable # set variables before execution @@ -881,6 +880,9 @@ def psql(self, else: raise QueryException('Query or filename must be provided') + # should be the last one + psql_params.append(dbname) + # start psql process process = subprocess.Popen( psql_params, diff --git a/testgres/utils.py b/testgres/utils.py index 47228e60..a33f49b6 100644 --- a/testgres/utils.py +++ b/testgres/utils.py @@ -8,6 +8,7 @@ import port_for import subprocess import sys +import tempfile from contextlib import contextmanager from distutils.version import LooseVersion @@ -59,13 +60,32 @@ def execute_utility(args, logfile=None): """ # run utility - process = subprocess.Popen( - args, # util + params - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - - # get result and decode it - out, _ = process.communicate() + if os.name == 'nt': + # using output to a temporary file in Windows + buf = tempfile.NamedTemporaryFile() + + process = subprocess.Popen( + args, # util + params + stdout=buf, + stderr=subprocess.STDOUT + ) + process.communicate() + + # get result + buf.file.flush() + buf.file.seek(0) + out = buf.file.read() + buf.close() + else: + process = subprocess.Popen( + args, # util + params + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + + # get result + out, _ = process.communicate() + + # decode result out = '' if not out else out.decode('utf-8') # format command