Skip to content

Commit

Permalink
Merge branch 'dev/windows_build_plus_segfault_handling_improvements' …
Browse files Browse the repository at this point in the history
…into test/ceedling_0_32_rc
  • Loading branch information
mkarlesky committed May 19, 2024
2 parents 478fcd9 + a182262 commit 2aaf256
Show file tree
Hide file tree
Showing 48 changed files with 811 additions and 692 deletions.
184 changes: 151 additions & 33 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@
# =========================================================================

---
# Continuous Integration Workflow: Test case suite run + validation build check
# Continuous Integration Workflow
name: CI

# Controls when the action will run.
# Triggers the workflow on push or pull request events but only for the master branch
# Triggers the workflow on push or pull request events for master & test branches
on:
push:
branches:
Expand All @@ -20,99 +19,206 @@ on:
branches: [ master ]
workflow_dispatch:


# Needed by softprops/action-gh-release
permissions:
# Allow built gem file push to Github release
contents: write


jobs:
# Job: Unit test suite
unit-tests:
name: "Unit Tests"
# Job: Linux unit test suite
unit-tests-linux:
name: "Linux Test Suite"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ruby: ['3.0', '3.1', '3.2']
steps:
# Use a cache for our tools to speed up testing
- uses: actions/cache@v3
- uses: actions/cache@v4
with:
path: vendor/bundle
key: bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby-version }}-
# Install Binutils, Multilib, etc
- name: Install C Dev & Plugin Tools
# Checks out repository under $GITHUB_WORKSPACE
- name: Checkout Latest Repo
uses: actions/checkout@v4
with:
submodules: recursive

# Setup Ruby Testing Tools to do tests on multiple ruby version
- name: Setup Ruby Testing Tools
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}

# Install Ruby Testing Tools (Bundler version should match the one in Gemfile.lock)
- name: Install Ruby Testing Tools
run: |
gem install rspec
gem install rubocop -v 0.57.2
gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
bundle update
bundle install
# Install gdb for backtrace feature testing
- name: Install gdb for Backtrace Feature Testing
run: |
sudo apt-get update -qq
sudo apt-get install --assume-yes --quiet gcc-multilib gdb
sudo apt-get install --assume-yes --quiet gdb
# Install GCovr
- name: Install GCovr
# Install GCovr for Gcov plugin
- name: Install GCovr for Gcov Plugin Tests
run: |
sudo pip install gcovr
# Install ReportGenerator for Gcov plugin
# Fix PATH before tool installation
# https://stackoverflow.com/questions/59010890/github-action-how-to-restart-the-session
- name: Install ReportGenerator for Gcov Plugin Tests
run: |
mkdir --parents $HOME/.dotnet/tools
echo "$HOME/.dotnet/tools" >> $GITHUB_PATH
dotnet tool install --global dotnet-reportgenerator-globaltool
# Run Tests
- name: Run All Self Tests
run: |
rake ci
# Build & Install Gem
- name: Build and Install Gem
run: |
gem build ceedling.gemspec
gem install --local ceedling-*.gem
# Run temp_sensor
- name: Run Tests on temp_sensor Project
run: |
cd examples/temp_sensor
ceedling test:all
cd ../..
# Run FFF Plugin Tests
- name: Run Tests on FFF Plugin
run: |
cd plugins/fff
rake
cd ../..
# Run Module Generator Plugin Tests
- name: Run Tests on Module Generator Plugin
run: |
cd plugins/module_generator
rake
cd ../..
# Run Dependencies Plugin Tests
- name: Run Tests on Dependency Plugin
run: |
cd plugins/dependencies
rake
cd ../..
# Job: Windows unit test suite
unit-tests-windows:
name: "Windows Test Suite"
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
ruby: ['3.0', '3.1', '3.2']
steps:
# Use a cache for our tools to speed up testing
- uses: actions/cache@v4
with:
path: vendor/bundle
key: bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
bundle-use-ruby-${{ matrix.os }}-${{ matrix.ruby-version }}-
# Checks out repository under $GITHUB_WORKSPACE
- name: Checkout Latest Repo
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
submodules: recursive

# Setup Ruby Testing Tools to do tests on multiple ruby version
- name: Setup Ruby Testing Tools
- name: Set Up Ruby Testing Tools
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}

