Skip to content

When parsing an invalid write, still add to the local table #4

When parsing an invalid write, still add to the local table

When parsing an invalid write, still add to the local table #4

Workflow file for this run

name: Main
concurrency:
group: "${{github.workflow}}-${{github.ref}}"
cancel-in-progress: true
on:
push:
branches:
- main
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
bundler-cache: true
- name: Lint
run: bundle exec rake lint
template:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "2.7.0"
- name: Install necessary gems
run: gem install rake rake-compiler
- name: Generate templates
run: rake templates
env:
LANG: "C"
typecheck:
runs-on: ubuntu-latest
env:
BUNDLE_GEMFILE: gemfiles/typecheck/Gemfile
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
bundler-cache: true
- name: Check Sorbet
run: bundle exec rake typecheck:tapioca typecheck:sorbet
- name: Check Steep
run: bundle exec rake typecheck:steep
- name: Check field kinds
run: rm lib/prism/node.rb && CHECK_FIELD_KIND=true bundle exec rake
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Run Ruby tests
run: bundle exec rake
shell: bash
env:
TESTOPTS: "-v"
build-ffi:
strategy:
fail-fast: false
matrix:
target:
- { ruby: "head", gemfile: "3.4" }
- { ruby: "jruby", gemfile: "jruby" }
- { ruby: "truffleruby", gemfile: "truffleruby" }
runs-on: ubuntu-latest
env:
PRISM_FFI_BACKEND: "true"
BUNDLE_GEMFILE: gemfiles/${{ matrix.target.gemfile }}/Gemfile
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.target.ruby }}
bundler-cache: true
- name: Run Ruby tests
run: bundle exec rake
build-without-assertions:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-22.04]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Run Ruby tests
run: bundle exec rake compile_no_debug test
build-debug:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Run Ruby tests
run: bundle exec rake
env:
PRISM_BUILD_DEBUG: "1"
build-minimal:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Run Ruby tests
run: bundle exec rake compile_minimal test
env:
PRISM_BUILD_MINIMAL: "1"
build-java:
runs-on: ubuntu-latest
env:
JRUBY_OPTS: "--dev"
steps:
- uses: actions/checkout@v4
- name: Set up JRuby
uses: ruby/setup-ruby@v1
with:
ruby-version: jruby
bundler-cache: true
- name: Run Java Loader test
run: PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS=1 JRUBY_OPTS="-J-ea" bundle exec rake test:java_loader
lex-ruby:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Lex ruby/ruby
run: bundle exec rake lex:ruby
lex-discourse:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Lex discourse/discourse
run: bundle exec rake lex:discourse
lex-top-100:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Lex Top 100 Gems
run: bundle exec rake lex:topgems
- name: Parse Top 100 Gems
run: bundle exec rake parse:topgems
- name: Serialized size stats with all fields
run: bundle exec rake serialized_size:topgems
- name: Recompile with only semantic fields
run: PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS=1 bundle exec rake clobber compile
- name: Serialized size stats with only semantic fields
run: bundle exec rake serialized_size:topgems
memcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install libc6-dbg
run: |
sudo apt-get update
sudo apt-get install -y libc6-dbg
- name: Cache valgrind
uses: actions/cache@v4
id: cache-valgrind
with:
path: valgrind-3.23.0
key: ${{ runner.os }}-valgrind-3.23.0
- name: Download valgrind
if: steps.cache-valgrind.outputs.cache-hit != 'true'
run: |
wget https://sourceware.org/pub/valgrind/valgrind-3.23.0.tar.bz2
tar xf valgrind-3.23.0.tar.bz2
- name: Install valgrind
run: |
cd valgrind-3.23.0
./configure
make
sudo make install
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Run Ruby tests with valgrind
run: bundle exec rake test:valgrind
gem-package:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- run: bundle config --local frozen false
- run: bundle exec rake build:dev
- uses: actions/upload-artifact@v4
with:
name: gem-package
path: pkg
retention-days: 1
gem-install:
needs: ["gem-package"]
strategy:
fail-fast: false
matrix:
target:
- { ruby: "2.7", os: "ubuntu-latest", gemfile: "2.7" }
- { ruby: "3.0", os: "ubuntu-latest", gemfile: "3.0" }
- { ruby: "3.1", os: "ubuntu-latest", gemfile: "3.1" }
- { ruby: "3.2", os: "ubuntu-latest", gemfile: "3.2" }
- { ruby: "3.3", os: "ubuntu-latest", gemfile: "3.3" }
- { ruby: "head", os: "ubuntu-latest", gemfile: "3.4" }
- { ruby: "jruby", os: "ubuntu-latest", gemfile: "jruby" }
- { ruby: "truffleruby", os: "ubuntu-latest", gemfile: "truffleruby" }
- { ruby: "2.7", os: "macos-latest", gemfile: "2.7" }
- { ruby: "3.0", os: "macos-latest", gemfile: "3.0" }
- { ruby: "3.1", os: "macos-latest", gemfile: "3.1" }
- { ruby: "3.2", os: "macos-latest", gemfile: "3.2" }
- { ruby: "3.3", os: "macos-latest", gemfile: "3.3" }
- { ruby: "head", os: "macos-latest", gemfile: "3.4" }
- { ruby: "jruby", os: "macos-latest", gemfile: "jruby" }
- { ruby: "truffleruby", os: "macos-latest", gemfile: "truffleruby" }
- { ruby: "2.7", os: "windows-latest", gemfile: "2.7" }
- { ruby: "3.0", os: "windows-latest", gemfile: "3.0" }
- { ruby: "3.1", os: "windows-latest", gemfile: "3.1" }
- { ruby: "3.2", os: "windows-latest", gemfile: "3.2" }
- { ruby: "3.3", os: "windows-latest", gemfile: "3.3" }
- { ruby: "head", os: "windows-latest", gemfile: "3.4" }
- { ruby: "jruby", os: "windows-latest", gemfile: "jruby" }
env:
BUNDLE_GEMFILE: gemfiles/${{ matrix.target.gemfile }}/Gemfile
runs-on: ${{ matrix.target.os }}
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.target.ruby }}
- uses: actions/download-artifact@v4
with:
name: gem-package
path: pkg
- run: |
gem install --local pkg/prism-*.gem
gem list -d prism
shell: bash
- name: Run tests
run: |
bundle install
rm -rf lib ext # ensure we don't use the local files
rake test
shell: bash
gcc-analyzer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Run build with gcc-analyzer enabled
run: |
CFLAGS='-fanalyzer' bundle exec rake compile
clang-analyzer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: head
bundler-cache: true
- name: Install clang-analyzer
run: sudo apt-get install -y clang-tools
- name: Run build with clang-analyzer
run: |
scan-build bundle exec rake compile 2>&1 | tee /tmp/scan_build_output.log
grep -q 'scan-build: No bugs found.' /tmp/scan_build_output.log