Merge pull request #2368 from ruby/better-invalid-token-messages #4752
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |