Vor Änderungen am Bestätigungsdialog - Backup für Rollback

This commit is contained in:
René Mathieu
2026-01-17 14:08:03 +01:00
parent 0fef8d96c5
commit ff2bc82994
3 changed files with 635 additions and 0 deletions

207
test_dicom2pacs.sh Executable file
View File

@@ -0,0 +1,207 @@
#!/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}"