dbt-labs/dbt-core

[Bug] Unit test raising error `'<macro name>' is undefined. This can happen when calling a macro that does not exist.`

dbeatty10 opened this issue · 0 comments

Is this a new bug in dbt-core?

  • I believe this is a new bug in dbt-core
  • I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior

Sometimes (but not always!), I get this compilation error when a model contains a macro:

13:04:08    Compilation Error in unit_test test__model_f (models/unit_test.yml)
  'british_colours' is undefined. This can happen when calling a macro that does not exist. Check for typos and/or install package dependencies with "dbt deps".

Expected Behavior

This seems like it should work without needing to add an override for any macros.

Steps To Reproduce

macros/my_macros.sql

{% macro british_colours() -%}
    {{ return(["grey"]) }}
{%- endmacro %}


{% macro american_colors() -%}
    {{ return(["gray"]) }}
{%- endmacro %}

models/_unit_tests.yml

unit_tests:
  - name: test__model_f
    model: model_f
    given: []
    expect:
      rows:
        - {id: 1}

models/model_f.sql

{% set a_values = british_colours() %}
{% set b_values = american_colors() %}

select 1 as id

Build and see that everything works just fine:

dbt build -s +model_f

Update models/model_f.sql to add {% set ab_values = a_values + b_values %} anywhere within the model defintion:

{% set a_values = british_colours() %}
{% set b_values = american_colors() %}
{% set ab_values = a_values + b_values %}

select 1 as id

Now re-build and see the error:

dbt build -s +model_f
13:12:43  Completed with 1 error and 0 warnings:
13:12:43  
13:12:43    Compilation Error in unit_test test__model_f (models/unit_test.yml)
  'british_colours' is undefined. This can happen when calling a macro that does not exist. Check for typos and/or install package dependencies with "dbt deps".

Relevant log output

See above

Environment

- OS:
- Python:
- dbt:

Which database adapter are you using with dbt?

postgres

Additional Context

Found while researching #10139.