Skip to content

Commit b1b1a7a

Browse files
committed
Add Ruby bundled C extension smoke tests
1 parent dfb834e commit b1b1a7a

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

.github/workflows/_build-image.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)