ClickHouse/tests/queries/conftest.py
Ivan be831d09f7
Update Pytest check (#18972)
* [WIP]

* Update skip-list

* Update ci_config.json

* Do not sync inserts for test

* Fix more tests

* Fix another test

* Enable one more test

* More fixed tests

* More test fixes

* Do not absolutize server path for now

* More test fixes

* Unset CLICKHOUSE_LOG_COMMENT where necessary

* Remove debugging set -e

* Fix more tests

* Fix test reference

* Fix style check
2021-02-10 21:09:13 +03:00

63 lines
1.8 KiB
Python

import pytest
import os
import sys
import tempfile
from .server import ServerThread
def pytest_addoption(parser):
parser.addoption(
"--builddir", action="store", default=None, help="Path to build directory to use binaries from",
)
@pytest.fixture(scope='module')
def cmdopts(request):
return {
'builddir': request.config.getoption("--builddir"),
}
@pytest.fixture(scope='module')
def bin_prefix(cmdopts):
prefix = 'clickhouse'
if cmdopts['builddir'] is not None:
prefix = os.path.join(cmdopts['builddir'], 'programs', prefix)
# FIXME: does this hangs the server start for some reason?
# if not os.path.isabs(prefix):
# prefix = os.path.abspath(prefix)
return prefix
# TODO: also support stateful queries.
QUERIES_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), '0_stateless')
@pytest.fixture(scope='module', params=[f for f in os.listdir(QUERIES_PATH) if f.endswith('.sql')])
def sql_query(request):
return os.path.join(QUERIES_PATH, os.path.splitext(request.param)[0])
@pytest.fixture(scope='module', params=[f for f in os.listdir(QUERIES_PATH) if f.endswith('.sh')])
def shell_query(request):
return os.path.join(QUERIES_PATH, os.path.splitext(request.param)[0])
@pytest.fixture
def standalone_server(bin_prefix, tmp_path):
server = ServerThread(bin_prefix, str(tmp_path))
server.start()
wait_result = server.wait()
if wait_result is not None:
with open(os.path.join(server.log_dir, 'server', 'stdout.txt'), 'r') as f:
print(f.read(), file=sys.stderr)
with open(os.path.join(server.log_dir, 'server', 'stderr.txt'), 'r') as f:
print(f.read(), file=sys.stderr)
pytest.fail('Server died unexpectedly with code {code}'.format(code=server._proc.returncode), pytrace=False)
yield server
server.stop()