name: test on: push: pull_request: permissions: contents: read jobs: ruby-versions: uses: ruby/actions/.github/workflows/ruby_versions.yml@master with: engine: cruby min_version: 2.5 test: needs: ruby-versions runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }} steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - run: flex --help - run: bundle install - run: bundle exec rspec test-windows: runs-on: windows-2022 strategy: fail-fast: false matrix: ruby: ['head'] defaults: run: shell: msys2 {0} steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - uses: msys2/setup-msys2@v2 id: setup-msys2 with: update: true install: >- flex - run: flex --help - run: bundle install - run: bundle exec rspec test-memory: runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: ruby: ['head'] steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - run: | sudo apt-get update -q sudo apt-get install --no-install-recommends -q -y valgrind - run: valgrind --version - run: bundle install - run: bundle exec rspec spec/lrama/integration_spec.rb env: ENABEL_VALGRIND: 'true' check-misc: runs-on: ubuntu-20.04 strategy: matrix: ruby: ['head'] steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - run: bundle install # Copy from https://github.com/ruby/ruby/blob/cb9a47f2acd6e373ef868b890a9d07da6f565dd4/.github/workflows/check_misc.yml#L31 - name: Check if C-sources are US-ASCII run: | grep -r -n --include='*.[chyS]' --include='*.asm' $'[^\t-~]' -- . && exit 1 || : # Copy from https://github.com/ruby/ruby/blob/089227e94823542acfdafa68541d330eee42ffea/.github/workflows/check_misc.yml#L27 - name: Check for trailing spaces run: | git grep -I -n '[ ]$' -- '*.rb' '*.[chy]' '*.rs' ':!spec/' && exit 1 || : git grep -n '^[ ][ ]*$' -- '*.md' && exit 1 || : - name: Check for parser.rb is up to date run: | bundle exec rake build:parser git diff --color --no-ext-diff --ignore-submodules --exit-code lib/lrama/parser.rb steep-check: runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: ruby: ['head'] env: INSTALL_STEEP: 'true' steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true - run: bundle install - run: bundle exec rbs collection install - run: bundle exec steep check test-ruby: runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: # '3.0' is the oldest living ruby version # '2.7' is for BASERUBY baseruby: ['head', '3.0', '2.7'] ruby_branch: ['master'] defaults: run: working-directory: ../ruby/build steps: - uses: actions/checkout@v4 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.baseruby }} bundler-cache: true - run: git clone --depth=1 https://github.com/ruby/ruby.git -b ${{ matrix.ruby_branch }} ../ruby working-directory: . - run: mkdir -p tool/lrama working-directory: ../ruby - name: Copy Lrama to ruby/tool run: cp -r LEGAL.md NEWS.md MIT exe lib template ../ruby/tool/lrama working-directory: . - run: tree tool/lrama working-directory: ../ruby # See also https://github.com/ruby/ruby/blob/master/.github/workflows/ubuntu.yml - run: mkdir build working-directory: ../ruby - name: Set ENV run: | echo "GNUMAKEFLAGS=-j$((1 + $(nproc --all)))" >> $GITHUB_ENV - name: Install libraries run: | set -x arch=${arch:+:${arch/i[3-6]86/i386}} ${arch:+sudo dpkg --add-architecture ${arch#:}} sudo apt-get update -q || : sudo apt-get install --no-install-recommends -q -y \ ${arch:+cross}build-essential${arch/:/-} \ libssl-dev${arch} libyaml-dev${arch} libreadline6-dev${arch} \ zlib1g-dev${arch} libncurses5-dev${arch} libffi-dev${arch} \ autoconf sudo apt-get install -q -y pkg-config${arch} || : - run: sudo apt-get --purge remove bison - run: ../autogen.sh - run: ../configure -C --disable-install-doc - run: make - run: make test-all