Compare commits
14 Commits
v0.3.0
...
dependencies
| Author | SHA1 | Date | |
|---|---|---|---|
|
63f66c0336
|
|||
|
d4465d905b
|
|||
|
c3cda25c10
|
|||
|
5734ac2f49
|
|||
|
a6d74fc36f
|
|||
|
74d63cb4d7
|
|||
|
de9097aa8a
|
|||
|
a8804cd581
|
|||
|
93010caee4
|
|||
|
ded42ccd03
|
|||
|
9255f9b052
|
|||
|
6e22dcdda5
|
|||
|
ef1e42bcbb
|
|||
|
0912c338e3
|
@@ -8,6 +8,22 @@ on:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Install Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install ruff
|
||||
# Update output format to enable automatic inline annotations.
|
||||
- name: Run Ruff
|
||||
run: ruff check --output-format=github .
|
||||
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
|
||||
+2
-2
@@ -2,7 +2,7 @@
|
||||
# Arian Nasr
|
||||
# May 31, 2026
|
||||
|
||||
FROM debian:stable
|
||||
FROM debian:13-slim
|
||||
|
||||
# Prevent interactive prompts
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
@@ -33,4 +33,4 @@ RUN chmod +x /e2e/test-entrypoint.sh
|
||||
|
||||
WORKDIR /e2e
|
||||
|
||||
ENTRYPOINT ["/e2e/test-entrypoint.sh"]
|
||||
ENTRYPOINT ["/e2e/test-entrypoint.sh"]
|
||||
|
||||
Vendored
+17
@@ -1,3 +1,20 @@
|
||||
navidrome-uploader (0.3.0) unstable; urgency=medium
|
||||
|
||||
* E2E Testing:
|
||||
- Add Dockerfile and entrypoint script for testing .deb packages
|
||||
- Implement initial API functional tests with pytest configuration
|
||||
- Update CI workflow to run E2E tests automatically after package build
|
||||
* Packaging:
|
||||
- Change architecture from 'all' to 'amd64'
|
||||
* CI/Build:
|
||||
- Implement automated Gitea workflow for .deb building
|
||||
* Refactoring:
|
||||
- Remove unused templates
|
||||
* Maintenance:
|
||||
- Update Dropzone.js upstream source
|
||||
|
||||
-- Arian Nasr <arian@2ari.ca> Sun, 31 May 2026 08:43:00 -0400
|
||||
|
||||
navidrome-uploader (0.2.0) unstable; urgency=medium
|
||||
|
||||
* Packaging:
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
Werkzeug==3.1.8
|
||||
pytest==9.0.3
|
||||
pytest==9.1.1
|
||||
requests==2.34.2
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import pytest
|
||||
import requests
|
||||
import io
|
||||
import os
|
||||
@@ -18,5 +17,38 @@ def test_api_upload_non_audio_file(base_url, upload_folder):
|
||||
assert "not allowed" in response.json().get("error", "")
|
||||
assert not os.path.exists(expected_filename)
|
||||
|
||||
if os.path.exists(expected_filename):
|
||||
os.remove(expected_filename)
|
||||
|
||||
def test_api_upload_mp3_file(base_url, upload_folder):
|
||||
files = {'file': ('test.mp3', io.BytesIO(b'fake mp3 content'))}
|
||||
expected_filename = os.path.join(upload_folder, secure_filename('test.mp3'))
|
||||
response = requests.post(f'{base_url}/', files=files)
|
||||
assert response.status_code == 200
|
||||
assert "uploaded successfully" in response.json().get("message", "")
|
||||
assert os.path.exists(expected_filename)
|
||||
|
||||
if os.path.exists(expected_filename):
|
||||
os.remove(expected_filename)
|
||||
|
||||
def test_api_upload_flac_file(base_url, upload_folder):
|
||||
files = {'file': ('test.flac', io.BytesIO(b'fake flac content'))}
|
||||
expected_filename = os.path.join(upload_folder, secure_filename('test.flac'))
|
||||
response = requests.post(f'{base_url}/', files=files)
|
||||
assert response.status_code == 200
|
||||
assert "uploaded successfully" in response.json().get("message", "")
|
||||
assert os.path.exists(expected_filename)
|
||||
|
||||
if os.path.exists(expected_filename):
|
||||
os.remove(expected_filename)
|
||||
|
||||
def test_api_upload_m4a_file(base_url, upload_folder):
|
||||
files = {'file': ('test.m4a', io.BytesIO(b'fake m4a content'))}
|
||||
expected_filename = os.path.join(upload_folder, secure_filename('test.m4a'))
|
||||
response = requests.post(f'{base_url}/', files=files)
|
||||
assert response.status_code == 400
|
||||
assert "not allowed" in response.json().get("error", "")
|
||||
assert not os.path.exists(expected_filename)
|
||||
|
||||
if os.path.exists(expected_filename):
|
||||
os.remove(expected_filename)
|
||||
+1
-1
@@ -6,5 +6,5 @@ Jinja2==3.1.6
|
||||
MarkupSafe==3.0.3
|
||||
Werkzeug==3.1.8
|
||||
gunicorn==26.0.0
|
||||
pip==26.1.1
|
||||
pip==26.1.2
|
||||
packaging==26.2
|
||||
|
||||
Reference in New Issue
Block a user