Skip to content

docs: match README help text to actual surge -help output #11

docs: match README help text to actual surge -help output

docs: match README help text to actual surge -help output #11

Workflow file for this run

name: Build and Test
on:
push:
branches: [ main, 'release/**' ]
pull_request:
branches: [ main ]
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc make zlib1g-dev
- name: Build nauty
run: |
curl -L -o nauty2_9_3.tar.gz https://users.cecs.anu.edu.au/~bdm/nauty/nauty2_9_3.tar.gz
tar xzf nauty2_9_3.tar.gz
cd nauty2_9_3
./configure && make
- name: Build surge
working-directory: src
run: |
make surge \
NAUTY=${{ github.workspace }}/nauty2_9_3 \
NAUTYLIB=${{ github.workspace }}/nauty2_9_3 \
CCOPT="-O3"
- name: Test surge
working-directory: src
run: |
./surge -help 2>&1 | head -3
./surge -u C6H6
./surge -u C4H10
- name: Cross-platform verification tests
working-directory: src
run: |
{
echo "=== surge -u C6H6 ==="
./surge -u C6H6 2>&1
echo "=== surge -u C4H10 ==="
./surge -u C4H10 2>&1
echo "=== surge -u C3H8 ==="
./surge -u C3H8 2>&1
echo "=== surge -u C7H8 ==="
./surge -u C7H8 2>&1
echo "=== surge -u C2H6O ==="
./surge -u C2H6O 2>&1
echo "=== surge -u C10H16O ==="
./surge -u C10H16O 2>&1
echo "=== surge -S C4H10 ==="
./surge -S C4H10 | sort
echo "=== surge -S C2H6O ==="
./surge -S C2H6O | sort
echo "=== surge -u C7H12O2N2 ==="
./surge -u C7H12O2N2 2>&1
echo "=== surge -u -R C10H8 ==="
./surge -u -R C10H8 2>&1
} > ../test-results.txt
cat ../test-results.txt
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: test-results-linux-x86_64
path: test-results.txt
- name: Build canonsdf
working-directory: src
run: |
make canonsdf \
NAUTY=${{ github.workspace }}/nauty2_9_3 \
NAUTYLIB=${{ github.workspace }}/nauty2_9_3 \
CCOPT="-O3"
- name: Upload Linux binary
uses: actions/upload-artifact@v4
with:
name: surge-linux-x86_64
path: src/surge
build-macos:
strategy:
matrix:
include:
- os: macos-14
arch: arm64
- os: macos-15
arch: arm64-m15
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Install nauty
run: brew install nauty
- name: Create nauty library symlink
run: |
NAUTY_LIB=$(brew --prefix nauty)/lib
ln -sf "$NAUTY_LIB/libnautyL1.a" "$NAUTY_LIB/nautyL1.a"
- name: Build surge
working-directory: src
run: |
make surge \
NAUTY=$(brew --prefix nauty)/include/nauty \
NAUTYLIB=$(brew --prefix nauty)/lib \
CCOPT="-O3"
- name: Test surge
working-directory: src
run: |
./surge -help 2>&1 | head -3
./surge -u C6H6
./surge -u C4H10
- name: Cross-platform verification tests
working-directory: src
run: |
{
echo "=== surge -u C6H6 ==="
./surge -u C6H6 2>&1
echo "=== surge -u C4H10 ==="
./surge -u C4H10 2>&1
echo "=== surge -u C3H8 ==="
./surge -u C3H8 2>&1
echo "=== surge -u C7H8 ==="
./surge -u C7H8 2>&1
echo "=== surge -u C2H6O ==="
./surge -u C2H6O 2>&1
echo "=== surge -u C10H16O ==="
./surge -u C10H16O 2>&1
echo "=== surge -S C4H10 ==="
./surge -S C4H10 | sort
echo "=== surge -S C2H6O ==="
./surge -S C2H6O | sort
echo "=== surge -u C7H12O2N2 ==="
./surge -u C7H12O2N2 2>&1
echo "=== surge -u -R C10H8 ==="
./surge -u -R C10H8 2>&1
} > ../test-results.txt
cat ../test-results.txt
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: test-results-macos-${{ matrix.arch }}
path: test-results.txt
- name: Upload macOS binary
uses: actions/upload-artifact@v4
with:
name: surge-macos-${{ matrix.arch }}
path: src/surge
build-windows:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
steps:
- uses: actions/checkout@v4
- uses: msys2/setup-msys2@v2
with:
msystem: UCRT64
install: >-
mingw-w64-ucrt-x86_64-gcc
make
mingw-w64-ucrt-x86_64-zlib
curl
tar
- name: Build nauty
run: |
curl -L -o nauty2_9_3.tar.gz https://users.cecs.anu.edu.au/~bdm/nauty/nauty2_9_3.tar.gz
tar xzf nauty2_9_3.tar.gz
cd nauty2_9_3
./configure && make
- name: Build surge
working-directory: src
run: |
make surge \
NAUTY=$(cygpath -u "$GITHUB_WORKSPACE")/nauty2_9_3 \
NAUTYLIB=$(cygpath -u "$GITHUB_WORKSPACE")/nauty2_9_3 \
CCOPT="-O3"
- name: Test surge
working-directory: src
run: |
./surge.exe -help 2>&1 | head -3
./surge.exe -u C6H6
./surge.exe -u C4H10
- name: Cross-platform verification tests
working-directory: src
run: |
{
echo "=== surge -u C6H6 ==="
./surge.exe -u C6H6 2>&1
echo "=== surge -u C4H10 ==="
./surge.exe -u C4H10 2>&1
echo "=== surge -u C3H8 ==="
./surge.exe -u C3H8 2>&1
echo "=== surge -u C7H8 ==="
./surge.exe -u C7H8 2>&1
echo "=== surge -u C2H6O ==="
./surge.exe -u C2H6O 2>&1
echo "=== surge -u C10H16O ==="
./surge.exe -u C10H16O 2>&1
echo "=== surge -S C4H10 ==="
./surge.exe -S C4H10 | sort
echo "=== surge -S C2H6O ==="
./surge.exe -S C2H6O | sort
echo "=== surge -u C7H12O2N2 ==="
./surge -u C7H12O2N2 2>&1
echo "=== surge -u -R C10H8 ==="
./surge.exe -u -R C10H8 2>&1
} > ../test-results.txt
cat ../test-results.txt
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: test-results-windows-x86_64
path: test-results.txt
- name: Upload Windows binary
uses: actions/upload-artifact@v4
with:
name: surge-windows-x86_64
path: src/surge.exe
verify-consistency:
needs: [build-linux, build-macos, build-windows]
runs-on: ubuntu-latest
steps:
- name: Download all test results
uses: actions/download-artifact@v4
with:
pattern: test-results-*
path: results
- name: Normalize and compare results across platforms
run: |
echo "=== Downloaded test results ==="
ls -la results/*/test-results.txt
# Normalize all results: strip \r, remove timing info
for f in results/*/test-results.txt; do
sed -i 's/\r$//' "$f"
sed -i 's/ in [0-9]*\.[0-9]* sec/ in X sec/g' "$f"
done
# Use Linux as the reference
reference="results/test-results-linux-x86_64/test-results.txt"
echo ""
echo "=== Reference results (Linux x86_64) ==="
cat "$reference"
failed=0
for result in results/*/test-results.txt; do
platform=$(basename $(dirname "$result"))
if [ "$result" = "$reference" ]; then
continue
fi
echo ""
echo "=== Comparing $platform against reference ==="
if diff -u "$reference" "$result"; then
echo "PASS: $platform matches reference"
else
echo "FAIL: $platform differs from reference!"
failed=1
fi
done
if [ $failed -eq 1 ]; then
echo ""
echo "FAILURE: Cross-platform results are inconsistent!"
exit 1
else
echo ""
echo "SUCCESS: All platforms produce identical results"
fi