#!/usr/bin/env bashset -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/agentos-patch-std-regression.XXXXXX")" cleanup() { rm -rf "$TMP_DIR"} trap cleanup EXIT SOURCE_ROOT="$TMP_DIR/rust"PATCHES_DIR="$TMP_DIR/patches"mkdir -p "$SOURCE_ROOT/library/std/src" "$PATCHES_DIR" cat > "$SOURCE_ROOT/library/std/src/example.rs" <<'EOF'beforeEOF cat > "$PATCHES_DIR/0001-valid.patch" <<'EOF'--- a/library/std/src/example.rs+++ b/library/std/src/example.rs@@ -1 +1 @@-before+afterEOF PATCH_STD_SOURCE_ROOT="$SOURCE_ROOT" \PATCH_STD_PATCHES_DIR="$PATCHES_DIR" \ "$SCRIPT_DIR/patch-std.sh" --check > "$TMP_DIR/valid.log" # Model an installed source tree that already has the valid patch. The malformed# modification below targets this existing file, which the former fallback# incorrectly accepted solely because the `+++ b/...` path existed.patch --batch -p1 -d "$SOURCE_ROOT" < "$PATCHES_DIR/0001-valid.patch" > /dev/null cat > "$PATCHES_DIR/0002-malformed.patch" <<'EOF'--- a/library/std/src/example.rs+++ b/library/std/src/example.rs@@ -10 +10 @@-context-that-does-not-exist+must-not-passEOF if PATCH_STD_SOURCE_ROOT="$SOURCE_ROOT" \ PATCH_STD_PATCHES_DIR="$PATCHES_DIR" \ "$SCRIPT_DIR/patch-std.sh" --check > "$TMP_DIR/invalid.log" 2>&1; then echo "ERROR: malformed modification patch passed validation" >&2 exit 1fi grep -q "0002-malformed.patch" "$TMP_DIR/invalid.log"echo "patch-std sequential validation regression: ok"
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
TMP_DIR="$(mktemp -d "${TMPDIR:-/tmp}/agentos-patch-std-regression.XXXXXX")"
cleanup() {
rm -rf "$TMP_DIR"
}
trap cleanup EXIT
SOURCE_ROOT="$TMP_DIR/rust"
PATCHES_DIR="$TMP_DIR/patches"
mkdir -p "$SOURCE_ROOT/library/std/src" "$PATCHES_DIR"
cat > "$SOURCE_ROOT/library/std/src/example.rs" <<'EOF'
before
EOF
cat > "$PATCHES_DIR/0001-valid.patch" <<'EOF'
--- a/library/std/src/example.rs
+++ b/library/std/src/example.rs
@@ -1 +1 @@
-before
+after
EOF
PATCH_STD_SOURCE_ROOT="$SOURCE_ROOT" \
PATCH_STD_PATCHES_DIR="$PATCHES_DIR" \
"$SCRIPT_DIR/patch-std.sh" --check > "$TMP_DIR/valid.log"
# Model an installed source tree that already has the valid patch. The malformed
# modification below targets this existing file, which the former fallback
# incorrectly accepted solely because the `+++ b/...` path existed.
patch --batch -p1 -d "$SOURCE_ROOT" < "$PATCHES_DIR/0001-valid.patch" > /dev/null
cat > "$PATCHES_DIR/0002-malformed.patch" <<'EOF'
--- a/library/std/src/example.rs
+++ b/library/std/src/example.rs
@@ -10 +10 @@
-context-that-does-not-exist
+must-not-pass
EOF
if PATCH_STD_SOURCE_ROOT="$SOURCE_ROOT" \
PATCH_STD_PATCHES_DIR="$PATCHES_DIR" \
"$SCRIPT_DIR/patch-std.sh" --check > "$TMP_DIR/invalid.log" 2>&1; then
echo "ERROR: malformed modification patch passed validation" >&2
exit 1
fi
grep -q "0002-malformed.patch" "$TMP_DIR/invalid.log"
echo "patch-std sequential validation regression: ok"