aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity/SolidityExecutionFramework.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/libsolidity/SolidityExecutionFramework.h')
-rw-r--r--test/libsolidity/SolidityExecutionFramework.h53
1 files changed, 36 insertions, 17 deletions
diff --git a/test/libsolidity/SolidityExecutionFramework.h b/test/libsolidity/SolidityExecutionFramework.h
index 2b589498..1cd45603 100644
--- a/test/libsolidity/SolidityExecutionFramework.h
+++ b/test/libsolidity/SolidityExecutionFramework.h
@@ -22,25 +22,34 @@
#pragma once
-#include <string>
-#include <tuple>
-#include <fstream>
+#include <functional>
+
#include "../TestHelper.h"
#include "../RPCSession.h"
-#include <libethcore/ABI.h>
-#include <libethcore/SealEngine.h>
-#include <libethereum/State.h>
-#include <libethereum/Executive.h>
-#include <libethereum/ChainParams.h>
+
+#include <libdevcore/ABI.h>
+#include <libdevcore/FixedHash.h>
+#include <libevmasm/Instruction.h>
+
#include <libsolidity/interface/CompilerStack.h>
#include <libsolidity/interface/Exceptions.h>
-#include <libethcore/BasicAuthority.h>
-#include <libethcore/SealEngine.h>
+#include <libsolidity/interface/SourceReferenceFormatter.h>
namespace dev
{
namespace solidity
{
+ /// An Ethereum address: 20 bytes.
+ /// @NOTE This is not endian-specific; it's just a bunch of bytes.
+ using Address = h160;
+
+ // The various denominations; here for ease of use where needed within code.
+ static const u256 ether = exp10<18>();
+ static const u256 finney = exp10<15>();
+ static const u256 szabo = exp10<12>();
+ static const u256 shannon = exp10<9>();
+ static const u256 wei = exp10<0>();
+
namespace test
{
@@ -58,9 +67,21 @@ public:
std::map<std::string, Address> const& _libraryAddresses = std::map<std::string, Address>()
)
{
- m_compiler.reset(false, m_addStandardSources);
- m_compiler.addSource("", _sourceCode);
- ETH_TEST_REQUIRE_NO_THROW(m_compiler.compile(m_optimize, m_optimizeRuns), "Compiling contract failed");
+ // Silence compiler version warning
+ std::string sourceCode = "pragma solidity >=0.0;\n" + _sourceCode;
+ m_compiler.reset(false);
+ m_compiler.addSource("", sourceCode);
+ if (!m_compiler.compile(m_optimize, m_optimizeRuns))
+ {
+ for (auto const& error: m_compiler.errors())
+ SourceReferenceFormatter::printExceptionInformation(
+ std::cerr,
+ *error,
+ (error->type() == Error::Type::Warning) ? "Warning" : "Error",
+ [&](std::string const& _sourceName) -> solidity::Scanner const& { return m_compiler.scanner(_sourceName); }
+ );
+ BOOST_ERROR("Compiling contract failed");
+ }
eth::LinkerObject obj = m_compiler.object(_contractName);
obj.link(_libraryAddresses);
BOOST_REQUIRE(obj.linkReferences.empty());
@@ -84,7 +105,7 @@ public:
template <class... Args>
bytes const& callContractFunctionWithValue(std::string _sig, u256 const& _value, Args const&... _arguments)
{
- FixedHash<4> hash(dev::sha3(_sig));
+ FixedHash<4> hash(dev::keccak256(_sig));
sendMessage(hash.asBytes() + encodeArgs(_arguments...), false, _value);
return m_output;
}
@@ -271,12 +292,10 @@ protected:
size_t m_optimizeRuns = 200;
bool m_optimize = false;
- bool m_addStandardSources = false;
dev::solidity::CompilerStack m_compiler;
Address m_sender;
Address m_contractAddress;
- eth::EnvInfo m_envInfo;
- u256 const m_gasPrice = 100 * eth::szabo;
+ u256 const m_gasPrice = 100 * szabo;
u256 const m_gas = 100000000;
bytes m_output;
std::vector<LogEntry> m_logs;