Skip to content

More visitors and tests for RipperCompat #4761

More visitors and tests for RipperCompat

More visitors and tests for RipperCompat #4761

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.2"
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.5"
- name: Install necessary gems
run: gem install rake rake-compiler
- name: Generate templates
run: rake templates
env:
LANG: "C"
check_annotations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
bundler-cache: true
- name: Check annotations
run: |
bundle exec rake compile
bundle exec rake check_annotations
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
build-ffi:
strategy:
fail-fast: false
matrix:
ruby: [ruby, jruby, truffleruby]
runs-on: ubuntu-latest
env:
PRISM_FFI_BACKEND: "true"
steps:
- uses: actions/checkout@v4
# The Gemfile.lock is different with PRISM_FFI_BACKEND=true for CRuby
- run: rm Gemfile.lock
if: matrix.ruby == 'ruby'
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: Run Ruby tests
run: bundle exec rake
build-debug-mode:
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_DEBUG_MODE_BUILD: "1"
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
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.20.0
key: ${{ runner.os }}-valgrind-3.20.0
- name: Download valgrind
if: steps.cache-valgrind.outputs.cache-hit != 'true'
run: |
wget https://sourceware.org/pub/valgrind/valgrind-3.20.0.tar.bz2
tar xf valgrind-3.20.0.tar.bz2
- name: Install valgrind
run: |
cd valgrind-3.20.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 exec rake build
- uses: actions/upload-artifact@v4
with:
name: gem-package
path: pkg
retention-days: 1
gem-install:
needs: ["gem-package"]
strategy:
fail-fast: false
matrix:
ruby: ["3.0", "3.1", "3.2", "head", "jruby", "truffleruby"]
os: [ubuntu-latest, macos-latest, windows-latest]
exclude:
- { ruby: truffleruby, os: windows-latest }
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.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
documentation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2"
bundler-cache: true
- name: Install doxygen and dependencies
run: |
sudo apt-get update
sudo apt-get install doxygen graphviz
- name: Generate the templates
run: bundle exec rake templates
- name: Check ruby coverage
run: bundle exec rake rdoc:coverage
- name: Check C coverage
run: doxygen Doxyfile