diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index fd26b9ab..04239866 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -48,6 +48,7 @@ jobs:
run: bundle exec rake test RUBYOPT="--enable-frozen-string-literal"
gem:
+ needs: ruby-versions
name: "Gem: ${{ matrix.ruby-version }} on ${{ matrix.runs-on }}"
runs-on: ${{ matrix.runs-on }}
strategy:
@@ -57,21 +58,22 @@ jobs:
- ubuntu-latest
- macos-latest
- windows-latest
- ruby-version:
- - "3.0"
- - head
+ ruby-version: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
+ exclude:
+ - {runs-on: macos-latest, ruby-version: 2.5}
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby-version }}
- name: Install as gem
- env:
- BUNDLE_PATH__SYSTEM: "true"
- BUNDLE_WITHOUT: "benchmark:development"
run: |
rake install
- bundle install
+ - name: Install test dependencies
+ run: |
+ for gem in $(ruby -e 'puts ARGF.read[/^group :test do(.*)^end/m, 1].scan(/"(.+?)"/)' Gemfile); do
+ gem install ${gem}
+ done
- name: Test
run: |
ruby -run -e mkdir -- tmp
diff --git a/lib/rexml/parsers/baseparser.rb b/lib/rexml/parsers/baseparser.rb
index d09237c5..da051a76 100644
--- a/lib/rexml/parsers/baseparser.rb
+++ b/lib/rexml/parsers/baseparser.rb
@@ -7,6 +7,17 @@
module REXML
module Parsers
+ if StringScanner::Version < "3.0.8"
+ module StringScannerCaptures
+ refine StringScanner do
+ def captures
+ values_at(*(1...size))
+ end
+ end
+ end
+ using StringScannerCaptures
+ end
+
# = Using the Pull Parser
# This API is experimental, and subject to change.
# parser = PullParser.new( "texttxet" )
diff --git a/rexml.gemspec b/rexml.gemspec
index 97eac657..169e49dc 100644
--- a/rexml.gemspec
+++ b/rexml.gemspec
@@ -55,5 +55,5 @@ Gem::Specification.new do |spec|
spec.required_ruby_version = '>= 2.5.0'
- spec.add_runtime_dependency("strscan", ">= 3.0.9")
+ spec.add_runtime_dependency("strscan")
end