diff --git a/core/dbt/task/show.py b/core/dbt/task/show.py index 94677bd85db..439246340b8 100644 --- a/core/dbt/task/show.py +++ b/core/dbt/task/show.py @@ -31,7 +31,9 @@ def execute(self, compiled_node, manifest): context_override=model_context, kwargs={"limit": limit}, ) - adapter_response, execute_result = self.adapter.execute(compiled_node.compiled_code, fetch=True) + adapter_response, execute_result = self.adapter.execute( + compiled_node.compiled_code, fetch=True + ) end_time = time.time() diff --git a/tests/adapter/dbt/tests/adapter/dbt_show/test_dbt_show.py b/tests/adapter/dbt/tests/adapter/dbt_show/test_dbt_show.py new file mode 100644 index 00000000000..14d96b90320 --- /dev/null +++ b/tests/adapter/dbt/tests/adapter/dbt_show/test_dbt_show.py @@ -0,0 +1,44 @@ +import pytest +from dbt.tests.util import run_dbt_and_capture, run_dbt + +from tests.functional.show.test_show import ShowBase +from tests.functional.show.fixtures import ( + models__second_ephemeral_model +) + + +# -- Below we define base classes for tests you import the one based on if your adapter uses dbt clone or not -- +class BaseShowLimit(ShowBase): + @pytest.mark.parametrize( + "args,expected", + [ + ([], 5), # default limit + (["--limit", 3], 3), # fetch 3 rows + (["--limit", -1], 7), # fetch all rows + ], + ) + def test_limit(self, project, args, expected): + run_dbt(["build"]) + dbt_args = ["show", "--inline", models__second_ephemeral_model, *args] + results = run_dbt(dbt_args) + assert len(results.results[0].agate_table) == expected + # ensure limit was injected in compiled_code when limit specified in command args + limit = results.args.get("limit") + if limit > 0: + assert f"limit {limit}" in results.results[0].node.compiled_code + + +class BaseShowSqlHeader(ShowBase): + def test_sql_header(self, project): + run_dbt(["build", "--vars", "timezone: Asia/Kolkata"]) + (_, log_output) = run_dbt_and_capture( + ["show", "--select", "sql_header", "--vars", "timezone: Asia/Kolkata"] + ) + + +class TestPostgresShowSqlHeader(BaseShowSqlHeader): + pass + + +class TestPostgresShowLimit(BaseShowLimit): + pass diff --git a/tests/functional/show/test_show.py b/tests/functional/show/test_show.py index 85532d81cf8..8be3befa056 100644 --- a/tests/functional/show/test_show.py +++ b/tests/functional/show/test_show.py @@ -143,39 +143,12 @@ def test_second_ephemeral_model(self, project): assert "col_hundo" in log_output -class TestShowLimit(ShowBase): - @pytest.mark.parametrize( - "args,expected", - [ - ([], 5), # default limit - (["--limit", 3], 3), # fetch 3 rows - (["--limit", -1], 7), # fetch all rows - ], - ) - def test_limit(self, project, args, expected): - run_dbt(["build"]) - dbt_args = ["show", "--inline", models__second_ephemeral_model, *args] - results = run_dbt(dbt_args) - assert len(results.results[0].agate_table) == expected - # ensure limit was injected in compiled_code when limit specified in command args - if results.args.get("limit") > 0: - assert "limit" in results.results[0].node.compiled_code - - class TestShowSeed(ShowBase): def test_seed(self, project): (_, log_output) = run_dbt_and_capture(["show", "--select", "sample_seed"]) assert "Previewing node 'sample_seed'" in log_output -class TestShowSqlHeader(ShowBase): - def test_sql_header(self, project): - run_dbt(["build", "--vars", "timezone: Asia/Kolkata"]) - (_, log_output) = run_dbt_and_capture( - ["show", "--select", "sql_header", "--vars", "timezone: Asia/Kolkata"] - ) - - class TestShowModelVersions: @pytest.fixture(scope="class") def models(self):