Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/run-pytest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Pytest
on:
push:
pull_request:
workflow_dispatch:

jobs:
run-pytest:
name: Execute Pytest tests
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup PDM
uses: pdm-project/setup-pdm@v4

- name: Install dependencies
run: make install-tools

- name: Run linters
run: make test
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ install-tools: ## Install required utilities/tools
pdm run black --version
# check that correct Ruff version is installed
pdm run ruff --version
# check that Pytest is installed
pdm run pytest --version

pdm-lock-check: ## Check that the pdm.lock file is in a good shape
pdm lock --check
Expand All @@ -47,7 +49,7 @@ format: install-deps-test ## Format the code into unified format
verify: install-deps-test ## Verify the code using various linters
pdm run black . --check
pdm run ruff check . --per-file-ignores=tests/*:S101 --per-file-ignores=scripts/*:S101
pdm run pylint src
pdm run pylint src tests

requirements.txt: pyproject.toml pdm.lock ## Generate requirements.txt file containing hashes for all non-devel packages
pdm export --prod --format requirements --output requirements.txt
Expand All @@ -58,6 +60,9 @@ verify-packages-completeness: requirements.txt ## Verify that requirements.txt f
distribution-archives: ## Generate distribution archives to be uploaded into Python registry
pdm run python -m build

test: install-deps-test ## Execute tests with Pytest
pdm run pytest tests

help: ## Show this help screen
@echo 'Usage: make <OPTIONS> ... <TARGETS>'
@echo ''
Expand Down
58 changes: 50 additions & 8 deletions pdm.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ dev = [
"mypy>=1.15.0",
"ruff>=0.8.0",
"pylint>=3.3.2",
"pytest>=8.3.2",
]

[project.scripts]
Expand Down
1 change: 1 addition & 0 deletions tests/mocks/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Mocks for tests."""
18 changes: 18 additions & 0 deletions tests/mocks/mock_classes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"""Mocks for various classes for use during testing."""

from dataclasses import dataclass
from langchain_core.runnables import Runnable


@dataclass
class MockResult:
"""Mock of LLM response"""

content: str


class MockLLM(Runnable):
"""Mock LLM class"""

def invoke(self, input, config=None, **kwargs): # pylint: disable=W0622
return MockResult("5")
1 change: 1 addition & 0 deletions tests/utils/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Tests for evalutation utilities."""
12 changes: 12 additions & 0 deletions tests/utils/test_similarity_score_llm.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
"""Tests for similarity score utilities"""

from road_core_eval.utils.similarity_score_llm import AnswerSimilarityScore
from tests.mocks.mock_classes import MockLLM


def test_similarity_score():
"""Test similarity score calculation."""
mock_llm = MockLLM()

similarity_scorer = AnswerSimilarityScore(mock_llm)
assert similarity_scorer.get_score("question", "answer", "response") == 0.5