-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make fixtures files full-fledged members of manifest and enable partial parsing #9225
Conversation
manifest.unit_tests
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## unit_testing_feature_branch #9225 +/- ##
===============================================================
+ Coverage 86.89% 86.90% +0.01%
===============================================================
Files 180 181 +1
Lines 27127 27236 +109
===============================================================
+ Hits 23572 23670 +98
- Misses 3555 3566 +11
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
@@ -727,21 +727,21 @@ def search(self, included_nodes: Set[UniqueId], selector: str) -> Iterator[Uniqu | |||
|
|||
manifest: WritableManifest = self.previous_state.manifest | |||
|
|||
for node, real_node in self.all_nodes(included_nodes): | |||
for unique_id, node in self.all_nodes(included_nodes): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thank you for renaming this here -- this has been bugging me forever!
This TODO in test_statecan also be cleaned up as part of this work! It should test the appropriate tests are selected when a file fixture is updated. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking great! No blocking concerns :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, just one small suggestion.
core/dbt/parser/unit_tests.py
Outdated
@@ -321,6 +316,58 @@ def _build_fqn(self, package_name, original_file_path, model_name, test_name): | |||
fqn.append(test_name) | |||
return fqn | |||
|
|||
def _get_fixture(self, fixture_name: str, project_name: str): | |||
fixture_unique_id = f"fixture.{project_name}.{fixture_name}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixture_unique_id = f"fixture.{project_name}.{fixture_name}" | |
fixture_unique_id = f"{NodeType.Fixture}.{project_name}.{fixture_name}" |
* Initial implementation of unit testing (from pr #2911) Co-authored-by: Michelle Ark <[email protected]> * 8295 unit testing artifacts (#8477) * unit test config: tags & meta (#8565) * Add additional functional test for unit testing selection, artifacts, etc (#8639) * Enable inline csv format in unit testing (#8743) * Support unit testing incremental models (#8891) * update unit test key: unit -> unit-tests (#8988) * convert to use unit test name at top level key (#8966) * csv file fixtures (#9044) * Unit test support for `state:modified` and `--defer` (#9032) Co-authored-by: Michelle Ark <[email protected]> * Allow use of sources as unit testing inputs (#9059) * Use daff for diff formatting in unit testing (#8984) * Fix #8652: Use seed file from disk for unit testing if rows not specified in YAML config (#9064) Co-authored-by: Michelle Ark <[email protected]> Fix #8652: Use seed value if rows not specified * Move unit testing to test and build commands (#9108) * Enable unit testing in non-root packages (#9184) * convert test to data_test (#9201) * Make fixtures files full-fledged members of manifest and enable partial parsing (#9225) * In build command run unit tests before models (#9273) --------- Co-authored-by: Michelle Ark <[email protected]> Co-authored-by: Michelle Ark <[email protected]> Co-authored-by: Emily Rockman <[email protected]> Co-authored-by: Jeremy Cohen <[email protected]> Co-authored-by: Kshitij Aranke <[email protected]>
resolves #9067
Problem
Because fixture files were not full-fledged SourceFiles and didn't have a representation in the manifest, we couldn't do partial parsing for fixture file changes.
Solution
Create a new source file class, FixtureSourceFile, and a lightweight UnitTestFixture node-like object in the manifest fixtures dictionary. Store the unique_ids of the fixtures and the related unit_tests in the source_file and process them in partial parsing.
Checklist