diff --git a/.circleci/config.yml b/.circleci/config.yml index 45ded26a..aed5c182 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -9,9 +9,11 @@ jobs: # Specify the execution environment. You can specify an image from Dockerhub or use one of our Convenience Images from CircleCI's Developer Hub. # See: https://circleci.com/docs/2.0/configuration-reference/#docker-machine-macos-windows-executor docker: - - image: cimg/rust:1.58.1 + - image: cimg/rust:1.62.0 environment: RUST_LOG: info + RUSTFLAGS: "-C instrument-coverage" + LLVM_PROFILE_FILE: "pgcat-%m.profraw" - image: postgres:14 # auth: # username: mydockerhub-user @@ -32,16 +34,19 @@ jobs: command: "cargo fmt --check" - run: name: "Install dependencies" - command: "sudo apt-get update && sudo apt-get install -y psmisc postgresql-contrib-12 postgresql-client-12 ruby ruby-dev libpq-dev python3 python3-pip" + command: "sudo apt-get update && sudo apt-get install -y psmisc postgresql-contrib-12 postgresql-client-12 ruby ruby-dev libpq-dev python3 python3-pip lcov llvm-11" + - run: + name: "Install rust tools" + command: "cargo install cargo-binutils rustfilt && rustup component add llvm-tools-preview" - run: name: "Build" command: "cargo build" - run: - name: "Test" - command: "cargo test" - - run: - name: "Test end-to-end" - command: "bash .circleci/run_tests.sh" + name: "Tests" + command: "cargo test && bash .circleci/run_tests.sh && .circleci/generate_coverage.sh" + - store_artifacts: + path: /tmp/cov + destination: coverage-data - save_cache: key: cargo-lock-2-{{ checksum "Cargo.lock" }} paths: diff --git a/.circleci/generate_coverage.sh b/.circleci/generate_coverage.sh new file mode 100755 index 00000000..59fe44aa --- /dev/null +++ b/.circleci/generate_coverage.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +rust-profdata merge -sparse pgcat-*.profraw -o pgcat.profdata + +rust-cov export -ignore-filename-regex="rustc|registry" -Xdemangler=rustfilt -instr-profile=pgcat.profdata --object ./target/debug/pgcat --format lcov > ./lcov.info + +genhtml lcov.info --output-directory /tmp/cov --prefix $(pwd)