diff --git a/.github/workflows/build-and-test-library.yml b/.github/workflows/build-and-test-library.yml index 9152638d..10f75aca 100644 --- a/.github/workflows/build-and-test-library.yml +++ b/.github/workflows/build-and-test-library.yml @@ -6,8 +6,9 @@ on: - '.github/workflows/build-and-test-library.yml' - 'API/**' - 'CMake/FindZeta.cmake' - - 'sources/*.c' - - 'sources/*.rc.in' + - 'sources/test-Z80.c' + - 'sources/Z80.c' + - 'sources/Z80.rc.in' - 'support/*.sha3-512' - 'CMakeLists.txt' pull_request: @@ -15,8 +16,9 @@ on: - '.github/workflows/build-and-test-library.yml' - 'API/**' - 'CMake/FindZeta.cmake' - - 'sources/*.c' - - 'sources/*.rc.in' + - 'sources/test-Z80.c' + - 'sources/Z80.c' + - 'sources/Z80.rc.in' - 'support/*.sha3-512' - 'CMakeLists.txt' diff --git a/.github/workflows/step-tests.yml b/.github/workflows/step-tests.yml new file mode 100644 index 00000000..b9cdfe8d --- /dev/null +++ b/.github/workflows/step-tests.yml @@ -0,0 +1,92 @@ +name: Step tests + +on: + push: + paths: + - '.github/workflows/step-tests.yml' + - 'API/**' + - 'CMake/FindZeta.cmake' + - 'sources/step-test-Z80.c' + - 'sources/Z80.c' + - 'CMakeLists.txt' + pull_request: + paths: + - '.github/workflows/step-tests.yml' + - 'API/**' + - 'CMake/FindZeta.cmake' + - 'sources/step-test-Z80.c' + - 'sources/Z80.c' + - 'CMakeLists.txt' + +env: + BUILD_SHARED_LIBS: YES + CMAKE_BUILD_TYPE: Release + Z80_FETCH_TEST_FILES: YES + Z80_NOSTDLIB_FLAGS: Auto + Z80_WITH_CMAKE_SUPPORT: NO + Z80_WITH_HTML_DOCUMENTATION: NO + Z80_WITH_PDF_DOCUMENTATION: NO + Z80_WITH_PKGCONFIG_SUPPORT: NO + Z80_WITH_STANDARD_DOCUMENTS: NO + Z80_WITH_STEP_TESTS: YES + Z80_WITH_TESTS: NO + Z80_WITH_EXECUTE: YES + Z80_WITH_FULL_IM0: YES + Z80_WITH_IM0_RETX_NOTIFICATIONS: YES + Z80_WITH_Q: YES + Z80_WITH_SPECIAL_RESET: YES + Z80_WITH_UNOFFICIAL_RETI: NO + Z80_WITH_ZILOG_NMOS_LD_A_IR_BUG: YES + +jobs: + step-tests: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run: | + curl -L https://zxe.io/scripts/add-zxe-apt-repo.sh | sudo sh + sudo apt-get update + sudo apt-get -y install libcjson-dev + sudo apt-get -y install libz80insnclock-dev + + - name: Fetch unit tests + run: | + mkdir -p "${{github.workspace}}/build/SingleStepTests-Z80" + curl -L $( + curl -s https://api.github.com/repos/SingleStepTests/z80/releases/latest | + grep tarball_url | cut -d : -f 2,3 | tr -d '" ,' + ) | gzip -cd | tar -C "${{github.workspace}}/build/SingleStepTests-Z80" --strip-components=2 -xf - "SingleStepTests**/v1" + + - name: Configure CMake + run: >- + cmake + -DBUILD_SHARED_LIBS=${{env.BUILD_SHARED_LIBS}} + -DCMAKE_BUILD_TYPE=${{env.CMAKE_BUILD_TYPE}} + -DZ80_FETCH_TEST_FILES=${{env.Z80_FETCH_TEST_FILES}} + -DZ80_NOSTDLIB_FLAGS=${{env.Z80_NOSTDLIB_FLAGS}} + -DZ80_WITH_CMAKE_SUPPORT=${{env.Z80_WITH_CMAKE_SUPPORT}} + -DZ80_WITH_HTML_DOCUMENTATION=${{env.Z80_WITH_HTML_DOCUMENTATION}} + -DZ80_WITH_PDF_DOCUMENTATION=${{env.Z80_WITH_PDF_DOCUMENTATION}} + -DZ80_WITH_PKGCONFIG_SUPPORT=${{env.Z80_WITH_PKGCONFIG_SUPPORT}} + -DZ80_WITH_STANDARD_DOCUMENTS=${{env.Z80_WITH_STANDARD_DOCUMENTS}} + -DZ80_WITH_STEP_TESTS=${{env.Z80_WITH_STEP_TESTS}} + -DZ80_WITH_TESTS=${{env.Z80_WITH_TESTS}} + -DZ80_WITH_EXECUTE=${{env.Z80_WITH_EXECUTE}} + -DZ80_WITH_FULL_IM0=${{env.Z80_WITH_FULL_IM0}} + -DZ80_WITH_IM0_RETX_NOTIFICATIONS=${{env.Z80_WITH_IM0_RETX_NOTIFICATIONS}} + -DZ80_WITH_Q=${{env.Z80_WITH_Q}} + -DZ80_WITH_SPECIAL_RESET=${{env.Z80_WITH_SPECIAL_RESET}} + -DZ80_WITH_UNOFFICIAL_RETI=${{env.Z80_WITH_UNOFFICIAL_RETI}} + -DZ80_WITH_ZILOG_NMOS_LD_A_IR_BUG=${{env.Z80_WITH_ZILOG_NMOS_LD_A_IR_BUG}} + -B "${{github.workspace}}/build" + -S "${{github.workspace}}" + + - name: Build + run: cmake --build "${{github.workspace}}/build" --config ${{env.CMAKE_BUILD_TYPE}} --verbose + + - name: Test + working-directory: ${{github.workspace}}/build + run: ./step-test-Z80 SingleStepTests-Z80/*.json diff --git a/README.md b/README.md index 428dc183..c8c4cc0f 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![](https://zxe.io/software/Z80/assets/images/documentation-badge.svg)](https://zxe.io/software/Z80/documentation/latest) [![](https://github.com/redcode/Z80/actions/workflows/build-and-test-library.yml/badge.svg)](https://github.com/redcode/Z80/actions/workflows/build-and-test-library.yml) +[![](https://github.com/redcode/Z80/actions/workflows/step-tests.yml/badge.svg)](https://github.com/redcode/Z80/actions/workflows/step-tests.yml) [![](https://github.com/redcode/Z80/actions/workflows/build-documentation.yml/badge.svg)](https://github.com/redcode/Z80/actions/workflows/build-documentation.yml) [![](https://zxe.io/software/Z80/assets/images/chat-badge.svg)](https://zxe.io/software/Z80/chat) ![](https://zxe.io/software/Z80/assets/images/mentioned-in-awesome-badge.svg)