def test_compileSolidity():
    from pyethapp.jsonrpc import Compilers, data_encoder
    import ethereum._solidity
    s = ethereum._solidity.get_solidity()
    if s == None:
        pytest.xfail("solidity not installed, not tested")
    else:
        c = Compilers()
        bc = s.compile(solidity_code)
        abi = s.mk_full_signature(solidity_code)
        A = dict(test=dict(code=data_encoder(bc),
                           info=dict(
                               source=solidity_code,
                               language='Solidity',
                               languageVersion='0',
                               compilerVersion='0',
                               abiDefinition=abi,
                               userDoc=dict(methods=dict()),
                               developerDoc=dict(methods=dict()),
                           )))
        B = c.compileSolidity(solidity_code)
        assert A.keys() == B.keys()
        At = A['test']
        Bt = B['test']
        assert At['code'] == Bt['code']
        for k, Av in At['info'].items():
            if k == 'compilerVersion':
                continue
            assert Av == Bt['info'][k]
Ejemplo n.º 2
0
def test_compileSolidity():
    from pyethapp.jsonrpc import Compilers, data_encoder
    import ethereum._solidity

    s = ethereum._solidity.get_solidity()
    if s == None:
        pytest.xfail("solidity not installed, not tested")
    else:
        c = Compilers()
        bc = s.compile(solidity_code)
        abi = s.mk_full_signature(solidity_code)
        A = dict(
            test=dict(
                code=data_encoder(bc),
                info=dict(
                    source=solidity_code,
                    language="Solidity",
                    languageVersion="0",
                    compilerVersion="0",
                    abiDefinition=abi,
                    userDoc=dict(methods=dict()),
                    developerDoc=dict(methods=dict()),
                ),
            )
        )
        B = c.compileSolidity(solidity_code)
        assert A.keys() == B.keys()
        At = A["test"]
        Bt = B["test"]
        assert At["code"] == Bt["code"]
        for k, Av in At["info"].items():
            if k == "compilerVersion":
                continue
            assert Av == Bt["info"][k]
def test_compileSolidity_2():
    result = Compilers().compileSolidity(solidity_code)
    assert set(result.keys()) == {'test'}
    assert set(result['test'].keys()) == {'info', 'code'}
    assert set(result['test']['info']) == {
        'language', 'languageVersion', 'abiDefinition', 'source',
        'compilerVersion', 'developerDoc', 'userDoc'
    }
Ejemplo n.º 4
0
def test_compile_solidity():
    with open(path.join(path.dirname(__file__), 'contracts',
                        'multiply.sol')) as handler:
        solidity_code = handler.read()

    solidity = ethereum.tools._solidity.get_solidity()  # pylint: disable=protected-access

    abi = solidity.mk_full_signature(solidity_code)
    code = data_encoder(solidity.compile(solidity_code))

    info = {
        'abiDefinition': abi,
        'compilerVersion': '0',
        'developerDoc': {
            'methods': None,
        },
        'language': 'Solidity',
        'languageVersion': '0',
        'source': solidity_code,
        'userDoc': {
            'methods': None,
        },
    }
    test_result = {
        'test': {
            'code': code,
            'info': info,
        }
    }
    compiler_result = Compilers().compileSolidity(solidity_code)

    assert set(compiler_result.keys()) == {
        'test',
    }
    assert set(compiler_result['test'].keys()) == {
        'info',
        'code',
    }
    assert set(compiler_result['test']['info']) == {
        'abiDefinition',
        'compilerVersion',
        'developerDoc',
        'language',
        'languageVersion',
        'source',
        'userDoc',
    }

    assert test_result['test']['code'] == compiler_result['test']['code']

    compiler_info = dict(compiler_result['test']['info'])

    compiler_info.pop('compilerVersion')
    info.pop('compilerVersion')

    assert compiler_info['abiDefinition'] == info['abiDefinition']
Ejemplo n.º 5
0
def test_compileSolidity_2():
    result = Compilers().compileSolidity(solidity_code)
    assert set(result.keys()) == {"test"}
    assert set(result["test"].keys()) == {"info", "code"}
    assert set(result["test"]["info"]) == {
        "language",
        "languageVersion",
        "abiDefinition",
        "source",
        "compilerVersion",
        "developerDoc",
        "userDoc",
    }
