Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLI tests using factgenie list datasets and factgenie list campaigns #148

Merged
merged 7 commits into from
Nov 8, 2024
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
4 changes: 2 additions & 2 deletions .github/workflows/black_check.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Black Check
name: Black

on:
push:
Expand All @@ -23,4 +23,4 @@ jobs:
pip install black==24.10.0
- name: Run Black
run: |
black --check . --line-length 120
black --check . --line-length 120
2 changes: 1 addition & 1 deletion .github/workflows/py311_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[test]
pip install -e .[test]
- name: Run tests
run: |
pytest
1 change: 1 addition & 0 deletions factgenie/campaigns/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*
1 change: 1 addition & 0 deletions factgenie/data/inputs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*
1 change: 1 addition & 0 deletions factgenie/data/outputs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*
Empty file modified factgenie/datasets/basic.py
100755 → 100644
Empty file.
Empty file modified factgenie/datasets/dataset.py
100755 → 100644
Empty file.
Empty file modified factgenie/datasets/rotowire_shared_task.py
100755 → 100644
Empty file.
11 changes: 11 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# conftest.py
import pytest
import shutil
from factgenie import MAIN_CONFIG_PATH


@pytest.fixture(scope="module", autouse=True)
def prepare_testing_config():
# copy config_TEMPLATE.yml to config.yml
shutil.copy(MAIN_CONFIG_PATH.with_name("config_TEMPLATE.yml"), MAIN_CONFIG_PATH)
assert MAIN_CONFIG_PATH.exists()
68 changes: 68 additions & 0 deletions tests/test_cli_commands.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
"""
Run cli commands which wrap high level functionalites as a kind of functional tests.
"""

from pathlib import Path
import subprocess
import logging

from factgenie import INPUT_DIR, OUTPUT_DIR, CAMPAIGN_DIR


def test_factgenie_help():
cmd = "factgenie --help"
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
logging.debug(f"RUNNING ${cmd}\n{result.stdout.decode()}")
assert result.returncode == 0
assert b"Usage: factgenie [OPTIONS] COMMAND [ARGS]..." in result.stdout


def test_factgenie_routes():
"""Routes list endpoints to be called with GET, POST, PUT, DELETE methods"""
cmd = "factgenie routes"
result = subprocess.run(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
assert result.returncode == 0


# TODO by default there are no datasets in empty fatgenie data/input directory
# download some and create and test download command by that
def test_factgenie_list_datasets():
"""List datasets defined as inputs in factgenie.INPUT_DIR
factgenie.INPUTDIR is factgenie/data/input"""
assert Path(INPUT_DIR).exists()
assert "factgenie/data/input" in str(INPUT_DIR), f"INPUT_DIR: {INPUT_DIR}"
cmd = "factgenie list datasets"
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
logging.debug(f"RUNNING ${cmd}\n{result.stdout.decode()}")
assert result.returncode == 0
cli_datasets = sorted([d.strip() for d in result.stdout.decode().split("\n") if len(d.strip()) > 0])
dir_datasets = sorted([d.name for d in Path(INPUT_DIR).iterdir() if d.is_dir()])
logging.debug(f"CLI: {cli_datasets}")
logging.debug(f"DIR: {dir_datasets}")
assert cli_datasets == dir_datasets


def test_factgenie_list_outputs():
assert Path(OUTPUT_DIR).exists()
# Skipping the rest of the logic for now. Parsing factgenie list outputs is fragile.


def test_factgenie_list_campaigns():
"""List campaigns defined as inputs in factgenie.CAMPAIGN_DIR
factgenie.CAMPAIGN_DIR is factgenie/data/campaigns"""
assert Path(CAMPAIGN_DIR).exists()
assert "factgenie/campaigns" in str(CAMPAIGN_DIR), f"CAMPAIGN_DIR: {CAMPAIGN_DIR}"
cmd = "factgenie list campaigns"
result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
logging.debug(f"RUNNING ${cmd}\n{result.stdout.decode()}")
assert result.returncode == 0
cli_campaigns = sorted([d.strip() for d in result.stdout.decode().split("\n") if len(d.strip()) > 0])
dir_campaigns = sorted([d.name for d in Path(CAMPAIGN_DIR).iterdir() if d.is_dir()])
logging.debug(f"CLI: {cli_campaigns}")
logging.debug(f"DIR: {dir_campaigns}")
assert cli_campaigns == dir_campaigns


if __name__ == "__main__":
# test_factgenie_list_datasets()
pass
Loading