mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add contract depedendency tests to standardcompiler
This commit is contained in:
parent
a0394a1bfa
commit
f86cd06b97
@ -342,6 +342,67 @@ BOOST_AUTO_TEST_CASE(output_selection_all_files_all_contracts)
|
|||||||
BOOST_CHECK_EQUAL(dev::jsonCompactPrint(contract["abi"]), "[]");
|
BOOST_CHECK_EQUAL(dev::jsonCompactPrint(contract["abi"]), "[]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(output_selection_dependent_contract)
|
||||||
|
{
|
||||||
|
char const* input = R"(
|
||||||
|
{
|
||||||
|
"language": "Solidity",
|
||||||
|
"settings": {
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"A": [
|
||||||
|
"abi"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sources": {
|
||||||
|
"fileA": {
|
||||||
|
"content": "contract B { } contract A { function f() { new B(); } }"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
Json::Value result = compile(input);
|
||||||
|
BOOST_CHECK(containsAtMostWarnings(result));
|
||||||
|
Json::Value contract = getContractResult(result, "fileA", "A");
|
||||||
|
BOOST_CHECK(contract.isObject());
|
||||||
|
BOOST_CHECK(contract["abi"].isArray());
|
||||||
|
BOOST_CHECK_EQUAL(dev::jsonCompactPrint(contract["abi"]), "[{\"constant\":false,\"inputs\":[],\"name\":\"f\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]");
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_AUTO_TEST_CASE(output_selection_dependent_contract_with_import)
|
||||||
|
{
|
||||||
|
char const* input = R"(
|
||||||
|
{
|
||||||
|
"language": "Solidity",
|
||||||
|
"settings": {
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"A": [
|
||||||
|
"abi"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sources": {
|
||||||
|
"fileA": {
|
||||||
|
"content": "import \"fileB\"; contract A { function f() { new B(); } }"
|
||||||
|
},
|
||||||
|
"fileB": {
|
||||||
|
"content": "contract B { }"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)";
|
||||||
|
Json::Value result = compile(input);
|
||||||
|
BOOST_CHECK(containsAtMostWarnings(result));
|
||||||
|
Json::Value contract = getContractResult(result, "fileA", "A");
|
||||||
|
BOOST_CHECK(contract.isObject());
|
||||||
|
BOOST_CHECK(contract["abi"].isArray());
|
||||||
|
BOOST_CHECK_EQUAL(dev::jsonCompactPrint(contract["abi"]), "[{\"constant\":false,\"inputs\":[],\"name\":\"f\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]");
|
||||||
|
}
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE_END()
|
BOOST_AUTO_TEST_SUITE_END()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user