Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions integration_tests/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import pytest
import yaml
from dbt.version import __version__ as dbt_version
from dbt_project import DbtProject
from dbt_project import PYTEST_XDIST_WORKER, SCHEMA_NAME_SUFFIX, DbtProject
from elementary.clients.dbt.factory import RunnerMethod
from env import Environment
from logger import get_logger
Expand Down Expand Up @@ -90,10 +90,17 @@ def init_tests_env(
):
env = Environment(target, project_dir_copy, runner_method)
if not skip_init:
logger.info("Initializing test environment")
logger.info(
"Initializing test environment (worker=%s, schema_suffix='%s')",
PYTEST_XDIST_WORKER or "main",
SCHEMA_NAME_SUFFIX,
)
env.clear()
env.init()
logger.info("Initialization complete")
logger.info(
"Initialization complete (worker=%s)",
PYTEST_XDIST_WORKER or "main",
)

yield

Expand Down
16 changes: 15 additions & 1 deletion integration_tests/tests/data_seeder.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,21 @@ def seed(self, data: List[dict], table_name: str) -> Generator[None, None, None]
writer.writeheader()
writer.writerows(data)
seed_file.flush()
self.dbt_runner.seed(select=str(relative_seed_path), full_refresh=True)
success = self.dbt_runner.seed(
select=str(relative_seed_path), full_refresh=True
)
if not success:
logger.error(
"dbt seed failed for '%s'. This usually means the "
"target schema does not exist or could not be created. "
"Downstream queries will fail with "
"TABLE_OR_VIEW_NOT_FOUND.",
table_name,
)
raise RuntimeError(
f"dbt seed failed for '{table_name}'. Check the dbt "
f"output above for the root cause (e.g. SCHEMA_NOT_FOUND)."
)

yield
finally:
Expand Down
29 changes: 27 additions & 2 deletions integration_tests/tests/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import dbt_project
from elementary.clients.dbt.factory import RunnerMethod
from logger import get_logger

logger = get_logger(__name__)


class Environment:
Expand All @@ -22,5 +25,27 @@ def clear(self):
self.dbt_runner.run_operation("elementary_tests.clear_env")

def init(self):
self.dbt_runner.run(selector="init")
self.dbt_runner.run(select="elementary")
init_success = self.dbt_runner.run(selector="init")
if not init_success:
logger.error(
"Environment init failed: 'dbt run --selector init' returned "
"failure. The target schema may not have been created. "
"Subsequent seeds and queries will likely fail with "
"SCHEMA_NOT_FOUND or TABLE_OR_VIEW_NOT_FOUND."
)
raise RuntimeError(
"Test environment initialization failed during "
"'dbt run --selector init'. Check the dbt output above "
"for the root cause."
)
elementary_success = self.dbt_runner.run(select="elementary")
if not elementary_success:
logger.error(
"Environment init failed: 'dbt run --select elementary' "
"returned failure. Elementary models may not be available."
)
raise RuntimeError(
"Test environment initialization failed during "
"'dbt run --select elementary'. Check the dbt output "
"above for the root cause."
)