Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 31 additions & 62 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,84 +2,53 @@ name: Build

on:
push:
branches: [ "master", "develop" ]
tags:
- '*'
branches: [master, develop]
tags: ['v*']
Copy link

Copilot AI Jan 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tag trigger pattern has been changed from '' (matching all tags) to 'v' (matching only tags starting with 'v'). This will cause the workflow to only trigger for tags like 'v1.0.0', 'v2.1.3', etc., and will not trigger for tags without the 'v' prefix. Ensure this is intentional and that your tagging strategy uses the 'v' prefix convention.

Suggested change
tags: ['v*']
tags: ['*']

Copilot uses AI. Check for mistakes.
pull_request:
branches: [ "master", "develop" ]
branches: [master, develop]

env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release

jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
# You can convert this to a matrix build if you need cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
runs-on: windows-latest

steps:
- uses: actions/checkout@v3

- name: Setup Python
uses: actions/setup-python@v4.5.0
with:
python-version: 3.11
cache: pip
architecture: x64
- uses: actions/checkout@v4

- name: Python Depdendeicnes
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r ${{github.workspace}}/requirements.txt
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2

- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v1.0.2
- name: Configure CMake
run: cmake -B build -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }}

- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
- name: Build
run: cmake --build build --config ${{ env.BUILD_TYPE }}

- name: Build
# Build your program with the given configuration
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
- name: Test
run: ctest --test-dir build -C ${{ env.BUILD_TYPE }}

- name: Test
working-directory: ${{github.workspace}}/build
# Execute tests defined by the CMake configuration.
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest -C ${{env.BUILD_TYPE}}

- name: Upload a Build Artifact
uses: actions/upload-artifact@v3.1.2
with:
# Artifact name
name: Display Lock
path: ${{github.workspace}}/build/src/release/Display-Lock.exe
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: Display-Lock
path: build/src/Release/Display-Lock.exe

deploy:
if: startsWith(github.ref, 'refs/tags/')
needs: build
runs-on: windows-latest

steps:
- uses: actions/checkout@v3

- if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
name: get release
uses: actions/download-artifact@v4.1.7
with:
name: Display Lock
path: ${{github.workspace}}/build/src/release

- if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
name: check releases
run: ls ${{github.workspace}}/build/src/release

- if: github.event_name == 'push' && contains(github.ref, 'refs/tags')
name: Create release
uses: ncipollo/release-action@v1
with:
artifacts: "${{github.workspace}}/build/src/release/Display-Lock.exe"
bodyFile: "${{github.workspace}}/CHANGELOG.md"
- uses: actions/checkout@v4

- name: Download artifact
uses: actions/download-artifact@v4
with:
name: Display-Lock
path: release

- name: Create release
uses: ncipollo/release-action@v1
with:
artifacts: release/Display-Lock.exe
bodyFile: CHANGELOG.md
77 changes: 0 additions & 77 deletions .github/workflows/codeql.yml

This file was deleted.

37 changes: 0 additions & 37 deletions .github/workflows/pylint.yml

This file was deleted.

7 changes: 3 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,11 @@ cmake --build build --config Release
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build --config Debug

# Run tests (requires Conan for GTest dependency)
pip install conan==1.59.0
# Run tests
ctest --test-dir build -C Release
```

The build requires Visual Studio 2022 (MSVC) on Windows. Conan package manager is used to fetch Google Test for unit testing.
The build requires Visual Studio 2022 (MSVC) on Windows.

## Architecture

Expand All @@ -48,7 +47,7 @@ The build requires Visual Studio 2022 (MSVC) on Windows. Conan package manager i

## Testing

Tests use Google Test (fetched via Conan). Test files are in `tests/` with test resources copied to the build directory.
Tests use Google Test (fetched via CMake FetchContent). Test files are in `tests/` with test resources copied to the build directory.

```bash
# Run a single test
Expand Down
4 changes: 0 additions & 4 deletions requirements-test.txt

This file was deleted.

1 change: 0 additions & 1 deletion requirements.txt

This file was deleted.

33 changes: 8 additions & 25 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,37 +1,20 @@
project(display-lock-unittests)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}/tests)
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/tests)
include(FetchContent)

message(STATUS "BINARY PATH ${CMAKE_BINARY_DIR}")

if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/0.18.1/conan.cmake"
"${CMAKE_BINARY_DIR}/conan.cmake"
TLS_VERIFY ON)
endif()

include(${CMAKE_BINARY_DIR}/conan.cmake)

conan_cmake_configure(
REQUIRES gtest/1.13.0
GENERATORS cmake_find_package
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0
)

conan_cmake_autodetect(settings)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)

conan_cmake_install(
PATH_OR_REFERENCE .
BUILD missing
REMOTE conancenter
SETTINGS ${settings}
)
FetchContent_MakeAvailable(googletest)

enable_testing()

find_package(GTest REQUIRED)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

Expand Down