mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-01-03 01:15:57 +10:00
add ci for parallel tests
This commit is contained in:
98
bin/test_plugins.sh
Executable file
98
bin/test_plugins.sh
Executable file
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
# Run ArchiveBox plugin tests
|
||||
#
|
||||
# All plugin tests use pytest and are located in pluginname/tests/test_*.py
|
||||
#
|
||||
# Usage: ./bin/run_plugin_tests.sh [plugin_name]
|
||||
#
|
||||
# Examples:
|
||||
# ./bin/run_plugin_tests.sh # Run all plugin tests
|
||||
# ./bin/run_plugin_tests.sh chrome # Run chrome plugin tests
|
||||
# ./bin/run_plugin_tests.sh parse_* # Run all parse_* plugin tests
|
||||
|
||||
set -e
|
||||
|
||||
# Color codes
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Parse arguments
|
||||
PLUGIN_FILTER="${1:-}"
|
||||
|
||||
# Change to plugins directory
|
||||
cd "$(dirname "$0")/../archivebox/plugins" || exit 1
|
||||
|
||||
echo "=========================================="
|
||||
echo "ArchiveBox Plugin Tests"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
if [ -n "$PLUGIN_FILTER" ]; then
|
||||
echo "Filter: $PLUGIN_FILTER"
|
||||
else
|
||||
echo "Running all plugin tests"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
# Track results
|
||||
TOTAL_PLUGINS=0
|
||||
PASSED_PLUGINS=0
|
||||
FAILED_PLUGINS=0
|
||||
|
||||
# Find and run plugin tests
|
||||
if [ -n "$PLUGIN_FILTER" ]; then
|
||||
# Run tests for specific plugin(s) matching pattern
|
||||
TEST_DIRS=$(find . -maxdepth 2 -type d -path "./${PLUGIN_FILTER}*/tests" 2>/dev/null | sort)
|
||||
else
|
||||
# Run all plugin tests
|
||||
TEST_DIRS=$(find . -maxdepth 2 -type d -name "tests" -path "./*/tests" 2>/dev/null | sort)
|
||||
fi
|
||||
|
||||
if [ -z "$TEST_DIRS" ]; then
|
||||
echo -e "${YELLOW}No plugin tests found${NC}"
|
||||
[ -n "$PLUGIN_FILTER" ] && echo "Pattern: $PLUGIN_FILTER"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for test_dir in $TEST_DIRS; do
|
||||
# Check if there are any Python test files
|
||||
if ! compgen -G "${test_dir}/test_*.py" > /dev/null 2>&1; then
|
||||
continue
|
||||
fi
|
||||
|
||||
plugin_name=$(basename $(dirname "$test_dir"))
|
||||
TOTAL_PLUGINS=$((TOTAL_PLUGINS + 1))
|
||||
|
||||
echo -e "${YELLOW}[RUNNING]${NC} $plugin_name"
|
||||
|
||||
if python -m pytest "$test_dir" -v --tb=short 2>&1 | grep -v "^platform\|^cachedir\|^rootdir\|^configfile\|^plugins:" | tail -100; then
|
||||
echo -e "${GREEN}[PASSED]${NC} $plugin_name"
|
||||
PASSED_PLUGINS=$((PASSED_PLUGINS + 1))
|
||||
else
|
||||
echo -e "${RED}[FAILED]${NC} $plugin_name"
|
||||
FAILED_PLUGINS=$((FAILED_PLUGINS + 1))
|
||||
fi
|
||||
echo ""
|
||||
done
|
||||
|
||||
# Print summary
|
||||
echo "=========================================="
|
||||
echo "Test Summary"
|
||||
echo "=========================================="
|
||||
echo -e "Total plugins tested: $TOTAL_PLUGINS"
|
||||
echo -e "${GREEN}Passed:${NC} $PASSED_PLUGINS"
|
||||
echo -e "${RED}Failed:${NC} $FAILED_PLUGINS"
|
||||
echo ""
|
||||
|
||||
if [ $TOTAL_PLUGINS -eq 0 ]; then
|
||||
echo -e "${YELLOW}⚠ No tests found${NC}"
|
||||
exit 0
|
||||
elif [ $FAILED_PLUGINS -eq 0 ]; then
|
||||
echo -e "${GREEN}✓ All plugin tests passed!${NC}"
|
||||
exit 0
|
||||
else
|
||||
echo -e "${RED}✗ Some plugin tests failed${NC}"
|
||||
exit 1
|
||||
fi
|
||||
Reference in New Issue
Block a user