208 lines
6.2 KiB
Bash
Executable File
208 lines
6.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# test_dicom2pacs.sh - Automatisiertes Testskript für dicom2pacs
|
|
|
|
set -e # Beende bei Fehlern
|
|
|
|
# Farben für Ausgabe
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo "=== dicom2pacs Test-Suite ==="
|
|
echo ""
|
|
|
|
# 1. Prüfe ob venv existiert
|
|
if [ ! -d "venv" ]; then
|
|
echo -e "${YELLOW}Warnung: venv nicht gefunden. Erstelle es...${NC}"
|
|
python3 -m venv venv
|
|
fi
|
|
|
|
# 2. Aktiviere venv
|
|
echo "Aktiviere virtuelles Environment..."
|
|
source venv/bin/activate
|
|
|
|
# 3. Prüfe ob pydicom installiert ist
|
|
if ! python3 -c "import pydicom" 2>/dev/null; then
|
|
echo "Installiere pydicom..."
|
|
pip install pydicom
|
|
fi
|
|
|
|
# 4. Erstelle Test-Ordner
|
|
TEST_DIR="$HOME/Downloads/test_dicom"
|
|
echo ""
|
|
echo "Erstelle Test-Ordner: $TEST_DIR"
|
|
mkdir -p "$TEST_DIR"
|
|
|
|
# 5. Kopiere Test-DICOM-Dateien
|
|
echo "Kopiere Test-DICOM-Dateien..."
|
|
|
|
# Prüfe ob gebaute App existiert
|
|
if [ -d "dist/dicom2pacs.app" ]; then
|
|
PYDICOM_PATH="dist/dicom2pacs.app/Contents/Resources/lib/python3.13/pydicom/data/test_files"
|
|
if [ -d "$PYDICOM_PATH" ]; then
|
|
cp "$PYDICOM_PATH/CT_small.dcm" "$TEST_DIR/" 2>/dev/null || echo "CT_small.dcm nicht gefunden"
|
|
cp "$PYDICOM_PATH/MR_small.dcm" "$TEST_DIR/" 2>/dev/null || echo "MR_small.dcm nicht gefunden"
|
|
cp "$PYDICOM_PATH/image_dfl.dcm" "$TEST_DIR/" 2>/dev/null || echo "image_dfl.dcm nicht gefunden"
|
|
fi
|
|
fi
|
|
|
|
# Alternative: Prüfe ob pydicom im venv installiert ist
|
|
if [ -d "venv/lib/python3.13/site-packages/pydicom/data/test_files" ]; then
|
|
PYDICOM_VENV_PATH="venv/lib/python3.13/site-packages/pydicom/data/test_files"
|
|
cp "$PYDICOM_VENV_PATH/CT_small.dcm" "$TEST_DIR/" 2>/dev/null || true
|
|
cp "$PYDICOM_VENV_PATH/MR_small.dcm" "$TEST_DIR/" 2>/dev/null || true
|
|
cp "$PYDICOM_VENV_PATH/image_dfl.dcm" "$TEST_DIR/" 2>/dev/null || true
|
|
fi
|
|
|
|
# Prüfe ob Dateien kopiert wurden
|
|
DICOM_COUNT=$(find "$TEST_DIR" -name "*.dcm" 2>/dev/null | wc -l | tr -d ' ')
|
|
if [ "$DICOM_COUNT" -eq 0 ]; then
|
|
echo -e "${RED}FEHLER: Keine DICOM-Testdateien gefunden!${NC}"
|
|
echo "Bitte manuell DICOM-Dateien nach $TEST_DIR kopieren"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ $DICOM_COUNT DICOM-Dateien gefunden${NC}"
|
|
|
|
# 6. Prüfe Konfiguration
|
|
echo ""
|
|
echo "Prüfe Konfiguration..."
|
|
CONFIG_FILE="$HOME/.dicom2pacs.conf"
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
|
echo -e "${YELLOW}Konfigurationsdatei nicht gefunden. Wird beim ersten Start erstellt.${NC}"
|
|
else
|
|
echo -e "${GREEN}✓ Konfigurationsdatei gefunden${NC}"
|
|
cat "$CONFIG_FILE"
|
|
fi
|
|
|
|
# 7. Test-Parameter
|
|
TEST_NAME="Mustermann"
|
|
TEST_VORNAME="Max"
|
|
TEST_GEBURTSDATUM="19800101"
|
|
TEST_PATIENTEN_ID="TEST12345"
|
|
|
|
echo ""
|
|
echo "=== Test-Parameter ==="
|
|
echo "Name: $TEST_NAME"
|
|
echo "Vorname: $TEST_VORNAME"
|
|
echo "Geburtsdatum: $TEST_GEBURTSDATUM"
|
|
echo "Patienten-ID: $TEST_PATIENTEN_ID"
|
|
echo "Test-Ordner: $TEST_DIR"
|
|
echo ""
|
|
|
|
# 8. Prüfe ob App existiert
|
|
if [ ! -f "dicom2pacs.py" ]; then
|
|
echo -e "${RED}FEHLER: dicom2pacs.py nicht gefunden!${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 9. Test-Menü
|
|
echo "=== Test-Menü ==="
|
|
echo "1. GUI-Test (manuell - App öffnet sich)"
|
|
echo "2. Unit-Test (prüft Module ohne GUI)"
|
|
echo "3. Integrationstest (vollständiger Test)"
|
|
echo "4. Aufräumen (löscht Test-Ordner)"
|
|
echo ""
|
|
read -p "Wählen Sie eine Option (1-4): " choice
|
|
|
|
case $choice in
|
|
1)
|
|
echo ""
|
|
echo -e "${GREEN}Starte GUI-Test...${NC}"
|
|
echo "Die App öffnet sich jetzt."
|
|
echo "Bitte wählen Sie den Ordner: $TEST_DIR"
|
|
echo ""
|
|
python dicom2pacs.py "$TEST_NAME" "$TEST_VORNAME" "$TEST_GEBURTSDATUM" "$TEST_PATIENTEN_ID"
|
|
;;
|
|
2)
|
|
echo ""
|
|
echo -e "${GREEN}Starte Unit-Tests...${NC}"
|
|
python3 << 'EOF'
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, os.getcwd())
|
|
|
|
print("Teste dicom_processing...")
|
|
try:
|
|
import dicom_processing
|
|
print("✓ dicom_processing importiert")
|
|
|
|
# Test is_dicom_file
|
|
test_file = os.path.expanduser("~/Downloads/test_dicom/CT_small.dcm")
|
|
if os.path.exists(test_file):
|
|
result = dicom_processing.is_dicom_file(test_file)
|
|
print(f"✓ is_dicom_file: {result}")
|
|
else:
|
|
print("⚠ Test-Datei nicht gefunden")
|
|
except Exception as e:
|
|
print(f"✗ Fehler: {e}")
|
|
|
|
print("\nTeste file_management...")
|
|
try:
|
|
import file_management
|
|
print("✓ file_management importiert")
|
|
|
|
test_dir = os.path.expanduser("~/Downloads/test_dicom")
|
|
if os.path.exists(test_dir):
|
|
files = file_management.find_dicom_files(test_dir)
|
|
if files != 'non_found':
|
|
dicom_files, count = files
|
|
print(f"✓ find_dicom_files: {count} Dateien gefunden")
|
|
else:
|
|
print("⚠ Keine DICOM-Dateien gefunden")
|
|
else:
|
|
print("⚠ Test-Ordner nicht gefunden")
|
|
except Exception as e:
|
|
print(f"✗ Fehler: {e}")
|
|
|
|
print("\nTeste network_utils...")
|
|
try:
|
|
import network_utils
|
|
print("✓ network_utils importiert")
|
|
except Exception as e:
|
|
print(f"✗ Fehler: {e}")
|
|
|
|
print("\n✓ Unit-Tests abgeschlossen")
|
|
EOF
|
|
;;
|
|
3)
|
|
echo ""
|
|
echo -e "${GREEN}Starte Integrationstest...${NC}"
|
|
echo "Dieser Test führt die App im Hintergrund aus."
|
|
echo "Bitte beachten Sie, dass die GUI geöffnet wird."
|
|
echo ""
|
|
read -p "Fortfahren? (j/n): " confirm
|
|
if [ "$confirm" = "j" ] || [ "$confirm" = "J" ]; then
|
|
python dicom2pacs.py "$TEST_NAME" "$TEST_VORNAME" "$TEST_GEBURTSDATUM" "$TEST_PATIENTEN_ID" &
|
|
echo "App gestartet. PID: $!"
|
|
echo "Bitte testen Sie die App manuell."
|
|
fi
|
|
;;
|
|
4)
|
|
echo ""
|
|
echo -e "${YELLOW}Lösche Test-Ordner...${NC}"
|
|
if [ -d "$TEST_DIR" ]; then
|
|
rm -rf "$TEST_DIR"
|
|
echo -e "${GREEN}✓ Test-Ordner gelöscht${NC}"
|
|
else
|
|
echo "Test-Ordner existiert nicht"
|
|
fi
|
|
|
|
# Lösche auch Transfer-Ordner falls vorhanden
|
|
TRANSFER_DIR="$HOME/Downloads/D2OTrans"
|
|
if [ -d "$TRANSFER_DIR" ]; then
|
|
echo "Lösche Transfer-Ordner..."
|
|
rm -rf "$TRANSFER_DIR"
|
|
echo -e "${GREEN}✓ Transfer-Ordner gelöscht${NC}"
|
|
fi
|
|
;;
|
|
*)
|
|
echo -e "${RED}Ungültige Option${NC}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
echo -e "${GREEN}=== Test abgeschlossen ===${NC}"
|