本記事が目指すこと
- dbt-coreにおけるOSS活動を始めるにあたってやるべきこと、学びになったことを紹介する
- 複数回に渡り連載する予定
- これまでの投稿記事
- 複数回に渡り連載する予定
注意
- 本記事は筆者が所属する会社と関係なく、個人の記事であることをご了承ください
背景
- 筆者は、ちゅらデータ株式会社に務める会社員であるが、就業時間中に職務としてのdbt-coreのOSS活動を始めた(OSS活動自体が初めての経験)
- CONTRIBUTING.mdには明示的に記載されてない部分があったため、それらの解説を含む
本編
前提
本記事執筆時点(2023年8月17日)では、dbt-coreに対してPRを作成し、コミットするとGitHubActionsによるCIテストが自動で実施される。
その際に、Codecovと呼ばれるコードのカバレッジ情報が表示される可視化ツールを用いて、どの部分のコードがテストされており、どの部分がカバーされていないのかを確認することができる。これがCIに組み込まれており、例えば、追加したコードに対するテストを書き忘れた場合は、マージする前に検知することが可能となる。なお、テストカバレッジに何らかの異常が検知された場合は、そのPRはマージされることはない。
問題
さて、この便利なツールであるCodecovだが、問題が1つある。
それは、GitHubのブラウザ上からはcommitしたタイミングでCIが走り、そこから生成されるカバレッジレポートを元にカバレッジを確認可能であるが、ローカルで確認する手段がないということである。(CodeCov CLIというローカルからCodeCovを操作可能なCLIが用意されているが、アップロード用のトークンがdbt-coreのリポジトリから取得できないため利用できない)
ローカルでカバレッジが確認できないと、不要なcommitを増やすことになり、レビュアーの手間が増えたり、CIによるコストが増加したりで、開発に支障が生じる。
問題解決の手順
結論から述べると、coverageというモジュールを用いてローカル端末からテストカバレッジレポートをブラウザ上で確認できる。
具体的な手順を以下に示す。
1.ローカルでテストを実行する
- 例えば、単体テスト
make test
や統合テストmake integration
などを実行する
2.coverage html
を実行する
- dbtv1.6の環境を
make dev
で作成した場合、既にcoverageモジュールがインストール済み。インストールしていない場合は、pipを用いてインストール可能。python3 -m pip install coverage
3.htmlcov/index.html
をブラウザで開く
- VSCodeを使って開発する場合は、ファイルを右クリックして「Open In Default Browser」をクリックすると、カバレッジレポートのページがデフォルトのブラウザで立ち上がる
解決できる理由
1.では、.corverage
というテストカバレッジの内容を含むファイルが作成される。
2.では、.corverage
を元にhtmlcov
というカバレッジレポートを含むディレクトリが作成される。
3.では、htmlcov
ディレクトリにあるindex.html
ファイルをブラウザで開く。
という流れである
うまくいくと以下のようなページが表示されるはずである
以上。追加したコードに付随するテストを開発するときに役立てていただきたい。
終わりに
ちゅらデータでは、クレイジーな仲間を募集しているでござる
データエンジニア、もしくはSE系からデータエンジニアになりたい方がいればぜひ、御仁の力量に応じたグレード(ジュニア/ミドル/シニア)にて、応募するでござる