diff --git a/.coveragerc b/.coveragerc
index 18cdff194..54df9e71c 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -6,3 +6,4 @@ source =
docs_src
parallel = True
+context = '${CONTEXT}'
diff --git a/.github/workflows/smokeshow.yml b/.github/workflows/smokeshow.yml
new file mode 100644
index 000000000..606633a99
--- /dev/null
+++ b/.github/workflows/smokeshow.yml
@@ -0,0 +1,35 @@
+name: Smokeshow
+
+on:
+ workflow_run:
+ workflows: [Test]
+ types: [completed]
+
+permissions:
+ statuses: write
+
+jobs:
+ smokeshow:
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/setup-python@v4
+ with:
+ python-version: '3.9'
+
+ - run: pip install smokeshow
+
+ - uses: dawidd6/action-download-artifact@v2
+ with:
+ workflow: test.yml
+ commit: ${{ github.event.workflow_run.head_sha }}
+
+ - run: smokeshow upload coverage-html
+ env:
+ SMOKESHOW_GITHUB_STATUS_DESCRIPTION: Coverage {coverage-percentage}
+ SMOKESHOW_GITHUB_COVERAGE_THRESHOLD: 100
+ SMOKESHOW_GITHUB_CONTEXT: coverage
+ SMOKESHOW_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ SMOKESHOW_GITHUB_PR_HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
+ SMOKESHOW_AUTH_KEY: ${{ secrets.SMOKESHOW_AUTH_KEY }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index cbd2646dd..85ff7e8dc 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -21,11 +21,46 @@ jobs:
- name: Install Flit
run: pip install flit
- name: Install Dependencies
- # run: flit install --deps=develop --symlink
run: python -m pip install ".[test]"
- name: Lint
run: bash scripts/lint.sh
+ - run: mkdir coverage
- name: Test
run: bash scripts/test.sh
- - name: Upload coverage
- uses: codecov/codecov-action@v3
+ env:
+ COVERAGE_FILE: coverage/.coverage.${{ runner.os }}-py${{ matrix.python-version }}
+ CONTEXT: ${{ runner.os }}-py${{ matrix.python-version }}
+ - name: Store coverage files
+ uses: actions/upload-artifact@v3
+ with:
+ name: coverage
+ path: coverage
+ coverage-combine:
+ needs: [test]
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - uses: actions/setup-python@v4
+ with:
+ python-version: '3.8'
+
+ - name: Get coverage files
+ uses: actions/download-artifact@v3
+ with:
+ name: coverage
+ path: coverage
+
+ - run: pip install coverage[toml]
+
+ - run: ls -la coverage
+ - run: coverage combine coverage
+ - run: coverage report
+ - run: coverage html --show-contexts --title "Coverage for ${{ github.sha }}"
+
+ - name: Store coverage HTML
+ uses: actions/upload-artifact@v3
+ with:
+ name: coverage-html
+ path: htmlcov
diff --git a/README.md b/README.md
index f9dd52522..0d04d7b04 100644
--- a/README.md
+++ b/README.md
@@ -11,9 +11,8 @@
-
-
-
+
+
diff --git a/docs/index.md b/docs/index.md
index f9dd52522..0d04d7b04 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -11,9 +11,8 @@
-
-
-
+
+
diff --git a/pyproject.toml b/pyproject.toml
index d4f6c015b..7a76b21b7 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -48,12 +48,11 @@ repository = "https://github.com/alexreg/typer"
[project.optional-dependencies]
test = [
"black ~= 22.3.0",
- "coverage ~= 5.2",
+ "coverage ~= 6.0.0",
"docstring_parser ~= 0.15",
"isort ~= 5.10.1",
"mypy ~= 0.950",
"pytest ~= 7.1.2",
- "pytest-cov ~= 3.0.0",
"pytest-sugar ~= 0.9.4",
"pytest-xdist ~= 2.1.0",
"shellingham ~= 1.4.0",
diff --git a/scripts/test-cov-html.sh b/scripts/test-cov-html.sh
index 7957277fc..d1bdfced2 100755
--- a/scripts/test-cov-html.sh
+++ b/scripts/test-cov-html.sh
@@ -3,4 +3,7 @@
set -e
set -x
-bash scripts/test.sh --cov-report=html ${@}
+bash scripts/test.sh ${@}
+coverage combine
+coverage report --show-missing
+coverage html
diff --git a/scripts/test.sh b/scripts/test.sh
index 77dd74d73..ceba6bf7d 100755
--- a/scripts/test.sh
+++ b/scripts/test.sh
@@ -5,4 +5,4 @@ set -x
bash ./scripts/test-files.sh
# Use xdist-pytest --forked to ensure modified sys.path to import relative modules in examples keeps working
-pytest --cov=typer --cov=tests --cov=docs_src --cov-report=term-missing --cov-report=xml -o console_output_style=progress --forked --numprocesses=auto ${@}
+coverage run -m pytest -o console_output_style=progress --forked --numprocesses=auto ${@}