dbt-coverage icon indicating copy to clipboard operation
dbt-coverage copied to clipboard

Make error more informative if target/manifest.json doesn't exist

Open bbrewington opened this issue 2 years ago • 2 comments

Planning to submit a PR, just wanted to tee this up first to document the need

Steps to reproduce:

pip install dbt-coverage==0.2.2
git clone https://github.com/dbt-labs/jaffle_shop
git checkout b0b77aa
dbt-coverage compute doc

Line of code throwing the error: https://github.com/slidoapp/dbt-coverage/blob/9f97e6c8fc24e83babc51c2b0584afc88e45308c/dbt_coverage/init.py#L507

Error message:

INFO:root:Loading catalog and manifest files from project dir: .
Traceback (most recent call last):
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/bin/dbt-coverage", line 8, in <module>
    sys.exit(app())
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/typer/main.py", line 214, in __call__
    return get_command(self)(*args, **kwargs)
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/typer/main.py", line 532, in wrapper
    return callback(**use_params)  # type: ignore
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/dbt_coverage/__init__.py", line 660, in compute
    return do_compute(project_dir, cov_report, cov_type, cov_fail_under, cov_fail_compare)
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/dbt_coverage/__init__.py", line 616, in do_compute
    catalog = load_files(project_dir)
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/dbt_coverage/__init__.py", line 533, in load_files
    catalog = load_catalog(project_dir)
  File "/Users/brentbrewington/.pyenv/versions/3.9.0/lib/python3.9/site-packages/dbt_coverage/__init__.py", line 507, in load_catalog
    with open(project_dir / 'target/catalog.json') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'target/catalog.json'

bbrewington avatar Oct 06 '22 19:10 bbrewington

actually, in implementing this, found myself needing to throw a FileNotFoundError 😆 - not submitting a PR & will leave this issue up; curious to hear thoughts from maintainers

It would probably be good to instruct the user to run dbt docs generate first

bbrewington avatar Oct 06 '22 20:10 bbrewington

Hey @bbrewington,

It would probably be good to instruct the user to run dbt docs generate first

If you'd be up for submitting a PR that does that, we'd certainly appreciate it, as that's something we'd like to do as well 🙂

mrshu avatar Oct 18 '22 20:10 mrshu