From 8895f457a2b8af1433ded349a79044ccc63c1eeb Mon Sep 17 00:00:00 2001 From: Juliya Smith Date: Wed, 8 May 2024 19:09:41 -0500 Subject: [PATCH] fix: contract id comp out --- ape_solidity/compiler.py | 14 ++++++------ tests/test_compiler.py | 46 +++++++++++++++++++++++++++------------- 2 files changed, 39 insertions(+), 21 deletions(-) diff --git a/ape_solidity/compiler.py b/ape_solidity/compiler.py index 6775c49..4b04f62 100644 --- a/ape_solidity/compiler.py +++ b/ape_solidity/compiler.py @@ -614,17 +614,19 @@ def compile( vers = contract_versions[ct.name] settings = input_jsons[vers]["settings"] - if vers in compilers_used and ct.name not in (compilers_used[vers].contractTypes or []): - compilers_used[vers].contractTypes = [ - *(compilers_used[vers].contractTypes or []), - ct.name, - ] + contract_id = f"{ct.source_id}:{ct.name}" + if vers in compilers_used and contract_id not in ( + compilers_used[vers].contractTypes or [] + ): + existing_cts = compilers_used[vers].contractTypes or [] + if contract_id not in existing_cts: + compilers_used[vers].contractTypes = [*existing_cts, contract_id] elif vers not in compilers_used: compilers_used[vers] = Compiler( name=self.name.lower(), version=f"{vers}", - contractTypes=[ct.name], + contractTypes=[contract_id], settings=settings, ) diff --git a/tests/test_compiler.py b/tests/test_compiler.py index 7c10d4b..4d77487 100644 --- a/tests/test_compiler.py +++ b/tests/test_compiler.py @@ -344,27 +344,43 @@ def run_test(manifest): b >= a for a, b in zip(actual_remappings, actual_remappings[1:]) ), "Import remappings should be sorted" assert f"@remapping/contracts={common_suffix}" in compiler_0426.settings["remappings"] - assert "UseYearn" in compiler_latest.contractTypes + assert "UseYearn.sol:UseYearn" in compiler_latest.contractTypes assert "@gnosis=.cache/gnosis/v1.3.0" in compiler_latest.settings["remappings"] + more_c = ( + "IndirectlyImportingMoreConstrainedVersionCompanion.sol" + ":IndirectlyImportingMoreConstrainedVersionCompanion" + ) + indirect_morec = ( + "IndirectlyImportingMoreConstrainedVersionCompanionImport.sol" + ":IndirectlyImportingMoreConstrainedVersionCompanionImport" + ) + indrect_morec_2 = ( + "IndirectlyImportingMoreConstrainedVersion.sol" + ":IndirectlyImportingMoreConstrainedVersion" + ) + # Compiler contract types test assert set(compiler_0812.contractTypes) == { - "ImportSourceWithEqualSignVersion", - "ImportSourceWithNoPrefixVersion", - "ImportingLessConstrainedVersion", - "IndirectlyImportingMoreConstrainedVersion", - "IndirectlyImportingMoreConstrainedVersionCompanion", - "SpecificVersionNoPrefix", - "SpecificVersionRange", - "SpecificVersionWithEqualSign", - "CompilesOnce", - "IndirectlyImportingMoreConstrainedVersionCompanionImport", + "ImportSourceWithEqualSignVersion.sol:ImportSourceWithEqualSignVersion", + "ImportSourceWithNoPrefixVersion.sol:ImportSourceWithNoPrefixVersion", + "ImportingLessConstrainedVersion.sol:ImportingLessConstrainedVersion", + indrect_morec_2, + more_c, + "SpecificVersionNoPrefix.sol:SpecificVersionNoPrefix", + "SpecificVersionRange.sol:SpecificVersionRange", + "SpecificVersionWithEqualSign.sol:SpecificVersionWithEqualSign", + "CompilesOnce.sol:CompilesOnce", + indirect_morec, + } + assert set(compiler_0612.contractTypes) == { + "RangedVersion.sol:RangedVersion", + "VagueVersion.sol:VagueVersion", } - assert set(compiler_0612.contractTypes) == {"RangedVersion", "VagueVersion"} assert set(compiler_0426.contractTypes) == { - "ExperimentalABIEncoderV2", - "SpacesInPragma", - "ImportOlderDependency", + "ExperimentalABIEncoderV2.sol:ExperimentalABIEncoderV2", + "SpacesInPragma.sol:SpacesInPragma", + "ImportOlderDependency.sol:ImportOlderDependency", } # Ensure compiled first so that the local cached manifest exists.