Skip to content

Ci cd workflow#13

Merged
TexLeeV merged 14 commits intomainfrom
CI-CD-workflow
Mar 25, 2026
Merged

Ci cd workflow#13
TexLeeV merged 14 commits intomainfrom
CI-CD-workflow

Conversation

@TexLeeV
Copy link
Copy Markdown
Owner

@TexLeeV TexLeeV commented Mar 24, 2026

Description

Brief description of what this PR changes and why.

Fixes #(issue number, if applicable)

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New learning module (adds new exercises/tests)
  • Enhancement (improves existing module or documentation)
  • Documentation update
  • Build system/infrastructure change

Changes Made

Testing

How have you tested these changes?

  • All tests pass locally (ctest --preset gcc --verbose)
  • Built specific targets successfully
  • Manually verified instrumentation output (if applicable)
  • Tested on multiple compilers (if applicable): GCC ___, Clang ___

Test Output (if applicable)

Paste relevant test output here

Code Quality Checklist

  • Code follows project style guidelines (see CONTRIBUTING.md)
  • No trailing whitespace on any line
  • Files end with exactly one newline
  • Constructor initializer lists use leading comma format
  • No syntax violations or compiler warnings

Documentation

  • Updated main README.md and docs/LEARNING_PATH.md (if adding or changing module registration)
  • Q/A/R patterns are correct and preserved (if applicable)
  • No additional README files created in subdirectories
  • No large summary sections added to code files

Socratic Pattern (if applicable)

For changes involving Q/A/R content:

  • Questions are specific and answerable by running code
  • Questions focus on observable behavior
  • Responses validate or correct with technical precision
  • Used instrumentation (EventLog) to make behavior visible

Additional Notes

Any additional context, screenshots, or information that reviewers should know.

License Agreement

  • I confirm that my contributions are my original work and agree to license them under the MIT License

Copilot AI review requested due to automatic review settings March 24, 2026 23:57
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the project’s CI/build infrastructure and developer tooling, standardizing on a single build/ directory with CMake presets, switching GoogleTest to FetchContent, enabling the learning_deadlocks test targets by default, and aligning documentation accordingly.

Changes:

  • Update CMake configuration/presets (single build/ dir; add ASan/TSan presets) and switch GoogleTest acquisition to FetchContent.
  • Enable deadlock test suites in learning_deadlocks while disabling a subset of in-progress scenarios.
  • Add clang tooling configs and a CI formatting job; update docs/README/templates to match the new workflow.

Reviewed changes

Copilot reviewed 90 out of 91 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
learning_stl/tests/test_algorithms.cpp Marks the parallel sort snippet as a “SOLUTION” comment.
learning_shared_ptr/tests/test_multi_threaded_patterns.cpp Removes an unregistered/optional Asio-based test file.
learning_shared_ptr/tests/test_asio_basics.cpp Removes an unregistered/optional Asio-based test file.
learning_deadlocks/tests/test_ownership_transfer_deadlocks.cpp Disables specific deadlock scenarios while enabling the suite overall.
learning_deadlocks/tests/test_condition_variable_deadlocks.cpp Disables specific deadlock scenarios while enabling the suite overall.
learning_deadlocks/tests/test_circular_reference_deadlocks.cpp Disables specific deadlock scenarios while enabling the suite overall.
learning_deadlocks/CMakeLists.txt Registers deadlock test targets with CTest by default.
docs/TEACHING_METHOD.md Clarifies “requires C++20” and updates Socratic customization instructions.
docs/LEARNING_PATH.md Updates module registration counts and deadlocks module status.
docs/BUILDING.md Updates build requirements/paths and explains deadlocks registration.
README.md Updates prerequisites/paths, adds DQ/DR and exercise marker docs, updates module table notes.
CMakePresets.json Lowers stated preset minimum, unifies build output dir, adds ASan/TSan presets.
CMakeLists.txt Uses FetchContent for GoogleTest and sets C++20 standard explicitly.
.gitignore Stops ignoring clang tooling configs; explicitly keeps them tracked.
.github/workflows/ci.yml Updates caching for unified build dir and enables a format-check job.
.github/ISSUE_TEMPLATE/feature_request.md Adjusts wording around C++ standard selection.
.github/ISSUE_TEMPLATE/bug_report.md Updates run path examples to ./build/<module>/....
.github/CONTRIBUTING.md Updates dependency/install guidance and removes large inlined style/QAR sections.
.cursor/rules/learning-module-implementation.mdc Adds a methodology doc for implementing new learning modules.
.clangd Points clangd compilation database to build/.
.clang-tidy Adds repository clang-tidy configuration.
.clang-format Adds repository clang-format configuration.
Comments suppressed due to low confidence (1)

.github/workflows/ci.yml:96

  • The formatting job builds the list of files from git diff --name-only, which will include deleted/renamed files. In this PR two .cpp files were deleted, so xargs clang-format will error on missing paths and fail the job. Filter the diff to existing files (e.g., git diff --name-only --diff-filter=ACMR) and/or skip non-existent paths before invoking clang-format.
      - name: Collect changed C/C++ files
        id: changed-files
        run: |
          if [ "${{ github.event_name }}" = "pull_request" ]; then
            BASE="origin/${{ github.base_ref }}"
            git fetch origin "${{ github.base_ref }}" --depth=1
            git diff --name-only "$BASE"...HEAD > changed_files.txt
          else
            git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" > changed_files.txt
          fi

          awk '/\.(cpp|cc|cxx|h|hpp)$/ { print }' changed_files.txt > format_targets.txt
          if [ -s format_targets.txt ]; then
            echo "has_files=true" >> "$GITHUB_OUTPUT"
          else
            echo "has_files=false" >> "$GITHUB_OUTPUT"
          fi

      - name: Check formatting
        if: steps.changed-files.outputs.has_files == 'true'
        run: |
          xargs -a format_targets.txt clang-format --dry-run --Werror --style=file


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown

Copilot AI commented Mar 25, 2026

@TexLeeV I've opened a new pull request, #14, to work on those changes. Once the pull request is ready, I'll request review from you.

@TexLeeV TexLeeV merged commit f4b0373 into main Mar 25, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants