Merge pull request #2283 from mccode-dev/mcxtrace-temp-disable-test #3343
This file contains hidden or 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: mcxtrace-basictest | |
| on: | |
| push: | |
| pull_request: | |
| schedule: | |
| - cron: '55 23 * * 0' # 23:55 every Sunday | |
| workflow_dispatch: | |
| inputs: | |
| manual-debugging: | |
| type: boolean | |
| description: Launch manual debugging tmate for inspection (automatic in case of errors) | |
| default: false | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - { os: ubuntu-24.04, CC: gcc-13, CXX: g++-13, python: '3.12', mpi: 'openmpi' } | |
| - { os: ubuntu-24.04, CC: clang, CXX: clang++, python: '3.12', mpi: 'openmpi' } | |
| - { os: windows-11-arm, CC: cl.exe, CXX: cl.exe, python: "3.13", mpi: 'msmpi' } | |
| - { os: windows-latest, CC: gcc.exe, CXX: g++.exe, python: "3.13", mpi: 'msmpi' } | |
| name: ${{ matrix.os }}.${{ matrix.CC }}.${{ matrix.mpi }}.python-${{ matrix.python }} | |
| runs-on: ${{ matrix.os }} | |
| env: | |
| CC: ${{ matrix.CC }} | |
| CXX: ${{ matrix.CXX }} | |
| defaults: | |
| run: | |
| shell: bash -el {0} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| with: | |
| path: src | |
| fetch-depth: 2 | |
| - name: Setup python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python }} | |
| - name: Setup VS in shell Intel | |
| if: runner.os == 'Windows' && matrix.os != 'windows-11-arm' | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Setup VS in shell arm64 | |
| if: runner.os == 'Windows' && matrix.os == 'windows-11-arm' | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| arch: arm64 | |
| - name: Setup MPI | |
| uses: mpi4py/setup-mpi@v1 | |
| with: | |
| mpi: ${{ matrix.mpi }} | |
| - name: Setup (Linux) | |
| id: setup-linux | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt -y install libgsl-dev libxrl-dev | |
| - name: Setup (macOS) | |
| id: setup-macos | |
| if: runner.os == 'macOS' | |
| # Temporarily disable xraylib runs on macOS, upstream seems to | |
| # cause build-issues. Will soon port basictest scripts to conda | |
| # for Windows/Linux | |
| run: | | |
| brew install bison flex gfortran gsl | |
| #if [ "${{ matrix.os }}" != "macos-15" ]; | |
| #then | |
| # brew tap tschoonj/tap | |
| # brew install xraylib | |
| #fi | |
| - name: Setup (Windows) | |
| id: setup-Windows | |
| if: runner.os == 'Windows' | |
| shell: bash | |
| run: | | |
| cygpath -sm "$MSMPI_INC" > includepath.txt | |
| cygpath -sm "$MSMPI_LIB64" > libpath.txt | |
| choco install winflexbison3 | |
| choco install wget | |
| if [ "$CC" == "gcc.exe" ]; then choco install mingw; fi | |
| pip install mslex PyYAML ply mcpl mcpl-extra | |
| - name: Setup (Windows Intel) | |
| id: setup-Windows-intel | |
| if: runner.os == 'Windows' && matrix.os !='windows-11-arm' | |
| shell: bash | |
| run: | | |
| pip install McStasscript ncrystal | |
| - name: Setup MPI cygpath... | |
| id: setup-Windows-paths | |
| if: runner.os == 'Windows' | |
| run: | | |
| set /p MPIINCVAR=<includepath.txt | |
| set /p MPILIBVAR=<libpath.txt | |
| echo MPIINCVAR=%MPIINCVAR% >> %GITHUB_ENV% | |
| echo MPILIBVAR=%MPILIBVAR% >> %GITHUB_ENV% | |
| - name: Check versions | |
| id: version-checks | |
| run: | | |
| which python3 | |
| python3 --version | |
| which cmake | |
| cmake --version | |
| - name: Configure build and install mcxtrace on Unix | |
| id: mcxtrace-install-unix | |
| if: runner.os != 'Windows' | |
| run: | | |
| if [ "$RUNNER_OS" == "macOS" ]; then mkdir ${HOME}/tmp; fi | |
| if [ "$RUNNER_OS" == "macOS" ]; then export SDKROOT=$(xcrun --sdk macosx --show-sdk-path); fi | |
| set -e | |
| set -u | |
| set -x | |
| mkdir build_mcxtrace | |
| cd build_mcxtrace | |
| export EXTRA_ARGS_FOR_CMAKE="" | |
| if [ "$RUNNER_OS" == "macOS" ] && [ -f "/opt/homebrew/opt/flex/bin/flex" ]; then export HOMEBRW="/opt/homebrew/opt"; export GSLFLAGS="-lgsl -lgslcblas -L/opt/homebrew/lib -I/opt/homebrew/include"; export XRLFLAGS="-lxrl -L/opt/homebrew/lib -I/opt/homebrew/include"; fi | |
| if [ "$RUNNER_OS" == "macOS" ] && [ -f "/usr/local/opt/flex/bin/flex" ]; then export HOMEBRW="/usr/local/opt"; export GSLFLAGS="-lgsl -lgslcblas -L/usr/local/lib -I/usr/local/include"; export XRLFLAGS="-lxrl -L/usr/local/lib -I/usr/local/include"; fi | |
| if [ "$RUNNER_OS" == "macOS" ]; then export EXTRA_ARGS_FOR_CMAKE="-DBISON_EXECUTABLE=${HOMEBRW}/bison/bin/bison -DFLEX_EXECUTABLE=${HOMEBRW}/flex/bin/flex -DCMAKE_Fortran_COMPILER=${HOMEBRW}/gfortran/bin/gfortran"; fi | |
| if [ "$RUNNER_OS" == "Linux" ]; then export EXTRA_ARGS_FOR_CMAKE="-DNEXUSLIB=/usr/lib -DNEXUSINCLUDE=/usr/include/nexus"; fi | |
| if [ "$RUNNER_OS" == "Windows" ]; then export MPIINC=`cygpath -m -s "${MSMPI_INC}"`; export MPILIB=`cygpath -m -s "${MSMPI_LIB64}"`; export EXTRA_ARGS_FOR_CMAKE="-DMPILIBDIR=${MPILIB} -DMPIINCLUDEDIR=${MPIINC}"; fi | |
| cmake \ | |
| -DCMAKE_INSTALL_PREFIX=../install_mcxtrace \ | |
| -S ../src \ | |
| -G "Unix Makefiles" \ | |
| -DMCVERSION="3.99.99" \ | |
| -DMCCODE_BUILD_CONDA_PKG=OFF \ | |
| -DBUILD_SHARED_LIBS=ON \ | |
| -DCMAKE_INSTALL_LIBDIR=lib \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DBUILD_MCXTRACE=ON \ | |
| -DMCCODE_USE_LEGACY_DESTINATIONS=OFF \ | |
| -DBUILD_TOOLS=ON \ | |
| -DENABLE_COMPONENTS=ON \ | |
| -DENSURE_MCPL=OFF \ | |
| -DENSURE_NCRYSTAL=OFF \ | |
| -DENABLE_CIF2HKL=ON \ | |
| -DENABLE_NEUTRONICS=OFF \ | |
| ${EXTRA_ARGS_FOR_CMAKE} | |
| cmake --build . --config Release | |
| cmake --build . --target install --config Release | |
| export MCXTRACE_EXECUTABLE="mcxtrace" | |
| export MXRUN_EXECUTABLE="mxrun" | |
| if [ "$RUNNER_OS" == "Windows" ]; | |
| then | |
| export MCXTRACE_EXECUTABLE="mcxtrace.exe" | |
| export MXRUN_EXECUTABLE="mxrun.bat" | |
| fi | |
| test -f "../install_mcxtrace/bin/${MCXTRACE_EXECUTABLE}" | |
| test -f "../install_mcxtrace/bin/${MXRUN_EXECUTABLE}" | |
| test -f "../install_mcxtrace/share/mcxtrace/tools/Python/mccodelib/__init__.py" | |
| test -d "../install_mcxtrace/share/mcxtrace/resources/data" | |
| if [ "${{ matrix.mpi }}" == "openmpi" ]; then sed -i.bak 's/mpirun/mpirun\ --mca\ btl\ self,vader,tcp/g' ../install_mcxtrace/share/mcxtrace/tools/Python/mccodelib/mccode_config.json ; fi | |
| if [ "$RUNNER_OS" == "macOS" ]; then sed -i.bak "s+-lgsl\ -lgslcblas+${GSLFLAGS}+g" ../install_mcxtrace/share/mcxtrace/tools/Python/mccodelib/mccode_config.json ; fi | |
| if [ "$RUNNER_OS" == "macOS" ]; then sed -i.bak "s+-lxrl+${XRLFLAGS}+g" ../install_mcxtrace/share/mcxtrace/tools/Python/mccodelib/mccode_config.json ; fi | |
| echo ******************************************************************************* | |
| echo Resulting mccode_config.json: | |
| echo ******************************************************************************* | |
| cat ../install_mcxtrace/share/mcxtrace/tools/Python/mccodelib/mccode_config.json | |
| echo ******************************************************************************* | |
| - name: Configure build and install mcxtrace on Windows-Mingw | |
| id: mcxtrace-install-windows-mingw | |
| if: ${{ matrix.CC == 'gcc.exe' && runner.os == 'Windows' }} | |
| run: > | |
| cmake -B build -S src | |
| -G "Unix Makefiles" | |
| -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc.exe | |
| "-DCMAKE_INSTALL_PREFIX=./install" | |
| -DMCVERSION="3.99.99" | |
| -DMCCODE_BUILD_CONDA_PKG=OFF | |
| -DMCCODE_BUILD_WINDOWS_MINGW=ON | |
| -DMCCODE_CONFIG_MCPL2=ON | |
| -DCMAKE_INSTALL_LIBDIR=lib | |
| -DBUILD_MCXTRACE=ON | |
| -DMCCODE_USE_LEGACY_DESTINATIONS=OFF | |
| -DBUILD_TOOLS=ON | |
| -DENABLE_COMPONENTS=ON | |
| -DENABLE_CIF2HKL=ON | |
| -DENABLE_NEUTRONICS=OFF | |
| -DMPIINCLUDEDIR=%MPIINCVAR% | |
| -DMPILIBDIR=%MPILIBVAR% | |
| - name: Configure build and install mcxtrace on Windows-MSVC | |
| id: mcxtrace-install-windows-msvc | |
| if: ${{ matrix.CC != 'gcc.exe' && runner.os == 'Windows' }} | |
| run: > | |
| cmake -B build -S src | |
| "-DCMAKE_INSTALL_PREFIX=./install" | |
| -DMCVERSION="3.99.99" | |
| -DMCCODE_BUILD_CONDA_PKG=OFF | |
| -DMCCODE_CONFIG_MCPL2=ON | |
| -DCMAKE_INSTALL_LIBDIR=lib | |
| -DBUILD_MCXTRACE=ON | |
| -DMCCODE_USE_LEGACY_DESTINATIONS=OFF | |
| -DBUILD_TOOLS=ON | |
| -DENABLE_COMPONENTS=ON | |
| -DENABLE_CIF2HKL=OFF | |
| -DENABLE_NEUTRONICS=OFF | |
| -DMPIINCLUDEDIR=%MPIINCVAR% | |
| -DMPILIBDIR=%MPILIBVAR% | |
| - name: CMake build | |
| if: runner.os == 'Windows' | |
| shell: cmd | |
| run: cmake --build build --config Release -j 2 | |
| - name: CMake install | |
| if: runner.os == 'Windows' | |
| run: cmake --install build --config Release | |
| - name: set MCXTRACE env var | |
| if: runner.os == 'Windows' | |
| run: echo MCXTRACE=%CD%\install\share\mcxtrace\resources >> %GITHUB_ENV% | |
| - name: check MCXTRACE env var | |
| if: runner.os == 'Windows' | |
| run: echo %MCXTRACE% | |
| - name: Various Windows debugging | |
| if: runner.os == 'Windows' | |
| shell: cmd | |
| run: | | |
| type .\install\share\mcxtrace\tools\Python\mccodelib\mccode_config.json | |
| .\install\bin\mxrun -h | |
| .\install\bin\mcxtrace -v | |
| mcpl-config -s | |
| - name: Pip install Unix | |
| id: pip-install | |
| if: runner.os != 'Windows' | |
| run: | | |
| set -e | |
| set -u | |
| set -x | |
| if [ "$RUNNER_OS" == "macOS" ]; | |
| then | |
| python3 -mpip install PyYAML pyaml ply McStasScript mcpl mcpl-extra jinja2 --break-system-packages | |
| fi | |
| if [ "$RUNNER_OS" == "Linux" ]; | |
| then | |
| python3 -mpip install PyYAML ply McStasscript mcpl mcpl-extra jinja2 | |
| fi | |
| # Start of Unix tests | |
| - name: Launch RNG test instrument | |
| id: RNG-test | |
| if: runner.os != 'Windows' | |
| # Status: Works on Unixes | |
| run: | | |
| set -e | |
| set -u | |
| set -x | |
| export MCXTRACE_EXECUTABLE="mcxtrace" | |
| export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen" | |
| export MXRUN_EXECUTABLE="mxrun" | |
| export MD5SUM="md5sum" | |
| if [ "$RUNNER_OS" == "Windows" ]; | |
| then | |
| export MCXTRACE_EXECUTABLE="mcxtrace.exe" | |
| export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen.exe" | |
| export MXRUN_EXECUTABLE="mxrun.bat" | |
| fi | |
| if [ "$RUNNER_OS" == "macOS" ]; | |
| then | |
| export MD5SUM="md5" | |
| fi | |
| test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} | |
| ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version | |
| mkdir run_RNG && cd run_RNG | |
| cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_RNG/Test_RNG_rand01/Test_RNG_rand01.instr . | |
| ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} Test_RNG_rand01.instr -s1000 Ncount=1000 -d RNGtest | |
| export SUM=`grep -v \# RNGtest/rngout.dat | ${MD5SUM} | cut -f1 -d\ ` | |
| export EXPECTED="f192ce4609e2225bf9d42ce9c5fa5a86" | |
| if [ "${EXPECTED}" == "${SUM}" ]; | |
| then | |
| echo RNG test success! | |
| true | |
| else | |
| echo RNG test failure! | |
| false | |
| fi | |
| - name: Launch JJ_SAXS instrument | |
| id: JJ_SAXS-basic | |
| if: runner.os != 'Windows' | |
| # Status: Works on Unixes | |
| run: | | |
| set -e | |
| set -u | |
| set -x | |
| export MCXTRACE_EXECUTABLE="mcxtrace" | |
| export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen" | |
| export MXRUN_EXECUTABLE="mxrun" | |
| if [ "$RUNNER_OS" == "Windows" ]; | |
| then | |
| export MCXTRACE_EXECUTABLE="mcxtrace.exe" | |
| export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen.exe" | |
| export MXRUN_EXECUTABLE="mxrun.bat" | |
| fi | |
| test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} | |
| ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version | |
| mkdir run_JJ_SAXS && cd run_JJ_SAXS | |
| cp ../install_mcxtrace/share/mcxtrace/resources/examples/SAXSLAB/JJ_SAXS/JJ_SAXS.instr . | |
| ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} JJ_SAXS.instr pin2_pos=0.2 pin3_pos=0.4 optic_L=0.1 sample_pos=0.2 detector_pos=2 | |
| ../install_mcxtrace/bin/${MCXTRACE_PYGEN_EXECUTABLE} JJ_SAXS.instr | |
| - name: Launch JJ_SAXS instrument (MPI) | |
| id: JJ_SAXS-mpi | |
| if: runner.os != 'Windows' | |
| # Status: Works on Unixes | |
| run: | | |
| set -e | |
| set -u | |
| set -x | |
| export MCXTRACE_EXECUTABLE="mcxtrace" | |
| export MCXTRACE_PYGEN_EXECUTABLE="mcxtrace-pygen" | |
| export MXRUN_EXECUTABLE="mxrun" | |
| if [ "$RUNNER_OS" == "macOS" ]; then export TMPDIR=${HOME}/tmp; fi | |
| if [ "$RUNNER_OS" == "Windows" ]; | |
| then | |
| export MCXTRACE_EXECUTABLE="mcxtrace.exe" | |
| export MXRUN_EXECUTABLE="mxrun.bat" | |
| fi | |
| test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} | |
| ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version | |
| mkdir run_JJ_SAXS_mpi && cd run_JJ_SAXS_mpi | |
| cp ../install_mcxtrace/share/mcxtrace/resources/examples/SAXSLAB/JJ_SAXS/JJ_SAXS.instr . | |
| ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} --verbose --mpi=2 JJ_SAXS.instr pin2_pos=0.2 pin3_pos=0.4 optic_L=0.1 sample_pos=0.2 detector_pos=2 | |
| - name: Launch MCPL test instrument | |
| id: mcpl-test | |
| if: runner.os != 'Windows' | |
| # Status: Works on Unixes | |
| run: | | |
| set -e | |
| set -u | |
| set -x | |
| export MCXTRACE_EXECUTABLE="mcxtrace" | |
| export MXRUN_EXECUTABLE="mxrun" | |
| if [ "$RUNNER_OS" == "Windows" ]; | |
| then | |
| export MCXTRACE_EXECUTABLE="mcxtrace.exe" | |
| export MXRUN_EXECUTABLE="mxrun.bat" | |
| fi | |
| export PATH=${PATH}:${PWD}/install_mcxtrace/bin/:${PWD}/install_mcxtrace/mcxtrace/3.99.99/bin/ | |
| test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} | |
| ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version | |
| mkdir run_Test_MCPL_input && cd run_Test_MCPL_input | |
| cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_MCPL_etc/Test_MCPL_input/Test_MCPL_input.instr . | |
| cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_MCPL_etc/Test_MCPL_input/voutput.mcpl.gz . | |
| ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} Test_MCPL_input.instr repeat=10 MCPLFILE=voutput.mcpl.gz | |
| - name: Launch MCPL test instrument (MPI) | |
| id: mcpl-test-mpi | |
| if: runner.os != 'Windows' | |
| # Status: Works on Unixes | |
| run: | | |
| set -e | |
| set -u | |
| set -x | |
| export MCXTRACE_EXECUTABLE="mcxtrace" | |
| export MXRUN_EXECUTABLE="mxrun" | |
| if [ "$RUNNER_OS" == "macOS" ]; then export TMPDIR=${HOME}/tmp; fi | |
| if [ "$RUNNER_OS" == "Windows" ]; | |
| then | |
| export MCXTRACE_EXECUTABLE="mcxtrace.exe" | |
| export MXRUN_EXECUTABLE="mxrun.bat" | |
| fi | |
| export PATH=${PATH}:${PWD}/install_mcxtrace/bin/:${PWD}/install_mcxtrace/mcxtrace/3.99.99/bin/ | |
| test -f ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} | |
| ./install_mcxtrace/bin/${MCXTRACE_EXECUTABLE} --version | |
| mkdir run_Test_MCPL_input_mpi && cd run_Test_MCPL_input_mpi | |
| cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_MCPL_etc/Test_MCPL_input/Test_MCPL_input.instr . | |
| cp ../install_mcxtrace/share/mcxtrace/resources/examples/Tests_MCPL_etc/Test_MCPL_input/voutput.mcpl.gz . | |
| ../install_mcxtrace/bin/${MXRUN_EXECUTABLE} --verbose --mpi=2 Test_MCPL_input.instr repeat=20 MCPLFILE=voutput.mcpl.gz | |
| - name: Check for modified instruments | |
| id: instr-test | |
| run: | | |
| set -e | |
| set -u | |
| set -x | |
| export MCXTRACE_EXECUTABLE="mcxtrace" | |
| export MXRUN_EXECUTABLE="mxrun" | |
| export MXTEST_EXECUTABLE="mxtest" | |
| export PERMISSIVE=" " | |
| export PATH=${PATH}:${PWD}/install_mcxtrace/bin/:${PWD}/install_mcxtrace/mcxtrace/3.99.99/bin/ | |
| # Check if any instr files were modified during last commit | |
| cd src | |
| export CHANGEDCOMPS=`git diff --name-only HEAD HEAD~1| grep \.comp\$ | grep mcxtrace-comps | xargs -n1 basename | sed s/\.comp//g | xargs echo` | |
| export NUMCHANGEDCOMPS=`git diff --name-only HEAD HEAD~1|grep \.comp\$ | grep mcxtrace-comps | wc -l | xargs echo` | |
| cd - | |
| if [ "$NUMCHANGEDCOMPS" != "0" ]; | |
| then | |
| for comp in $CHANGEDCOMPS; | |
| do | |
| echo Finding tests including component $comp | |
| NUMMATCH=`find src/mcxtrace-comps -name \*.instr -exec grep -H ${comp} \{\} \; | cut -f1 -d: | sort | uniq | wc -l` | |
| if [ "$NUMMATCH" -gt "0" ]; | |
| then | |
| if [ "$RUNNER_OS" != "Windows" ]; then | |
| mxtest --mpi=2 --testdir run_${comp} --comp=${comp} --suffix=${{ matrix.CC }}_CHANGES $PERMISSIVE --verbose | |
| else | |
| echo .\\install\\bin\\mxtest --verbose --testdir run_${comp} --comp=${comp} --suffix=${{ matrix.CC }}_CHANGES --permissive --verbose >> changedinstr.bat | |
| fi | |
| else | |
| echo No matching tests found | |
| fi | |
| done | |
| fi | |
| cd src | |
| export RUNALL="NO" | |
| export CHANGEDINSTR=`git diff --name-only HEAD HEAD~1| grep \.instr\$ | grep mcxtrace-comps | xargs -n1 basename | sed s/\.instr//g | xargs echo` | |
| export CHANGEDINSTR=`echo $CHANGEDINSTR | xargs -n1 echo | sort | uniq | xargs echo | sed s/\ /,/g` | |
| export NUMCHANGEDINSTR=`git diff --name-only HEAD HEAD~1|grep \.instr\$ | grep mcxtrace-comps | wc -l | xargs echo` | |
| echo ---- | |
| echo $NUMCHANGEDCOMPS components and $NUMCHANGEDINSTR instruments were changed, resulting in this list: | |
| echo $CHANGEDINSTR | |
| echo ---- | |
| cd - | |
| if [ "$NUMCHANGEDINSTR" -gt "20" ]; | |
| then | |
| export RUNALL="YES" | |
| fi | |
| if [ "$NUMCHANGEDINSTR" != "0" ]; | |
| then | |
| if [ "$RUNALL" == "NO" ]; | |
| then | |
| export SCOPE="--instr=$CHANGEDINSTR" | |
| else | |
| export SCOPE=" " | |
| fi | |
| mkdir run_mxtest && cd run_mxtest | |
| if [ "$RUNNER_OS" != "Windows" ]; then | |
| mxtest --mpi=2 --testdir $PWD $SCOPE --suffix=${{ matrix.CC }}_CHANGES $PERMISSIVE | |
| mxviewtest --nobrowse $PWD | |
| else | |
| echo .\\install\\bin\\mxtest --verbose --testdir=run_mxtest $SCOPE --suffix=${{ matrix.CC }}_CHANGES --permissive >> ..\\changedinstr.bat | |
| fi | |
| fi | |
| # END of Unix tests | |
| - name: Run modified instruments Win | |
| id: instr-test-Win | |
| if: runner.os == 'Windows' # Windows only | |
| shell: cmd | |
| run: | | |
| if exist changedinstr.bat ( | |
| call .\changedinstr.bat | |
| ) | |
| # Start of Windows tests | |
| - name: Prepare rundirs Windows | |
| if: runner.os == 'Windows' # Windows only | |
| shell: cmd | |
| run: mkdir run_rng run_std run_mcpl_output run_mcpl_input run_union | |
| - name: Prepare and run rng instrument Windows | |
| if: runner.os == 'Windows' # Windows only | |
| shell: cmd | |
| working-directory: run_rng | |
| run: | | |
| copy ..\install\share\mcxtrace\resources\examples\Tests_RNG\Test_RNG_rand01\Test_RNG_rand01.instr test.instr | |
| ..\install\bin\mxrun --verbose test.instr -s1000 Ncount=1000 -d RNGtest | |
| - name: Prepare and run CRL instrument Windows MSVC | |
| if: runner.os == 'Windows' && matrix.cc != 'gcc.exe' # Windows MSVC only | |
| shell: cmd | |
| working-directory: run_std | |
| run: | | |
| copy ..\install\share\mcxtrace\resources\examples\Tests_optics\Test_CRL\Test_CRL.instr test.instr | |
| ..\install\bin\mxrun --verbose test.instr -s1000 -y | |
| - name: Prepare and run MCPL_input instrument Windows | |
| if: runner.os == 'Windows' # Windows only | |
| shell: cmd | |
| working-directory: run_mcpl_input | |
| run: | | |
| copy ..\install\share\mcxtrace\resources\examples\Tests_MCPL_etc\Test_MCPL_input\Test_MCPL_input.instr test.instr | |
| copy ..\install\share\mcxtrace\resources\examples\Tests_MCPL_etc\Test_MCPL_input\voutput.mcpl.gz . | |
| ..\install\bin\mxrun --verbose test.instr -s1000 -y | |
| - name: Prepare and run MCPL_output instrument Windows | |
| if: runner.os == 'Windows' # Windows only | |
| shell: cmd | |
| working-directory: run_mcpl_output | |
| run: | | |
| copy ..\install\share\mcxtrace\resources\examples\Tests_MCPL_etc\Test_MCPL_output\Test_MCPL_output.instr test.instr | |
| ..\install\bin\mxrun --verbose test.instr -s1000 -y | |
| - name: Test RNG instrument output Windows | |
| if: runner.os == 'Windows' # Windows only | |
| working-directory: run_rng | |
| shell: bash | |
| run: | | |
| export SUM=`grep -v \# RNGtest/rngout.dat | dos2unix | md5sum | cut -f1 -d\ ` | |
| export EXPECTED="f192ce4609e2225bf9d42ce9c5fa5a86" | |
| if [ "${EXPECTED}" == "${SUM}" ]; | |
| then | |
| echo RNG test success! | |
| true | |
| else | |
| echo RNG test failure! | |
| false | |
| fi | |
| # END of Windows tests | |
| - name: 'Tar output files' | |
| id: tar-package | |
| if: always() | |
| run: | | |
| set -e | |
| set -u | |
| set -x | |
| # Clear out binaries from sim dir and tar up artifact | |
| ls | grep run_ | xargs -n1 ./src/devel/bin/mccode-simdir-cleanfiles -d | |
| tar cvfz mcxtrace-${{ matrix.os }}.${{ matrix.CC }}.${{ matrix.mpi }}.python-${{ matrix.python }}_output.tgz run_* | |
| - name: 'Upload Artifact' | |
| id: tar-upload | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: mcxtrace-artefacts-${{ matrix.os }}.${{ matrix.CC }}.${{ matrix.mpi }}.python-${{ matrix.python }} | |
| path: "mcxtrace-${{ matrix.os }}.${{ matrix.CC }}.${{ matrix.mpi }}.python-${{ matrix.python }}_output.tgz" | |
| - name: Setup tmate session for manual debugging | |
| uses: mxschmitt/action-tmate@v3 | |
| if: always() && (inputs.manual-debugging == true) | |
| with: | |
| limit-access-to-actor: true |