# Install Ruby Testing Tools (Bundler version should match the one in Gemfile.lock)
# Install Ruby Testing Tools
# Bundler version should match the one in Gemfile.lock
- name: Install Ruby Testing Tools
shell: bash
run: |
gem install rspec
gem install rubocop -v 0.57.2
gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
bundle update
bundle install
# Install GCovr for Gcov plugin test
- name: Install GCovr for Gcov Plugin Tests
run: |
pip install gcovr
# Install ReportGenerator for Gcov plugin test
- name: Install ReportGenerator for Gcov Plugin Tests
run: |
dotnet tool install --global dotnet-reportgenerator-globaltool
# Run Tests
- name: Run All Self Tests
run: |
rake ci
# Build & Install Gem
- name: build and install Gem
- name: Build and Install Gem
run: |
gem build ceedling.gemspec
gem install --local ceedling-*.gem
# Run Temp Sensor
- name: Run Tests On Temp Sensor Project
# Run temp_sensor example project
- name: Run Tests on temp_sensor Project
run: |
cd examples/temp_sensor
ceedling module:create[someNewModule] module:destroy[someNewModule] test:all
ceedling test:all
cd ../..
# Run FFF Plugin Tests
- name: Run Tests On FFF Plugin
- name: Run Tests on FFF Plugin
run: |
cd plugins/fff
rake
cd ../..
# Run Module Generator Plugin Tests
- name: Run Tests On Module Generator Plugin
- name: Run Tests on Module Generator Plugin
run: |
cd plugins/module_generator
rake
cd ../..
# Run Dependencies Plugin Tests
- name: Run Tests On Dependency Plugin
- name: Run Tests on Dependency Plugin
run: |
cd plugins/dependencies
rake
cd ../..
# Job: Automatic Minor Releases
# Job: Automatic Minor Release
auto-release:
name: "Automatic Minor Releases"
needs: [unit-tests]
name: "Automatic Minor Release"
needs:
- unit-tests-linux
- unit-tests-windows
runs-on: ubuntu-latest
strategy:
matrix:
Expand All @@ -121,44 +227,44 @@ jobs:
steps:
# Checks out repository under $GITHUB_WORKSPACE
- name: Checkout Latest Repo
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
submodules: recursive

# Setup Ruby Testing Tools to do tests on multiple ruby version
- name: Setup Ruby Testing Tools
# Set Up Ruby Tools
- name: Set Up Ruby Tools
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}

# Generate the Version + Hash Name
- name: version
- name: Version
id: versions
shell: bash
run: |
echo "short_ver=$(ruby ./lib/ceedling/version.rb)" >> $GITHUB_ENV
echo "full_ver=$(ruby ./lib/ceedling/version.rb)-$(git rev-parse --short HEAD)" >> $GITHUB_ENV
# Build Gem
- name: build gem
- name: Build Gem
run: |
gem build ceedling.gemspec
# Create Unofficial Release
- name: create release
- name: Create Pre-Release
uses: actions/create-release@v1
id: create_release
with:
draft: false
prerelease: true
release_name: ${{ env.full_ver }}
tag_name: ${{ env.full_ver }}
body: "automatic generated pre-release for ${{ env.full_ver }}"
body: "Automatic pre-release for ${{ env.full_ver }}"
env:
GITHUB_TOKEN: ${{ github.token }}

# Post Gem to Unofficial Release
- name: release gem
- name: Upload Pre-Release Gem
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
Expand All @@ -167,3 +273,15 @@ jobs:
asset_path: ./ceedling-${{ env.short_ver }}.gem
asset_name: ceedling-${{ env.full_ver }}.gem
asset_content_type: test/x-gemfile

# - name: Upload Pre-Release Gem
# uses: softprops/action-gh-release@v2
# with:
# # repo_token: "${{ secrets.GITHUB_TOKEN }}"
# body: |
# [Release Notes](${{ github.workspace }}/docs/ReleaseNotes.md)
# name: ${{ env.full_ver }}
# prerelease: true
# files: |
# *.gem

3 changes: 2 additions & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ GEM
rspec-expectations (3.13.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.0)
rspec-mocks (3.13.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-support (3.13.1)
Expand All @@ -27,6 +27,7 @@ GEM

PLATFORMS
ruby
x64-mingw-ucrt
x64-mingw32
x86_64-darwin-22
x86_64-linux
Expand Down
Loading

0 comments on commit 2aaf256

Please sign in to comment.