Skip to content

ci: enable the ISC corpus sweep as the conformance gate #376

ci: enable the ISC corpus sweep as the conformance gate

ci: enable the ISC corpus sweep as the conformance gate #376

Workflow file for this run

name: rake
on:
push:
branches: [ main, v*, ci-check ]
tags: [ v* ]
pull_request:
jobs:
rspec:
name: Test on Ruby ${{ matrix.ruby }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
ruby: ["3.3", "3.4"]
os: [ubuntu-latest, windows-latest, macos-latest]
env:
BUNDLE_WITHOUT: "secryst"
SKIP_JS: "1"
SKIP_PYTHON: "1"
ISC_SWEEP: "1"
# The ISC corpus sweep: every map's own tests through every
# supported compiler (Interpreter, Compiler::Ruby), against the
# ../maps sibling from the monorepo checkout. The conformance gap
# it measured is closed (16,482 examples, 0 failures —
# interscript-ruby#779..#786); this is now the CI conformance
# gate for the corpus. The experimental Python bridge is excluded
# (SKIP_PYTHON) until its own corpus conformance work lands.
steps:
- name: Checkout monorepo
uses: actions/checkout@v7
with:
repository: interscript/interscript
- name: Bootstrap packages
run: ruby bootstrap.rb
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
working-directory: ruby
- name: Install Python helper and gems
working-directory: ruby
# bash everywhere: the PYBIN substitution is POSIX shell, which
# PowerShell (the windows default) cannot parse. --break-system-
# packages rides out PEP 668 on Homebrew-managed macos Pythons.
shell: bash
run: |
bundle config set --local with jsexec
bundle install
if bundle exec ruby -e 'require "pycall"' >/dev/null 2>&1; then
# PyCall binds whichever libpython it was built against, which
# is not necessarily the python that bare `pip` targets —
# install the regex helper into that interpreter.
PYBIN=$(bundle exec ruby -e 'require "pycall"; v = PyCall.sys.version[/\d+\.\d+/]; puts "python#{v}"')
if command -v "$PYBIN" >/dev/null 2>&1; then
"$PYBIN" -m pip install --break-system-packages regex || "$PYBIN" -m pip install regex
else
echo "$PYBIN not on PATH — python helper not installed"
fi
else
echo "pycall not bundled (SKIP_PYTHON) — python helper not installed"
fi
- name: RSpec
working-directory: ruby
run: bundle exec rspec
standard:
name: StandardRB
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
# The Gemfile's path dependency needs ../maps to exist for bundler
# to resolve; linting itself never loads it. actions/checkout
# cannot write outside the workspace, hence the plain clone.
- run: git clone --depth 1 https://github.com/interscript/maps ../maps
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.4"
bundler-cache: true
- run: bundle exec standardrb