diff --git a/core/dbt/cli/requires.py b/core/dbt/cli/requires.py index 01425d8db9b..bb35e7c7859 100644 --- a/core/dbt/cli/requires.py +++ b/core/dbt/cli/requires.py @@ -45,6 +45,7 @@ Recorder, RecorderMode, get_record_mode_from_env, + get_record_types_from_dict, get_record_types_from_env, ) from dbt_common.utils import cast_dict_to_dict_of_strings @@ -111,7 +112,16 @@ def setup_record_replay(): recorder: Optional[Recorder] = None if rec_mode == RecorderMode.REPLAY: recording_path = os.environ.get("DBT_RECORDER_FILE_PATH") - recorder = Recorder(RecorderMode.REPLAY, types=rec_types, recording_path=recording_path) + recorder = Recorder( + RecorderMode.REPLAY, types=rec_types, previous_recording_path=recording_path + ) + elif rec_mode == RecorderMode.DIFF: + previous_recording_path = os.environ.get("DBT_RECORDER_FILE_PATH") + # ensure types match the previous recording + types = get_record_types_from_dict(previous_recording_path) + recorder = Recorder( + RecorderMode.DIFF, types=types, previous_recording_path=previous_recording_path + ) elif rec_mode == RecorderMode.RECORD: recorder = Recorder(RecorderMode.RECORD, types=rec_types) @@ -122,7 +132,11 @@ def tear_down_record_replay(): recorder = get_invocation_context().recorder if recorder is not None: if recorder.mode == RecorderMode.RECORD: - recorder.write("recording.json") + recorder.write() + if recorder.mode == RecorderMode.DIFF: + # write out result of recording to it was be referred to as needed + recorder.write() + recorder.write_diffs(diff_file_name="diffs.json") elif recorder.mode == RecorderMode.REPLAY: recorder.write_diffs("replay_diffs.json")