Ensure the Database#encoding
method works when results are "as hash"
#15
Workflow file for this run
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: sqlite3-ruby test suite | |
concurrency: | |
group: "${{github.workflow}}-${{github.ref}}" | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: "0 8 * * 3" # At 08:00 on Wednesday # https://crontab.guru/#0_8_*_*_3 | |
push: | |
branches: | |
- main | |
- "*-stable" | |
tags: | |
- v*.*.* | |
pull_request: | |
types: [opened, synchronize] | |
branches: | |
- '*' | |
jobs: | |
# | |
# basic tests | |
# | |
sqlite3: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
ruby: ["3.3", "3.2", "3.1", "3.0"] | |
lib: [system, packaged] | |
include: | |
- { os: ubuntu-latest, ruby: truffleruby, lib: packaged } | |
- { os: windows-latest, ruby: ucrt, lib: system } | |
- { os: windows-latest, ruby: mswin, lib: system } | |
runs-on: ${{matrix.os}} | |
steps: | |
- if: matrix.os == 'windows-latest' | |
name: configure git crlf | |
run: | | |
git config --system core.autocrlf false | |
git config --system core.eol lf | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: ${{matrix.ruby}} | |
bundler-cache: true | |
apt-get: libsqlite3-dev | |
brew: sqlite3 pkg-config | |
mingw: sqlite3 | |
vcpkg: sqlite3 | |
- if: matrix.lib == 'packaged' | |
uses: actions/cache@v4 | |
with: | |
path: ports | |
key: ports-${{matrix.os}}-${{hashFiles('ext/sqlite3/extconf.rb','dependencies.yml')}} | |
- run: bundle exec rake compile -- --disable-system-libraries | |
if: matrix.lib == 'packaged' | |
- run: bundle exec rake compile -- --enable-system-libraries | |
if: matrix.lib == 'system' && !startsWith(matrix.os, 'macos') | |
- run: bundle exec rake compile -- --enable-system-libraries --with-opt-dir=$(brew --prefix sqlite3) | |
if: matrix.lib == 'system' && startsWith(matrix.os, 'macos') | |
- run: bundle exec rake test | |
# reported at https://github.com/sparklemotion/sqlite3-ruby/issues/354 | |
# TODO remove once https://github.com/flavorjones/mini_portile/issues/118 is fixed | |
fedora: | |
runs-on: ubuntu-latest | |
container: | |
image: fedora:35 | |
steps: | |
- run: | | |
dnf group install -y "C Development Tools and Libraries" | |
dnf install -y ruby ruby-devel libyaml-devel | |
- uses: actions/checkout@v4 | |
- run: bundle install | |
- run: bundle exec rake compile -- --disable-system-libraries | |
- run: bundle exec rake test | |
sqlcipher: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
ruby: ["3.3", "3.0"] # oldest and newest | |
include: | |
- { os: windows-latest, ruby: mingw } | |
- { os: windows-latest, ruby: mswin } | |
runs-on: ${{matrix.os}} | |
steps: | |
- if: matrix.os == 'windows-latest' | |
name: configure git crlf | |
run: | | |
git config --system core.autocrlf false | |
git config --system core.eol lf | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: ${{matrix.ruby}} | |
bundler-cache: true | |
apt-get: libsqlcipher-dev | |
brew: sqlcipher pkg-config | |
mingw: sqlcipher | |
vcpkg: sqlcipher | |
- run: bundle exec rake compile -- --with-sqlcipher | |
- run: bundle exec rake test | |
valgrind: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "3.3" | |
bundler-cache: true | |
apt-get: libsqlite3-dev valgrind | |
- run: bundle install | |
- run: bundle exec rake compile | |
- run: bundle exec rake test:valgrind | |
rcd_setup: | |
needs: ["sqlite3"] | |
runs-on: ubuntu-latest | |
outputs: | |
rcd_image_version: ${{steps.rcd_image_version.outputs.rcd_image_version}} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: ports/archives | |
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb','dependencies.yml')}} | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.3" | |
bundler-cache: true | |
- run: bundle exec ruby ./ext/sqlite3/extconf.rb --download-dependencies | |
- id: rcd_image_version | |
run: bundle exec ruby -e 'require "rake_compiler_dock"; puts "rcd_image_version=#{RakeCompilerDock::IMAGE_VERSION}"' >> $GITHUB_OUTPUT | |
cruby-package: | |
needs: ["rcd_setup"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: ports/archives | |
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb','dependencies.yml')}} | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "3.3" | |
bundler-cache: true | |
- run: ./bin/test-gem-build gems ruby | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
retention-days: 1 | |
cruby-linux-install: | |
needs: ["cruby-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: ["enable", "disable"] | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
apt-get: "libsqlite3-dev pkg-config" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
- run: ./bin/test-gem-install gems --${{matrix.sys}}-system-libraries | |
cruby-osx-install: | |
needs: ["cruby-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: ["enable", "disable"] | |
ruby: ["3.1", "3.2", "3.3", "truffleruby"] | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
brew: sqlite3 pkg-config | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
- if: matrix.sys == 'enable' | |
run: ./bin/test-gem-install gems --enable-system-libraries --with-opt-dir=$(brew --prefix sqlite3) | |
- if: matrix.sys == 'disable' | |
run: ./bin/test-gem-install gems --disable-system-libraries | |
cruby-windows-install: | |
needs: ["cruby-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: ["enable", "disable"] | |
ruby: ["3.0"] | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
mingw: "sqlite3" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
- run: | | |
gem install --verbose --no-document gems/*.gem -- --${{matrix.sys}}-system-libraries | |
gem list -d sqlite3 | |
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION' | |
cruby-windows-install-ucrt: | |
needs: ["cruby-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
sys: ["enable", "disable"] | |
ruby: ["3.1", "3.2", "3.3"] | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby-pkgs@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
mingw: "sqlite3" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-gem | |
path: gems | |
- run: | | |
gem install --verbose --no-document gems/*.gem -- --${{matrix.sys}}-system-libraries | |
gem list -d sqlite3 | |
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION' | |
cruby-native-package: | |
needs: ["rcd_setup"] | |
strategy: | |
fail-fast: false | |
matrix: | |
plat: | |
- "aarch64-linux" | |
- "arm-linux" | |
- "arm64-darwin" # github actions does not support this runtime as of 2022-12, but let's build anyway | |
- "x64-mingw-ucrt" | |
- "x64-mingw32" | |
- "x86-linux" | |
- "x86_64-darwin" | |
- "x86_64-linux" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/cache@v4 | |
with: | |
path: ports/archives | |
key: ports-archives-tarball-${{hashFiles('ext/sqlite3/extconf.rb','dependencies.yml')}} | |
- env: | |
DOCKER_IMAGE: "ghcr.io/rake-compiler/rake-compiler-dock-image:${{needs.rcd_setup.outputs.rcd_image_version}}-mri-${{matrix.plat}}" | |
run: | | |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 ${DOCKER_IMAGE} \ | |
./bin/test-gem-build gems ${{matrix.plat}} | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: "cruby-${{matrix.plat}}-gem" | |
path: gems | |
retention-days: 1 | |
cruby-aarch64-linux-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-aarch64-linux-gem | |
path: gems | |
- run: | | |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \ | |
--platform=linux/arm64/v8 \ | |
ruby:${{matrix.ruby}} \ | |
./bin/test-gem-install ./gems | |
cruby-arm-linux-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-arm-linux-gem | |
path: gems | |
- run: | | |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \ | |
--platform=linux/arm/v7 \ | |
ruby:${{matrix.ruby}} \ | |
./bin/test-gem-install ./gems | |
## arm64-darwin installation testing is omitted until github actions supports it | |
# cruby-arm64-darwin-install: | |
# ... | |
cruby-x64-mingw-ucrt-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.1", "3.2", "3.3"] | |
runs-on: windows-2022 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x64-mingw-ucrt-gem | |
path: gems | |
- run: | | |
gem install --verbose --no-document gems/*.gem | |
gem list -d sqlite3 | |
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION' | |
cruby-x64-mingw32-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0"] | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x64-mingw32-gem | |
path: gems | |
- run: | | |
gem install --verbose --no-document gems/*.gem | |
gem list -d sqlite3 | |
ruby -rsqlite3 -e 'puts SQLite3::SQLITE_LOADED_VERSION' | |
cruby-x86-linux-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x86-linux-gem | |
path: gems | |
- run: | | |
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | |
docker run --rm -v "$(pwd):/sqlite3" -w /sqlite3 \ | |
--platform=linux/386 \ | |
ruby:${{matrix.ruby}} \ | |
./bin/test-gem-install ./gems | |
cruby-x86_64-darwin-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x86_64-darwin-gem | |
path: gems | |
- run: ./bin/test-gem-install gems | |
cruby-x86_64-linux-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ["3.0", "3.1", "3.2", "3.3"] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: "${{matrix.ruby}}" | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x86_64-linux-gem | |
path: gems | |
- run: ./bin/test-gem-install gems | |
cruby-x86_64-linux-musl-install: | |
needs: ["cruby-native-package"] | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- { ruby: "3.0", flavor: "alpine" } | |
- { ruby: "3.1", flavor: "alpine3.18" } | |
- { ruby: "3.2", flavor: "alpine3.18" } | |
- { ruby: "3.3", flavor: "alpine3.18" } | |
runs-on: ubuntu-latest | |
container: | |
image: ruby:${{matrix.ruby}}-${{matrix.flavor}} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: cruby-x86_64-linux-gem | |
path: gems | |
- run: apk add bash build-base | |
- run: ./bin/test-gem-install ./gems |