1414"""Runner for Declarative tests framework scenarios for custom resources
1515"""
1616
17- from declarative_test_fwk import model
17+ from declarative_test_fwk import model , helper
1818import pytest
1919import sys
2020import logging
@@ -28,7 +28,7 @@ def run(scenario: model.Scenario) -> None:
2828 if not scenario :
2929 return
3030
31- logging .info (f"Execute: Scenario: { scenario . id () } " )
31+ logging .info (f"Execute: { scenario } " )
3232 for step in scenario .steps ():
3333 run_step (step )
3434
@@ -40,20 +40,20 @@ def teardown(scenario: model.Scenario) -> None:
4040 if not scenario :
4141 return
4242
43- logging .info (f"Teardown: Scenario: { scenario . id () } " )
43+ logging .info (f"Teardown: { scenario } " )
4444 teardown_failures = []
4545 # tear down steps in reverse order
4646 for step in reversed (scenario .steps ()):
4747 try :
4848 teardown_step (step )
4949 except :
50- error = f"Failed to teardown Step : { step . id () } . " \
50+ error = f"Failed to teardown: { step } . " \
5151 f"Unexpected error: { sys .exc_info ()[0 ]} "
5252 teardown_failures .append (error )
5353 logging .debug (error )
5454
5555 if len (teardown_failures ) != 0 :
56- teardown_failures .insert (0 , f"Failures during teardown. Scenario : { scenario . id () } " )
56+ teardown_failures .insert (0 , f"Failures during teardown: { scenario } " )
5757 failures = "\n \t - " .join (teardown_failures )
5858 logging .error (failures )
5959 pytest .fail (failures )
@@ -68,54 +68,61 @@ def run_step(step: model.Step) -> None:
6868
6969 if not step .verb :
7070 logging .warning (
71- f"skipped: Step: { step . id () } . No matching verb found."
71+ f"skipped: { step } . No matching verb found."
7272 f" Supported verbs: create, patch, delete." )
7373 return
7474
75+ logging .info (f"Execute: { step } " )
7576 if step .verb == "create" :
7677 create_resource (step )
7778 elif step .verb == "patch" :
7879 patch_resource (step )
7980 elif step .verb == "delete" :
80- pass
81+ delete_resource ( step )
8182 assert_expectations (step )
8283
8384
8485def create_resource (step : model .Step ) -> None :
85- logging .debug (f"create: Step: { step . id () } " )
86+ logging .debug (f"create: { step } " )
8687 if not step .input_data :
8788 return
88-
89- (reference , ko ) = step . resource_helper .create (step .input_data , step .replacements )
89+ resource_helper = helper . get_resource_helper ( step . resource_kind ())
90+ (reference , ko ) = resource_helper .create (step .input_data , step .replacements )
9091 # track created reference to teardown later
9192 step .teardown_list .append ((reference , ko ))
9293
9394
9495def patch_resource (step : model .Step ) -> None :
95- logging .debug (f"patch: Step: { step . id () } " )
96+ logging .debug (f"patch: { step } " )
9697 if not step .input_data :
9798 return
9899
99- (reference , ko ) = step .resource_helper .patch (step .input_data , step .replacements )
100+ resource_helper = helper .get_resource_helper (step .resource_kind ())
101+ (reference , ko ) = resource_helper .patch (step .input_data , step .replacements )
100102 # no need to teardown patched reference, its creator should tear it down.
101103
102104
103105def delete_resource (step : model .Step , reference : k8s .CustomResourceReference = None ) -> None :
106+ resource_helper = helper .get_resource_helper (step .resource_kind ())
104107 if not reference :
105- logging .debug (f"delete: Step: { step . id () } " )
106- reference = step . resource_helper .custom_resource_reference (step .input_data , step .replacements )
108+ logging .debug (f"delete: { step } " )
109+ reference = resource_helper .custom_resource_reference (step .input_data , step .replacements )
107110
108- step . resource_helper .delete (reference )
111+ resource_helper .delete (reference )
109112
110113
111114def assert_expectations (step : model .Step ) -> None :
112- logging .debug (f"assert: Step: { step . id () } " )
115+ logging .info (f"assert: { step } " )
113116 if not step .expectations :
114117 return
115118
116- resource_helper = step .resource_helper
119+ resource_helper = helper . get_resource_helper ( step .resource_kind ())
117120 reference = resource_helper .custom_resource_reference (step .input_data , step .replacements )
118- resource_helper .assert_expectations (step .expectations , reference )
121+ try :
122+ resource_helper .assert_expectations (step .verb , step .input_data , step .expectations , reference )
123+ except AssertionError as ae :
124+ logging .error (f"AssertionError at { step } " )
125+ raise ae
119126
120127
121128def teardown_step (step : model .Step ) -> None :
@@ -125,7 +132,7 @@ def teardown_step(step: model.Step) -> None:
125132 if not step or len (step .teardown_list ) == 0 :
126133 return
127134
128- logging .info (f"teardown: Step: { step . id () } " )
135+ logging .info (f"teardown: { step } " )
129136
130137 for (reference , _ ) in step .teardown_list :
131138 if reference :
0 commit comments