| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 1 | name: PythonKorAPClient CI unit test | 
 | 2 |  | 
 | 3 | on: [push, pull_request] | 
 | 4 |  | 
 | 5 | jobs: | 
 | 6 |   build: | 
 | 7 |  | 
 | 8 |     runs-on: ${{ matrix.os }} | 
 | 9 |     strategy: | 
| Marc Kupietz | 6f2bdae | 2022-01-20 12:19:23 +0100 | [diff] [blame] | 10 |       max-parallel: 6 | 
| Marc Kupietz | 602833a | 2020-07-31 12:41:32 +0200 | [diff] [blame] | 11 |       fail-fast: false | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 12 |       matrix: | 
| Marc Kupietz | 9572706 | 2025-04-07 16:55:55 +0200 | [diff] [blame] | 13 |         python-version: ['3.11', '3.13'] | 
| Marc Kupietz | f573f8f | 2021-10-02 21:46:22 +0200 | [diff] [blame] | 14 |         r-version: [release] | 
| Marc Kupietz | c5d2c6d | 2025-04-08 13:23:12 +0200 | [diff] [blame] | 15 |         os: [macos-15, ubuntu-latest] | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 16 |     steps: | 
| Marc Kupietz | f84baac | 2024-01-26 09:20:00 +0100 | [diff] [blame] | 17 |     - uses: actions/checkout@v4 | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 18 |     - name: Set up Python ${{ matrix.python-version }} | 
| Marc Kupietz | f84baac | 2024-01-26 09:20:00 +0100 | [diff] [blame] | 19 |       uses: actions/setup-python@v5 | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 20 |       with: | 
 | 21 |         python-version: ${{ matrix.python-version }} | 
| Marc Kupietz | f84baac | 2024-01-26 09:20:00 +0100 | [diff] [blame] | 22 |         cache: 'pip' # caching pip dependencies | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 23 |     - name: Set up R ${{ matrix.r-version }} | 
| Marc Kupietz | faa9f65 | 2022-12-22 11:00:55 +0100 | [diff] [blame] | 24 |       uses: r-lib/actions/setup-r@v2 | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 25 |       with: | 
 | 26 |         r-version: ${{ matrix.r-version }} | 
| Marc Kupietz | 1e23bf5 | 2024-01-26 11:16:30 +0100 | [diff] [blame] | 27 |         use-public-rspm: true | 
| Marc Kupietz | a2965dd | 2025-04-12 17:22:34 +0200 | [diff] [blame] | 28 |     - name: Set env commands (Linux) | 
 | 29 |       if: runner.os == 'Linux' | 
| Marc Kupietz | c5d2c6d | 2025-04-08 13:23:12 +0200 | [diff] [blame] | 30 |       run: | | 
 | 31 |           echo "VENV_ACTIVATE=source pyenv_base/bin/activate" >> $GITHUB_ENV | 
| Marc Kupietz | a2965dd | 2025-04-12 17:22:34 +0200 | [diff] [blame] | 32 |           echo "LD_LIBRARY_PATH=$(dirname $(find / -name libR.so  2> /dev/null)):${LD_LIBRARY_PATH}" >> $GITHUB_ENV | 
| Marc Kupietz | c5d2c6d | 2025-04-08 13:23:12 +0200 | [diff] [blame] | 33 |           echo "R_LIBRARY=export LD_LIBRARY_PATH=$(python -m rpy2.situation LD_LIBRARY_PATH):${LD_LIBRARY_PATH}" >> $GITHUB_ENV | 
| Marc Kupietz | a2965dd | 2025-04-12 17:22:34 +0200 | [diff] [blame] | 34 |     - name: Set env commands (MacOS) | 
 | 35 |       if: "startsWith(matrix.os, 'macos')" | 
 | 36 |       run: | | 
 | 37 |           echo "VENV_ACTIVATE=source pyenv_base/bin/activate" >> $GITHUB_ENV | 
 | 38 |           echo "R_LIBRARY=$(find /Library -name libR.dylib 2> /dev/null | head -1)" >> $GITHUB_ENV | 
 | 39 |           echo "LD_LIBRARY_PATH=$(dirname $(find /Library -name libR.dylib 2> /dev/null | head -1)):${LD_LIBRARY_PATH}" >> $GITHUB_ENV | 
