From 4d42a410043b3502a31d5eb4a9000c0015f36f80 Mon Sep 17 00:00:00 2001 From: Nagajaideep Date: Sat, 21 Dec 2024 15:44:38 +0530 Subject: [PATCH 1/6] added the tests for python and C++ and combined test report into unified reports --- .github/workflows/ci.yml | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 77e81bac..33d967e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -200,3 +200,54 @@ jobs: - name: Build Documentation run: | sphinx-build -b html docs/source/ docs/build/html + + test-python-cpp-unified-report: + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Install Python Dependencies + run: | + python -m pip install --upgrade pip + python -m pip install pytest pytest-cov cobertura-merge + + - name: Run Python Tests + run: | + pytest tests/ --cov=src --cov-report xml:coverage-python.xml --cov-report html:coverage-html + + - name: Install C++ Dependencies + run: | + sudo apt-get update + sudo apt-get install -y g++ gcov lcov + + - name: Compile and Run C++ Tests + run: | + g++ -o tests/test_cpp tests/test.cpp + ./tests/test_cpp + lcov --capture --directory . --output-file coverage-cpp.info + + - name: Convert C++ Coverage to XML + run: | + python -m pip install gcovr + gcovr -r . --xml-pretty --output coverage-cpp.xml + + - name: Combine Coverage Reports + run: | + python -m cobertura_merge coverage-python.xml coverage-cpp.xml -o unified-reports/combined-coverage.xml + + - name: Generate HTML Report + run: | + python -m pip install coverage html-report + coverage html -i --data unified-reports/combined-coverage.xml --directory unified-reports/html + + - name: Upload Combined Coverage to Codecov + run: bash <(curl -s https://codecov.io/bash) -f unified-reports/combined-coverage.xml + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file From 5ea0d6128a78892d993f783b23f1861864400ea9 Mon Sep 17 00:00:00 2001 From: Nagajaideep Date: Sat, 21 Dec 2024 16:15:37 +0530 Subject: [PATCH 2/6] changed cobertura with codecov --- .github/workflows/ci.yml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33d967e6..b1d2cbd3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -207,26 +207,26 @@ jobs: steps: - name: Checkout Repository uses: actions/checkout@v4 - + - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.11" - + - name: Install Python Dependencies run: | python -m pip install --upgrade pip - python -m pip install pytest pytest-cov cobertura-merge - + python -m pip install pytest pytest-cov coverage + - name: Run Python Tests run: | pytest tests/ --cov=src --cov-report xml:coverage-python.xml --cov-report html:coverage-html - + - name: Install C++ Dependencies run: | sudo apt-get update sudo apt-get install -y g++ gcov lcov - + - name: Compile and Run C++ Tests run: | g++ -o tests/test_cpp tests/test.cpp @@ -237,16 +237,15 @@ jobs: run: | python -m pip install gcovr gcovr -r . --xml-pretty --output coverage-cpp.xml - + - name: Combine Coverage Reports run: | - python -m cobertura_merge coverage-python.xml coverage-cpp.xml -o unified-reports/combined-coverage.xml - + coverage combine coverage-python.xml coverage-cpp.xml -o unified-reports/combined-coverage.xml + - name: Generate HTML Report run: | - python -m pip install coverage html-report coverage html -i --data unified-reports/combined-coverage.xml --directory unified-reports/html - + - name: Upload Combined Coverage to Codecov run: bash <(curl -s https://codecov.io/bash) -f unified-reports/combined-coverage.xml env: From 6ed57eb64d04504ac06fec287ddce1ce5e5025c6 Mon Sep 17 00:00:00 2001 From: Nagajaideep Date: Sat, 21 Dec 2024 16:36:37 +0530 Subject: [PATCH 3/6] fixed the path in pytests --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b1d2cbd3..56904837 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -220,7 +220,7 @@ jobs: - name: Run Python Tests run: | - pytest tests/ --cov=src --cov-report xml:coverage-python.xml --cov-report html:coverage-html + pytest pydatastructs/utils/tests/ --cov=src --cov-report xml:coverage-python.xml --cov-report html:coverage-html - name: Install C++ Dependencies run: | From 8d2c7ef055b0b30f29d5d54099b414a8309f9170 Mon Sep 17 00:00:00 2001 From: Nagajaideep Date: Sun, 22 Dec 2024 22:40:10 +0530 Subject: [PATCH 4/6] added c++ and python tests into single report in old code base --- .github/workflows/ci.yml | 73 +++++++--------------------------------- 1 file changed, 13 insertions(+), 60 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 56904837..7ed34eda 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,18 +43,21 @@ jobs: run: | CXXFLAGS=--coverage CFLAGS=--coverage python scripts/build/install.py # coverage tests - - name: Run tests + - name: Run python tests run: | - python -m pytest --doctest-modules --cov=./ --cov-report=xml -s + python -m pytest --doctest-modules --cov=./ --cov-report=xml:coverage-python.xml -s - - name: Capture Coverage Data with lcov + - name: Capture C++ Coverage Data run: | - lcov --capture --directory . --output-file coverage.info --no-external - - - name: Generate HTML Coverage Report with genhtml + lcov --capture --directory . --output-file coverage-cpp.info --no-external + python -m pip install gcovr + gcovr -r . --xml-pretty --output coverage-cpp.xml + + - name: Merge Coverage Reports run: | - genhtml coverage.info --output-directory coverage_report - + python -m pip install coverage-merge + coverage-merge -o merged-coverage.xml coverage-python.xml coverage-cpp.xml + - name: Upload Coverage uses: codecov/codecov-action@v3 with: @@ -62,7 +65,7 @@ jobs: directory: ./coverage/reports/ env_vars: OS,PYTHON fail_ci_if_error: false - files: ./coverage.xml + files: ./merged-coverage.xml flags: unittests name: codecov-umbrella path_to_write_report: ./coverage/codecov_report.txt @@ -199,54 +202,4 @@ jobs: - name: Build Documentation run: | - sphinx-build -b html docs/source/ docs/build/html - - test-python-cpp-unified-report: - runs-on: ubuntu-latest - timeout-minutes: 20 - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.11" - - - name: Install Python Dependencies - run: | - python -m pip install --upgrade pip - python -m pip install pytest pytest-cov coverage - - - name: Run Python Tests - run: | - pytest pydatastructs/utils/tests/ --cov=src --cov-report xml:coverage-python.xml --cov-report html:coverage-html - - - name: Install C++ Dependencies - run: | - sudo apt-get update - sudo apt-get install -y g++ gcov lcov - - - name: Compile and Run C++ Tests - run: | - g++ -o tests/test_cpp tests/test.cpp - ./tests/test_cpp - lcov --capture --directory . --output-file coverage-cpp.info - - - name: Convert C++ Coverage to XML - run: | - python -m pip install gcovr - gcovr -r . --xml-pretty --output coverage-cpp.xml - - - name: Combine Coverage Reports - run: | - coverage combine coverage-python.xml coverage-cpp.xml -o unified-reports/combined-coverage.xml - - - name: Generate HTML Report - run: | - coverage html -i --data unified-reports/combined-coverage.xml --directory unified-reports/html - - - name: Upload Combined Coverage to Codecov - run: bash <(curl -s https://codecov.io/bash) -f unified-reports/combined-coverage.xml - env: - CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file + sphinx-build -b html docs/source/ docs/build/html \ No newline at end of file From 66dc46af92aeca5c0f16d99f57b6974b381c01c0 Mon Sep 17 00:00:00 2001 From: Nagajaideep Date: Sun, 22 Dec 2024 22:54:10 +0530 Subject: [PATCH 5/6] changed merging coverage report flow line-56 --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ed34eda..e36f0e8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,8 +55,9 @@ jobs: - name: Merge Coverage Reports run: | - python -m pip install coverage-merge - coverage-merge -o merged-coverage.xml coverage-python.xml coverage-cpp.xml + python -m pip install coverage + coverage combine coverage-python.xml coverage-cpp.xml + coverage xml -o merged-coverage.xml - name: Upload Coverage uses: codecov/codecov-action@v3 From 654f210762a628478ba1834ff5c81e8f9d53ae94 Mon Sep 17 00:00:00 2001 From: Nagajaideep Date: Sun, 22 Dec 2024 23:29:53 +0530 Subject: [PATCH 6/6] instead of manual combining using codecov for simple process --- .github/workflows/ci.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e36f0e8d..5fe9008d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,12 +53,6 @@ jobs: python -m pip install gcovr gcovr -r . --xml-pretty --output coverage-cpp.xml - - name: Merge Coverage Reports - run: | - python -m pip install coverage - coverage combine coverage-python.xml coverage-cpp.xml - coverage xml -o merged-coverage.xml - - name: Upload Coverage uses: codecov/codecov-action@v3 with: @@ -66,7 +60,7 @@ jobs: directory: ./coverage/reports/ env_vars: OS,PYTHON fail_ci_if_error: false - files: ./merged-coverage.xml + files: ./coverage-python.xml,./coverage-cpp.xml flags: unittests name: codecov-umbrella path_to_write_report: ./coverage/codecov_report.txt