|  | 
| 1 | 1 | name: test | 
| 2 |  | -on: | 
| 3 |  | -  pull_request: | 
| 4 |  | -  push: | 
| 5 |  | -    branches: | 
| 6 |  | -    - main | 
|  | 2 | +on: [ 'pull_request' ] | 
|  | 3 | + | 
| 7 | 4 | jobs: | 
| 8 | 5 |   linux: | 
| 9 |  | -    runs-on: ubuntu-latest | 
| 10 | 6 |     strategy: | 
| 11 | 7 |       fail-fast: false | 
| 12 | 8 |       matrix: | 
| 13 |  | -        runner: | 
| 14 |  | -          - swift:5.2-xenial | 
| 15 |  | -          - swift:5.2-bionic | 
| 16 |  | -          - swift:5.2-focal | 
| 17 |  | -          - swift:5.2-centos7 | 
| 18 |  | -          - swift:5.2-centos8 | 
| 19 |  | -          - swift:5.2-amazonlinux2 | 
| 20 |  | -          - swift:5.3-xenial | 
| 21 |  | -          - swift:5.3-bionic | 
| 22 |  | -          - swift:5.3-focal | 
| 23 |  | -          - swift:5.3-centos7 | 
| 24 |  | -          - swift:5.3-centos8 | 
| 25 |  | -          - swift:5.3-amazonlinux2 | 
| 26 |  | -          - swift:5.4-bionic | 
| 27 |  | -          - swift:5.4-focal | 
| 28 |  | -          - swift:5.4-centos7 | 
| 29 |  | -          - swift:5.4-centos8 | 
| 30 |  | -          - swift:5.4-amazonlinux2 | 
| 31 |  | -          - swiftlang/swift:nightly-5.5-focal | 
| 32 |  | -          - swiftlang/swift:nightly-5.5-centos8 | 
| 33 |  | -          - swiftlang/swift:nightly-5.5-amazonlinux2 | 
| 34 |  | -          - swiftlang/swift:nightly-main-focal | 
| 35 |  | -          - swiftlang/swift:nightly-main-centos8 | 
| 36 |  | -          - swiftlang/swift:nightly-main-amazonlinux2 | 
| 37 |  | -        dbimage:  | 
| 38 |  | -          - postgres:11 | 
| 39 |  | -          - postgres:12 | 
|  | 9 | +        dbimage: | 
|  | 10 | +          - postgres:14 | 
| 40 | 11 |           - postgres:13 | 
| 41 |  | -    container: ${{ matrix.runner }} | 
|  | 12 | +          - postgres:12 | 
|  | 13 | +          - postgres:11 | 
|  | 14 | +        dbauth: | 
|  | 15 | +          - trust | 
|  | 16 | +          - md5 | 
|  | 17 | +          - scram-sha-256 | 
|  | 18 | +        swiftver: | 
|  | 19 | +          - swift:5.2 | 
|  | 20 | +          - swift:5.5 | 
|  | 21 | +          - swiftlang/swift:nightly-main | 
|  | 22 | +        swiftos: | 
|  | 23 | +          - focal | 
|  | 24 | +    container: ${{ format('{0}-{1}', matrix.swiftver, matrix.swiftos) }} | 
|  | 25 | +    runs-on: ubuntu-latest | 
|  | 26 | +    env: | 
|  | 27 | +      LOG_LEVEL: debug | 
|  | 28 | +      POSTGRES_DB: 'vapor_database' | 
|  | 29 | +      POSTGRES_DATABASE: 'vapor_database' | 
|  | 30 | +      POSTGRES_DATABASE_A: 'vapor_database' | 
|  | 31 | +      POSTGRES_DATABASE_B: 'vapor_database' | 
|  | 32 | +      POSTGRES_USER: 'vapor_username' | 
|  | 33 | +      POSTGRES_USERNAME: 'vapor_username' | 
|  | 34 | +      POSTGRES_USERNAME_A: 'vapor_username' | 
|  | 35 | +      POSTGRES_USERNAME_B: 'vapor_username' | 
|  | 36 | +      POSTGRES_PASSWORD: 'vapor_password' | 
|  | 37 | +      POSTGRES_PASSWORD_A: 'vapor_password' | 
|  | 38 | +      POSTGRES_PASSWORD_B: 'vapor_password' | 
|  | 39 | +      POSTGRES_HOSTNAME_A: 'psql-a' | 
|  | 40 | +      POSTGRES_HOSTNAME_B: 'psql-b' | 
|  | 41 | +      POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }} | 
| 42 | 42 |     services: | 
| 43 |  | -      postgres-a: | 
|  | 43 | +      psql-a: | 
| 44 | 44 |         image: ${{ matrix.dbimage }} | 
| 45 |  | -        env:  | 
| 46 |  | -          POSTGRES_USER: vapor_username | 
| 47 |  | -          POSTGRES_PASSWORD: vapor_password | 
| 48 |  | -          POSTGRES_DB: vapor_database | 
| 49 |  | -      postgres-b: | 
|  | 45 | +        env: | 
|  | 46 | +          POSTGRES_USER: 'vapor_username' | 
|  | 47 | +          POSTGRES_DB: 'vapor_database' | 
|  | 48 | +          POSTGRES_PASSWORD: 'vapor_password' | 
|  | 49 | +          POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }} | 
|  | 50 | +          POSTGRES_INITDB_ARGS: --auth-host=${{ matrix.dbauth }} | 
|  | 51 | +      psql-b: | 
| 50 | 52 |         image: ${{ matrix.dbimage }} | 
| 51 | 53 |         env: | 
| 52 |  | -          POSTGRES_USER: vapor_username | 
| 53 |  | -          POSTGRES_PASSWORD: vapor_password | 
| 54 |  | -          POSTGRES_DB: vapor_database | 
| 55 |  | -    env: | 
| 56 |  | -      POSTGRES_HOSTNAME_A: postgres-a | 
| 57 |  | -      POSTGRES_HOSTNAME_B: postgres-b | 
| 58 |  | -      LOG_LEVEL: info | 
|  | 54 | +          POSTGRES_USER: 'vapor_username' | 
|  | 55 | +          POSTGRES_DB: 'vapor_database' | 
|  | 56 | +          POSTGRES_PASSWORD: 'vapor_password' | 
|  | 57 | +          POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }} | 
|  | 58 | +          POSTGRES_INITDB_ARGS: --auth-host=${{ matrix.dbauth }} | 
| 59 | 59 |     steps: | 
| 60 |  | -      - name: Workaround SPM incompatibility with old Git on CentOS 7 | 
| 61 |  | -        if: ${{ contains(matrix.runner, 'centos7') }} | 
| 62 |  | -        run: | | 
| 63 |  | -          yum install -y make libcurl-devel | 
| 64 |  | -          git clone https://github.com/git/git -bv2.28.0 --depth 1 && cd git | 
| 65 |  | -          make prefix=/usr -j all install NO_OPENSSL=1 NO_EXPAT=1 NO_TCLTK=1 NO_GETTEXT=1 NO_PERL=1 | 
| 66 |  | -      - name: Checkout code | 
|  | 60 | +      - name: Check out package | 
| 67 | 61 |         uses: actions/checkout@v2 | 
| 68 |  | -      - name: Run tests with Thread Sanitizer | 
| 69 |  | -        run: swift test --enable-test-discovery --sanitize=thread | 
| 70 |  | -  macOS: | 
|  | 62 | +      - name: Run unit tests | 
|  | 63 | +        run: swift test --enable-test-discovery | 
|  | 64 | + | 
|  | 65 | +  macos-all: | 
| 71 | 66 |     strategy: | 
| 72 | 67 |       fail-fast: false | 
| 73 | 68 |       matrix: | 
| 74 |  | -        include:  | 
| 75 |  | -          - formula: postgresql@11 | 
| 76 |  | -            datadir: postgresql@11 | 
| 77 |  | -          - formula: postgresql@12 | 
| 78 |  | -            datadir: postgres | 
|  | 69 | +        dbimage: | 
|  | 70 | +          - postgresql@14 | 
|  | 71 | +          - postgresql@13 | 
|  | 72 | +        dbauth: | 
|  | 73 | +          - scram-sha-256 | 
| 79 | 74 |         xcode: | 
| 80 |  | -          - latest | 
| 81 | 75 |           - latest-stable | 
|  | 76 | +          - latest | 
|  | 77 | +    runs-on: macos-11 | 
| 82 | 78 |     env: | 
| 83 |  | -      POSTGRES_DATABASE_A: vapor_database_a | 
| 84 |  | -      POSTGRES_DATABASE_B: vapor_database_b | 
| 85 |  | -    runs-on: macos-latest | 
|  | 79 | +      LOG_LEVEL: debug | 
|  | 80 | +      POSTGRES_HOSTNAME_A: 127.0.0.1 | 
|  | 81 | +      POSTGRES_HOSTNAME_B: 127.0.0.1 | 
|  | 82 | +      POSTGRES_USERNAME_A: 'vapor_username' | 
|  | 83 | +      POSTGRES_USERNAME_B: 'vapor_username' | 
|  | 84 | +      POSTGRES_PASSWORD_A: 'vapor_password' | 
|  | 85 | +      POSTGRES_PASSWORD_B: 'vapor_password' | 
|  | 86 | +      POSTGRES_DATABASE_A: 'vapor_database_a' | 
|  | 87 | +      POSTGRES_DATABASE_B: 'vapor_database_b' | 
|  | 88 | +      POSTGRES_HOST_AUTH_METHOD: ${{ matrix.dbauth }} | 
| 86 | 89 |     steps: | 
| 87 | 90 |       - name: Select latest available Xcode | 
| 88 | 91 |         uses: maxim-lobanov/setup-xcode@v1 | 
| 89 |  | -        with:  | 
|  | 92 | +        with: | 
| 90 | 93 |           xcode-version: ${{ matrix.xcode }} | 
| 91 |  | -      - name: Replace Postgres install and start server | 
|  | 94 | +      - name: Install Postgres, setup DB and auth, and wait for server start | 
| 92 | 95 |         run: | | 
| 93 |  | -          brew uninstall --force postgresql php && rm -rf /usr/local/{etc,var}/{postgres,pg}* | 
| 94 |  | -          brew install ${{ matrix.formula }} && brew link --force ${{ matrix.formula }} | 
| 95 |  | -          initdb --locale=C -E UTF-8 $(brew --prefix)/var/${{ matrix.datadir }} | 
| 96 |  | -          brew services start ${{ matrix.formula }} | 
| 97 |  | -      - name: Wait for server to be ready | 
| 98 |  | -        run: until pg_isready; do sleep 1; done | 
|  | 96 | +          export PATH="$(brew --prefix)/opt/${{ matrix.dbimage }}/bin:$PATH" PGDATA=/tmp/vapor-postgres-test PGUSER=postgres | 
|  | 97 | +          brew install ${{ matrix.dbimage }} | 
|  | 98 | +          initdb --locale=C --auth-host ${{ matrix.dbauth }} --username=postgres --pwfile=<(echo postgres) | 
|  | 99 | +          pg_ctl start --wait | 
|  | 100 | +          psql postgres <<<"CREATE ROLE $POSTGRES_USERNAME_A LOGIN PASSWORD '$POSTGRES_PASSWORD_A';" | 
|  | 101 | +          psql postgres <<<"CREATE ROLE $POSTGRES_USERNAME_B LOGIN PASSWORD '$POSTGRES_PASSWORD_B';" | 
|  | 102 | +          psql postgres <<<"CREATE DATABASE $POSTGRES_DATABASE_A OWNER = $POSTGRES_USERNAME_A;" | 
|  | 103 | +          psql postgres <<<"CREATE DATABASE $POSTGRES_DATABASE_B OWNER = $POSTGRES_USERNAME_B;" | 
|  | 104 | +          psql $POSTGRES_DATABASE_A <<<"ALTER SCHEMA public OWNER TO $POSTGRES_USERNAME_A;" | 
|  | 105 | +          psql $POSTGRES_DATABASE_B <<<"ALTER SCHEMA public OWNER TO $POSTGRES_USERNAME_B;" | 
| 99 | 106 |         timeout-minutes: 2 | 
| 100 |  | -      - name: Setup users and databases for Postgres | 
| 101 |  | -        run: | | 
| 102 |  | -          createuser --createdb --login vapor_username | 
| 103 |  | -          for db in vapor_database_{a,b}; do | 
| 104 |  | -            createdb -Ovapor_username $db && psql $db <<<"ALTER SCHEMA public OWNER TO vapor_username;" | 
| 105 |  | -          done | 
| 106 | 107 |       - name: Checkout code | 
| 107 | 108 |         uses: actions/checkout@v2 | 
| 108 |  | -      - name: Run tests with Thread Sanitizer | 
| 109 |  | -        run: swift test --enable-test-discovery --sanitize=thread | 
|  | 109 | +      - name: Run all tests | 
|  | 110 | +        run: | | 
|  | 111 | +          swift test --enable-test-discovery -Xlinker -rpath \ | 
|  | 112 | +                -Xlinker $(xcode-select -p)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.5/macosx | 
0 commit comments