| Marc Kupietz | c5d2c6d | 2025-04-08 13:23:12 +0200 | [diff] [blame] | 40 |     - name: Set virtualenv activation command (Windows) | 
 | 41 |       if: startsWith(matrix.os, 'windows') | 
 | 42 |       shell: bash | 
 | 43 |       run: | | 
 | 44 |           echo "VENV_ACTIVATE=pyenv_base\Scripts\activate" >> $GITHUB_ENV | 
 | 45 |           echo "R_LIBRARY=''" >> $GITHUB_ENV | 
| Marc Kupietz | 9572706 | 2025-04-07 16:55:55 +0200 | [diff] [blame] | 46 |     - name: Patch GHA issue with macos - Missing C library | 
| Marc Kupietz | c5d2c6d | 2025-04-08 13:23:12 +0200 | [diff] [blame] | 47 |       if: startsWith(matrix.os, 'macos') | 
| Marc Kupietz | 9572706 | 2025-04-07 16:55:55 +0200 | [diff] [blame] | 48 |       shell: bash | 
 | 49 |       run: | | 
 | 50 |         LIB_ARCHIVES=(\ | 
 | 51 |           libdeflate-1.23-darwin.20-arm64.tar.xz \ | 
 | 52 |           zstd-1.5.5-darwin.20-arm64.tar.xz \ | 
 | 53 |         ) | 
 | 54 |         for name in "${LIB_ARCHIVES[@]}" | 
 | 55 |         do | 
 | 56 |             curl -LO https://mac.r-project.org/bin/darwin20/arm64/"${name}" | 
 | 57 |             sudo tar xJf "${name}" -C / | 
 | 58 |         done | 
| Marc Kupietz | c5d2c6d | 2025-04-08 13:23:12 +0200 | [diff] [blame] | 59 |     - name: Install dependencies | 
 | 60 |       run: | | 
 | 61 |         python -m pip install --upgrade pip | 
 | 62 |         python -m pip install setuptools build | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 63 |     - name: Set up package maintainers R on Linux | 
 | 64 |       run: | | 
 | 65 |         sudo apt-get update -y | 
| Marc Kupietz | 1e23bf5 | 2024-01-26 11:16:30 +0100 | [diff] [blame] | 66 |         sudo apt-get install -y libglpk-dev libsodium-dev libxml2-dev libcurl4-openssl-dev | 
| Marc Kupietz | 66e8d74 | 2025-01-21 12:02:05 +0100 | [diff] [blame] | 67 |         sudo mkdir -p /usr/local/lib/R/site-library | 
| Marc Kupietz | 1e23bf5 | 2024-01-26 11:16:30 +0100 | [diff] [blame] | 68 |         sudo chown $(whoami) /usr/local/lib/R/site-library | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 69 |         export R_LIBS_USER=/usr/local/lib/R/site-library | 
| Marc Kupietz | d95b947 | 2021-05-04 15:58:26 +0200 | [diff] [blame] | 70 |       if: runner.os == 'Linux' | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 71 |     - name: Install R dependencies | 
| Marc Kupietz | 9572706 | 2025-04-07 16:55:55 +0200 | [diff] [blame] | 72 |       run: | | 
 | 73 |         Rscript -e "install.packages('pak')" | 
 | 74 |         Rscript -e "pak::pak('RKorAPClient')" | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 75 |     - name: Cache R packages on Linux | 
| Marc Kupietz | faa9f65 | 2022-12-22 11:00:55 +0100 | [diff] [blame] | 76 |       uses: actions/cache@v3 | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 77 |       with: | 
 | 78 |         path: /usr/local/lib/R/site-library | 
| Marc Kupietz | 3cb8eba | 2020-06-20 15:36:47 +0200 | [diff] [blame] | 79 |         key: ${{ runner.os }}-r-${{ matrix.config.r-version }}-${{ hashFiles('DESCRIPTION') }} | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 80 |       if: runner.os == 'Linux' | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 81 |     - name: Cache R packages | 
| Marc Kupietz | faa9f65 | 2022-12-22 11:00:55 +0100 | [diff] [blame] | 82 |       uses: actions/cache@v3 | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 83 |       with: | 
 | 84 |         path: ${{ env.R_LIBS_USER }} | 
