Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions .github/workflows/rake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,16 @@ jobs:
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.
# gate for the corpus. The Python bridge now runs too: the
# interscript-py engine is corpus-conformant (8,227 examples,
# 0 failures — interscript-py#11..#20) and is installed from
# its main branch below.

steps:
- name: Checkout monorepo
Expand All @@ -51,20 +52,25 @@ jobs:
# packages rides out PEP 668 on Homebrew-managed macos Pythons.
shell: bash
run: |
bundle config set --local with jsexec
bundle config set --local with jsexec pyexec
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}"')
# Windows names the interpreter python.exe, not python3.X.
command -v "$PYBIN" >/dev/null 2>&1 || PYBIN=python
if command -v "$PYBIN" >/dev/null 2>&1; then
"$PYBIN" -m pip install --break-system-packages regex || "$PYBIN" -m pip install regex
# The bridge needs the current engine; the PyPI release
# predates the conformance work.
"$PYBIN" -m pip install --break-system-packages "git+https://github.com/interscript/interscript-py@main" || "$PYBIN" -m pip install "git+https://github.com/interscript/interscript-py@main"
else
echo "$PYBIN not on PATH — python helper not installed"
fi
else
echo "pycall not bundled (SKIP_PYTHON) — python helper not installed"
echo "pycall not bundled — the python compiler leg is unavailable this run"
fi

- name: RSpec
Expand Down
7 changes: 6 additions & 1 deletion spec/interscript_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,12 @@
# Allow a bigger timeout for Rababa so that model files
# can be provisioned. This is temporary until we find a
# better location for this code.
timeout = /rababa/.match?(my_system_name) ? 100 : 5
# The Python bridge pays the per-map ISC emission and
# load on its first example — 5s is too tight on the
# slowest runner (windows, ruby 3.3). Real hangs still
# time out well below these ceilings.
base = /rababa/.match?(my_system_name) ? 100 : 5
timeout = (compiler.name.include?("Python") && base == 5) ? 15 : base
Timeout.timeout(timeout) do
result = Interscript.transliterate(my_system_name, from, cache, compiler: compiler)
expect(result).to eq(expected)
Expand Down
Loading