eth-erc20

ERC20 interface and example giftable token contract
Log | Files | Refs | LICENSE

commit e3bc539424368e38ecd0d8163a63f3bc2d519b5b
parent 5bf187612ab37dcdcd693b9fd57dacc71e3e2e9f
Author: Louis Holbrook <accounts-gitlab@holbrook.no>
Date:   Fri, 11 Feb 2022 12:50:54 +0000

Merge branch 'Ida/ci-test' into 'master'

add strip_0x to fix address tests that fail

See merge request cicnet/eth-erc20!8
Diffstat:
M.gitignore | 2++
M.gitlab-ci.yml | 29+++++++++++++++++++++++++++--
Apython/.coverage | 0
Apython/.coveragerc | 7+++++++
Mpython/giftable_erc20_token/factory.py | 3++-
Mpython/tests/test_erc20_interface.py | 9+++++----
Msolidity/GiftableToken.sol | 2+-
7 files changed, 44 insertions(+), 8 deletions(-)

diff --git 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 @@ -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 Binary files differ. diff --git a/python/.coveragerc 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 @@ -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 @@ -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 @@ -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