name: Run tests
on: [push, pull_request]
jobs:
msrv:
runs-on: ubuntu-latest
outputs:
msrv: ${{ steps.msrv.outputs.msrv }}
rust_toolchains: ${{ steps.msrv.outputs.rust_toolchains }}
steps:
- uses: actions/checkout@v2
- id: msrv
name: Get minimum supported rust version in Cargo.toml
run: |
MSRV=$(sed -n -e 's/rust-version *= *"\(.*\)"/\1/p' Cargo.toml)
echo "::set-output name=msrv::$MSRV]"
echo "::set-output name=rust_toolchains::[\"stable\", \"$MSRV\"]"
tests:
needs: msrv
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
rust_toolchain: ${{ fromJSON(needs.msrv.outputs.rust_toolchains) }}
runs-on: ${{ matrix.os }}
env:
rust_features: aq_unstable,chrono
services:
oracle:
image: gvenzl/oracle-xe:latest
env:
ORACLE_PASSWORD: sys_passwd
ports:
- 1521:1521
options: >-
--health-cmd healthcheck.sh
--health-interval 10s
--health-timeout 5s
--health-retries 10
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Install Wine
run: |
sudo apt install -y g++-mingw-w64-x86-64 g++-mingw-w64-i686 wine wine-binfmt
sudo update-binfmts --unimport cli || true
- name: Install the latest Oracle instant client
run: |
curl -Lo basic.zip https://download.oracle.com/otn_software/linux/instantclient/instantclient-basic-linuxx64.zip
curl -Lo sqlplus.zip https://download.oracle.com/otn_software/linux/instantclient/instantclient-sqlplus-linuxx64.zip
curl -Lo basic-windows.zip https://download.oracle.com/otn_software/nt/instantclient/instantclient-basic-windows.zip
mkdir linux
unzip basic.zip -d linux
unzip sqlplus.zip -d linux
IC_DIR=$PWD/$(ls -d linux/instantclient*)
mkdir windows
unzip basic-windows.zip -d windows
WINEPATH=$PWD/$(ls -d windows/instantclient*)
echo LD_LIBRARY_PATH=$IC_DIR:$LD_LIBRARY_PATH >> $GITHUB_ENV
echo WINEPATH=$WINEPATH >> $GITHUB_ENV
echo $IC_DIR >> $GITHUB_PATH
- name: Get the Oracle container IP address
env:
ORACLE_SERVICE_ID: ${{ job.services.oracle.id }}
run: |
ORACLE_IP_ADDRESS=$(docker inspect --format='{{range .NetworkSettings.Networks}}{{println .IPAddress}}{{end}}' $ORACLE_SERVICE_ID)
if test -z "$ORACLE_IP_ADDRESS"; then
echo "Cannot get ORACLE_IP_ADDRESS."
docker inspect $ORACLE_SERVICE_ID
exit 1
fi
echo TWO_TASK=//$ORACLE_IP_ADDRESS:1521/XEPDB1 >> $GITHUB_ENV
echo ODPIC_TEST_CONNECT_STRING=//$ORACLE_IP_ADDRESS:1521/XEPDB1 >> $GITHUB_ENV
echo NLS_LANG=AMERICAN_AMERICA.AL32UTF8 >> $GITHUB_ENV
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust_toolchain }}
target: x86_64-pc-windows-gnu
override: true
- name: Create Oracle users and schema
run: |
sqlplus sys/sys_passwd as sysdba @tests/SetupTest.sql < /dev/null
- name: cargo test (x86_64-unknown-linux-gnu)
uses: actions-rs/cargo@v1
with:
command: test
args: --features ${{ env.rust_features }} -- --nocapture
- name: cargo test (x86_64-unknown-linux-gnu) with stmt_without_lifetime
uses: actions-rs/cargo@v1
with:
command: test
args: --features ${{ env.rust_features }},stmt_without_lifetime -- --nocapture
- name: cargo test (x86_64-pc-windows-gnu)
uses: actions-rs/cargo@v1
with:
command: test
args: --target x86_64-pc-windows-gnu --features ${{ env.rust_features }} -- --nocapture