Ejemplo n.º 6
0
def test_compileSolidity():
    from pyethapp.jsonrpc import Compilers, data_encoder
    import ethereum._solidity
    s = ethereum._solidity.get_solidity()
    c = Compilers()
    assert 'solidity' in c.getCompilers()
    bc = s.compile(solidity_code)
    abi = s.mk_full_signature(solidity_code)
    r = dict(code=data_encoder(bc),
             info=dict(source=solidity_code,
                       language='Solidity',
                       languageVersion='0',
                       compilerVersion='0',
                       abiDefinition=abi,
                       userDoc=dict(methods=dict()),
                       developerDoc=dict(methods=dict()),
                       )
             )
    assert r == c.compileSolidity(solidity_code)
Ejemplo n.º 7
0
def test_compileSolidity():
    from pyethapp.jsonrpc import Compilers, data_encoder
    import ethereum._solidity
    s = ethereum._solidity.get_solidity()
    if s == None:
        pytest.xfail("solidity not installed, not tested")
    else:
        c = Compilers()
        bc = s.compile(solidity_code)
        abi = s.mk_full_signature(solidity_code)
        r = dict(code=data_encoder(bc),
             info=dict(source=solidity_code,
                       language='Solidity',
                       languageVersion='0',
                       compilerVersion='0',
                       abiDefinition=abi,
                       userDoc=dict(methods=dict()),
                       developerDoc=dict(methods=dict()),
                       )
             )
        assert r == c.compileSolidity(solidity_code)
Ejemplo n.º 8
0
def test_compileSolidity():
    from pyethapp.jsonrpc import Compilers, data_encoder
    import ethereum._solidity
    s = ethereum._solidity.get_solidity()
    if s == None:
        pytest.xfail("solidity not installed, not tested")
    else:
        c = Compilers()
        bc = s.compile(solidity_code)
        abi = s.mk_full_signature(solidity_code)
        r = dict(code=data_encoder(bc),
                 info=dict(
                     source=solidity_code,
                     language='Solidity',
                     languageVersion='0',
                     compilerVersion='0',
                     abiDefinition=abi,
                     userDoc=dict(methods=dict()),
                     developerDoc=dict(methods=dict()),
                 ))
        assert r == c.compileSolidity(solidity_code)
                               abiDefinition=abi,
                               userDoc=dict(methods=dict()),
                               developerDoc=dict(methods=dict()),
                           )))
        B = c.compileSolidity(solidity_code)
        assert A.keys() == B.keys()
        At = A['test']
        Bt = B['test']
        assert At['code'] == Bt['code']
        for k, Av in At['info'].items():
            if k == 'compilerVersion':
                continue
            assert Av == Bt['info'][k]


@pytest.mark.skipif('solidity' not in Compilers().compilers,
                    reason="solidity compiler not available")
def test_compileSolidity_2():
    result = Compilers().compileSolidity(solidity_code)
    assert set(result.keys()) == {'test'}
    assert set(result['test'].keys()) == {'info', 'code'}
    assert set(result['test']['info']) == {
        'language', 'languageVersion', 'abiDefinition', 'source',
        'compilerVersion', 'developerDoc', 'userDoc'
    }


@pytest.fixture
def test_app(request, tmpdir):
    class TestApp(EthApp):
        def start(self):
Ejemplo n.º 10
0
from pyethapp.app import EthApp
from pyethapp.config import update_config_with_defaults, get_default_config
from pyethapp.db_service import DBService
from pyethapp.eth_service import ChainService
from pyethapp.jsonrpc import Compilers, JSONRPCServer, quantity_encoder, address_encoder, data_decoder,   \
    data_encoder, default_gasprice, default_startgas
from pyethapp.rpc_client import JSONRPCClient
from pyethapp.profiles import PROFILES
from pyethapp.pow_service import PoWService
from pyethapp.rpc_client import ContractProxy
from pyethapp.utils import to_comparable_logs

ethereum.tools.keys.PBKDF2_CONSTANTS['c'] = 100  # faster key derivation
log = get_logger('test.jsonrpc')  # pylint: disable=invalid-name
configure_logging(':trace')
SOLIDITY_AVAILABLE = 'solidity' in Compilers().compilers

# EVM code corresponding to the following solidity code:
#
#     contract LogTest {
#         event Log();
#
#         function () {
#             Log();
#         }
#     }
#
# (compiled with online Solidity compiler at https://chriseth.github.io/browser-solidity/ version
# 0.1.1-34172c3b/RelWithDebInfo-Emscripten/clang/int)
LOG_EVM = decode_hex(
    '606060405260448060116000396000f30060606040523615600d57600d565b60425b7f5e7df75d54'