Skip to content

Commit

Permalink
add tests
Browse files Browse the repository at this point in the history
Co-authored-by: bart1e <[email protected]>
  • Loading branch information
0xalpharush and bart1e committed Apr 7, 2024
1 parent 5f5aacd commit 098851c
Show file tree
Hide file tree
Showing 129 changed files with 795 additions and 5 deletions.
8 changes: 3 additions & 5 deletions slither/detectors/statements/unused_import.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing import List
from slither.detectors.abstract_detector import AbstractDetector, DetectorClassification, Output


# pylint: disable=protected-access,too-many-nested-blocks
class UnusedImport(AbstractDetector):
"""
Detector unused imports.
Expand Down Expand Up @@ -59,12 +59,10 @@ def _detect(self) -> List[Output]:
break

if not use_found:
unused.append(f"{i.source_mapping.content} ({i.source_mapping}")
unused.append(f"{i.source_mapping.content} ({i.source_mapping})")

if len(unused) > 0:
unused_list = ""
for i in unused:
unused_list += f"\n\t-{i}"
unused_list = "\n\t-" + "\n\t-".join(unused)

results.append(
self.generate_result(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
The following unused import(s) in tests/e2e/detectors/test_data/unused-imports/0.8.16/B.sol should be removed:
-import "./A.sol"; (tests/e2e/detectors/test_data/unused-imports/0.8.16/B.sol#4)

The following unused import(s) in tests/e2e/detectors/test_data/unused-imports/0.8.16/C.sol should be removed:
-import "./B.sol"; (tests/e2e/detectors/test_data/unused-imports/0.8.16/C.sol#4)

10 changes: 10 additions & 0 deletions tests/e2e/detectors/test_data/unused-import/0.8.16/A.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

library A
{
function a() public
{

}
}
9 changes: 9 additions & 0 deletions tests/e2e/detectors/test_data/unused-import/0.8.16/B.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./A.sol";

contract B
{

}
12 changes: 12 additions & 0 deletions tests/e2e/detectors/test_data/unused-import/0.8.16/C.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./B.sol";

contract C
{
constructor()
{
A.a();
}
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

library ConstantContractLevel
{
uint constant public CONSTANT = 0;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./ConstantContractLevel.sol";

contract ConstantContractLevelUsedInContractTest
{
uint private v = ConstantContractLevel.CONSTANT;
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./ConstantContractLevel.sol";

uint constant __ = ConstantContractLevel.CONSTANT;

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy
{

}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

uint constant ConstantTopLevel = 0;

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy
{

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./ConstantTopLevel.sol";

contract ConstantTopLevelUsedInContractTest
{
uint private v = ConstantTopLevel;
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./ConstantTopLevel.sol";

uint constant __ = ConstantTopLevel;

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy_
{

}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

contract Contract
{

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./Contract.sol";

contract ContractUsedInContractTest1
{
Contract c;
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./Contract.sol";

contract ContractUsedInContractTest2 is Contract
{

}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./Contract.sol";

Contract constant c = Contract(address(0x0));

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy
{

}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

error err();

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy
{

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomErrorTopLevel.sol";

contract CustomErrorTopLevelUsedInContractTest
{
constructor()
{
f();
}

function f() private pure
{
revert err();
}
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

library CustomEventContractLevel
{
event CustomEvent();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomEventContractLevel.sol";

contract CustomEventContractLevelUsedInContractTest
{
function f() public
{
emit CustomEventContractLevel.CustomEvent();
}
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomEventContractLevel.sol";

function f()
{
emit CustomEventContractLevel.CustomEvent();
}

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy
{

}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

contract CustomTypeContractLevel
{
type CustomType is uint;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomTypeContractLevel.sol";

contract CustomTypeContractLevelUsedInContractTest1
{
CustomTypeContractLevel.CustomType private v;
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomTypeContractLevel.sol";

contract CustomTypeContractLevelUsedInContractTest2
{
function f(CustomTypeContractLevel.CustomType) public
{

}
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomTypeContractLevel.sol";

contract CustomTypeContractLevelUsedInContractTest3
{
modifier m()
{
CustomTypeContractLevel.CustomType ___;
_;
}
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomTypeContractLevel.sol";

contract CustomTypeContractLevelUsedInContractTest4
{
struct CustomStruct
{
CustomTypeContractLevel.CustomType ___;
}
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomTypeContractLevel.sol";

struct CustomTypeContractLevelUsedTopLevelTest1
{
CustomTypeContractLevel.CustomType __;
}

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy
{

}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomTypeContractLevel.sol";

CustomTypeContractLevel.CustomType constant __ = CustomTypeContractLevel.CustomType.wrap(0);

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy
{

}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

type CustomType is uint;

// dummy contract, so that "No contract were found ..." message is not being thrown by Slither
contract Dummy
{

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomTypeTopLevel.sol";

contract CustomTypeTopLevelUsedInContractTest1
{
CustomType private v;
}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// SPDX-License-Identifier: Unlicense
pragma solidity 0.8.16;

import "./CustomTypeTopLevel.sol";

contract CustomTypeTopLevelUsedInContractTest2
{
function f(CustomType) public
{

}
}
Binary file not shown.
Loading

0 comments on commit 098851c

Please sign in to comment.