Skip to content

Documentation: Update Live Scripts #49

Documentation: Update Live Scripts

Documentation: Update Live Scripts #49

name: MHKiT-MATLAB Windows Unit Tests
on:
push:
branches: [master, develop, ebbflood]
pull_request:
branches: [master, develop, ebbflood]
jobs:
cache_population:
strategy:
fail-fast: false
matrix:
os: [windows-latest]
python-version: [3.9]
matlab-version: [R2022a]
runs-on: ${{ matrix.os }}
env:
mhkit-python-dir: "MHKiT-Python"
steps:
- name: Install/Setup Miniconda
uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
activate-environment: MHKIT_CONDA_ENV
channels: conda-forge
- name: "Conda install h5py, netcdf4, and cython"
run: |
conda activate MHKIT_CONDA_ENV
conda install numpy cython pip pytest hdf5 libnetcdf cftime netcdf4 --strict-channel-priority
- name: Check out MHKiT-MATLAB
uses: actions/checkout@v4
- name: Check out MHKiT-Python
uses: actions/checkout@v4
with:
repository: "MHKiT-Software/MHKiT-Python"
path: ${{env.mhkit-python-dir}}
- name: pip install mhkit from source
working-directory: ${{env.mhkit-python-dir}}
run: |
conda activate MHKIT_CONDA_ENV
pip install -e .
- name: pip install mhkit-python-utils module from source
run: |
conda activate MHKIT_CONDA_ENV
pip install -e .
# Create the cache and add a dummy file
# The dummy file ensures that the artifact download
- name: Setup mhkit_webread_cache
shell: bash -l {0}
run: |
mkdir mhkit_webread_cache
touch mhkit_webread_cache/test.txt
echo "Hello World" > mhkit_webread_cache/test.txt
- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v1
with:
release: ${{ matrix.matlab-version }}
- name: Configure MATLAB pyenv Version and ExecutionMode
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
run: >
"pyenv(Version='{0}', ExecutionMode='InProcess')" -f (python -c "import sys; print(sys.executable)") | Out-File -FilePath run.m
- name: Add MATLAB test commands
shell: bash
run: echo "version,
addpath(genpath('mhkit')),
import matlab.unittest.TestSuite,
import matlab.unittest.TestRunner,
testFolder = ['mhkit' filesep 'tests'],
suite = TestSuite.fromFolder(testFolder),
runner = TestRunner.withTextOutput,
results = runner.run(suite),
assertSuccess(results)" >> run.m
- name: Output Run.m
shell: bash
run: cat run.m
- name: Run MHKiT-MATLAB Unit Tests
uses: matlab-actions/run-command@v1
with:
command: run
startup-options: -noFigureWindows
- name: Save mhkit_webread_cache directory as an artifact
uses: actions/upload-artifact@v3
with:
# GitHub Action "Name" of artifact
name: mhkit_webread_cache
# Filesystem path of directory
path: mhkit_webread_cache
main:
needs: cache_population
strategy:
fail-fast: false
matrix:
os: [windows-latest]
python-version: [3.8, 3.9, "3.10", 3.11]
# matlab-version: [R2021b, R2022a, R2022b, R2023a, R2023b]
# R2022b and above have a windows specific error related to the MATLAB/Python interface
matlab-version: [R2021b, R2022a]
exclude:
- matlab-version: 2022a
python-version: 3.9
- matlab-version: R2023b
python-version: 3.8
- matlab-version: R2023a
python-version: 3.11
- matlab-version: R2022b
python-version: 3.11
- matlab-version: R2022a
python-version: 3.11
- matlab-version: R2022a
python-version: "3.10"
- matlab-version: R2021b
python-version: 3.11
- matlab-version: R2021b
python-version: "3.10"
- matlab-version: R2021a
python-version: 3.11
- matlab-version: R2021a
python-version: "3.10"
- matlab-version: R2021a
python-version: 3.9
- matlab-version: R2020b
python-version: 3.11
- matlab-version: R2020b
python-version: "3.10"
- matlab-version: R2020b
python-version: 3.9
runs-on: ${{ matrix.os }}
env:
mhkit-python-dir: "MHKiT-Python"
steps:
- name: Install/Setup Miniconda
uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
activate-environment: MHKIT_CONDA_ENV
channels: conda-forge
# - name: "Conda install h5py, netcdf4, and cython"
# run: |
# conda activate MHKIT_CONDA_ENV
# conda install -c conda-forge h5py netcdf4 cython
- name: "Conda install h5py, netcdf4, and cython"
run: |
conda activate MHKIT_CONDA_ENV
conda install numpy cython pip pytest hdf5 libnetcdf cftime netcdf4 --strict-channel-priority
- name: Output python executable
run: |
conda activate MHKIT_CONDA_ENV
python -c "import sys; print(sys.executable)"
- name: Print Python Version
run: |
conda activate MHKIT_CONDA_ENV
python --version
- name: Check out MHKiT-MATLAB
uses: actions/checkout@v4
- name: Check out MHKiT-Python
uses: actions/checkout@v4
with:
repository: "MHKiT-Software/MHKiT-Python"
path: ${{env.mhkit-python-dir}}
- name: pip install mhkit from source
working-directory: ${{env.mhkit-python-dir}}
run: |
conda activate MHKIT_CONDA_ENV
pip install -e .
- name: pip install mhkit-python-utils module from source
run: |
conda activate MHKIT_CONDA_ENV
pip install -e .
- name: List installed pip modules
run: |
conda activate MHKIT_CONDA_ENV
pip freeze
- name: Print MHKiT-Python Version
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
python -c "import mhkit; print(mhkit.__version__)"
- name: Verify MHKiT-Python Operation
shell: bash -l {0}
run: |
conda activate MHKIT_CONDA_ENV
python -c "import mhkit; [ED, AP] = mhkit.river.performance.circular(30); print(ED); print(AP);"
- name: Download mhkit_webread_cache artifact
uses: actions/download-artifact@v3
with:
name: mhkit_webread_cache
path: mhkit_webread_cache
- name: Display structure mhkit_webread_cache
run: ls -R
working-directory: .
# Note, does not work, fails with error: RuntimeError: MATLAB installation not found in Windows Registry: [WinError 2] The system cannot find the file specified
# - name: Install MATLAB Engine API for Python on Windows
# if: ${{ matrix.os == 'windows-latest' }}
# run: python -m pip install matlabengine==9.14.3
# run: "pip3 install matlabengine --only-binary=:all:"
- name: Set up MATLAB
uses: matlab-actions/setup-matlab@v1
with:
release: ${{ matrix.matlab-version }}
# OutOfProcess works reliably on linux and macos, on Windows
# OutOfProcess fails with error:
# Caught "std::exception" Exception message is:
# Unable to launch Simple server: Unable to launch C:\Program Files\MATLAB\R2023b\interprocess\bin\win64\pycli\MATLABPyHost.exe
# because: Peer process exited before transport type handshake. Exit status: 3221226505
# ERROR: MATLAB error Exit Status: 0x00000001
# exit status 1
- name: Configure MATLAB pyenv Version and ExecutionMode
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
run: >
"pyenv(Version='{0}', ExecutionMode='InProcess')" -f (python -c "import sys; print(sys.executable)") | Out-File -FilePath run.m
- name: Add MATLAB test commands
shell: bash
run: echo "version,
addpath(genpath('mhkit')),
import matlab.unittest.TestSuite,
import matlab.unittest.TestRunner,
testFolder = ['mhkit' filesep 'tests'],
suite = TestSuite.fromFolder(testFolder),
runner = TestRunner.withTextOutput,
results = runner.run(suite),
assertSuccess(results)" >> run.m
- name: Output Run.m
shell: bash
run: cat run.m
- name: Run MHKiT-MATLAB Unit Tests
uses: matlab-actions/run-command@v1
with:
command: run
startup-options: -noFigureWindows