Skip to content

Commit

Permalink
Add back JUnit reporting stats
Browse files Browse the repository at this point in the history
- Switch to using pytest-django to run the Django tests, as that has JUnit support. Add Django settings as a flag rather than in pyproject.toml because defining it there makes the normal pytest run fail since it can't find the module.
- Adds a simple script using junitparser to combine the two JUnit XML files.
  • Loading branch information
ColeDCrawford committed May 23, 2024
1 parent f262199 commit 5d3d80c
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 4 deletions.
17 changes: 15 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,13 @@ jobs:

- name: Run unit tests
run: |
pytest
pytest --junitxml=junit_pytest_main.xml
mv .coverage .coverage_main
- name: Run Django integration tests
working-directory: ./edtf_django_tests
run: |
coverage run manage.py test edtf_integration
pytest edtf_integration/tests.py --ds=edtf_django_tests.settings --junitxml=../junit_pytest_django.xml
mv .coverage ../.coverage_django
- name: Combine coverage reports
Expand All @@ -59,16 +59,29 @@ jobs:
coverage report --omit="edtf_django_tests/*"
coverage xml -o coverage_combined.xml --omit="edtf_django_tests/*"
- name: Combine JUnit XML reports
run: |
python combine_junit.py combined_junit_pytest.xml junit_pytest_main.xml junit_pytest_django.xml
- name: Pytest coverage comment
id: coverageComment
uses: MishaKav/pytest-coverage-comment@main
with:
pytest-xml-coverage-path: ./coverage_combined.xml
junitxml-path: ./combined_junit_pytest.xml
unique-id-for-comment: ${{ matrix.python-version }}
github-token: ${{ secrets.GITHUB_TOKEN }}

- name: Check the output coverage
run: |
echo "Coverage Percentage - ${{ steps.coverageComment.outputs.coverage }}"
echo "Coverage Color - ${{ steps.coverageComment.outputs.color }}"
echo "Coverage Html - ${{ steps.coverageComment.outputs.coverageHtml }}"
echo "Summary Report - ${{ steps.coverageComment.outputs.summaryReport }}"
echo "Coverage Warnings - ${{ steps.coverageComment.outputs.warnings }}"
echo "Coverage Errors - ${{ steps.coverageComment.outputs.errors }}"
echo "Coverage Failures - ${{ steps.coverageComment.outputs.failures }}"
echo "Coverage Skipped - ${{ steps.coverageComment.outputs.skipped }}"
echo "Coverage Tests - ${{ steps.coverageComment.outputs.tests }}"
echo "Coverage Time - ${{ steps.coverageComment.outputs.time }}"
echo "Not Success Test Info - ${{ steps.coverageComment.outputs.notSuccessTestInfo }}"
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ coverage_combined.xml
.coverage_main
.coverage_django
*,cover
combined_junit_pytest.xml
pytest.xml
junit_pytest_main.xml
junit_pytest_django.xml

# Translations
*.mo
Expand Down
23 changes: 23 additions & 0 deletions combine_junit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import sys

from junitparser import JUnitXml


def combine_junit_xml(output_file, *input_files):
combined_xml = JUnitXml()
for input_file in input_files:
xml = JUnitXml.fromfile(input_file)
combined_xml.extend(xml)
combined_xml.write(output_file)


if __name__ == "__main__":
if len(sys.argv) < 3:
print(
"Usage: python combine_junit_xml.py <output_file> <input_file1> <input_file2> ... <input_fileN>"
)
sys.exit(1)

