Skip to content

Commit

Permalink
Add coverage config
Browse files Browse the repository at this point in the history
  • Loading branch information
nielstron committed Sep 4, 2024
1 parent e97b154 commit bdb8468
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 20 deletions.
40 changes: 20 additions & 20 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,31 +36,31 @@ jobs:
- name: Run tests
run: |
poetry run coverage run --source=opshin -m pytest opshin/tests
poetry run coverage run -a --source=opshin -m opshin eval spending examples/smart_contracts/assert_sum.py "{\"int\": 4}" "{\"int\": 38}" d8799fd8799f9fd8799fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffd8799fd8799fd87a9f581cdbe769758f26efb21f008dc097bb194cffc622acc37fcefc5372eee3ffd87a80ffa140a1401a00989680d87a9f5820dfab81872ce2bbe6ee5af9bbfee4047f91c1f57db5e30da727d5fef1e7f02f4dffd87a80ffffff809fd8799fd8799fd8799f581cdc315c289fee4484eda07038393f21dc4e572aff292d7926018725c2ffd87a80ffa140a14000d87980d87a80ffffa140a14000a140a1400080a0d8799fd8799fd87980d87a80ffd8799fd87b80d87a80ffff80a1d87a9fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffffd87980a15820dfab81872ce2bbe6ee5af9bbfee4047f91c1f57db5e30da727d5fef1e7f02f4dd8799f581cdc315c289fee4484eda07038393f21dc4e572aff292d7926018725c2ffd8799f5820746957f0eb57f2b11119684e611a98f373afea93473fefbb7632d579af2f6259ffffd87a9fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffffff
poetry run coverage run -a --source=opshin -m opshin compile spending examples/smart_contracts/assert_sum.py > assert_sum.uplc
poetry run coverage run -a --source=opshin -m opshin eval_uplc spending examples/smart_contracts/assert_sum.py "{\"int\": 4}" "{\"int\": 38}" d8799fd8799f9fd8799fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffd8799fd8799fd87a9f581cdbe769758f26efb21f008dc097bb194cffc622acc37fcefc5372eee3ffd87a80ffa140a1401a00989680d87a9f5820dfab81872ce2bbe6ee5af9bbfee4047f91c1f57db5e30da727d5fef1e7f02f4dffd87a80ffffff809fd8799fd8799fd8799f581cdc315c289fee4484eda07038393f21dc4e572aff292d7926018725c2ffd87a80ffa140a14000d87980d87a80ffffa140a14000a140a1400080a0d8799fd8799fd87980d87a80ffd8799fd87b80d87a80ffff80a1d87a9fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffffd87980a15820dfab81872ce2bbe6ee5af9bbfee4047f91c1f57db5e30da727d5fef1e7f02f4dd8799f581cdc315c289fee4484eda07038393f21dc4e572aff292d7926018725c2ffd8799f5820746957f0eb57f2b11119684e611a98f373afea93473fefbb7632d579af2f6259ffffd87a9fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffffff
poetry run coverage run -a --source=opshin -m opshin compile_pluto spending examples/smart_contracts/assert_sum.py
poetry run coverage run -a --source=opshin -m opshin build spending examples/smart_contracts/assert_sum.py
poetry run coverage run -m pytest opshin/tests
poetry run coverage run -a -m opshin eval spending examples/smart_contracts/assert_sum.py "{\"int\": 4}" "{\"int\": 38}" d8799fd8799f9fd8799fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffd8799fd8799fd87a9f581cdbe769758f26efb21f008dc097bb194cffc622acc37fcefc5372eee3ffd87a80ffa140a1401a00989680d87a9f5820dfab81872ce2bbe6ee5af9bbfee4047f91c1f57db5e30da727d5fef1e7f02f4dffd87a80ffffff809fd8799fd8799fd8799f581cdc315c289fee4484eda07038393f21dc4e572aff292d7926018725c2ffd87a80ffa140a14000d87980d87a80ffffa140a14000a140a1400080a0d8799fd8799fd87980d87a80ffd8799fd87b80d87a80ffff80a1d87a9fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffffd87980a15820dfab81872ce2bbe6ee5af9bbfee4047f91c1f57db5e30da727d5fef1e7f02f4dd8799f581cdc315c289fee4484eda07038393f21dc4e572aff292d7926018725c2ffd8799f5820746957f0eb57f2b11119684e611a98f373afea93473fefbb7632d579af2f6259ffffd87a9fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffffff
poetry run coverage run -a -m opshin compile spending examples/smart_contracts/assert_sum.py > assert_sum.uplc
poetry run coverage run -a -m opshin eval_uplc spending examples/smart_contracts/assert_sum.py "{\"int\": 4}" "{\"int\": 38}" d8799fd8799f9fd8799fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffd8799fd8799fd87a9f581cdbe769758f26efb21f008dc097bb194cffc622acc37fcefc5372eee3ffd87a80ffa140a1401a00989680d87a9f5820dfab81872ce2bbe6ee5af9bbfee4047f91c1f57db5e30da727d5fef1e7f02f4dffd87a80ffffff809fd8799fd8799fd8799f581cdc315c289fee4484eda07038393f21dc4e572aff292d7926018725c2ffd87a80ffa140a14000d87980d87a80ffffa140a14000a140a1400080a0d8799fd8799fd87980d87a80ffd8799fd87b80d87a80ffff80a1d87a9fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffffd87980a15820dfab81872ce2bbe6ee5af9bbfee4047f91c1f57db5e30da727d5fef1e7f02f4dd8799f581cdc315c289fee4484eda07038393f21dc4e572aff292d7926018725c2ffd8799f5820746957f0eb57f2b11119684e611a98f373afea93473fefbb7632d579af2f6259ffffd87a9fd8799fd8799f582055d353acacaab6460b37ed0f0e3a1a0aabf056df4a7fa1e265d21149ccacc527ff01ffffff
poetry run coverage run -a -m opshin compile_pluto spending examples/smart_contracts/assert_sum.py
poetry run coverage run -a -m opshin build spending examples/smart_contracts/assert_sum.py
for i in $(find examples -type f -name "*.py" -not \( -name "broken*" -o -name "extract*" \)); do
echo "$i"
poetry run coverage run -a --source=opshin -m opshin compile any "$i" > /dev/null || exit
poetry run coverage run -a -m opshin compile any "$i" > /dev/null || exit
done
poetry run coverage run -a --source=opshin -m opshin build spending examples/smart_contracts/parameterized.py '{"int": 42}'
poetry run coverage run -a --source=opshin -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params
poetry run coverage run -a --source=opshin -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params -O0
poetry run coverage run -a --source=opshin -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params -O1
poetry run coverage run -a --source=opshin -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params -O2
poetry run coverage run -a --source=opshin -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params -O3
poetry run coverage run -a --source=opshin -m opshin build spending examples/smart_contracts/wrapped_token.py '{"bytes": "ae810731b5d21c0d182d89c60a1eff7095dffd1c0dce8707a8611099"}' '{"bytes": "4d494c4b"}' '{"int": 1000000}' -fforce-three-params
test ! -n "$(poetry run coverage run -a --source=opshin -m opshin lint any examples/smart_contracts/always_true.py)"
test -n "$(poetry run coverage run -a --source=opshin -m opshin lint any examples/smart_contracts/wrapped_token.py)"
test -n "$(poetry run coverage run -a --source=opshin -m opshin lint any examples/broken.py)"
test -n "$(poetry run coverage run -a --source=opshin -m opshin lint any examples/broken.py --output-format-json)"
poetry run coverage run -a --source=opshin -m opshin compile lib opshin/prelude.py -fno-remove-dead-code
poetry run coverage run -a -m opshin build spending examples/smart_contracts/parameterized.py '{"int": 42}'
poetry run coverage run -a -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params
poetry run coverage run -a -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params -O0
poetry run coverage run -a -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params -O1
poetry run coverage run -a -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params -O2
poetry run coverage run -a -m opshin build spending examples/smart_contracts/dual_use.py -fforce-three-params -O3
poetry run coverage run -a -m opshin build spending examples/smart_contracts/wrapped_token.py '{"bytes": "ae810731b5d21c0d182d89c60a1eff7095dffd1c0dce8707a8611099"}' '{"bytes": "4d494c4b"}' '{"int": 1000000}' -fforce-three-params
test ! -n "$(poetry run coverage run -a -m opshin lint any examples/smart_contracts/always_true.py)"
test -n "$(poetry run coverage run -a -m opshin lint any examples/smart_contracts/wrapped_token.py)"
test -n "$(poetry run coverage run -a -m opshin lint any examples/broken.py)"
test -n "$(poetry run coverage run -a -m opshin lint any examples/broken.py --output-format-json)"
poetry run coverage run -a -m opshin compile lib opshin/prelude.py -fno-remove-dead-code
for i in $(find opshin/std opshin/ledger -type f -name "*.py" ! -name "*integrity.py"); do
echo "$i"
poetry run coverage run -a --source=opshin -m opshin compile lib "$i" -fno-remove-dead-code > /dev/null || exit
poetry run coverage run -a -m opshin compile lib "$i" -fno-remove-dead-code > /dev/null || exit
done
- name: Upload coverage data to coveralls.io
Expand Down
30 changes: 30 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,33 @@ opshin = "opshin.__main__:main"
[build-system]
requires = ["setuptools", "poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.coverage.run]
branch = true
source = ["opshin"]

[tool.coverage.report]
# We dont care whether test cases got executed
omit = [
"*opshin/tests/*",
]
# Regexes for lines to exclude from consideration
exclude_also = [
# Don't complain if tests don't hit defensive assertion code:
"raise NotImplementedError",

# Don't complain if non-runnable code isn't run:
"if __name__ == .__main__.:",

# Don't complain about abstract methods, they aren't run:
"@(abc\\.)?abstractmethod",

# Don't complain about missing debug-only code:
"def __repr__",
]

ignore_errors = true

[tool.coverage.html]
directory = "coverage_html_report"

0 comments on commit bdb8468

Please sign in to comment.