-
Notifications
You must be signed in to change notification settings - Fork 0
04_Testing_Guide
Comprehensive testing procedures to verify RemoveSamples functionality across different platforms and scenarios.
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
- RemoveSamples installed and configured
- Access to NZBGet scripts directory
- Basic command line knowledge
- 10 minutes of time
1. Create test directory:
# Navigate to a safe location (NOT in active downloads)
cd /tmp
mkdir -p RemoveSamples-Test
cd RemoveSamples-Test2. 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.mkv3. 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.py5. Check results:
ls -la
# Should show: Movie.2023.1080p.mkv and soundtrack.mp3
# Should NOT show: sample files or samples/ directory6. Cleanup:
cd .. && rm -rf RemoveSamples-TestPrerequisites:
- NZBGet installed via package manager or manual installation
- Python 3.8+ installed
- RemoveSamples extension installed
Detailed Test Procedure:
# 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/# 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 {} \;# 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 {} \;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 contents -
SAMPLE/directory and contents
# 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# Install dependencies if needed
sudo yum install python3 python3-pip
# Or for newer versions
sudo dnf install python3 python3-pip
# Check Python version
python3 --versionPrerequisites:
- Docker container running NZBGet
- Access to container terminal
- Volume mounts for scripts and downloads
# 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# 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# 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)# 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)# 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
"Prerequisites:
- Unraid server with NZBGet docker container
- SSH access to Unraid or use Unraid terminal
- RemoveSamples installed in NZBGet appdata
# SSH to Unraid server
ssh root@unraid-server-ip
# Or use Unraid web terminal
# Main β Terminal# Standard Unraid NZBGet paths
cd /mnt/user/appdata/nzbget/
# Verify RemoveSamples installation
ls -la scripts/RemoveSamples/
# Should show: main.py and manifest.json# 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/# 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"# 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# 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: usersPrerequisites:
- NZBGet installed on Windows
- Python 3.8+ installed
- RemoveSamples extension installed
- PowerShell or Command Prompt access
:: 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":: 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:: 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:: Run RemoveSamples (adjust path as needed)
python "C:\Program Files\NZBGet\scripts\RemoveSamples\main.py"
:: Check results
dir# 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 -RecursePrerequisites:
- NZBGet installed via Homebrew or manual installation
- Python 3.8+ (usually pre-installed or via Homebrew)
- RemoveSamples extension installed
# 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# 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# 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# 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# 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# 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# 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# 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| 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] 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
β 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
# Check Python installation
python3 --version
which python3
# Alternative Python commands to try
python --version
/usr/bin/python3 --version# Check file permissions
ls -la /path/to/scripts/RemoveSamples/main.py
# Fix permissions
chmod 755 /path/to/scripts/RemoveSamples/main.py# Test basic Python functionality
python3 -c "import os, sys, json, re; print('Python modules OK')"Check configuration:
- Remove Files: Yes
- Remove Directories: Yes
- Appropriate thresholds for test file sizes
- Debug mode enabled to see detection logic
# Verify container paths match host paths
docker exec container ls -la /downloads/test/
ls -la /host/path/to/downloads/test/# Verify all required variables
env | grep NZBP- 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 files created with appropriate sizes
- Environment variables set correctly
- RemoveSamples executed successfully
- Results match expectations
- Debug logs reviewed (if enabled)
- Test directory cleaned up
- Results documented
- Any issues identified and addressed
- Configuration adjusted if needed
#!/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" ]]; 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" ]]; 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" ]]; then
echo "π TEST PASSED: RemoveSamples is working correctly!"
exit 0
else
echo "β TEST FAILED: RemoveSamples did not behave as expected!"
exit 1
fi# 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
}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)
β 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
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)
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
# 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# 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"# 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"- 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
- 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