Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

graph namespace #71

Open
wants to merge 256 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
256 commits
Select commit Hold shift + click to select a range
626813a
feat: feature_traits and convenient member aliases
DNKpp Aug 20, 2023
7798be6
fix: please gcc and clang
DNKpp Aug 20, 2023
298dbab
fix: disable CppClangTidyClangDiagnosticUnneededInternalDeclaration f…
DNKpp Aug 20, 2023
749d849
fix: please clang
DNKpp Aug 20, 2023
62cb508
feat: concepts::not_void
DNKpp Aug 20, 2023
28ca5ec
feat: graph::node::vertex customization point
DNKpp Aug 20, 2023
5410553
feat: concepts::node
DNKpp Aug 20, 2023
6f99df9
feat: queue::empty
DNKpp Aug 20, 2023
473549e
feat: graph::queue::insert
DNKpp Aug 20, 2023
035633f
feat: graph::queue::next
DNKpp Aug 20, 2023
23b1835
fix: explicitly disable some linter messages
DNKpp Aug 20, 2023
3952de8
feat: graph::concepts::queue_for
DNKpp Aug 20, 2023
873f290
fix: please many compilers
DNKpp Aug 20, 2023
295cc04
fix: please gcc
DNKpp Aug 20, 2023
9991ffe
fix: add missing include
DNKpp Aug 20, 2023
052682a
fix: please msvc v142 toolset
DNKpp Aug 20, 2023
00607a5
fix: finally please clang
DNKpp Aug 21, 2023
3cdd8b3
fix: finally please msvc toolset v142 (again)
DNKpp Aug 21, 2023
d205d26
feat: graph::tracker::set_discovered
DNKpp Aug 21, 2023
050fe54
feat: graph::tracker::set_visited
DNKpp Aug 21, 2023
f4958f8
add pragma once
DNKpp Aug 21, 2023
ee07f3f
feat: graph::concepts::tracker_for
DNKpp Aug 21, 2023
e706c35
feat: graph::detail::BasicState
DNKpp Aug 21, 2023
3fbcd47
fix: please clang
DNKpp Aug 21, 2023
280a31c
feat: graph::concepts::node_factory_for
DNKpp Aug 21, 2023
c0925da
fix: let minimal_node_factory satisfy concepts::node_factory_for
DNKpp Aug 21, 2023
1d3629f
fix: try please msvc v142 on older os versions
DNKpp Aug 21, 2023
2077426
fix: try please fix: try please msvc v142 on older os versions #2
DNKpp Aug 21, 2023
b1ec38d
feat: trompeloeil_ext::matches matcher
DNKpp Aug 21, 2023
35cd0ec
feat: catch_ext::RangesEmpty
DNKpp Aug 21, 2023
2ae9c4e
fix: please several compilers
DNKpp Aug 21, 2023
7578dbb
test: add catch_ext::RangesEmpty::describe case
DNKpp Aug 21, 2023
df6ba8c
test: add test case for trompeloeil_ext::matches operator <<
DNKpp Aug 21, 2023
029cf80
fix: please various compilers
DNKpp Aug 21, 2023
0276c6a
feat: add support for catch old style matches in trompeloeil_ext::mat…
DNKpp Aug 21, 2023
be0b76a
refactor: replace some complex constraints with sl::concepts::unquali…
DNKpp Aug 22, 2023
a10ac2c
feat: concepts::compatible_with
DNKpp Aug 22, 2023
1bc507c
tests: extend some test cases
DNKpp Aug 22, 2023
d6ce3aa
test: add BasicNodeFactoryMock type
DNKpp Aug 22, 2023
42f0801
fix: add missing whitespace in trompeloeil_ext::matches_matcher_fn de…
DNKpp Aug 22, 2023
e0841b3
fix: strengthen concepts::compatible_with
DNKpp Aug 22, 2023
d58da8a
test: extend node test cases
DNKpp Aug 22, 2023
37f148e
fix: improve concepts::node_factory_for
DNKpp Aug 22, 2023
15d66c0
feat: concepts::graph_for
DNKpp Aug 22, 2023
9d90bd5
test: add RankedTestNode
DNKpp Aug 22, 2023
1c640cd
test: add templated test case for existing feature categories
DNKpp Aug 22, 2023
2b6d328
fix: make queue customization points actually customizable
DNKpp Aug 23, 2023
c3e20f7
feat: add Stack queue mixin
DNKpp Aug 23, 2023
8dcea0b
feat: priority_tag
DNKpp Aug 23, 2023
847cb78
cleanup: remove priority_tag definition from graph/Queue.hpp
DNKpp Aug 23, 2023
0aeaf48
fix: make tracker customization points actually customizable
DNKpp Aug 23, 2023
f18381e
refactor: rename graph/mixins/queue/Stack.hpp to std_stack.hpp
DNKpp Aug 23, 2023
a98f636
feat: add std::map and std::unordered_map as tracker mixin
DNKpp Aug 23, 2023
6660ec4
fix: correct tracker protocol
DNKpp Aug 23, 2023
4f45139
extend BasicDriver implementation
DNKpp Aug 23, 2023
1b24a95
fix: quirky assert message
DNKpp Aug 23, 2023
deb727d
fix: please msvc v142
DNKpp Aug 23, 2023
388ebe2
cleanup: tests/traverse.cpp
DNKpp Aug 23, 2023
88e5301
fix: replace view approach on for non supporting compilers
DNKpp Aug 23, 2023
de59ed1
test: tweak single test case
DNKpp Aug 23, 2023
dbfc996
refactor: make global lambda a free function
DNKpp Aug 23, 2023
2634372
fix: exclude small part from lcov
DNKpp Aug 23, 2023
c9f088c
fix: reorder BasicTraverseDriver members
DNKpp Aug 24, 2023
f1c3be1
fix: let driver first discover and then visit the origin vertex
DNKpp Aug 24, 2023
ddf016d
test: add EmptyQueueStub
DNKpp Aug 24, 2023
9b9762b
feat: make BasicTraverseDriver members inplace constructible
DNKpp Aug 24, 2023
cbf6113
fix: make node::vertex actually customizable
DNKpp Aug 24, 2023
73adab6
refactor: simplify single test case
DNKpp Aug 24, 2023
c9c2251
feat: graph::node::rank customization point
DNKpp Aug 24, 2023
1ee61c7
feat: in_place_constructor
DNKpp Aug 26, 2023
8adf5d1
fix: please msvc < 1934
DNKpp Aug 28, 2023
f4c4540
fix: correct test case require
DNKpp Aug 28, 2023
0f046ca
refactor: move vertex customization point into Common.hpp
DNKpp Aug 28, 2023
86bc26a
feat: concepts::weight
DNKpp Aug 28, 2023
424850b
feat: concepts::readable_weight_type
DNKpp Aug 28, 2023
000b6ef
feat: graph::edge::weight customization point
DNKpp Aug 28, 2023
4c73ed1
feat: edge concepts and traits
DNKpp Aug 28, 2023
0f44313
refactor: remove feature-categories and rework feature_traits to node…
DNKpp Aug 28, 2023
aaa8438
refactor: rename compatible_with to edge_for
DNKpp Sep 5, 2023
bdd35f9
fix: concepts::edge_for
DNKpp Sep 5, 2023
54d0705
refactor: extract view symbols from graph/Node.hpp
DNKpp Sep 5, 2023
2ed923e
refactor: extract concepts::edge_for into Edge.hpp
DNKpp Sep 5, 2023
9084044
refactor: rename BasickView to BasicViewMock
DNKpp Sep 5, 2023
a96de39
refactor: remove BasicTestNode and RankedTestNode
DNKpp Sep 5, 2023
07eb088
refactor: traverse test code
DNKpp Sep 5, 2023
0ff4a6e
refactor: extract node factory symbols from graph/Node.hpp into graph…
DNKpp Sep 5, 2023
a2cbab0
fix: add missing utility include
DNKpp Sep 5, 2023
7f1e169
fix: correct node factory mocks
DNKpp Sep 5, 2023
7c1a0a0
feat: concepts::formattable
DNKpp Sep 5, 2023
299885f
fix: conditionally enable concepts::formattable
DNKpp Sep 5, 2023
8a80eb2
feat: catch2 std::format support
DNKpp Sep 5, 2023
92d678d
fix: add missing includes
DNKpp Sep 5, 2023
3e6cb32
fix: SL_UTILITY_HAS_STD_FORMAT macro for msvc
DNKpp Sep 6, 2023
001cfc9
fix: BasicTraverseDriver::next test case
DNKpp Sep 6, 2023
bcd96ac
feat: add first draft of dfs namespace
DNKpp Sep 6, 2023
840883b
feat: add formattable specialization for trompeloeil::printer
DNKpp Sep 6, 2023
56adfba
fix: please msvc v142
DNKpp Sep 6, 2023
f2bafeb
feat: node formatting support
DNKpp Sep 6, 2023
54d7dcf
test: tweak dfs test case
DNKpp Sep 6, 2023
a8e656f
fix: remove unnecessary include
DNKpp Sep 6, 2023
b9f793d
fix: remove unnecessary member
DNKpp Sep 6, 2023
59fe07a
fix: silent several resharper complaints
DNKpp Sep 6, 2023
47d738f
fix: check constructed traverse driver
DNKpp Sep 6, 2023
4bc24fd
fix: try please lcov
DNKpp Sep 6, 2023
46f620b
feat: CommonBasicNode and CommonRankedNode
DNKpp Sep 6, 2023
cc5f970
feat: CommonBasicEdge and CommonWeightedEdge
DNKpp Sep 6, 2023
f11a7e6
refactor: introduce better distinction between node and edge
DNKpp Sep 6, 2023
4253972
fix: correct param names
DNKpp Sep 6, 2023
1ceeee0
fix: correct formatting test case
DNKpp Sep 6, 2023
d1cf2c6
refactor: cleanup graph::dfs namespace
DNKpp Sep 6, 2023
2cb0891
test: add queue protocol test case for std::stack
DNKpp Sep 7, 2023
e9b326b
feat: add std::queue queue mixin
DNKpp Sep 7, 2023
44f41ed
fix: missing include guards in DepthFirstSearch.hpp
DNKpp Sep 7, 2023
742034d
feat: std::priority_queue queue mixin
DNKpp Sep 7, 2023
6d45410
feat: common queue aliasses
DNKpp Sep 7, 2023
64ca1a8
feat: common tracker aliasses
DNKpp Sep 7, 2023
dcd66d0
refactor: rename several aliasses to PascalCase
DNKpp Sep 7, 2023
99e26e9
refactor: utilize existing aliasses in dfs
DNKpp Sep 7, 2023
78ca12a
feat: UniformCostSearch
DNKpp Sep 7, 2023
486d30b
feat: PredecessorNodeDecorator
DNKpp Sep 7, 2023
f4df4a7
feat: add dedicated ucs::NodeFactory for predecessor decorated nodes
DNKpp Sep 7, 2023
fb5c6a0
feat: make PredecessorNodeDecorator formattable
DNKpp Sep 7, 2023
afe9ada
refactor: utilize CommonNodeFactory
DNKpp Sep 7, 2023
57d33d7
refactor: move formatters into Formatter.hpp
DNKpp Sep 7, 2023
0acbbf5
fix: please clang
DNKpp Sep 7, 2023
254b35e
fix: correct expected node type of ucs example view
DNKpp Sep 7, 2023
35b9bd3
fix: please gcc
DNKpp Sep 7, 2023
2d68fb0
fix: please gcc-10
DNKpp Sep 7, 2023
bb8f5fe
env: tell cmake that clangs c compiler just works
DNKpp Sep 7, 2023
40b80fd
env: add x64-Debug-v142 config
DNKpp Sep 7, 2023
22e2436
fix: please msvc v142
DNKpp Sep 7, 2023
4a9d516
ci: gather gcov artifacts
DNKpp Sep 8, 2023
33467a3
ci: fix gcov file path
DNKpp Sep 8, 2023
9e261f5
fix: remove unnecessary operator == from Traverser::Iterator
DNKpp Sep 8, 2023
edb9987
ci: limit workflow run
DNKpp Sep 9, 2023
43ef257
ci: add html report
DNKpp Sep 9, 2023
22c2ee3
ci: remove branch-coverage flag from lcov
DNKpp Sep 9, 2023
5249090
ci: tweak raw file upload
DNKpp Sep 9, 2023
06bf290
ci: fix genrate html step
DNKpp Sep 9, 2023
2c94111
ci: fix raw coverage file path
DNKpp Sep 9, 2023
1b79ac6
ci: rework coverage reporting
DNKpp Sep 10, 2023
720ecb6
ci: fix gcovr arguments
DNKpp Sep 10, 2023
b78e5ca
ci: fix gcovr arguments #2
DNKpp Sep 10, 2023
addbea8
ci: let gcovr exclude several branch types
DNKpp Sep 10, 2023
f588e16
feat: tracker::Null
DNKpp Sep 24, 2023
3651f6c
rework: node concepts and general traverser internals
DNKpp Sep 24, 2023
5dd1d5b
fix: bring Formatter.hpp in sync
DNKpp Sep 24, 2023
e4c0848
fix: bring dfs namespace in sync
DNKpp Sep 24, 2023
a36cc78
fix: bring ucs namespace in sync
DNKpp Sep 24, 2023
06cf09b
feat: add astar namespace
DNKpp Sep 24, 2023
caee6e1
env: tweak resharper syntax style
DNKpp Sep 24, 2023
4825b78
fix: graph::detail::BufferedExplorer
DNKpp Sep 24, 2023
ab84ad8
cleanup: remove obsolute node factory mocks
DNKpp Sep 24, 2023
0fb495b
fix: graph::detail::BufferedKernel
DNKpp Sep 24, 2023
53fe145
feat: SL_UTILITY_HAS_RANGES_VIEWS macro
DNKpp Sep 24, 2023
098cb22
test: enable test case if feature exist
DNKpp Sep 24, 2023
25ff611
fix: SL_UTILITY_HAS_RANGES_VIEWS macro
DNKpp Sep 24, 2023
47a5989
fix: add missing include
DNKpp Sep 24, 2023
4626b0e
fix: add astar::detail::BufferedKernel and select appropriate
DNKpp Sep 24, 2023
0480524
test: disable test cases correctly
DNKpp Sep 24, 2023
956a006
fix: reformulate SL_UTILITY_HAS_RANGES_VIEWS
DNKpp Sep 24, 2023
6e8412c
fix: actually remove disabled kernels and explorers
DNKpp Sep 24, 2023
d781332
test: move concepts::edge_for test into Node.cpp
DNKpp Sep 24, 2023
de4dde9
fix: please msvc v142
DNKpp Sep 24, 2023
88bef8c
feat: add explicit deduction guide for IterableTraverser
DNKpp Sep 30, 2023
181e4c3
fix: explicity delete other begin overloads for IterableTraverser
DNKpp Sep 30, 2023
d9047bb
apply code style on Traverser.hpp
DNKpp Sep 30, 2023
d33d5d7
test: add IterableTraverser test cases
DNKpp Sep 30, 2023
c27b0a7
refactor: graph::concepts::queue_for test range
DNKpp Sep 30, 2023
2c28c38
fix: please msvc v142
DNKpp Sep 30, 2023
dfe45b0
fix: please test workflow
DNKpp Sep 30, 2023
b8d5045
fix: please test workflow no. 2
DNKpp Sep 30, 2023
989c78b
fix: try please coverage reporter workflow
DNKpp Sep 30, 2023
63b4a37
fix: define exclude-pattern-prefix in coverage workflow
DNKpp Sep 30, 2023
65620fd
fix: revert previous change and fix the damn stop token
DNKpp Sep 30, 2023
ed21b89
ci: add decisions flag to gcovr
DNKpp Oct 1, 2023
3608af6
feat: DepthNodeDecorator
DNKpp Oct 1, 2023
1ac1905
fix: make detail::NodeFactory accept all node decorators
DNKpp Oct 1, 2023
653eb34
test: add ViewStubs
DNKpp Oct 1, 2023
483f287
feat: graph::bfs namespace
DNKpp Oct 1, 2023
e29e4d0
test: extend dfs test cases
DNKpp Oct 2, 2023
0b7dbe3
test: overhaul bfs test cases
DNKpp Oct 2, 2023
0ffc66f
fix: please clang
DNKpp Oct 3, 2023
553670d
refactor: rename convert_test_expectations to slice_test_expectations
DNKpp Oct 3, 2023
211330d
test: extend graph::ucs tests
DNKpp Oct 3, 2023
ad19649
test: extend dfs and bfs tests
DNKpp Oct 3, 2023
5a232fc
fix: conditional noexcept of SingleDestinationHeuristic ctor
DNKpp Oct 3, 2023
3afe6e3
refactor: overhaul astar tests
DNKpp Oct 5, 2023
af85c2d
refactor: move node and factory decorators into decorator namespace
DNKpp Oct 5, 2023
ef0ecee
feat: add CommonNode alias into algorithm namespaces
DNKpp Oct 5, 2023
b08cd14
test: add IterableTraverser trait tests
DNKpp Oct 5, 2023
c6d4edd
cleanup: revisit Node.hpp includes
DNKpp Oct 5, 2023
1669886
feat: view::edges customization point
DNKpp Oct 5, 2023
9035649
test: adapt test case to matcher
DNKpp Oct 5, 2023
98c79a9
fix: make use of view::edges customization point
DNKpp Oct 5, 2023
781f1cc
fix: please msvc v142
DNKpp Oct 6, 2023
a62c0a5
fix: please gcc 10
DNKpp Oct 6, 2023
6745c51
fix: please coverage runner
DNKpp Oct 6, 2023
f53c2d4
add benchmarking vs boost::graph
DNKpp Oct 6, 2023
514d491
cleanup: remove unnecessary TEST_CASE
DNKpp Oct 6, 2023
8413b5e
refactor: apply some modernizations in boost benchmark
DNKpp Oct 6, 2023
26b9e58
cleanup: remove unused includes
DNKpp Oct 6, 2023
e5901e7
docs: modify comment
DNKpp Oct 6, 2023
472570b
fix: correctly use uniform_int_distribution
DNKpp Oct 6, 2023
b0202c7
fix: grid construction in boost comparison
DNKpp Oct 6, 2023
66c8c6e
fix: prevent astar benchmark from endless looping
DNKpp Oct 6, 2023
b4e9678
test: re-enable benchmark test cases
DNKpp Oct 6, 2023
3d8c867
feat: store randomized benchmark mazes
DNKpp Oct 6, 2023
baa2374
refactor: merge explorer and kernel implementations
DNKpp Oct 7, 2023
fd5e3e9
fix: please clang
DNKpp Oct 7, 2023
1b54d1f
feat: graph::concepts::explorer
DNKpp Oct 7, 2023
93a18bb
refactor: make traversing an actual strategy of BasicTraverser
DNKpp Oct 7, 2023
c379dd6
refactor: merge test case and benchmarks
DNKpp Oct 7, 2023
5b7911a
feat: add benchmarks/Defines.hpp
DNKpp Oct 7, 2023
ba78acd
ci: add run_benchmarks workflow
DNKpp Oct 7, 2023
9b9e879
fix: benchmark workflow name
DNKpp Oct 7, 2023
e039dd8
fix: benchmark workflow names
DNKpp Oct 7, 2023
1e60a7e
refactor: make benchmarks less c++20 dependent
DNKpp Oct 7, 2023
f2f5c9d
fix: benchmark workflow
DNKpp Oct 7, 2023
b5a2c38
fix: use correct artifacts path in benchmark workflow
DNKpp Oct 7, 2023
aecc398
ci: adjust workflow
DNKpp Oct 8, 2023
96f2280
ci: run benchmarks sequential
DNKpp Oct 8, 2023
8864db8
ci: directly run benchmark executable
DNKpp Oct 8, 2023
8e7b5af
fix: windows benchmark workflow
DNKpp Oct 8, 2023
9401c3b
fix: benchmark workflow
DNKpp Oct 8, 2023
e32046c
fix: windows multiline command in benchmark workflow
DNKpp Oct 8, 2023
1479671
fix: another approach and try ` instead..
DNKpp Oct 8, 2023
31dcbb8
fix: selected generator
DNKpp Oct 8, 2023
2c8b2e4
refactor: graph::view api and concepts
DNKpp Oct 9, 2023
24e1dee
fix: please msvc v142
DNKpp Oct 9, 2023
3e0fcc0
refactor: rename view symbols to graph
DNKpp Oct 12, 2023
c3d399f
docs: add graph/Common.hpp documentation
DNKpp Oct 12, 2023
967744a
feat: std::reference_wrapper graph mixin
DNKpp Oct 12, 2023
012ebcb
fix: add missing includes
DNKpp Oct 12, 2023
13099d0
fix: add missing version include
DNKpp Oct 12, 2023
d61c454
refactor: restructure Catch2Ext tests
DNKpp Oct 12, 2023
1fb43c5
fix: SL_UTILITY_HAS_RANGES_VIEWS macro for clang
DNKpp Oct 12, 2023
f399d6c
docs: add documentation for graph::customize
DNKpp Oct 15, 2023
8269cac
fix: make LazyExplorer the default, when possible
DNKpp Oct 15, 2023
f82851c
docs: add documentation for graph/Graph.hpp
DNKpp Oct 15, 2023
fceff9c
docs: extend graph sub-section documentation
DNKpp Oct 16, 2023
07f33e2
docs: add graph::edge documentation
DNKpp Oct 16, 2023
03658d1
refactor: rename Range typedefs to Stream
DNKpp Nov 11, 2023
6beafc9
test: add astar::CommonNode test cases
DNKpp Nov 11, 2023
7c63547
docs: fix edge docs
DNKpp Nov 11, 2023
68e41e0
docs: add missing concepts::edge and concepts::weighted_edge docs
DNKpp Nov 11, 2023
d428e91
docs: add documentation for graph/Node.hpp
DNKpp Nov 11, 2023
d5b17a7
docs: fix some typos
DNKpp Nov 11, 2023
cae391a
docs: please doxgen on recursive inheritance
DNKpp Nov 11, 2023
e4ab927
docs: upgrade Doxyfile.in to new version
DNKpp Nov 11, 2023
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
67 changes: 50 additions & 17 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,45 @@ name: coverage
env:
GXX_VERSION: 12
TESTS_DIR: out/tests
COVERAGE_FILE: coverage.info
COBERTURA_REPORT: cobertura.xml
COVERALLS_REPORT: coveralls.json
HTML_REPORT_DIR: html/
COVERAGE_ARTIFACT_NAME: coverage-report

on: [push, pull_request]
on:
push:
branches:
- master
- development
paths-ignore:
- 'README.md'
- 'docs/'
pull_request:
branches:
- '**'
paths-ignore:
- 'README.md'
- 'docs/'

jobs:
create-coverage-report:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Install compiler
- name: Install prerequisites
run: |
sudo apt-get update
sudo apt-get install pip -y
sudo pip install gcovr
sudo apt-get install g++-${{ env.GXX_VERSION }} -y
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-${{ env.GXX_VERSION }} ${{ env.GXX_VERSION }}00 --slave /usr/bin/gcc gcc /usr/bin/gcc-${{ env.GXX_VERSION }}
sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-${{ env.GXX_VERSION }} ${{ env.GXX_VERSION }}00

- name: Compile tests
env:
CXXFLAGS: "--coverage -fno-inline -fprofile-abs-path"
LDFLAGS: "-fprofile-arcs"
CXXFLAGS: "-g -O0 --coverage -fno-inline -fprofile-abs-path -fkeep-inline-functions -fkeep-static-functions"
CC: gcc
CXX: g++
run: |
Expand All @@ -33,19 +51,34 @@ jobs:
- name: Run tests
env:
CTEST_OUTPUT_ON_FAILURE: 1
run: ctest --test-dir ${{ env.TESTS_DIR }} --timeout 30 -C Debug -j4
run: ctest --test-dir ${{env.TESTS_DIR}} -C Debug -j4

- name: Collect data
- name: Run gcovr
run: |
sudo apt-get install lcov -y
lcov --capture -d ${{env.TESTS_DIR}} -o ${{env.COVERAGE_FILE}} --include "$PWD/include/*"
lcov -l ${{env.COVERAGE_FILE}}
gcovr --root ${{env.TESTS_DIR}} --filter include/Simple-Utility --keep -j 4 \
--exclude-lines-by-pattern "\s*assert\(" \
--exclude-unreachable-branches \
--exclude-noncode-lines \
--exclude-throw-branches \
--decisions \
--cobertura ${{env.COBERTURA_REPORT}} --cobertura-pretty \
--html-nested ${{env.HTML_REPORT_DIR}} --html-title "Simple-Utility Coverage Report" \
--coveralls ${{env.COVERALLS_REPORT}} --coveralls-pretty

- name: Upload artifacts
- name: Upload gcov coverage report artifacts
uses: actions/upload-artifact@v3
with:
name: gcov-files
path: "${{env.TESTS_DIR}}/*.gcov"

- name: Upload generated report artifacts
uses: actions/upload-artifact@v3
with:
name: ${{env.COVERAGE_ARTIFACT_NAME}}
path: ${{env.COVERAGE_FILE}}
path: |
${{env.COBERTURA_REPORT}}
${{env.COVERALLS_REPORT}}
${{env.HTML_REPORT_DIR}}

codacy-report:
needs: create-coverage-report
Expand All @@ -60,8 +93,8 @@ jobs:
- name: Upload coverage to Codacy
uses: codacy/codacy-coverage-reporter-action@v1
with:
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
coverage-reports: ${{ env.COVERAGE_FILE }}
project-token: ${{secrets.CODACY_PROJECT_TOKEN}}
coverage-reports: ${{env.COBERTURA_REPORT}}

codecov-report:
needs: create-coverage-report
Expand All @@ -77,8 +110,8 @@ jobs:
uses: codecov/codecov-action@v3
with:
name: $GITHUB_REPOSITORY
token: ${{ secrets.CODECOV_TOKEN }}
files: ${{ env.COVERAGE_FILE }}
token: ${{secrets.CODECOV_TOKEN}}
files: ${{env.COBERTURA_REPORT}}
fail_ci_if_error: true
verbose: true

Expand All @@ -96,6 +129,6 @@ jobs:
uses: coverallsapp/github-action@v2
with:
github-token: ${{secrets.GITHUB_TOKEN}}
file: ${{env.COVERAGE_FILE}}
format: lcov
file: ${{env.COVERALLS_REPORT}}
format: coveralls
fail-on-error: true
161 changes: 161 additions & 0 deletions .github/workflows/run_benchmarks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
name: run benchmarks

env:
BUILD_DIR: out # root build directory
BENCHMARK_DIR: benchmarks # relative directory below BUILD_DIR
ARTIFACTS_DIR: artifacts # relative directory below BENCHMARK_DIR

on:
push:
branches:
- master
- development
paths-ignore:
- 'README.md'
- 'docs/'
pull_request:
branches:
- '**'
paths-ignore:
- 'README.md'
- 'docs/'

jobs:
ubuntu-22_04:
runs-on: ubuntu-22.04

strategy:
fail-fast: false
matrix:
build_mode: [Release]
compiler:
- pkg: g++-12
exe: g++-12
- pkg: g++-11
exe: g++-11
- pkg: g++-10
exe: g++-10
- pkg: clang-14
exe: clang++-14
- pkg: clang-13
exe: clang++-13
- pkg: clang-12
exe: clang++-12
- pkg: clang-11
exe: clang++-11

steps:
- uses: actions/checkout@v3
- name: Install compiler
run: |
sudo apt-get update
sudo apt-get install ${{ matrix.compiler.pkg }} -y
- name: Compile
env:
CXX: ${{ matrix.compiler.exe }}
run: |
cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DSIMPLE_UTILITY_BUILD_BENCHMARKS=Yes -B ${{ env.BUILD_DIR }} -S .
cmake --build ${{ env.BUILD_DIR }} -j4
- name: Run benchmarks
run: "${{env.BUILD_DIR}}/${{env.BENCHMARK_DIR}}/Simple-Utility-Benchmarks"
- name: Upload generated report artifacts
uses: actions/upload-artifact@v3
with:
path: "${{env.ARTIFACTS_DIR}}"


ubuntu-20_04:
runs-on: ubuntu-20.04

strategy:
fail-fast: false
matrix:
build_mode: [Release]
compiler:
- pkg: g++-11
exe: g++-11
- pkg: g++-10
exe: g++-10
- pkg: clang-12
exe: clang++-12
- pkg: clang-11
exe: clang++-11
- pkg: clang-10
exe: clang++-10

steps:
- uses: actions/checkout@v3
- name: Install compiler
run: |
sudo apt-get update
sudo apt-get install ${{ matrix.compiler.pkg }} -y
- name: Compile
env:
CXX: ${{ matrix.compiler.exe }}
run: |
cmake -DCMAKE_BUILD_TYPE=${{ matrix.build_mode }} -DSIMPLE_UTILITY_BUILD_BENCHMARKS=Yes -B ${{ env.BUILD_DIR }} -S .
cmake --build ${{ env.BUILD_DIR }} -j4
- name: Run benchmarks
run: "${{env.BUILD_DIR}}/${{env.BENCHMARK_DIR}}/Simple-Utility-Benchmarks"
- name: Upload generated report artifacts
uses: actions/upload-artifact@v3
with:
path: "${{env.ARTIFACTS_DIR}}"


windows_2022:
runs-on: windows-2022

strategy:
fail-fast: false
matrix:
build_mode: [Release]
toolset: [v142, v143, ClangCl]

steps:
- uses: actions/checkout@v3
- name: Compile
run: |
cmake -G"Visual Studio 17 2022" `
-T${{matrix.toolset}} `
-DCMAKE_BUILD_TYPE=${{matrix.build_mode}} `
-DSIMPLE_UTILITY_BUILD_BENCHMARKS=Yes `
-B${{env.BUILD_DIR}} `
-Ax64 `
-S .
cmake --build ${{ env.BUILD_DIR }} --config ${{ matrix.build_mode }} -j4
- name: Run benchmarks
run: ".\\${{env.BUILD_DIR}}\\${{env.BENCHMARK_DIR}}\\${{matrix.build_mode}}\\Simple-Utility-Benchmarks.exe"
- name: Upload generated report artifacts
uses: actions/upload-artifact@v3
with:
path: "${{env.ARTIFACTS_DIR}}"


windows_2019:
runs-on: windows-2019

strategy:
fail-fast: false
matrix:
build_mode: [Release]
toolset: [v142, ClangCl]

steps:
- uses: actions/checkout@v3
- name: Compile
run: |
cmake -G"Visual Studio 16 2019" `
-T${{matrix.toolset}} `
-DCMAKE_BUILD_TYPE=${{matrix.build_mode}} `
-DSIMPLE_UTILITY_BUILD_BENCHMARKS=Yes `
-B${{env.BUILD_DIR}} `
-Ax64 `
-S .
cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_mode}} -j4
- name: Run benchmarks
run: ".\\${{env.BUILD_DIR}}\\${{env.BENCHMARK_DIR}}\\${{matrix.build_mode}}\\Simple-Utility-Benchmarks.exe"
- name: Upload generated report artifacts
uses: actions/upload-artifact@v3
with:
path: "${{env.ARTIFACTS_DIR}}"
13 changes: 11 additions & 2 deletions .github/workflows/run_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,18 @@ env:

on:
push:
branches: [master, development]
branches:
- master
- development
paths-ignore:
- 'README.md'
- 'docs/'
pull_request:
branches: [master, development]
branches:
- '**'
paths-ignore:
- 'README.md'
- 'docs/'

jobs:
ubuntu-22_04:
Expand Down
6 changes: 6 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ if (SIMPLE_UTILITY_BUILD_TESTS OR CMAKE_SOURCE_DIR STREQUAL Simple-Utility_SOURC
add_subdirectory("tests")
endif()

OPTION(SIMPLE_UTILITY_BUILD_BENCHMARKS "Determines whether benchmarks will be built." OFF)
if (SIMPLE_UTILITY_BUILD_BENCHMARKS)
include(CTest)
add_subdirectory("benchmarks")
endif()

option(SIMPLE_UTILITY_GEN_DOCS_ENABLED "Enables the GenerateDocs target." OFF)
if (SIMPLE_UTILITY_GEN_DOCS_ENABLED)
add_subdirectory("docs")
Expand Down
Loading
Loading