Skip to content

Commit

Permalink
Batch files script
Browse files Browse the repository at this point in the history
  • Loading branch information
Alannah Carr committed Jan 22, 2024
1 parent 9096ff1 commit 4feb3e6
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 1 deletion.
38 changes: 37 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,30 @@ jobs:
- name: Check Cryptol Properties
run: bash scripts/test_all_properties.sh

batch-check:
runs-on: ubuntu-latest
container:
image: ghcr.io/galoisinc/cryptol:nightly
options: --user root
needs: load
env:
STAGE: check
steps:
- name: Installing dependencies..
run: |
apt update
apt install -y git
- name: Checkout
uses: actions/checkout@v4
- name: Check Cryptol Properties
run: bash scripts/run_batch_files.sh

prove:
runs-on: ubuntu-latest
container:
image: ghcr.io/galoisinc/cryptol:nightly
options: --user root
needs: check
needs: [check, batch-check]
steps:
- name: Installing dependencies..
run: |
Expand All @@ -66,3 +84,21 @@ jobs:
path: |
manual_proves.txt
fast_proves.txt
batch-prove:
runs-on: ubuntu-latest
container:
image: ghcr.io/galoisinc/cryptol:nightly
options: --user root
needs: [check, batch-check]
env:
STAGE: prove
steps:
- name: Installing dependencies..
run: |
apt update
apt install -y git
- name: Checkout
uses: actions/checkout@v4
- name: Check Cryptol Properties
run: bash scripts/run_batch_files.sh
56 changes: 56 additions & 0 deletions scripts/run_batch_files.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
pushd $DIR/.. > /dev/null

NUM_FILES=0
NUM_BATCH_FILES=0
BATCH_FILES=()
NUM_FAILS=0
FAILS=()

run_batch() {
for FILE in "$1"/*; do
if [ -d "$FILE" ]; then
run_batch "$FILE"
elif [[ -f "$FILE" && "$FILE" == *"$STAGE".bat ]]; then
NUM_FILES=$(($NUM_FILES+1))
echo "Running $FILE..."
result=$(cryptol -e --batch $FILE)
echo "$result"
if grep -q "Counterexample" <<< "$result"; then
NUM_FAILS=$(($NUM_FAILS+1))
FAILS+=("$FILE")
else
NUM_BATCH_FILES=$(($NUM_BATCH_FILES+1))
BATCH_FILES+=("$FILE")
fi
fi
done
}

# run_batch "Common"
run_batch "Primitive"

echo ""
echo "=== Done running $NUM_FILES Cryptol batch file(s) ==="

if (( $NUM_BATCH_FILES != 0 )); then
echo "$NUM_BATCH_FILES Cryptol batch files ran:"
for FILE in "${BATCH_FILES[@]}"; do
echo " $FILE"
done
fi

if (( $NUM_FAILS != 0 )); then
echo "$NUM_FAILS batch file(s) failed:"
for prop in "${FAILS[@]}"; do
echo " $prop"
done
exit 1
else
echo "All batch files succeeded."
exit 0
fi

popd > /dev/null

0 comments on commit 4feb3e6

Please sign in to comment.