-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Backport 1.4.latest] Set relation_name in tests at compile time (#6978)
* Set relation_name in tests at compile time (#6949) (cherry picked from commit 480e0e5) * Tweak artifact test --------- Co-authored-by: Gerda Shank <[email protected]>
- Loading branch information
1 parent
03f6655
commit 16cb498
Showing
4 changed files
with
67 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
kind: Fixes | ||
body: Set relation_name in test nodes at compile time | ||
time: 2023-02-10T19:41:57.386766-05:00 | ||
custom: | ||
Author: gshank | ||
Issue: "6930" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
import pytest | ||
from dbt.tests.util import run_dbt, get_manifest, get_artifact | ||
|
||
# This is a place to put specific tests for contents of artifacts that we | ||
# don't want to bother putting in the big artifact output test, which is | ||
# hard to update. | ||
|
||
my_model_sql = "select 1 as fun" | ||
|
||
schema_yml = """ | ||
version: 2 | ||
models: | ||
- name: my_model | ||
columns: | ||
- name: fun | ||
tests: | ||
- not_null | ||
""" | ||
|
||
|
||
class TestRelationNameInTests: | ||
@pytest.fixture(scope="class") | ||
def models(self): | ||
return { | ||
"my_model.sql": my_model_sql, | ||
"schema.yml": schema_yml, | ||
} | ||
|
||
def test_relation_name_in_tests(self, project): | ||
results = run_dbt(["run"]) | ||
assert len(results) == 1 | ||
manifest = get_manifest(project.project_root) | ||
test_id = "test.test.not_null_my_model_fun.bf3b032a01" | ||
assert test_id in manifest.nodes | ||
assert manifest.nodes[test_id].relation_name is None | ||
|
||
results = run_dbt(["test", "--store-failures"]) | ||
assert len(results) == 1 | ||
# The relation_name for tests with previously generated manifest and | ||
# store_failures passed in on the command line, will be in the manifest.json | ||
# but not in the parsed manifest. | ||
manifest = get_manifest(project.project_root) | ||
assert manifest.nodes[test_id].relation_name is None | ||
manifest_json = get_artifact(project.project_root, "target", "manifest.json") | ||
assert test_id in manifest_json["nodes"] | ||
relation_name = manifest_json["nodes"][test_id]["relation_name"] | ||
assert relation_name | ||
assert '"not_null_my_model_fun"' in relation_name |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters