Skip to content

Commit

Permalink
fix: contract id comp out
Browse files Browse the repository at this point in the history
  • Loading branch information
antazoey committed May 9, 2024
1 parent 727495b commit a3d2768
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 21 deletions.
14 changes: 8 additions & 6 deletions ape_solidity/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
)

Expand Down
42 changes: 27 additions & 15 deletions tests/test_compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,27 +344,39 @@ 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"
)

# 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",
"IndirectlyImportingMoreConstrainedVersion.sol:IndirectlyImportingMoreConstrainedVersion",
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.
Expand Down

0 comments on commit a3d2768

Please sign in to comment.