diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000000000000000000000000000000000000..a5943c223f8047bf62b7443bfc55cc4be4db5852 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,158 @@ +name: Build + +on: + - push + +jobs: + build_ubuntu: + runs-on: ubuntu-18.04 + container: gitlab-registry.cern.ch/acts/machines/ubuntu1910 + steps: + - uses: actions/checkout@v1 + + - name: Configure + run: > + mkdir build && cd build + && cmake .. + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_STANDARD=17 + -DACTS_BUILD_UNITTESTS=ON + -DCMAKE_CXX_FLAGS="-Werror -fdiagnostics-color=always" + -DACTS_BUILD_DIGITIZATION_PLUGIN=on + -DACTS_BUILD_IDENTIFICATION_PLUGIN=on + -DACTS_BUILD_JSON_PLUGIN=on + -DACTS_BUILD_BENCHMARKS=on + -DACTS_BUILD_FATRAS=on + -DACTS_BUILD_EXAMPLES=on + -DACTS_BUILD_UNITTESTS=on + -DACTS_BUILD_LEGACY=on + -DACTS_BUILD_DD4HEP_PLUGIN=on + -DACTS_BUILD_TGEO_PLUGIN=on + -DACTS_BUILD_INTEGRATIONTESTS=on + + - name: Build + working-directory: build + run: cmake --build . -- -j$(nproc) + + - name: Unit tests + working-directory: build + run: cmake --build . -- test + + - name: Integration tests + working-directory: build + run: cmake --build . -- integrationtests + + build_macos: + runs-on: macos-10.15 + steps: + - uses: actions/checkout@v1 + with: + path: src + + - name: Install dependencies + run: > + cd .. + && brew install boost eigen cmake xerces-c + && mkdir deps + && curl -SL https://acts.web.cern.ch/ACTS/ci/macOS_10.15_deps.tar.gz | tar -xzC deps + + - name: Configure + run: > + cd .. + && source deps/bin/thisroot.sh + && mkdir build && cd build + && cmake ../src + -DCMAKE_PREFIX_PATH=../deps + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_STANDARD=17 + -DACTS_BUILD_UNITTESTS=ON + -DCMAKE_CXX_FLAGS="-Werror -fdiagnostics-color=always" + -DACTS_BUILD_DIGITIZATION_PLUGIN=on + -DACTS_BUILD_IDENTIFICATION_PLUGIN=on + -DACTS_BUILD_JSON_PLUGIN=on + -DACTS_BUILD_BENCHMARKS=on + -DACTS_BUILD_FATRAS=on + -DACTS_BUILD_EXAMPLES=on + -DACTS_BUILD_UNITTESTS=on + -DACTS_BUILD_LEGACY=on + -DACTS_BUILD_DD4HEP_PLUGIN=on + -DACTS_BUILD_TGEO_PLUGIN=on + -DACTS_BUILD_INTEGRATIONTESTS=on + + - name: Build + working-directory: ../build + run: cmake --build . -- -j2 + + - name: Unit tests + working-directory: ../build + run: cmake --build . -- test + + - name: Integration tests + working-directory: ../build + run: cmake --build . -- integrationtests + + + build_lcg: + runs-on: ubuntu-latest + container: gitlab-registry.cern.ch/acts/machines/${{ matrix.os }}_lcg${{ matrix.lcg }}:latest + strategy: + matrix: + os: + - cc7 + - slc6 + lcg: + - 95 + - 96 + exclude: + - os: slc6 + lcg: 96 + env: + lcg_map_95: 95apython3 + lcg_map_96: 96 + os_map_cc7: centos7 + os_map_slc6: slc6 + steps: + - uses: actions/checkout@v1 + + # - name: Build on ${{ matrix.os }}, LCG${{ matrix.lcg }} + # run: .github/workflows/build_job.sh ${{ matrix.lcg }} ${{ matrix.os }} + + - name: Configure + run: > + source /opt/lcg/views/LCG_${lcg_map_${{ matrix.lcg }}}/x86_64-${os_map_${{ matrix.os }}}-gcc8-opt/setup.sh + && mkdir build && cd build + && cmake .. + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_CXX_STANDARD=17 + -DACTS_BUILD_UNITTESTS=ON + -DCMAKE_CXX_FLAGS="-Werror -fdiagnostics-color=always" + -DACTS_BUILD_DIGITIZATION_PLUGIN=on + -DACTS_BUILD_IDENTIFICATION_PLUGIN=on + -DACTS_BUILD_JSON_PLUGIN=on + -DACTS_BUILD_BENCHMARKS=on + -DACTS_BUILD_FATRAS=on + -DACTS_BUILD_EXAMPLES=on + -DACTS_BUILD_UNITTESTS=on + -DACTS_BUILD_LEGACY=on + -DACTS_BUILD_DD4HEP_PLUGIN=on + -DACTS_BUILD_TGEO_PLUGIN=on + -DACTS_BUILD_INTEGRATIONTESTS=on + + - name: Build + working-directory: build + run: > + source /opt/lcg/views/LCG_${lcg_map_${{ matrix.lcg }}}/x86_64-${os_map_${{ matrix.os }}}-gcc8-opt/setup.sh + && cmake --build . -- -j$(nproc) + + - name: Unit tests + working-directory: build + run: > + source /opt/lcg/views/LCG_${lcg_map_${{ matrix.lcg }}}/x86_64-${os_map_${{ matrix.os }}}-gcc8-opt/setup.sh + && cmake --build . -- test + + - name: Integration tests + working-directory: build + run: > + source /opt/lcg/views/LCG_${lcg_map_${{ matrix.lcg }}}/x86_64-${os_map_${{ matrix.os }}}-gcc8-opt/setup.sh + && cmake --build . -- integrationtests + diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 0000000000000000000000000000000000000000..2aef22946ea46c4799c4dd972e33beb9d34958c6 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,39 @@ +name: Checks + +on: + - push + + +jobs: + format: + runs-on: ubuntu-18.04 + container: gitlab-registry.cern.ch/acts/machines/check_llvm8:latest + steps: + - uses: actions/checkout@v1 + - name: Check + run: CI/check_format . + + + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: changed + path: changed + + license: + runs-on: ubuntu-18.04 + container: python:alpine3.6 + steps: + - uses: actions/checkout@v1 + - name: Check + run: > + apk add --no-cache git + && CI/check_license.py . --exclude "*thirdparty/*" + include_guards: + runs-on: ubuntu-18.04 + container: python:alpine3.6 + steps: + - uses: actions/checkout@v1 + - name: Check + run: > + CI/check_include_guards.py . --fail-global --exclude "*thirdparty/*" diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 0000000000000000000000000000000000000000..a09a70a1cb90cc076ddec5c920a2f153505b3dba --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,39 @@ +name: coverage + +on: + - pull_request + +jobs: + build_debug: + runs-on: ubuntu-18.04 + container: gitlab-registry.cern.ch/acts/machines/ubuntu1910 + steps: + - uses: actions/checkout@v1 + - name: Build + run: > + mkdir build && cd build + && cmake .. + -DCMAKE_BUILD_TYPE=Debug + -DCMAKE_CXX_STANDARD=17 + -DACTS_BUILD_UNITTESTS=ON + -DCMAKE_CXX_FLAGS="-Werror -fdiagnostics-color=always" + -DACTS_BUILD_DIGITIZATION_PLUGIN=on + -DACTS_BUILD_IDENTIFICATION_PLUGIN=on + -DACTS_BUILD_JSON_PLUGIN=on + -DACTS_BUILD_BENCHMARKS=on + -DACTS_BUILD_FATRAS=on + -DACTS_BUILD_EXAMPLES=on + -DACTS_BUILD_UNITTESTS=on + -DACTS_BUILD_LEGACY=on + -DACTS_BUILD_DD4HEP_PLUGIN=on + -DACTS_BUILD_TGEO_PLUGIN=on + -DACTS_BUILD_INTEGRATIONTESTS=off + && cmake --build . -- -j$(nproc) + && cmake --build . -- test + && pip3 install gcovr + && /usr/bin/python3 ../CI/test_coverage + - name: Upload coverage + uses: codecov/codecov-action@v1 + with: + file: ./build/coverage/cov.xml + diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b66bea5a58a8f3b8286d3812c0632e1047ebccac..0000000000000000000000000000000000000000 --- a/.travis.yml +++ /dev/null @@ -1,52 +0,0 @@ -language: cpp - -matrix: - include: - - os: osx - osx_image: xcode10.2 - before_install: - - brew install eigen - - os: linux - addons: - apt: - update: true - sources: - - sourceline: 'ppa:mhier/libboost-latest' - - ubuntu-toolchain-r-test - packages: - - libeigen3-dev - - boost1.67 - - cmake - - g++-7 - env: CC=gcc-7 CXX=g++-7 - - os: linux - sudo: required - before_install: - - wget --no-check-certificate https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-latest_all.deb - - sudo dpkg -i cvmfs-release-latest_all.deb - - sudo apt-get update - - sudo apt-get install cvmfs cvmfs-config-default - - rm -f cvmfs-release-latest_all.deb - - wget --no-check-certificate https://lcd-data.web.cern.ch/lcd-data/CernVM/default.local - - sudo mkdir -p /etc/cvmfs - - sudo mv default.local /etc/cvmfs/default.local - - sudo /etc/init.d/autofs stop - - sudo cvmfs_config setup - - sudo mkdir -p /cvmfs/sft.cern.ch - - sudo mount -t cvmfs sft.cern.ch /cvmfs/sft.cern.ch - - ls /cvmfs/sft.cern.ch - services: - - docker - script: - - docker run -ti --name CI_container -v ${PWD}:/src -w /src -v"/cvmfs:/cvmfs:ro" -d gitlab-registry.cern.ch/acts/machines/cc7 /bin/bash - - docker exec -ti CI_container /bin/bash -c "source CI/setup_lcg94.sh && mkdir build && cd build && cmake .. -DACTS_BUILD_EXAMPLES=on -DACTS_BUILD_TESTS=on -DACTS_BUILD_INTEGRATION_TESTS=on -DACTS_BUILD_DIGITIZATION_PLUGIN=on -DACTS_BUILD_IDENTIFICATION_PLUGIN=on -DACTS_BUILD_JSON_PLUGIN=on -DACTS_BUILD_LEGACY=on -DACTS_BUILD_DD4HEP_PLUGIN=on -DACTS_BUILD_TGEO_PLUGIN=on && cmake --build . -- -j$(nproc) && cmake --build . -- test" - -script: - - mkdir build && cd build - - cmake .. -DCMAKE_CXX_FLAGS="-std=c++17" -DACTS_BUILD_EXAMPLES=on -DACTS_BUILD_TESTS=on -DACTS_BUILD_INTEGRATION_TESTS=on -DACTS_BUILD_DIGITIZATION_PLUGIN=on -DACTS_BUILD_IDENTIFICATION_PLUGIN=on -DACTS_BUILD_JSON_PLUGIN=on -DACTS_BUILD_LEGACY=on - - cmake --build . -- -j$(nproc) - - cmake --build . -- test - - - - diff --git a/CI/check_format b/CI/check_format index ea60eee823a4d5f95ff8a29fe9460cd17a5723a3..8038456c6f18c73480050841f22c2b50ead97685 100755 --- a/CI/check_format +++ b/CI/check_format @@ -26,7 +26,7 @@ find . \( -iname '*.cpp' -or -iname '*.hpp' -or -iname '*.ipp' \) \ | xargs $_binary -i -style=file -if ! [ -z $CI ]; then +if ! [ -z $CI ] || ! [ -z $GITHUB_ACTIONS ]; then mkdir changed for f in $(git diff --name-only); do cp --parents $f changed diff --git a/CI/test_coverage b/CI/test_coverage index da90e1769b31d83821a50445cc3b727f326c6a29..5e8c6aeaaa054402b68fca4b61272379b368a90a 100755 --- a/CI/test_coverage +++ b/CI/test_coverage @@ -81,8 +81,9 @@ call(gcovr + ["--gcov-executable", args.gcov] + ["-j", str(mp.cpu_count())] + excludes + - ["--html", "--html-details", - "-o", os.path.join(coverage_dir, "index.html")]) + ["--xml", "-o", "coverage/cov.xml"]) + # ["--html", "--html-details", + # "-o", os.path.join(coverage_dir, "index.html")]) call(gcovr + ["-r", source_dir] diff --git a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/LineSurfaceStub.hpp b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/LineSurfaceStub.hpp index 41ed0a6b803ef3e0e222e16a13a5b9429b310aab..e384e22758e7a29213f4d4e5784cae38ef472f67 100644 --- a/Tests/CommonHelpers/Acts/Tests/CommonHelpers/LineSurfaceStub.hpp +++ b/Tests/CommonHelpers/Acts/Tests/CommonHelpers/LineSurfaceStub.hpp @@ -38,6 +38,12 @@ class LineSurfaceStub : public LineSurface { LineSurfaceStub(const LineSurfaceStub& ls) : GeometryObject(), LineSurface(ls) { /* nop */ } + + LineSurfaceStub& operator=(const LineSurfaceStub& ls) { + LineSurface::operator=(ls); + return *this; + } + // LineSurfaceStub(const GeometryContext& gctx, const LineSurfaceStub& ls, const Transform3D& t) diff --git a/Tests/IntegrationTests/Fatras/FatrasSimulationTests.cpp b/Tests/IntegrationTests/Fatras/FatrasSimulationTests.cpp index 0b7c41a299b442855c4c5a2f538a3bf6f773b0c1..1bcff998afe4c4f505dcd7e1bca735213a4d9299 100644 --- a/Tests/IntegrationTests/Fatras/FatrasSimulationTests.cpp +++ b/Tests/IntegrationTests/Fatras/FatrasSimulationTests.cpp @@ -81,29 +81,30 @@ using Simulator = ActsFatras::Simulator<ChargedSelector, ChargedSimulator, // parameters for data-driven test cases -const auto rangePdg = boost::unit_test::data::make({ - Acts::PdgParticle::eElectron, - Acts::PdgParticle::eMuon, - Acts::PdgParticle::ePionPlus, - Acts::PdgParticle::ePionZero, -}); -const auto rangePhi = boost::unit_test::data::make({ +const auto rangePdg = + boost::unit_test::data::make(std::vector<Acts::PdgParticle>{ + Acts::PdgParticle::eElectron, + Acts::PdgParticle::eMuon, + Acts::PdgParticle::ePionPlus, + Acts::PdgParticle::ePionZero, + }); +const auto rangePhi = boost::unit_test::data::make(std::vector<double>{ -135_degree, -45_degree, 45_degree, 135_degree, }); -const auto rangeEta = boost::unit_test::data::make({ +const auto rangeEta = boost::unit_test::data::make(std::vector<double>{ -1.0, 0.0, 1.0, 3.0, }); -const auto rangeP = boost::unit_test::data::make({ +const auto rangeP = boost::unit_test::data::make(std::vector<double>{ 1_GeV, 10_GeV, }); -const auto rangeNumParticles = boost::unit_test::data::make({ +const auto rangeNumParticles = boost::unit_test::data::make(std::vector<int>{ 1, 2, }); diff --git a/Tests/UnitTests/Core/Seeding/ATLASCuts.hpp b/Tests/UnitTests/Core/Seeding/ATLASCuts.hpp index 593bc7c7788693388893f754b74fc5d4770d760c..9f2507f9da382693241c7f5168cb5a608e868ad1 100644 --- a/Tests/UnitTests/Core/Seeding/ATLASCuts.hpp +++ b/Tests/UnitTests/Core/Seeding/ATLASCuts.hpp @@ -83,8 +83,8 @@ ATLASCuts<SpacePoint>::cutPerMiddleSP( newSeedsVector.push_back(std::move(seeds[i])); } } - return std::move(newSeedsVector); + return newSeedsVector; } - return std::move(seeds); + return seeds; } } // namespace Acts diff --git a/Tests/UnitTests/Fatras/Physics/Dataset.hpp b/Tests/UnitTests/Fatras/Physics/Dataset.hpp index eee0c82117753522cfbd3d9ade9a182fb58102bd..4feafbc512bc60f10d32cdd3e3c1ed59d7c75bdc 100644 --- a/Tests/UnitTests/Fatras/Physics/Dataset.hpp +++ b/Tests/UnitTests/Fatras/Physics/Dataset.hpp @@ -22,7 +22,7 @@ namespace data = boost::unit_test::data; using namespace Acts::UnitLiterals; // particle identity -const auto particlePdg = data::make({ +const auto particlePdg = data::make(std::vector<Acts::PdgParticle>{ Acts::PdgParticle::eElectron, Acts::PdgParticle::ePositron, Acts::PdgParticle::eMuon,