Skip to content

Commit

Permalink
requirements test
Browse files Browse the repository at this point in the history
  • Loading branch information
neonwatty committed Jul 17, 2024
1 parent 072c597 commit 269cd83
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 1 deletion.
50 changes: 50 additions & 0 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python application

on:
push:
branches: [ "main"]
paths-ignore:
- '**/README.md'
- '**/CONTRIBUTING.md'
- '**LICENSE'
pull_request:
branches: [ "main" ]
paths-ignore:
- '**/README.md'
- '**/CONTRIBUTING.md'
- '**LICENSE'

jobs:
ruff:
name: lint with ruff
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v2
- uses: chartboost/ruff-action@v1
with:
args: 'format --check'
config: .ruff.toml
test:
name: run pytest
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.test
pip install -r requirements.txt
- name: Run pytest
run: |
PYTHONPATH=. python3.10 -m pytest tests/test_streamlit.py
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[![HuggingFace Space](https://img.shields.io/badge/🤗-HuggingFace%20Space-cyan.svg)](https://huggingface.co/spaces/neonwatty/youtube_shorts_transcript_downloader) [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/jermwatt/youtube_transcript_downloader/blob/main/transcript_downloader_walkthrough.ipynb)
<a href="https://www.youtube.com/watch?v=Z7Zm3GQ8q-U" target="_parent"><img src="https://badges.aleen42.com/src/youtube.svg" alt="Youtube"/></a>
<a href="https://www.youtube.com/watch?v=Z7Zm3GQ8q-U" target="_parent"><img src="https://badges.aleen42.com/src/youtube.svg" alt="Youtube"/></a> [![Python application](https://github.com/neonwatty/youtube_shorts_transcript_downloader/actions/workflows/python-app.yml/badge.svg)](https://github.com/neonwatty/youtube_shorts_transcript_downloader/actions/workflows/python-app.yml/python-app.yml)



Expand Down
3 changes: 3 additions & 0 deletions requirements.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
pytest
pytest-subtests
ruff
5 changes: 5 additions & 0 deletions tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import os

cwd = os.getcwd()
CONTAINER_NAME = "youtube_shorts_transcript_downloader"
STREAMLIT_FILE = "youtube_shorts_transcript_downloader/app.py"
27 changes: 27 additions & 0 deletions tests/test_streamlit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import subprocess
import pytest
import time
from tests import STREAMLIT_FILE


@pytest.fixture(scope="module")
def start_streamlit_app():
cmd = f"python -m streamlit run {STREAMLIT_FILE} --server.headless true"
process = subprocess.Popen(
cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
time.sleep(5)
yield process
process.terminate()
process.wait()


def test_streamlit(subtests, start_streamlit_app):
with subtests.test(msg="streamlit up"):
assert start_streamlit_app.poll() is None, "Streamlit app failed to start"

with subtests.test(msg="streamlit down"):
start_streamlit_app.terminate()
time.sleep(2)
assert start_streamlit_app.poll() is not None, "Streamlit app failed to stop"

0 comments on commit 269cd83

Please sign in to comment.