algorand / algorand/pyteal

Router testing with graviton - RouterSimulation doesn't handle overloaded method names

Open
#662 0 comments 0 reactions 0 assignees View on GitHub
new-feature-request Team Scytale
Dominant language
Python
Stars
288
Forks
138
PR merge metrics
No merged PRs in 30d

Description

## Problem

Class `tests.blackbox.RouterSimulation` doesn't handle overloaded method names. In particular, consider [this example](https://github.com/algorand/pyteal/blob/89abe752b55355a337a4cbd40f64f72f0a0ea267/tests/integration/abi_router_test.py#L53); if another method in the router had the abi-signature `add(uint64,uint64)void` then `RouterSimulation` would act non-deterministically.

## Solution

[CallPredicates type](https://github.com/algorand/pyteal/blob/ac8ad40f04e10ef1aea8042bae6de2710326fa98/tests/blackbox.py#L73) should be keyed off method _signature_ as opposed to current method name. This will involve refactoring a few dependencies.

## Dependencies

None

## Urgency

Low - for the purposes of PyTeal itself, it is easy to work around the issue by not over-loading method names. However, if there is sufficient community interest in re-using `RouterSimulation` for smart contract testing, then it ought to be improved in the way described.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.