Ein Projekt, das andere ausführen können · Übung
Einen sauberen Neuaufbau belegen
Eine Übergabe ist überzeugender, wenn sie aus einem sauberen Stammverzeichnis funktioniert. Befolge die macOS-/Linux-Befehle der README in dieser Sitzung mit internem Netzwerkzugriff. Installiere aus dem geprüften Paketspiegel, führe die Fake-HTTP-Tests aus und zeige die CLI-Hilfe an. Führe keinen echten API-Aufruf aus.
python3 -m venv .venv
./.venv/bin/python -m pip install -r requirements-dev.txt
./.venv/bin/python -m pytest -q
./.venv/bin/python api_catalog.py --help
Kopiere anschließend nur die sechs selbst verfassten Dateien in einen neuen vorübergehenden Ordner unter /workspace, dessen Name ein Leerzeichen und nicht-ASCII-Text enthält. Dieser Ort unterstützt die in einer virtuellen Umgebung installierten nativen Bibliotheken; der /tmp-Mount der Website tut das nicht.
mktemp -d erstellt einen eindeutigen Ordner, sodass niemals ein vorhandener Lernordner wiederverwendet wird. Eine Shell-Variable ist ein Name, der Text speichert: proof_dir=... speichert den Pfad, $(...) liefert die Ausgabe des eingeschlossenen Befehls, und $proof_dir liest den Wert wieder aus. Die Anführungszeichen erhalten Leerzeichen. Kopiere nur die genannten Dateien, erstelle in der Kopie eine neue Umgebung und wiederhole die Prüfungen. Kopiere weder eine bestehende .venv noch rekursiv /workspace in seinen eigenen Unterordner.
proof_dir=$(mktemp -d "/workspace/Fresh Café Project.XXXXXX")
mkdir "$proof_dir/tests"
cp API_CONTRACT.md README.md api_catalog.py requirements.txt requirements-dev.txt "$proof_dir/"
cp tests/test_api_catalog.py "$proof_dir/tests/"
cd "$proof_dir"
python3 -m venv .venv
./.venv/bin/python -m pip install -r requirements-dev.txt
./.venv/bin/python -m pytest -q
./.venv/bin/python api_catalog.py --help
cd /workspace
rm -r "$proof_dir"
Der umständliche Ordnername ist Absicht. Ein Leerzeichen und ein Nicht-ASCII-Zeichen sind genau die Dinge, an denen ein Projekt scheitert, das heimlich von seinem eigenen Speicherort abhängt. In echten Ordnernamen kommen sie sehr häufig vor.
Prüfe, dass pytest besteht und die Hilfe ohne Abhängigkeitswarnungen erscheint. Die letzten beiden Befehle kehren zum ursprünglichen Projekt zurück und entfernen ausschließlich die eindeutige, mit mktemp erstellte Kopie samt ihrer abgeleiteten Umgebung. rm entfernt Dateien; seine Option -r entfernt auch das genannte Verzeichnis mit seinem Inhalt. Dabei wird nichts in den Papierkorb verschoben, verwende also genau den oben erzeugten Pfad $proof_dir. Deine ursprünglichen sechs selbst verfassten Dateien bleiben in /workspace. Entferne diesen Nachweisordner vor der Abgabe; .venv, Caches, Bytecode und die Kopie sind abgeleiteter Zustand und gehören nicht zur Übergabe.
Was belegt das zweite saubere Stammverzeichnis?
Aufgabe
Verwende die dokumentierte Entwicklungs-Abhängigkeitsdatei, um Fake-HTTP-Tests und --help auszuführen. Wiederhole dies anschließend aus einem vorübergehenden kopierten Stammverzeichnis unter /workspace mit einem Leerzeichen und einem Nicht-ASCII-Namen. Verwende einen eindeutigen neuen Ordner und eine neue Umgebung, kehre dann zum ursprünglichen Stammverzeichnis zurück und entferne ausschließlich diese Nachweiskopie. Gib nur die genau sechs selbst verfassten Dateien ab, ohne Umgebungen, Caches, Kopie oder erzeugte Ausgabe.