add some test-cases for unverified library addresses

This commit is contained in:
ssi91 2023-08-25 21:41:24 -04:00
parent df03f1412d
commit e9365e93fc
7 changed files with 205 additions and 0 deletions

View File

@ -0,0 +1,33 @@
{
"language": "Solidity",
"sources": {
"A": {
"content": "
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.0;
library L {
function f() external {}
}
contract C {
function foo() public {
L.f();
}
}
"
}
},
"settings": {
"libraries": {
"A": {
"L": ""
}
},
"outputSelection": {
"*": {
"C": ["evm.bytecode.object", "evm.bytecode.linkReferences"]
}
}
}
}

View File

@ -0,0 +1,12 @@
{
"errors":
[
{
"component": "general",
"formattedMessage": "Library address is not prefixed with \"0x\".",
"message": "Library address is not prefixed with \"0x\".",
"severity": "error",
"type": "JSONError"
}
]
}

View File

@ -0,0 +1,33 @@
{
"language": "Solidity",
"sources": {
"A": {
"content": "
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.0;
library L {
function f() external {}
}
contract C {
function foo() public {
L.f();
}
}
"
}
},
"settings": {
"libraries": {
"A": {
"L": "0x123456789012345678901234567890123456789T"
}
},
"outputSelection": {
"*": {
"C": ["evm.bytecode.object", "evm.bytecode.linkReferences"]
}
}
}
}

View File

@ -0,0 +1,12 @@
{
"errors":
[
{
"component": "general",
"formattedMessage": "Invalid library address (\"0x123456789012345678901234567890123456789T\") supplied.",
"message": "Invalid library address (\"0x123456789012345678901234567890123456789T\") supplied.",
"severity": "error",
"type": "JSONError"
}
]
}

View File

@ -0,0 +1,33 @@
{
"language": "Solidity",
"sources": {
"A": {
"content": "
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.0;
library L {
function f() external {}
}
contract C {
function foo() public {
L.f();
}
}
"
}
},
"settings": {
"libraries": {
"A": {
"L": "0x2323232232323"
}
},
"outputSelection": {
"*": {
"C": ["evm.bytecode.object", "evm.bytecode.linkReferences"]
}
}
}
}

View File

@ -0,0 +1,12 @@
{
"errors":
[
{
"component": "general",
"formattedMessage": "Library address is of invalid length.",
"message": "Library address is of invalid length.",
"severity": "error",
"type": "JSONError"
}
]
}

View File

@ -399,6 +399,76 @@ BOOST_AUTO_TEST_CASE(standard_json_mode_options)
BOOST_TEST(parsedOptions == expectedOptions);
}
BOOST_AUTO_TEST_CASE(invalid_library_address_length)
{
vector<string> commandLine = {
"solc",
"contract.sol",
"--libraries="
"dir1/file1.sol:L=0x"
};
string expectedMessage = "Invalid length for address for library \"dir1/file1.sol:L\": 0 instead of 40 characters.";
auto hasCorrectMessage = [&](CommandLineValidationError const& _exception) {
return _exception.what() == expectedMessage;
};
BOOST_CHECK_EXCEPTION(parseCommandLine(commandLine), CommandLineValidationError, hasCorrectMessage);
}
BOOST_AUTO_TEST_CASE(invalid_library_address_empty)
{
vector<string> commandLine = {
"solc",
"contract.sol",
"--libraries="
"dir1/file1.sol:L="
};
string expectedMessage = "Empty address provided for library \"dir1/file1.sol:L\".\n"
"Note that there should not be any whitespace after the equal sign." ;
auto hasCorrectMessage = [&](CommandLineValidationError const& _exception) {
return _exception.what() == expectedMessage;
};
BOOST_CHECK_EXCEPTION(parseCommandLine(commandLine), CommandLineValidationError, hasCorrectMessage);
}
BOOST_AUTO_TEST_CASE(invalid_library_address_prefix)
{
vector<string> commandLine = {
"solc",
"contract.sol",
"--libraries="
"dir1/file1.sol:L=1111122222333334444455555666667777788888"
};
string expectedMessage = "The address 1111122222333334444455555666667777788888 is not prefixed with \"0x\".\n"
"Note that the address must be prefixed with \"0x\"." ;
auto hasCorrectMessage = [&](CommandLineValidationError const& _exception) {
return _exception.what() == expectedMessage;
};
BOOST_CHECK_EXCEPTION(parseCommandLine(commandLine), CommandLineValidationError, hasCorrectMessage);
}
BOOST_AUTO_TEST_CASE(invalid_library_address_checksum)
{
vector<string> commandLine = {
"solc",
"contract.sol",
"--libraries="
"dir1/file1.sol:L=0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaaa"
};
string expectedMessage = "Invalid checksum on address for library \"dir1/file1.sol:L\": aAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaaa\n"
"The correct checksum is 0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa";
auto hasCorrectMessage
= [&](CommandLineValidationError const& _exception) { return _exception.what() == expectedMessage; };
BOOST_CHECK_EXCEPTION(parseCommandLine(commandLine), CommandLineValidationError, hasCorrectMessage);
}
BOOST_AUTO_TEST_CASE(invalid_options_input_modes_combinations)
{
map<string, vector<string>> invalidOptionInputModeCombinations = {