04_Testing_Guide - nzbgetcom/Extension-RemoveSamples GitHub Wiki
Testing Guide
Comprehensive testing procedures to verify RemoveSamples functionality across different platforms and scenarios.
π― Overview
Testing RemoveSamples ensures it works correctly in your environment before processing real downloads. This guide provides platform-specific testing procedures that create controlled test scenarios to verify detection logic, file removal, and system compatibility.
Why test RemoveSamples?
- β Verify functionality before trusting with important downloads
- β Understand detection behavior for your content types
- β Troubleshoot configuration issues safely
- β Validate platform compatibility (Docker, Unraid, etc.)
- β Build confidence in the extension's safety
π Quick Test (All Platforms)
Prerequisites
- RemoveSamples installed and configured
- Access to NZBGet scripts directory
- Basic command line knowledge
- 10 minutes of time
Universal Test Steps
1. Create test directory:
# Navigate to a safe location (NOT in active downloads)
cd /tmp
mkdir -p RemoveSamples-Test
cd RemoveSamples-Test
2. Create test files:
# Legitimate files (should be preserved)
echo "large movie content" > Movie.2023.1080p.mkv
echo "soundtrack content" > soundtrack.mp3
# Sample files (should be removed)
echo "sample content" > Movie.2023.sample.mkv
echo "sample audio" > 30sec_sample.mp3
# Sample directory (should be removed)
mkdir samples
echo "sample clip" > samples/preview.mkv
3. Set permissions (if needed):
chmod 644 *.mkv *.mp3
chmod -R 755 samples/
4. Run manual test:
# Set environment variables
export NZBPP_DIRECTORY="$(pwd)"
export NZBPP_STATUS="SUCCESS"
export NZBPP_NZBNAME="RemoveSamples-Test"
export NZBPO_REMOVEDIRECTORIES="Yes"
export NZBPO_REMOVEFILES="Yes"
export NZBPO_DEBUG="Yes"
export NZBPO_VIDEOSIZETHRESHOLDMB="150"
export NZBPO_AUDIOSIZETHRESHOLDMB="2"
export NZBPO_VIDEOEXTS=".mkv,.mp4,.avi"
export NZBPO_AUDIOEXTS=".mp3,.flac,.aac"
# Run RemoveSamples (adjust path as needed)
python3 /path/to/nzbget/scripts/RemoveSamples/main.py
5. Check results:
ls -la
# Should show: Movie.2023.1080p.mkv and soundtrack.mp3
# Should NOT show: sample files or samples/ directory
6. Cleanup:
cd .. && rm -rf RemoveSamples-Test
π§ Linux Testing
Standard Linux Installation
Prerequisites:
- NZBGet installed via package manager or manual installation
- Python 3.8+ installed
- RemoveSamples extension installed
Detailed Test Procedure:
Step 1: Locate NZBGet Directory
# Find NZBGet scripts directory
find /opt /usr /var -name "scripts" -path "*/nzbget/*" 2>/dev/null
# Common locations:
# /opt/nzbget/scripts/
# /usr/share/nzbget/scripts/
# /var/lib/nzbget/scripts/
Step 2: Create Comprehensive Test
# Create test directory in safe location
TEST_DIR="/tmp/RemoveSamples-Linux-Test"
mkdir -p "$TEST_DIR"
cd "$TEST_DIR"
# Create video test files with realistic sizes
dd if=/dev/zero of="Movie.Name.2023.1080p.mkv" bs=1M count=200 # 200MB
dd if=/dev/zero of="Movie.Name.2023.sample.mkv" bs=1M count=45 # 45MB
dd if=/dev/zero of="sample.mp4" bs=1M count=30 # 30MB
dd if=/dev/zero of="small_video.avi" bs=1M count=25 # 25MB (size-based)
# Create audio test files
dd if=/dev/zero of="soundtrack.mp3" bs=1K count=5000 # 5MB
dd if=/dev/zero of="sample_track.mp3" bs=1K count=1500 # 1.5MB
dd if=/dev/zero of="preview.mp3" bs=1K count=500 # 0.5MB (size-based)
# Create directory scenarios
mkdir -p "samples"
dd if=/dev/zero of="samples/clip1.mkv" bs=1M count=20
dd if=/dev/zero of="samples/clip2.mp4" bs=1M count=15
mkdir -p "SAMPLE"
dd if=/dev/zero of="SAMPLE/preview.avi" bs=1M count=10
mkdir -p "Bonus_Features" # Should be preserved
dd if=/dev/zero of="Bonus_Features/making_of.mkv" bs=1M count=180
# Show test structure
echo "=== Test Structure Created ==="
find . -type f -exec ls -lh {} \;
Step 3: Run Test
# Set all required environment variables
export NZBPP_DIRECTORY="$TEST_DIR"
export NZBPP_STATUS="SUCCESS"
export NZBPP_NZBNAME="Linux-Test-Movie-2023"
export NZBPO_REMOVEDIRECTORIES="Yes"
export NZBPO_REMOVEFILES="Yes"
export NZBPO_DEBUG="Yes"
export NZBPO_VIDEOSIZETHRESHOLDMB="150"
export NZBPO_VIDEOEXTS=".mkv,.mp4,.avi,.mov,.wmv,.flv,.webm,.ts,.m4v,.vob"
export NZBPO_AUDIOSIZETHRESHOLDMB="2"
export NZBPO_AUDIOEXTS=".wav,.aiff,.mp3,.flac,.m4a,.ogg,.aac,.alac,.ape,.opus,.wma"
# Execute RemoveSamples (adjust path)
echo "=== Running RemoveSamples ==="
python3 /opt/nzbget/scripts/RemoveSamples/main.py
# Check results
echo "=== Results ==="
find . -type f -exec ls -lh {} \;
Step 4: Verify Results
Expected to remain:
Movie.Name.2023.1080p.mkv
(200MB - above threshold)soundtrack.mp3
(5MB - above threshold, no pattern)Bonus_Features/making_of.mkv
(180MB - legitimate content)
Expected to be removed:
Movie.Name.2023.sample.mkv
(pattern match)sample.mp4
(pattern match)small_video.avi
(size-based removal)sample_track.mp3
(pattern match)preview.mp3
(size-based removal)samples/
directory and contentsSAMPLE/
directory and contents
Ubuntu/Debian Specific
# Install dependencies if needed
sudo apt update
sudo apt install python3 python3-pip
# Check Python version
python3 --version # Should be 3.8+
# Test with systemd NZBGet
sudo systemctl status nzbget
CentOS/RHEL Specific
# Install dependencies if needed
sudo yum install python3 python3-pip
# Or for newer versions
sudo dnf install python3 python3-pip
# Check Python version
python3 --version
π³ Docker Testing
General Docker Testing
Prerequisites:
- Docker container running NZBGet
- Access to container terminal
- Volume mounts for scripts and downloads
Method 1: Inside Container Testing
# Access your NZBGet container
docker exec -it nzbget bash
# Navigate to container temp directory
cd /tmp
mkdir RemoveSamples-Docker-Test
cd RemoveSamples-Docker-Test
# Create test files (use container-appropriate sizes)
echo "Movie content placeholder" > Movie.2023.1080p.mkv
echo "Sample content" > Movie.2023.sample.mkv
echo "Sample clip" > sample.mp4
echo "Audio content" > soundtrack.mp3
echo "Sample audio" > 30sec_sample.mp3
# Create sample directory
mkdir samples
echo "Preview clip" > samples/preview.mkv
# Set environment variables for container paths
export NZBPP_DIRECTORY="/tmp/RemoveSamples-Docker-Test"
export NZBPP_STATUS="SUCCESS"
export NZBPP_NZBNAME="Docker-Test-Movie"
export NZBPO_REMOVEDIRECTORIES="Yes"
export NZBPO_REMOVEFILES="Yes"
export NZBPO_DEBUG="Yes"
export NZBPO_VIDEOSIZETHRESHOLDMB="1" # Lower for small test files
export NZBPO_AUDIOSIZETHRESHOLDMB="1" # Lower for small test files
export NZBPO_VIDEOEXTS=".mkv,.mp4,.avi"
export NZBPO_AUDIOEXTS=".mp3,.flac,.aac"
# Run RemoveSamples with container paths
python3 /opt/nzbget/scripts/RemoveSamples/main.py
# Check results
ls -la
Method 2: Host-Based Testing
# Create test on host system
TEST_DIR="/path/to/docker/volumes/downloads/test"
mkdir -p "$TEST_DIR"
# Use docker exec to run commands in container context
docker exec nzbget mkdir -p /downloads/test
# Copy test files or create them via docker exec
docker exec nzbget bash -c 'echo "content" > /downloads/test/sample.mkv'
# Run test via docker exec
docker exec -e NZBPP_DIRECTORY="/downloads/test" \
-e NZBPP_STATUS="SUCCESS" \
-e NZBPO_DEBUG="Yes" \
nzbget python3 /opt/nzbget/scripts/RemoveSamples/main.py
LinuxServer NZBGet Container
# Access LSIO container
docker exec -it nzbget bash
# Container-specific paths
SCRIPTS_DIR="/config/scripts/RemoveSamples"
DOWNLOADS_DIR="/downloads"
# Check if RemoveSamples is installed
ls -la $SCRIPTS_DIR/
# Create test in downloads directory
mkdir -p $DOWNLOADS_DIR/RemoveSamples-Test
cd $DOWNLOADS_DIR/RemoveSamples-Test
# Use realistic container testing
# (follow general Docker testing steps above)
Official NZBGet Container
# Access official container
docker exec -it nzbget bash
# Container-specific paths
SCRIPTS_DIR="/opt/nzbget/scripts/RemoveSamples"
DOWNLOADS_DIR="/downloads"
# Check Python availability
python3 --version
# If Python missing, may need to install
# (official container may require manual Python installation)
Docker Compose Testing
# Add to your docker-compose.yml for testing
version: '3.8'
services:
nzbget:
image: linuxserver/nzbget:latest
environment:
- PUID=1000
- PGID=1000
volumes:
- ./config:/config
- ./downloads:/downloads
- ./test-scripts:/test-scripts # Mount test directory
command: |
bash -c "
# Wait for NZBGet to start
sleep 10
# Run test script
/test-scripts/run-removesamples-test.sh
"
π¦ Unraid Testing
Unraid Docker Container Testing
Prerequisites:
- Unraid server with NZBGet docker container
- SSH access to Unraid or use Unraid terminal
- RemoveSamples installed in NZBGet appdata
Step 1: Access Unraid System
# SSH to Unraid server
ssh root@unraid-server-ip
# Or use Unraid web terminal
# Main β Terminal
Step 2: Navigate to NZBGet Appdata
# Standard Unraid NZBGet paths
cd /mnt/user/appdata/nzbget/
# Verify RemoveSamples installation
ls -la scripts/RemoveSamples/
# Should show: main.py and manifest.json
Step 3: Create Test in Downloads Directory
# Create test directory in downloads area
TEST_DIR="/mnt/user/downloads/nzbget/RemoveSamples-Unraid-Test"
mkdir -p "$TEST_DIR"
cd "$TEST_DIR"
# Create test files with proper Unraid permissions
echo "Movie content" > Movie.2023.1080p.mkv
echo "Sample content" > Movie.2023.sample.mkv
echo "Sample clip" > sample.mp4
echo "Audio content" > soundtrack.mp3
echo "Sample audio" > sample_track.mp3
# Create sample directory
mkdir samples
echo "Preview content" > samples/preview.mkv
mkdir SAMPLE
echo "Sample content" > SAMPLE/clip.avi
# Set Unraid-appropriate permissions
chown -R nobody:users *
chmod 644 *.mkv *.mp4 *.mp3
chmod -R 755 samples/ SAMPLE/
Step 4: Run Test via Docker Exec
# Get NZBGet container name
docker ps | grep nzbget
# Execute test in container context
docker exec -it nzbget bash -c "
export NZBPP_DIRECTORY='/downloads/RemoveSamples-Unraid-Test'
export NZBPP_STATUS='SUCCESS'
export NZBPP_NZBNAME='Unraid-Test-Movie'
export NZBPO_REMOVEDIRECTORIES='Yes'
export NZBPO_REMOVEFILES='Yes'
export NZBPO_DEBUG='Yes'
export NZBPO_VIDEOSIZETHRESHOLDMB='1'
export NZBPO_AUDIOSIZETHRESHOLDMB='1'
export NZBPO_VIDEOEXTS='.mkv,.mp4,.avi'
export NZBPO_AUDIOEXTS='.mp3,.flac,.aac'
python3 /opt/nzbget/scripts/RemoveSamples/main.py
"
# Check results on host
ls -la "$TEST_DIR"
Step 5: Unraid-Specific Verification
# Verify permissions after test
ls -la "$TEST_DIR"
# Files should still be owned by nobody:users
# Check container logs
docker logs nzbget --tail 50 | grep -i removesamples
# Verify NZBGet sees the extension
# Check NZBGet web interface: Settings β Extension Manager
Unraid Community Applications NZBGet
# Standard CA NZBGet container settings
Container: nzbget
Repository: linuxserver/nzbget
Config Path: /mnt/user/appdata/nzbget/
Downloads: /mnt/user/downloads/nzbget/
Scripts: /mnt/user/appdata/nzbget/scripts/
# User settings typically
PUID: 99
PGID: 100
User: nobody
Group: users
πͺ Windows Testing
Windows Native NZBGet
Prerequisites:
- NZBGet installed on Windows
- Python 3.8+ installed
- RemoveSamples extension installed
- PowerShell or Command Prompt access
Step 1: Locate NZBGet Installation
:: Common NZBGet locations
dir "C:\Program Files\NZBGet"
dir "C:\Program Files (x86)\NZBGet"
dir "%PROGRAMFILES%\NZBGet"
:: Check for scripts directory
dir "C:\Program Files\NZBGet\scripts\RemoveSamples"
Step 2: Create Test Directory
:: Create test directory
mkdir C:\Temp\RemoveSamples-Windows-Test
cd C:\Temp\RemoveSamples-Windows-Test
:: Create test files
echo Movie content > Movie.2023.1080p.mkv
echo Sample content > Movie.2023.sample.mkv
echo Sample clip > sample.mp4
echo Audio content > soundtrack.mp3
echo Sample audio > sample_track.mp3
:: Create sample directory
mkdir samples
echo Preview content > samples\preview.mkv
Step 3: Set Environment Variables
:: Set required environment variables
set NZBPP_DIRECTORY=C:\Temp\RemoveSamples-Windows-Test
set NZBPP_STATUS=SUCCESS
set NZBPP_NZBNAME=Windows-Test-Movie
set NZBPO_REMOVEDIRECTORIES=Yes
set NZBPO_REMOVEFILES=Yes
set NZBPO_DEBUG=Yes
set NZBPO_VIDEOSIZETHRESHOLDMB=1
set NZBPO_AUDIOSIZETHRESHOLDMB=1
set NZBPO_VIDEOEXTS=.mkv,.mp4,.avi
set NZBPO_AUDIOEXTS=.mp3,.flac,.aac
Step 4: Run Test
:: Run RemoveSamples (adjust path as needed)
python "C:\Program Files\NZBGet\scripts\RemoveSamples\main.py"
:: Check results
dir
PowerShell Testing Script
# PowerShell automated test script
$TestDir = "C:\Temp\RemoveSamples-PS-Test"
$ScriptPath = "C:\Program Files\NZBGet\scripts\RemoveSamples\main.py"
# Create test directory
New-Item -ItemType Directory -Path $TestDir -Force
Set-Location $TestDir
# Create test files
"Movie content" | Out-File "Movie.2023.1080p.mkv"
"Sample content" | Out-File "Movie.2023.sample.mkv"
"Sample clip" | Out-File "sample.mp4"
"Audio content" | Out-File "soundtrack.mp3"
"Sample audio" | Out-File "sample_track.mp3"
# Create sample directory
New-Item -ItemType Directory -Path "samples" -Force
"Preview content" | Out-File "samples\preview.mkv"
# Set environment variables
$env:NZBPP_DIRECTORY = $TestDir
$env:NZBPP_STATUS = "SUCCESS"
$env:NZBPP_NZBNAME = "PowerShell-Test-Movie"
$env:NZBPO_REMOVEDIRECTORIES = "Yes"
$env:NZBPO_REMOVEFILES = "Yes"
$env:NZBPO_DEBUG = "Yes"
$env:NZBPO_VIDEOSIZETHRESHOLDMB = "1"
$env:NZBPO_AUDIOSIZETHRESHOLDMB = "1"
$env:NZBPO_VIDEOEXTS = ".mkv,.mp4,.avi"
$env:NZBPO_AUDIOEXTS = ".mp3,.flac,.aac"
# Run test
Write-Host "Running RemoveSamples test..."
python $ScriptPath
# Show results
Write-Host "Test results:"
Get-ChildItem -Recurse
π macOS Testing
macOS Native NZBGet
Prerequisites:
- NZBGet installed via Homebrew or manual installation
- Python 3.8+ (usually pre-installed or via Homebrew)
- RemoveSamples extension installed
Step 1: Locate NZBGet Installation
# Common macOS NZBGet locations
ls -la /usr/local/share/nzbget/scripts/
ls -la /opt/homebrew/share/nzbget/scripts/
ls -la ~/Applications/NZBGet/scripts/
# If installed via Homebrew
brew --prefix nzbget
Step 2: Create Test Directory
# Create test directory
TEST_DIR="/tmp/RemoveSamples-macOS-Test"
mkdir -p "$TEST_DIR"
cd "$TEST_DIR"
# Create test files
echo "Movie content" > Movie.2023.1080p.mkv
echo "Sample content" > Movie.2023.sample.mkv
echo "Sample clip" > sample.mp4
echo "Audio content" > soundtrack.mp3
echo "Sample audio" > sample_track.mp3
# Create sample directory
mkdir samples
echo "Preview content" > samples/preview.mkv
Step 3: Run Test
# Set environment variables
export NZBPP_DIRECTORY="$TEST_DIR"
export NZBPP_STATUS="SUCCESS"
export NZBPP_NZBNAME="macOS-Test-Movie"
export NZBPO_REMOVEDIRECTORIES="Yes"
export NZBPO_REMOVEFILES="Yes"
export NZBPO_DEBUG="Yes"
export NZBPO_VIDEOSIZETHRESHOLDMB="1"
export NZBPO_AUDIOSIZETHRESHOLDMB="1"
export NZBPO_VIDEOEXTS=".mkv,.mp4,.avi"
export NZBPO_AUDIOEXTS=".mp3,.flac,.aac"
# Run RemoveSamples (adjust path as needed)
python3 /usr/local/share/nzbget/scripts/RemoveSamples/main.py
# Check results
ls -la
π Advanced Testing Scenarios
Scenario 1: Edge Cases Testing
# Create files with tricky names
echo "content" > "Movie.Sample.Title.2023.mkv" # "Sample" in title
echo "content" > "resample.mkv" # Contains "sample" but different word
echo "content" > "sampling_rate.wav" # Contains "sample" but different context
echo "content" > "SAMPLE.mkv" # All caps
echo "content" > "ΡΠ°ΠΉΠ».sample.mkv" # Unicode characters
echo "content" > "movie with spaces.sample.mkv" # Spaces in filename
Scenario 2: Size Threshold Testing
# Test files around thresholds
dd if=/dev/zero of="exactly_150MB.mkv" bs=1M count=150 # Exactly at threshold
dd if=/dev/zero of="just_over_150MB.mkv" bs=1M count=151 # Just over
dd if=/dev/zero of="just_under_150MB.mkv" bs=1M count=149 # Just under
Scenario 3: Directory Structure Testing
# Complex directory structures
mkdir -p "Movie.2023/Bonus/samples" # Nested samples
mkdir -p "Movie.2023/SAMPLE_FOOTAGE" # Sample in directory name
mkdir -p "Movie.2023/Behind_The_Scenes" # Legitimate directory
mkdir -p "Movie.2023/samples/more_samples" # Deeply nested samples
Scenario 4: Mixed Content Testing
# Directory with mixed content
mkdir mixed_content
echo "legitimate" > mixed_content/movie.mkv
echo "sample" > mixed_content/sample.mkv
echo "more legitimate" > mixed_content/behind_scenes.mkv
Scenario 5: Permission Testing
# Test with different permissions
echo "content" > readonly_sample.mkv
chmod 444 readonly_sample.mkv # Read-only file
mkdir readonly_samples
echo "content" > readonly_samples/clip.mkv
chmod -R 555 readonly_samples # Read-only directory
π Understanding Test Results
Expected Behavior Matrix
File Type | Pattern Match | Size Check | Expected Result |
---|---|---|---|
Video with "sample" pattern | β Yes | Any size | REMOVED |
Video without pattern | β No | Below threshold | PRESERVED |
Video without pattern | β No | Above threshold | PRESERVED |
Audio with "sample" pattern | β Yes | Any size | REMOVED |
Audio without pattern | β No | Below threshold | PRESERVED |
Directory with "sample" pattern | β Yes | N/A | REMOVED |
Directory without pattern | β No | N/A | PRESERVED |
Debug Output Interpretation
[DEBUG] RemoveSamples: Checking file: movie.sample.mkv
[DEBUG] RemoveSamples: Pattern match: 'sample' found with word boundary
[DEBUG] RemoveSamples: File extension: .mkv is video file
[DEBUG] RemoveSamples: Size check: 45MB < 150MB threshold
[INFO] RemoveSamples: Removing sample file: movie.sample.mkv
What this means:
- β Pattern detected: File contains "sample" pattern
- β Video file confirmed: Extension matches video list
- β Below threshold: File size under limit
- β Action taken: File removed
Common Test Results
β Successful test indicators:
- Sample files and directories removed
- Legitimate content preserved
- Debug logs show correct detection logic
- No errors in execution
β Issues to investigate:
- Legitimate files removed (thresholds too high)
- Sample files not removed (patterns not matching)
- Permission errors during removal
- Python execution errors
π¨ Troubleshooting Test Issues
Issue: Python Not Found
# Check Python installation
python3 --version
which python3
# Alternative Python commands to try
python --version
/usr/bin/python3 --version
Issue: Permission Denied
# Check file permissions
ls -la /path/to/scripts/RemoveSamples/main.py
# Fix permissions
chmod 755 /path/to/scripts/RemoveSamples/main.py
Issue: Module Import Errors
# Test basic Python functionality
python3 -c "import os, sys, json, re; print('Python modules OK')"
Issue: Files Not Removed
Check configuration:
- Remove Files: Yes
- Remove Directories: Yes
- Appropriate thresholds for test file sizes
- Debug mode enabled to see detection logic
Issue: Container Path Problems
# Verify container paths match host paths
docker exec container ls -la /downloads/test/
ls -la /host/path/to/downloads/test/
Issue: Environment Variables Not Set
# Verify all required variables
env | grep NZBP
π Test Checklist
Pre-Test Checklist
- RemoveSamples installed and visible in Extension Manager
- Python 3.8+ available and working
- Test directory created in safe location
- Backup of important data (if testing near real downloads)
Test Execution Checklist
- Test files created with appropriate sizes
- Environment variables set correctly
- RemoveSamples executed successfully
- Results match expectations
- Debug logs reviewed (if enabled)
Post-Test Checklist
- Test directory cleaned up
- Results documented
- Any issues identified and addressed
- Configuration adjusted if needed
π― Test Automation Script
Complete Test Script (Linux/macOS)
#!/bin/bash
# RemoveSamples Automated Test Script
# Usage: ./test-removesamples.sh [scripts-path]
set -e # Exit on error
SCRIPTS_PATH="${1:-/opt/nzbget/scripts}"
TEST_DIR="/tmp/RemoveSamples-Auto-Test-$(date +%s)"
echo "=== RemoveSamples Automated Test ==="
echo "Scripts path: $SCRIPTS_PATH"
echo "Test directory: $TEST_DIR"
# Create test environment
mkdir -p "$TEST_DIR"
cd "$TEST_DIR"
# Create test files
echo "Creating test files..."
echo "movie content" > "Movie.2023.1080p.mkv" # Should remain
echo "sample content" > "Movie.2023.sample.mkv" # Should be removed
echo "sample clip" > "sample.mp4" # Should be removed
echo "audio content" > "soundtrack.mp3" # Should remain
echo "sample audio" > "sample_track.mp3" # Should be removed
mkdir samples # Should be removed
echo "clip content" > "samples/preview.mkv"
mkdir "Bonus_Features" # Should remain
echo "bonus content" > "Bonus_Features/extras.mkv"
echo "Test files created:"
find . -type f -exec ls -lh {} \;
# Set environment variables
export NZBPP_DIRECTORY="$TEST_DIR"
export NZBPP_STATUS="SUCCESS"
export NZBPP_NZBNAME="Automated-Test-Movie"
export NZBPO_REMOVEDIRECTORIES="Yes"
export NZBPO_REMOVEFILES="Yes"
export NZBPO_DEBUG="Yes"
export NZBPO_VIDEOSIZETHRESHOLDMB="1" # Low threshold for small test files
export NZBPO_AUDIOSIZETHRESHOLDMB="1" # Low threshold for small test files
export NZBPO_VIDEOEXTS=".mkv,.mp4,.avi"
export NZBPO_AUDIOEXTS=".mp3,.flac,.aac"
# Run RemoveSamples
echo "Running RemoveSamples..."
python3 "$SCRIPTS_PATH/RemoveSamples/main.py"
# Check results
echo "=== Test Results ==="
REMAINING_FILES=$(find . -type f | wc -l)
echo "Files remaining: $REMAINING_FILES"
find . -type f -exec ls -lh {} \;
# Validate results
EXPECTED_FILES=("Movie.2023.1080p.mkv" "soundtrack.mp3" "Bonus_Features/extras.mkv")
PASS=true
for expected in "${EXPECTED_FILES[@]}"; do
if [ ! -f "$expected" ](/nzbgetcom/Extension-RemoveSamples/wiki/-!--f-"$expected"-); then
echo "β FAIL: Expected file missing: $expected"
PASS=false
else
echo "β
PASS: Expected file present: $expected"
fi
done
UNEXPECTED_FILES=("Movie.2023.sample.mkv" "sample.mp4" "sample_track.mp3" "samples/preview.mkv")
for unexpected in "${UNEXPECTED_FILES[@]}"; do
if [ -f "$unexpected" ](/nzbgetcom/Extension-RemoveSamples/wiki/--f-"$unexpected"-); then
echo "β FAIL: Unexpected file present: $unexpected"
PASS=false
else
echo "β
PASS: Unexpected file removed: $unexpected"
fi
done
# Cleanup
cd /
rm -rf "$TEST_DIR"
# Final result
if [ "$PASS" == "true" ](/nzbgetcom/Extension-RemoveSamples/wiki/-"$PASS"-==-"true"-); then
echo "π TEST PASSED: RemoveSamples is working correctly!"
exit 0
else
echo "β TEST FAILED: RemoveSamples did not behave as expected!"
exit 1
fi
Windows PowerShell Test Script
# RemoveSamples Automated Test Script for Windows
# Usage: .\Test-RemoveSamples.ps1 -ScriptsPath "C:\Program Files\NZBGet\scripts"
param(
[Parameter(Mandatory=$false)]
[string]$ScriptsPath = "C:\Program Files\NZBGet\scripts"
)
$TestDir = "C:\Temp\RemoveSamples-Auto-Test-$(Get-Date -Format 'yyyyMMddHHmmss')"
Write-Host "=== RemoveSamples Automated Test ===" -ForegroundColor Green
Write-Host "Scripts path: $ScriptsPath"
Write-Host "Test directory: $TestDir"
# Create test environment
New-Item -ItemType Directory -Path $TestDir -Force | Out-Null
Set-Location $TestDir
# Create test files
Write-Host "Creating test files..."
"movie content" | Out-File "Movie.2023.1080p.mkv" -Encoding UTF8
"sample content" | Out-File "Movie.2023.sample.mkv" -Encoding UTF8
"sample clip" | Out-File "sample.mp4" -Encoding UTF8
"audio content" | Out-File "soundtrack.mp3" -Encoding UTF8
"sample audio" | Out-File "sample_track.mp3" -Encoding UTF8
New-Item -ItemType Directory -Path "samples" -Force | Out-Null
"clip content" | Out-File "samples\preview.mkv" -Encoding UTF8
New-Item -ItemType Directory -Path "Bonus_Features" -Force | Out-Null
"bonus content" | Out-File "Bonus_Features\extras.mkv" -Encoding UTF8
Write-Host "Test files created:"
Get-ChildItem -Recurse | Format-Table Name, Length
# Set environment variables
$env:NZBPP_DIRECTORY = $TestDir
$env:NZBPP_STATUS = "SUCCESS"
$env:NZBPP_NZBNAME = "Automated-Test-Movie"
$env:NZBPO_REMOVEDIRECTORIES = "Yes"
$env:NZBPO_REMOVEFILES = "Yes"
$env:NZBPO_DEBUG = "Yes"
$env:NZBPO_VIDEOSIZETHRESHOLDMB = "1"
$env:NZBPO_AUDIOSIZETHRESHOLDMB = "1"
$env:NZBPO_VIDEOEXTS = ".mkv,.mp4,.avi"
$env:NZBPO_AUDIOEXTS = ".mp3,.flac,.aac"
# Run RemoveSamples
Write-Host "Running RemoveSamples..."
& python "$ScriptsPath\RemoveSamples\main.py"
# Check results
Write-Host "=== Test Results ===" -ForegroundColor Green
$RemainingFiles = (Get-ChildItem -Recurse -File).Count
Write-Host "Files remaining: $RemainingFiles"
Get-ChildItem -Recurse | Format-Table Name, Length
# Validate results
$ExpectedFiles = @("Movie.2023.1080p.mkv", "soundtrack.mp3", "Bonus_Features\extras.mkv")
$Pass = $true
foreach ($expected in $ExpectedFiles) {
if (Test-Path $expected) {
Write-Host "β
PASS: Expected file present: $expected" -ForegroundColor Green
} else {
Write-Host "β FAIL: Expected file missing: $expected" -ForegroundColor Red
$Pass = $false
}
}
$UnexpectedFiles = @("Movie.2023.sample.mkv", "sample.mp4", "sample_track.mp3", "samples\preview.mkv")
foreach ($unexpected in $UnexpectedFiles) {
if (Test-Path $unexpected) {
Write-Host "β FAIL: Unexpected file present: $unexpected" -ForegroundColor Red
$Pass = $false
} else {
Write-Host "β
PASS: Unexpected file removed: $unexpected" -ForegroundColor Green
}
}
# Cleanup
Set-Location C:\
Remove-Item -Path $TestDir -Recurse -Force
# Final result
if ($Pass) {
Write-Host "π TEST PASSED: RemoveSamples is working correctly!" -ForegroundColor Green
exit 0
} else {
Write-Host "β TEST FAILED: RemoveSamples did not behave as expected!" -ForegroundColor Red
exit 1
}
π Test Success Criteria
Minimum Passing Requirements
For a test to be considered successful, the following must be true:
β File Preservation (Critical):
- Large legitimate files remain untouched
- Files without sample patterns above size threshold preserved
- Normal directories without sample patterns preserved
β Sample Detection (Critical):
- Files with "sample" pattern removed regardless of size
- Directories with "sample" patterns completely removed
- Files below size threshold (without pattern) preserved (size alone doesn't trigger removal)
β System Stability (Critical):
- No Python errors during execution
- No permission errors that prevent operation
- Extension completes successfully (exit code 93)
Advanced Success Indicators
β Edge Case Handling:
- Unicode filenames processed correctly
- Files with spaces in names handled properly
- Case-insensitive pattern matching works
- Word boundary detection prevents false positives
β Performance:
- Test completes in reasonable time (< 30 seconds for standard test)
- Memory usage remains stable
- No file corruption or data loss
π Interpreting Test Logs
Debug Log Analysis
When debug mode is enabled, look for these log patterns:
Successful Pattern Detection:
[DEBUG] RemoveSamples: Checking file: movie.sample.mkv
[DEBUG] RemoveSamples: Pattern check: 'sample' found with word boundary
[DEBUG] RemoveSamples: Extension check: .mkv is video file
[DEBUG] RemoveSamples: Size check: 45MB < 150MB threshold
[INFO] RemoveSamples: Removing sample file: movie.sample.mkv
Successful Preservation:
[DEBUG] RemoveSamples: Checking file: movie.1080p.mkv
[DEBUG] RemoveSamples: Pattern check: no sample pattern found
[DEBUG] RemoveSamples: Size check: 8500MB > 150MB threshold
[DEBUG] RemoveSamples: Decision: PRESERVE (no pattern + above threshold)
Directory Processing:
[DEBUG] RemoveSamples: Checking directory: samples/
[DEBUG] RemoveSamples: Directory pattern match: 'samples' matches sample pattern
[INFO] RemoveSamples: Removing sample directory: samples/ (2 files)
Error Log Analysis
Permission Issues:
[ERROR] RemoveSamples: Permission denied: /path/to/file
[ERROR] RemoveSamples: Cannot remove directory: Permission denied
Solution: Check file/directory permissions and ownership
Python Issues:
[ERROR] RemoveSamples: Python interpreter not found
[ERROR] RemoveSamples: ModuleNotFoundError: No module named 'json'
Solution: Verify Python installation and version
π§ Customizing Tests for Your Environment
Adjusting Test File Sizes
# For systems with different thresholds
# If your video threshold is 300MB:
dd if=/dev/zero of="large_movie.mkv" bs=1M count=400 # Above threshold
dd if=/dev/zero of="sample_video.mkv" bs=1M count=250 # Below threshold
# If your audio threshold is 10MB:
dd if=/dev/zero of="full_song.mp3" bs=1M count=12 # Above threshold
dd if=/dev/zero of="sample_audio.mp3" bs=1M count=8 # Below threshold
Testing Custom Extensions
# If you've added custom video extensions
export NZBPO_VIDEOEXTS=".mkv,.mp4,.avi,.webm,.ts,.m2ts"
# If you've added custom audio extensions
export NZBPO_AUDIOEXTS=".mp3,.flac,.aac,.dts,.ac3"
Testing Different Configurations
# Conservative configuration test
export NZBPO_VIDEOSIZETHRESHOLDMB="500"
export NZBPO_AUDIOSIZETHRESHOLDMB="10"
# Aggressive configuration test
export NZBPO_VIDEOSIZETHRESHOLDMB="50"
export NZBPO_AUDIOSIZETHRESHOLDMB="1"
# Files-only test
export NZBPO_REMOVEDIRECTORIES="No"
export NZBPO_REMOVEFILES="Yes"
# Directories-only test
export NZBPO_REMOVEDIRECTORIES="Yes"
export NZBPO_REMOVEFILES="No"
π Support and Documentation
If Tests Fail
- Review the debug logs for specific error messages
- Check the Troubleshooting Guide for common issues
- Verify your configuration against the Configuration Reference
- Report issues via GitHub Issues with:
- Your test results
- Debug logs
- System information
- Configuration settings
Additional Resources
- FAQ - Common questions and answers
- Installation Guide - Setup instructions
- Configuration Reference - Complete settings guide
- Detection Logic - How sample detection works
Ready to test? Choose your platform above and follow the step-by-step instructions!
Having issues? β Troubleshooting Guide | FAQ