| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/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
|