From 6da3f2108a4f5efba21311931986536b46b8e4c3 Mon Sep 17 00:00:00 2001 From: Idaapayo Date: Fri, 11 Feb 2022 12:50:54 +0000 Subject: [PATCH] add strip_0x to fix address tests that fail --- .gitignore | 1 + .gitlab-ci.yml | 29 +++++++++++++++++++++++-- python/.coverage | Bin 0 -> 69632 bytes python/.coveragerc | 7 ++++++ python/giftable_erc20_token/factory.py | 2 +- python/tests/test_erc20_interface.py | 9 ++++---- solidity/GiftableToken.sol | 2 +- 7 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 python/.coverage create mode 100644 python/.coveragerc diff --git a/.gitignore b/.gitignore index 28fbdb6..ee6e50c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ build/ gmon.out *.egg-info .venv/ +.idea \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a014d07..d8c7e89 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,9 @@ stages: - test + - run-coverage - slither-analyzer + variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" @@ -35,8 +37,31 @@ test: # run tests - bash run_tests.sh -slither-analize: +run-coverage: + stage: test + image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest + script: + - cd python + - export PYTHONPATH=. + - pip install --extra-index-url https://pip.grassrootseconomics.net + --extra-index-url https://gitlab.com/api/v4/projects/27624814/packages/pypi/simple + -r requirements.txt -r test_requirements.txt + - pip install pytest pytest-cov + - coverage run -m pytest + - coverage html + - coverage report --fail-under=90 + + coverage: '/^TOTAL.+?(\d+\%)$/' + artifacts: + reports: + cobertura: python/htmlcov/index.html + +slither-analyzer: image: registry.gitlab.com/grassrootseconomics/cic-base-images/ci-solc-python:latest allow_failure: true script: - - slither solidity/ + - cd solidity + - slither GiftableToken.sol + - slither GiftableToken.sol --print human-summary + + diff --git a/python/.coverage b/python/.coverage new file mode 100644 index 0000000000000000000000000000000000000000..51af88f5c0ee3e366a1b98be9e14ef80361f1dec GIT binary patch literal 69632 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 literal 0 HcmV?d00001 diff --git a/python/.coveragerc b/python/.coveragerc new file mode 100644 index 0000000..1951f90 --- /dev/null +++ b/python/.coveragerc @@ -0,0 +1,7 @@ +[run] +branch = True +[report] +omit = .venv/* + **/runnable/*.py +[html] + diff --git a/python/giftable_erc20_token/factory.py b/python/giftable_erc20_token/factory.py index 3031e5a..54ac868 100644 --- a/python/giftable_erc20_token/factory.py +++ b/python/giftable_erc20_token/factory.py @@ -94,4 +94,4 @@ class GiftableToken(TxFactory): tx = self.template(sender_address, contract_address, use_nonce=True) tx = self.set_code(tx, data) tx = self.finalize(tx, tx_format) - return tx + return tx \ No newline at end of file diff --git a/python/tests/test_erc20_interface.py b/python/tests/test_erc20_interface.py index 4c586d1..d500bfb 100644 --- a/python/tests/test_erc20_interface.py +++ b/python/tests/test_erc20_interface.py @@ -12,6 +12,7 @@ from chainlib.eth.tx import ( receipt, ) from chainlib.eth.address import to_checksum_address +from hexathon import strip_0x # local imports from giftable_erc20_token import GiftableToken @@ -102,7 +103,7 @@ class TestToken(EthTesterCase): o = transaction(tx_hash) r = self.rpc.do(o) data = c.parse_transfer_request(r['data']) - self.assertEqual(data[0], self.accounts[1]) + self.assertEqual(data[0], strip_0x(self.accounts[1])) self.assertEqual(data[1], 1000) @@ -124,7 +125,7 @@ class TestToken(EthTesterCase): o = transaction(tx_hash) r = self.rpc.do(o) data = c.parse_approve_request(r['data']) - self.assertEqual(data[0], self.accounts[1]) + self.assertEqual(data[0], strip_0x(self.accounts[1])) self.assertEqual(data[1], 1000) nonce_oracle = RPCNonceOracle(self.accounts[1], conn=self.conn) @@ -138,8 +139,8 @@ class TestToken(EthTesterCase): o = transaction(tx_hash) r = self.rpc.do(o) data = c.parse_transfer_from_request(r['data']) - self.assertEqual(data[0], self.accounts[0]) - self.assertEqual(data[1], self.accounts[2]) + self.assertEqual(data[0], strip_0x(self.accounts[0])) + self.assertEqual(data[1], strip_0x(self.accounts[2])) self.assertEqual(data[2], 1001) (tx_hash, o) = c.transfer_from(self.address, self.accounts[1], self.accounts[0], self.accounts[2], 1000) diff --git a/solidity/GiftableToken.sol b/solidity/GiftableToken.sol index 24bcb59..49ba75b 100644 --- a/solidity/GiftableToken.sol +++ b/solidity/GiftableToken.sol @@ -1,4 +1,4 @@ -pragma solidity >0.6.11; +pragma solidity >=0.6.11; // SPDX-License-Identifier: GPL-3.0-or-later // File-Version: 2