@@ -63,8 +63,8 @@ def from_node(cls, test_node: dict[str, Any]) -> "Test":
6363 """Create a test object from a test node in the manifest."""
6464 return cls (
6565 name = test_node ["name" ],
66- type = test_node [ "test_metadata" ][ "name" ] ,
67- kwargs = test_node [ "test_metadata" ] .get ("kwargs" , {}),
66+ type = test_node . get ( "test_metadata" , {}). get ( "name" , "generic" ) ,
67+ kwargs = test_node . get ( "test_metadata" , {}) .get ("kwargs" , {}),
6868 tags = test_node .get ("tags" , []),
6969 _raw_values = test_node ,
7070 )
@@ -141,7 +141,10 @@ def _get_columns(
141141 [
142142 test
143143 for test in test_values
144- if test ["test_metadata" ]["kwargs" ].get ("column_name" ) == name
144+ if test .get ("test_metadata" , {})
145+ .get ("kwargs" , {})
146+ .get ("column_name" )
147+ == name
145148 ],
146149 )
147150 for name , values in node_values .get ("columns" , {}).items ()
@@ -224,7 +227,9 @@ def from_node(
224227 tests = [
225228 Test .from_node (test )
226229 for test in test_values
227- if not test ["test_metadata" ]["kwargs" ].get ("column_name" )
230+ if not test .get ("test_metadata" , {})
231+ .get ("kwargs" , {})
232+ .get ("column_name" )
228233 ],
229234 depends_on = node_values ["depends_on" ],
230235 _raw_values = node_values ,
@@ -359,7 +364,9 @@ def from_node(
359364 tests = [
360365 Test .from_node (test )
361366 for test in test_values
362- if not test ["test_metadata" ]["kwargs" ].get ("column_name" )
367+ if not test .get ("test_metadata" , {})
368+ .get ("kwargs" , {})
369+ .get ("column_name" )
363370 ],
364371 _raw_values = node_values ,
365372 _raw_test_values = test_values ,
@@ -428,20 +435,17 @@ def _reindex_tests(self) -> None:
428435 """Index tests based on their associated evaluable."""
429436 for node_values in self .raw_nodes .values ():
430437 if node_values .get ("resource_type" ) == "test" :
431- # tests for models have a non-null value for `attached_node`
438+ # Tests for models have a non-null value for `attached_node`
432439 if attached_node := node_values .get ("attached_node" ):
433440 self .tests [attached_node ].append (node_values )
434441
435- # Tests for sources will have a null `attached_node`,
436- # and a non-empty list for `sources`.
437- # They need to be attributed to the source id
442+ # Tests for sources or separate tests will have `attached_node` == null.
443+ # They need to be attributed to the node id
438444 # based on the `depends_on` field.
439- elif node_values .get ("sources" ) and (
440- source_unique_id := next (
441- iter (node_values .get ("depends_on" , {}).get ("nodes" , [])), None
442- )
445+ elif node_unique_id := next (
446+ iter (node_values .get ("depends_on" , {}).get ("nodes" , [])), None
443447 ):
444- self .tests [source_unique_id ].append (node_values )
448+ self .tests [node_unique_id ].append (node_values )
445449
446450 def _filter_evaluables (self , select : Iterable [str ]) -> None :
447451 """Filter evaluables like dbt's --select."""
0 commit comments