Refactor test scripts into scripts/ directory and improve CI

- Move run_tests_no_ot.sh and run_tests_with_ot.sh to scripts/ directory
- Create scripts/run_tests_with_coverage.py for coverage measurement
- Update CI to use scripts from scripts/ directory
- Eliminate code duplication between shell scripts and CI configuration
- Use Python script with coverage run for proper coverage measurement
This commit is contained in:
Oliver Falk
2025-10-16 17:58:33 +02:00
parent b5186f2081
commit 6f205ccad9
4 changed files with 115 additions and 2 deletions

View File

@@ -43,7 +43,7 @@ test_without_opentelemetry:
- python manage.py sqldsn - python manage.py sqldsn
- python manage.py collectstatic --noinput - python manage.py collectstatic --noinput
- echo "Running tests without OpenTelemetry..." - echo "Running tests without OpenTelemetry..."
- python manage.py test ivatar.ivataraccount.test_auth ivatar.ivataraccount.test_views ivatar.ivataraccount.test_views_bluesky ivatar.test_auxiliary ivatar.test_file_security ivatar.test_static_pages ivatar.test_utils ivatar.test_views ivatar.test_views_stats ivatar.tools.test_views ivatar.test_wsgi -v2 - ./scripts/run_tests_no_ot.sh
# Test with OpenTelemetry enabled and measure coverage # Test with OpenTelemetry enabled and measure coverage
test_with_opentelemetry_and_coverage: test_with_opentelemetry_and_coverage:
@@ -83,7 +83,7 @@ test_with_opentelemetry_and_coverage:
- python manage.py sqldsn - python manage.py sqldsn
- python manage.py collectstatic --noinput - python manage.py collectstatic --noinput
- echo "Running tests with OpenTelemetry enabled and measuring coverage..." - echo "Running tests with OpenTelemetry enabled and measuring coverage..."
- coverage run --source . manage.py test ivatar.ivataraccount.test_auth ivatar.ivataraccount.test_views ivatar.ivataraccount.test_views_bluesky ivatar.test_auxiliary ivatar.test_file_security ivatar.test_opentelemetry ivatar.test_static_pages ivatar.test_utils ivatar.test_views ivatar.test_views_stats ivatar.tools.test_views ivatar.test_wsgi -v2 - coverage run --source . scripts/run_tests_with_coverage.py
- coverage report --fail-under=70 - coverage report --fail-under=70
- coverage html - coverage html
artifacts: artifacts:

30
scripts/run_tests_no_ot.sh Executable file
View File

@@ -0,0 +1,30 @@
#!/bin/bash
# Run tests without OpenTelemetry enabled (default mode)
# This is the default test mode for most users
set -e
echo "Running tests without OpenTelemetry (default mode)..."
echo "====================================================="
# Ensure OpenTelemetry is disabled
export ENABLE_OPENTELEMETRY=false
export OTEL_ENABLED=false
# Run Django tests excluding OpenTelemetry-specific tests
python3 manage.py test \
ivatar.ivataraccount.test_auth \
ivatar.ivataraccount.test_views \
ivatar.ivataraccount.test_views_bluesky \
ivatar.test_auxiliary \
ivatar.test_file_security \
ivatar.test_static_pages \
ivatar.test_utils \
ivatar.test_views \
ivatar.test_views_stats \
ivatar.tools.test_views \
ivatar.test_wsgi \
-v2
echo ""
echo "Tests completed successfully (OpenTelemetry disabled)"

View File

@@ -0,0 +1,50 @@
#!/usr/bin/env python3
"""
Run tests with OpenTelemetry enabled and coverage measurement.
This script is designed to be used with 'coverage run' command.
"""
import os
import subprocess
import sys
def main():
# Enable OpenTelemetry
os.environ['ENABLE_OPENTELEMETRY'] = 'true'
os.environ['OTEL_ENABLED'] = 'true'
os.environ['OTEL_SERVICE_NAME'] = 'ivatar-test'
os.environ['OTEL_ENVIRONMENT'] = 'test'
print("Running tests with OpenTelemetry enabled...")
print("==========================================")
# Test modules to run (including OpenTelemetry-specific tests)
test_modules = [
'ivatar.ivataraccount.test_auth',
'ivatar.ivataraccount.test_views',
'ivatar.ivataraccount.test_views_bluesky',
'ivatar.test_auxiliary',
'ivatar.test_file_security',
'ivatar.test_opentelemetry',
'ivatar.test_static_pages',
'ivatar.test_utils',
'ivatar.test_views',
'ivatar.test_views_stats',
'ivatar.tools.test_views',
'ivatar.test_wsgi',
]
# Run Django tests
cmd = ['python3', 'manage.py', 'test'] + test_modules + ['-v2']
try:
result = subprocess.run(cmd, check=True)
print("")
print("Tests completed successfully (OpenTelemetry enabled)")
return result.returncode
except subprocess.CalledProcessError as e:
print(f"Tests failed with exit code {e.returncode}")
return e.returncode
if __name__ == '__main__':
sys.exit(main())

33
scripts/run_tests_with_ot.sh Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
# Run tests with OpenTelemetry enabled
# This is used in CI to test OpenTelemetry functionality
set -e
echo "Running tests with OpenTelemetry enabled..."
echo "=========================================="
# Enable OpenTelemetry
export ENABLE_OPENTELEMETRY=true
export OTEL_ENABLED=true
export OTEL_SERVICE_NAME=ivatar-test
export OTEL_ENVIRONMENT=test
# Run Django tests including OpenTelemetry-specific tests
python3 manage.py test \
ivatar.ivataraccount.test_auth \
ivatar.ivataraccount.test_views \
ivatar.ivataraccount.test_views_bluesky \
ivatar.test_auxiliary \
ivatar.test_file_security \
ivatar.test_opentelemetry \
ivatar.test_static_pages \
ivatar.test_utils \
ivatar.test_views \
ivatar.test_views_stats \
ivatar.tools.test_views \
ivatar.test_wsgi \
-v2
echo ""
echo "Tests completed successfully (OpenTelemetry enabled)"