output_file = sys.argv[1]
input_files = sys.argv[2:]
combine_junit_xml(output_file, *input_files)
6 changes: 4 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,12 @@ classifiers = [
test = [
"django>=4.2,<5.0",
"pytest",
"pytest-django",
"ruff",
"pre-commit",
"coverage",
"pytest-cov"
"pytest-cov",
"junitparser",
]

[project.urls]
Expand Down Expand Up @@ -79,7 +81,7 @@ legacy_tox_ini = """
python_files = ["tests.py", "test_*.py", "*_test.py", "*_tests.py"]
python_classes = ["Test*", "*Tests"]
python_functions = ["test_*"]
addopts = "--ignore=edtf_django_tests/ --cov=edtf --cov-report=xml"
addopts = "--ignore=edtf_django_tests/ --cov=edtf"
plugins = ["pytest_cov"]

[tool.coverage.run]
Expand Down

5 comments on commit 5d3d80c

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/edtf
   __init__.py40100% 
   appsettings.py24483%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py922177%88, 93, 95, 98–99, 101–102, 104, 109, 113–116, 155, 157, 159, 169–170, 174–175, 183
   jdutil.py996633%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1487152%34, 44–45, 47–50, 55–56, 59–62, 64, 68–71, 73–74, 76–78, 86–88, 90–94, 104, 106, 119, 126, 157–159, 161–166, 169–171, 173–178, 202–205, 209, 224, 226–227, 229, 246, 248, 256, 258, 260, 262, 267, 270, 276
   tests.py660%3, 5, 10, 179, 184–185
/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119992%127–130, 329, 333–336
   parser_classes.py50024052%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 283, 300–301, 305, 334–338, 343–344, 347, 350, 353, 356–360, 363–367, 387–389, 413, 417, 422, 424, 438, 445, 461, 470–472, 474–476, 479–480, 482, 485–488, 490, 492–494, 496, 500, 509–511, 515, 517, 520–522, 526, 528, 533–536, 541, 544, 547, 550–552, 554, 559–560, 563, 566, 569–571, 573, 581, 600–602, 604–607, 609–610, 612–613, 615, 618–619, 621–622, 624, 626, 628–629, 631, 633–638, 640, 642, 644–645, 647, 650–652, 655–657, 660–662, 670, 672–673, 676–677, 680–681, 684–685, 687–688, 692, 696–697, 700, 705–706, 710–711, 713–721, 723, 733–734, 736, 738–739, 741, 744, 749, 754, 760–761, 764, 767, 770, 772–774, 776, 781–782, 784, 793–794, 797, 800, 803–804, 806, 819–820, 822–824, 826, 835–837, 840, 843–844, 846
   tests.py71710%3–4, 6, 8–10, 26, 205, 227, 229–232, 234–236, 238–242, 245–246, 248–249, 252–254, 257–258, 261–264, 267, 270–274, 277, 280, 283, 286–291, 294, 297, 300, 305–306, 308–309, 312, 314–319, 321–328
edtf
   __init__.py40100% 
   appsettings.py24291%12–13
   convert.py631182%11–19, 21, 73
   fields.py92920%1, 3–6, 8–10, 12, 20, 26, 28, 30–32, 35–36, 48–49, 64, 66, 69, 71–74, 76–80, 82–83, 85, 87–88, 90, 92–93, 95, 97–99, 101–102, 104, 106–109, 111, 113–116, 118, 127–129, 132, 135, 141–142, 144–146, 149, 153, 155, 157, 159, 162–175, 181, 183–184, 186–187, 192–193
   jdutil.py994455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1481192%56, 59, 119, 165–166, 177–178, 204–205, 209, 276
   tests.py60100% 
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119199%335
   parser_classes.py5007884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 300–301, 334–338, 353, 356–360, 363–367, 387–389, 500, 619, 637–638, 640, 645, 651, 656, 661, 697, 700, 706, 711, 713–721, 736, 741, 822, 826, 844
   tests.py710100% 
TOTAL241284265% 

Tests Skipped Failures Errors Time
243 0 💤 0 ❌ 0 🔥 3.339s ⏱️

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/edtf
   __init__.py40100% 
   appsettings.py24483%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py922177%88, 93, 95, 98–99, 101–102, 104, 109, 113–116, 155, 157, 159, 169–170, 174–175, 183
   jdutil.py996633%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1487152%34, 44–45, 47–50, 55–56, 59–62, 64, 68–71, 73–74, 76–78, 86–88, 90–94, 104, 106, 119, 126, 157–159, 161–166, 169–171, 173–178, 202–205, 209, 224, 226–227, 229, 246, 248, 256, 258, 260, 262, 267, 270, 276
   tests.py660%3, 5, 10, 179, 184–185
/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119992%127–130, 329, 333–336
   parser_classes.py50024052%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 283, 300–301, 305, 334–338, 343–344, 347, 350, 353, 356–360, 363–367, 387–389, 413, 417, 422, 424, 438, 445, 461, 470–472, 474–476, 479–480, 482, 485–488, 490, 492–494, 496, 500, 509–511, 515, 517, 520–522, 526, 528, 533–536, 541, 544, 547, 550–552, 554, 559–560, 563, 566, 569–571, 573, 581, 600–602, 604–607, 609–610, 612–613, 615, 618–619, 621–622, 624, 626, 628–629, 631, 633–638, 640, 642, 644–645, 647, 650–652, 655–657, 660–662, 670, 672–673, 676–677, 680–681, 684–685, 687–688, 692, 696–697, 700, 705–706, 710–711, 713–721, 723, 733–734, 736, 738–739, 741, 744, 749, 754, 760–761, 764, 767, 770, 772–774, 776, 781–782, 784, 793–794, 797, 800, 803–804, 806, 819–820, 822–824, 826, 835–837, 840, 843–844, 846
   tests.py71710%3–4, 6, 8–10, 26, 205, 227, 229–232, 234–236, 238–242, 245–246, 248–249, 252–254, 257–258, 261–264, 267, 270–274, 277, 280, 283, 286–291, 294, 297, 300, 305–306, 308–309, 312, 314–319, 321–328
edtf
   __init__.py40100% 
   appsettings.py24291%12–13
   convert.py631182%11–19, 21, 73
   fields.py92920%1, 3–6, 8–10, 12, 20, 26, 28, 30–32, 35–36, 48–49, 64, 66, 69, 71–74, 76–80, 82–83, 85, 87–88, 90, 92–93, 95, 97–99, 101–102, 104, 106–109, 111, 113–116, 118, 127–129, 132, 135, 141–142, 144–146, 149, 153, 155, 157, 159, 162–175, 181, 183–184, 186–187, 192–193
   jdutil.py994455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1481192%56, 59, 119, 165–166, 177–178, 204–205, 209, 276
   tests.py60100% 
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119199%335
   parser_classes.py5007884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 300–301, 334–338, 353, 356–360, 363–367, 387–389, 500, 619, 637–638, 640, 645, 651, 656, 661, 697, 700, 706, 711, 713–721, 736, 741, 822, 826, 844
   tests.py710100% 
TOTAL241284265% 

Tests Skipped Failures Errors Time
243 0 💤 0 ❌ 0 🔥 3.308s ⏱️

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.12.3/x64/lib/python3.12/site-packages/edtf
   __init__.py40100% 
   appsettings.py24483%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py922177%88, 93, 95, 98–99, 101–102, 104, 109, 113–116, 155, 157, 159, 169–170, 174–175, 183
   jdutil.py996633%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.12.3/x64/lib/python3.12/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1487152%34, 44–45, 47–50, 55–56, 59–62, 64, 68–71, 73–74, 76–78, 86–88, 90–94, 104, 106, 119, 126, 157–159, 161–166, 169–171, 173–178, 202–205, 209, 224, 226–227, 229, 246, 248, 256, 258, 260, 262, 267, 270, 276
   tests.py660%3, 5, 10, 179, 184–185
/opt/hostedtoolcache/Python/3.12.3/x64/lib/python3.12/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119992%127–130, 329, 333–336
   parser_classes.py50024052%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 283, 300–301, 305, 334–338, 343–344, 347, 350, 353, 356–360, 363–367, 387–389, 413, 417, 422, 424, 438, 445, 461, 470–472, 474–476, 479–480, 482, 485–488, 490, 492–494, 496, 500, 509–511, 515, 517, 520–522, 526, 528, 533–536, 541, 544, 547, 550–552, 554, 559–560, 563, 566, 569–571, 573, 581, 600–602, 604–607, 609–610, 612–613, 615, 618–619, 621–622, 624, 626, 628–629, 631, 633–638, 640, 642, 644–645, 647, 650–652, 655–657, 660–662, 670, 672–673, 676–677, 680–681, 684–685, 687–688, 692, 696–697, 700, 705–706, 710–711, 713–721, 723, 733–734, 736, 738–739, 741, 744, 749, 754, 760–761, 764, 767, 770, 772–774, 776, 781–782, 784, 793–794, 797, 800, 803–804, 806, 819–820, 822–824, 826, 835–837, 840, 843–844, 846
   tests.py71710%3–4, 6, 8–10, 26, 205, 227, 229–232, 234–236, 238–242, 245–246, 248–249, 252–254, 257–258, 261–264, 267, 270–274, 277, 280, 283, 286–291, 294, 297, 300, 305–306, 308–309, 312, 314–319, 321–328
edtf
   __init__.py40100% 
   appsettings.py24291%12–13
   convert.py631182%11–19, 21, 73
   fields.py92920%1, 3–6, 8–10, 12, 20, 26, 28, 30–32, 35–36, 48–49, 64, 66, 69, 71–74, 76–80, 82–83, 85, 87–88, 90, 92–93, 95, 97–99, 101–102, 104, 106–109, 111, 113–116, 118, 127–129, 132, 135, 141–142, 144–146, 149, 153, 155, 157, 159, 162–175, 181, 183–184, 186–187, 192–193
   jdutil.py994455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1481192%56, 59, 119, 165–166, 177–178, 204–205, 209, 276
   tests.py60100% 
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119199%335
   parser_classes.py5007884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 300–301, 334–338, 353, 356–360, 363–367, 387–389, 500, 619, 637–638, 640, 645, 651, 656, 661, 697, 700, 706, 711, 713–721, 736, 741, 822, 826, 844
   tests.py710100% 
TOTAL241284265% 

Tests Skipped Failures Errors Time
243 0 💤 0 ❌ 0 🔥 5.032s ⏱️

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/edtf
   __init__.py40100% 
   appsettings.py24483%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py922177%88, 93, 95, 98–99, 101–102, 104, 109, 113–116, 155, 157, 159, 169–170, 174–175, 183
   jdutil.py996633%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1487152%34, 44–45, 47–50, 55–56, 59–62, 64, 68–71, 73–74, 76–78, 86–88, 90–94, 104, 106, 119, 126, 157–159, 161–166, 169–171, 173–178, 202–205, 209, 224, 226–227, 229, 246, 248, 256, 258, 260, 262, 267, 270, 276
   tests.py660%3, 5, 10, 179, 184–185
/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119992%127–130, 329, 333–336
   parser_classes.py50024052%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 283, 300–301, 305, 334–338, 343–344, 347, 350, 353, 356–360, 363–367, 387–389, 413, 417, 422, 424, 438, 445, 461, 470–472, 474–476, 479–480, 482, 485–488, 490, 492–494, 496, 500, 509–511, 515, 517, 520–522, 526, 528, 533–536, 541, 544, 547, 550–552, 554, 559–560, 563, 566, 569–571, 573, 581, 600–602, 604–607, 609–610, 612–613, 615, 618–619, 621–622, 624, 626, 628–629, 631, 633–638, 640, 642, 644–645, 647, 650–652, 655–657, 660–662, 670, 672–673, 676–677, 680–681, 684–685, 687–688, 692, 696–697, 700, 705–706, 710–711, 713–721, 723, 733–734, 736, 738–739, 741, 744, 749, 754, 760–761, 764, 767, 770, 772–774, 776, 781–782, 784, 793–794, 797, 800, 803–804, 806, 819–820, 822–824, 826, 835–837, 840, 843–844, 846
   tests.py71710%3–4, 6, 8–10, 26, 205, 227, 229–232, 234–236, 238–242, 245–246, 248–249, 252–254, 257–258, 261–264, 267, 270–274, 277, 280, 283, 286–291, 294, 297, 300, 305–306, 308–309, 312, 314–319, 321–328
edtf
   __init__.py40100% 
   appsettings.py24291%12–13
   convert.py631182%11–19, 21, 73
   fields.py92920%1, 3–6, 8–10, 12, 20, 26, 28, 30–32, 35–36, 48–49, 64, 66, 69, 71–74, 76–80, 82–83, 85, 87–88, 90, 92–93, 95, 97–99, 101–102, 104, 106–109, 111, 113–116, 118, 127–129, 132, 135, 141–142, 144–146, 149, 153, 155, 157, 159, 162–175, 181, 183–184, 186–187, 192–193
   jdutil.py994455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1481192%56, 59, 119, 165–166, 177–178, 204–205, 209, 276
   tests.py60100% 
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119199%335
   parser_classes.py5007884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 300–301, 334–338, 353, 356–360, 363–367, 387–389, 500, 619, 637–638, 640, 645, 651, 656, 661, 697, 700, 706, 711, 713–721, 736, 741, 822, 826, 844
   tests.py710100% 
TOTAL241284265% 

Tests Skipped Failures Errors Time
243 0 💤 0 ❌ 0 🔥 3.414s ⏱️

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/edtf
   __init__.py40100% 
   appsettings.py24483%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py922177%88, 93, 95, 98–99, 101–102, 104, 109, 113–116, 155, 157, 159, 169–170, 174–175, 183
   jdutil.py996633%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1487152%34, 44–45, 47–50, 55–56, 59–62, 64, 68–71, 73–74, 76–78, 86–88, 90–94, 104, 106, 119, 126, 157–159, 161–166, 169–171, 173–178, 202–205, 209, 224, 226–227, 229, 246, 248, 256, 258, 260, 262, 267, 270, 276
   tests.py660%3, 5, 10, 179, 184–185
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119992%127–130, 329, 333–336
   parser_classes.py50024052%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 283, 300–301, 305, 334–338, 343–344, 347, 350, 353, 356–360, 363–367, 387–389, 413, 417, 422, 424, 438, 445, 461, 470–472, 474–476, 479–480, 482, 485–488, 490, 492–494, 496, 500, 509–511, 515, 517, 520–522, 526, 528, 533–536, 541, 544, 547, 550–552, 554, 559–560, 563, 566, 569–571, 573, 581, 600–602, 604–607, 609–610, 612–613, 615, 618–619, 621–622, 624, 626, 628–629, 631, 633–638, 640, 642, 644–645, 647, 650–652, 655–657, 660–662, 670, 672–673, 676–677, 680–681, 684–685, 687–688, 692, 696–697, 700, 705–706, 710–711, 713–721, 723, 733–734, 736, 738–739, 741, 744, 749, 754, 760–761, 764, 767, 770, 772–774, 776, 781–782, 784, 793–794, 797, 800, 803–804, 806, 819–820, 822–824, 826, 835–837, 840, 843–844, 846
   tests.py71710%3–4, 6, 8–10, 26, 205, 227, 229–232, 234–236, 238–242, 245–246, 248–249, 252–254, 257–258, 261–264, 267, 270–274, 277, 280, 283, 286–291, 294, 297, 300, 305–306, 308–309, 312, 314–319, 321–328
edtf
   __init__.py40100% 
   appsettings.py24291%12–13
   convert.py631182%11–19, 21, 73
   fields.py92920%1, 3–6, 8–10, 12, 20, 26, 28, 30–32, 35–36, 48–49, 64, 66, 69, 71–74, 76–80, 82–83, 85, 87–88, 90, 92–93, 95, 97–99, 101–102, 104, 106–109, 111, 113–116, 118, 127–129, 132, 135, 141–142, 144–146, 149, 153, 155, 157, 159, 162–175, 181, 183–184, 186–187, 192–193
   jdutil.py994455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1481192%56, 59, 119, 165–166, 177–178, 204–205, 209, 276
   tests.py60100% 
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py30100% 
   grammar.py119199%335
   parser_classes.py5007884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 300–301, 334–338, 353, 356–360, 363–367, 387–389, 500, 619, 637–638, 640, 645, 651, 656, 661, 697, 700, 706, 711, 713–721, 736, 741, 822, 826, 844
   tests.py710100% 
TOTAL241284265% 

Tests Skipped Failures Errors Time
243 0 💤 0 ❌ 0 🔥 3.458s ⏱️

Please sign in to comment.