@@ -182,6 +182,32 @@ jobs:
182182 -e BUNDLE_GEMFILE=gemfiles/${{ inputs.engine }}-${{ inputs.version }}.gemfile \
183183 ${{ steps.vars.outputs.IMAGE }}:test \
184184 /bin/sh -c 'bundle install --with="test" --without="check ide" && bundle exec rake test'
185+ # Smoke-test C extensions to prove their shared library deps are present
186+ # Ruby 1.8 uses syck; 1.9+ uses psych
187+ if [ "${{ inputs.version }}" = "1.8" ]; then
188+ docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -rsyck -e 'puts YAML'
189+ else
190+ docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -rpsych -e 'puts Psych.dump({smoke: "test"})'
191+ fi
192+ docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -ryaml -e 'puts YAML.dump({smoke: "test"})'
193+ docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
194+ docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -rreadline -e 'puts Readline::VERSION'
195+ # fiddle became available in Ruby 2.0
196+ case "${{ inputs.version }}" in
197+ 1.8|1.9) : ;;
198+ *) docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -rfiddle -e 'puts Fiddle::SIZEOF_VOIDP' ;;
199+ esac
200+ docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -rzlib -e 'puts Zlib.zlib_version'
201+ # gdbm was removed from Ruby's bundled gems in 3.1; not available in JRuby (C extension)
202+ case "${{ inputs.engine }}:${{ inputs.version }}" in
203+ jruby:*|ruby:3.[1-9]*|ruby:[4-9]*) : ;;
204+ *) docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -rgdbm -e 'puts GDBM::VERSION' ;;
205+ esac
206+ # TODO: investigate io/console failure on jruby 9.2/9.3 aarch64 (gnu + musl)
207+ case "${{ inputs.engine }}:${{ inputs.version }}:${{ matrix.arch }}" in
208+ jruby:9.2:aarch64|jruby:9.3:aarch64) : ;;
209+ *) docker run --rm ${{ steps.vars.outputs.IMAGE }}:test ruby -e 'require "io/console"; puts IO.console.class' ;;
210+ esac
185211
186212 join :
187213 needs : build
0 commit comments