genai-impact / ecologits

🌱 EcoLogits tracks the energy consumption and environmental footprint of using generative AI models through APIs.
https://ecologits.ai/
Mozilla Public License 2.0
36 stars 3 forks source link

pytest workflow file #24

Closed LucBERTON closed 3 months ago

LucBERTON commented 3 months ago

created a pytest workflow for github actions

LucBERTON commented 3 months ago

There seems to be an issue with my workflow file. I'll try to fix it tomorrow.

samuelrince commented 3 months ago

Yes I think you are missing the extra dependencies in the pip install. Maybe we can directly install dependencies with poetry?

poetry install --all-extras --with dev

I am more familiar with GitLab CI unfortunately, but I think we can use a GitHub Action to use poetry: https://github.com/marketplace/actions/install-poetry-action

I think we can do something like this (taken and adapted from the docs):

name: test

on: pull_request

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      #----------------------------------------------
      #       check-out repo and set-up python
      #----------------------------------------------
      - name: Check out repository
        uses: actions/checkout@v4
      - name: Set up python
        id: setup-python
        uses: actions/setup-python@v5
        with:
          python-version: '3.9'
      #----------------------------------------------
      #  -----  install & configure poetry  -----
      #----------------------------------------------
      - name: Install Poetry
        uses: snok/install-poetry@v1
        with:
          virtualenvs-create: true
          virtualenvs-in-project: true
          installer-parallel: true

      #----------------------------------------------
      #       load cached venv if cache exists
      #----------------------------------------------
      - name: Load cached venv
        id: cached-poetry-dependencies
        uses: actions/cache@v3
        with:
          path: .venv
          key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
      #----------------------------------------------
      # install dependencies if cache does not exist
      #----------------------------------------------
      - name: Install dependencies
        if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
        run: poetry install --no-interaction --all-extras --with dev
      #----------------------------------------------
      #              run test suite
      #----------------------------------------------
      - name: Run tests
        run: poetry run pytest tests/
LucBERTON commented 3 months ago

You were right Samuel, adding --all-extras to the poetry install command did fix my error.

But as you suggested, I think it's cleaner to use the "install-poetry" action, I updated the worflow as you suggested