Vor Änderungen am Bestätigungsdialog - Backup für Rollback
This commit is contained in:
207
test_dicom2pacs.sh
Executable file
207
test_dicom2pacs.sh
Executable 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}"
|
||||
Reference in New Issue
Block a user