| Marc Kupietz | 3cb8eba | 2020-06-20 15:36:47 +0200 | [diff] [blame] | 85 |         key: ${{ runner.os }}-r-${{ matrix.config.r-version }}-${{ hashFiles('DESCRIPTION') }} | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 86 |       if: runner.os != 'Linux' | 
| Marc Kupietz | 9572706 | 2025-04-07 16:55:55 +0200 | [diff] [blame] | 87 |     - name: Install package | 
| Marc Kupietz | c5d2c6d | 2025-04-08 13:23:12 +0200 | [diff] [blame] | 88 |       if: runner.os != 'Windows' | 
 | 89 |       run: | | 
 | 90 |         pip install rpy2 | 
 | 91 |         pip install . | 
 | 92 |     - name: Install package on Windows | 
 | 93 |       if: runner.os == 'Windows' | 
| Marc Kupietz | f84baac | 2024-01-26 09:20:00 +0100 | [diff] [blame] | 94 |       run: | | 
 | 95 |         pip install rpy2 | 
 | 96 |         pip install . | 
 | 97 |       env: | 
 | 98 |         R_HOME: "c:/R" | 
 | 99 |         R_USER: "c:/R" | 
| Marc Kupietz | ccd05aa | 2024-01-27 12:33:40 +0100 | [diff] [blame] | 100 |         PATH: "c:/R/bin;c:/R/bin/x64;${{ env.PATH }}" | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 101 |     - name: Test with pytest on POSIX | 
 | 102 |       if: runner.os != 'Windows' | 
 | 103 |       run: | | 
| Marc Kupietz | a2965dd | 2025-04-12 17:22:34 +0200 | [diff] [blame] | 104 |         export LD_LIBRARY_PATH=$(dirname $R_LIBRARY):${LD_LIBRARY_PATH} | 
 | 105 |         echo $LD_LIBRARY_PATH | 
| Marc Kupietz | 9572706 | 2025-04-07 16:55:55 +0200 | [diff] [blame] | 106 |         python -m ensurepip --upgrade | 
 | 107 |         python -m pip install pytest | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 108 |         pytest KorAPClient/tests  --junitxml=junit/test-results-${{ matrix.python-version }}.xml | 
| Marc Kupietz | 01f4160 | 2020-06-19 20:06:31 +0200 | [diff] [blame] | 109 |     - name: Test with pytest on Windows | 
 | 110 |       if: runner.os == 'Windows' | 
 | 111 |       run: | | 
| Marc Kupietz | 6fc4b2a | 2020-06-20 17:31:24 +0200 | [diff] [blame] | 112 |         pip install pytest | 
 | 113 |         pytest KorAPClient/tests  --junitxml=junit/test-results-${{ matrix.python-version }}.xml | 
 | 114 |       env: | 
 | 115 |         R_HOME: "c:/R" | 
 | 116 |         R_USER: "c:/R" | 
| Marc Kupietz | e8ca49f | 2020-06-24 14:45:10 +0200 | [diff] [blame] | 117 |         PATH: "c:/R/bin/x64;${{ env.PATH }}" | 
| Marc Kupietz | cafdbb7 | 2020-06-27 18:54:46 +0200 | [diff] [blame] | 118 |     - name: Build documentation un Linux | 
 | 119 |       if: runner.os == 'Linux' | 
 | 120 |       run: | | 
 | 121 |         pip install pdoc3 | 
 | 122 |         pdoc KorAPClient --force --html -o build/doc | 
 | 123 |     - name: Deploy documentation on Linux | 
 | 124 |       if: runner.os == 'Linux' | 
| Marc Kupietz | 9572706 | 2025-04-07 16:55:55 +0200 | [diff] [blame] | 125 |       uses: JamesIves/github-pages-deploy-action@releases/v4 | 
| Marc Kupietz | cafdbb7 | 2020-06-27 18:54:46 +0200 | [diff] [blame] | 126 |       with: | 
 | 127 |         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | 
 | 128 |         BRANCH: gh-pages # The branch the action should deploy to. | 
 | 129 |         FOLDER: build/doc # The folder the action should deploy. | 
 | 130 |         TARGET_FOLDER: doc | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 131 |     - name: Upload check results | 
 | 132 |       if: failure() | 
| Marc Kupietz | 9572706 | 2025-04-07 16:55:55 +0200 | [diff] [blame] | 133 |       uses: actions/upload-artifact@v4 | 
| Marc Kupietz | 1e0d3cd | 2020-06-19 23:38:13 +0200 | [diff] [blame] | 134 |       with: | 
 | 135 |         name: pytest-results-${{ matrix.python-version }} | 
 | 136 |         path: junit/test-results-${{ matrix.python-version }}.xml | 
 | 137 |  |