Skip to content

add tests in CI

add tests in CI #29

Workflow file for this run

name: Presubmit
on:
push:
branches:
- main
pull_request:
jobs:
format:
name: Check code formatting
runs-on: ubuntu-22.04
steps:
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get install -y clang-format clang-format-15
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check format
run: |
git-clang-format --binary clang-format-15 --diff origin/main --extensions cpp,hpp > output.txt
cat output.txt
grep -E "(no modified files to format|clang-format did not modify any files)" output.txt
build:
name: Builds & Tests
needs: format
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install ninja-build libvulkan-dev clang-15 mesa-vulkan-drivers
- name: Build SPIRV-Tools
run: |
git clone --depth 1 --branch vksp https://github.com/rjodinchr/SPIRV-Tools.git third_party/spirv-tools
git clone --depth 1 --branch vksp https://github.com/rjodinchr/SPIRV-Headers.git third_party/spirv-tools/external/spirv-headers
mkdir install
cmake -B third_party/spirv-tools/build -S third_party/spirv-tools/ -G Ninja \
-DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_CXX_COMPILER="$(which clang++)"
cmake --build third_party/spirv-tools/build --target install
- name: Build Perfetto
run: |
git clone --depth 1 --branch v39.0 https://android.googlesource.com/platform/external/perfetto third_party/perfetto
$(pwd)/third_party/perfetto/tools/install-build-deps
$(pwd)/third_party/perfetto/tools/setup_all_configs.py
$(pwd)/third_party/perfetto/tools/ninja -C $(pwd)/third_party/perfetto/out/linux_clang_release libtrace_processor.a perfetto traced
- name: Build debug
run: |
cmake -B build_debug -S . -G Ninja \
-DPERFETTO_SDK_PATH="$(pwd)/third_party/perfetto/sdk" \
-DPERFETTO_INTERNAL_INCLUDE_PATH="$(pwd)/third_party/perfetto/include" \
-DPERFETTO_GEN_INCLUDE_PATH="$(pwd)/third_party/perfetto/out/linux_clang_release/gen/build_config" \
-DPERFETTO_TRACE_PROCESSOR_LIB="$(pwd)/third_party/perfetto/out/linux_clang_release/libtrace_processor.a" \
-DPERFETTO_CXX_CONFIG_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx_config" \
-DPERFETTO_CXX_SYSTEM_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx/include" \
-DEXTRACTOR_NOSTDINCXX=1 \
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH};$(pwd)/install/lib/cmake/SPIRV-Tools-opt;$(pwd)/install/lib/cmake/SPIRV-Tools" \
-DCMAKE_CXX_COMPILER="$(which clang++)" \
-DCMAKE_BUILD_TYPE=Debug
cmake --build build_debug
- name: Build release
run: |
cmake -B build_release -S . -G Ninja \
-DPERFETTO_SDK_PATH="$(pwd)/third_party/perfetto/sdk" \
-DPERFETTO_INTERNAL_INCLUDE_PATH="$(pwd)/third_party/perfetto/include" \
-DPERFETTO_GEN_INCLUDE_PATH="$(pwd)/third_party/perfetto/out/linux_clang_release/gen/build_config" \
-DPERFETTO_TRACE_PROCESSOR_LIB="$(pwd)/third_party/perfetto/out/linux_clang_release/libtrace_processor.a" \
-DPERFETTO_CXX_CONFIG_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx_config" \
-DPERFETTO_CXX_SYSTEM_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx/include" \
-DEXTRACTOR_NOSTDINCXX=1 \
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH};$(pwd)/install/lib/cmake/SPIRV-Tools-opt;$(pwd)/install/lib/cmake/SPIRV-Tools" \
-DCMAKE_CXX_COMPILER="$(which clang++)" \
-DCMAKE_BUILD_TYPE=Release
cmake --build build_release
- name: Tests
run: |
$(pwd)/build_release/runner/vulkan-shader-profiler-runner -i $(pwd)/tests/example.spvasm
$(pwd)/build_release/runner/vulkan-shader-profiler-runner -i $(pwd)/tests/example-counter.spvasm | grep "my_section"
$(pwd)/third_party/perfetto/out/linux_clang_release/traced &
$(pwd)/third_party/perfetto/out/linux_clang_release/perfetto -c $(pwd)/tests/perfetto_config --txt -o $(pwd)/trace &
sleep 1
LD_LIBRARY_PATH=$(pwd)/build_release/layer:$LD_LIBRARY_PATH \
VK_ADD_LAYER_PATH=$(pwd)/manifest/ \
VK_LOADER_LAYERS_ENABLE="VK_LAYER_SHADER_PROFILER" \
$(pwd)/build_release/runner/vulkan-shader-profiler-runner -i $(pwd)/tests/example.spvasm
pkill -x perfetto
while [[ -n $(pgrep -x perfetto) ]]; do sleep 0.2; done
$(pwd)/build_release/extractor/vulkan-shader-profiler-extract -i $(pwd)/trace -o $(pwd)/trace.spvasm -d 0
diff $(pwd)/trace.spvasm $(pwd)/tests/example-exepectation.spvasm