From 52c25bd00785df5d61846bf98ab8517520201811 Mon Sep 17 00:00:00 2001 From: Eric Scrivner Date: Thu, 24 Mar 2016 17:56:27 -0700 Subject: [PATCH] bugfix: Handle Solidity Compilation Errors * Catch and raise a CompilationError whenever compiling a Solidity file fails. --- lib/ethereum/initializer.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/ethereum/initializer.rb b/lib/ethereum/initializer.rb index bb0da4b..9c6ae69 100644 --- a/lib/ethereum/initializer.rb +++ b/lib/ethereum/initializer.rb @@ -3,10 +3,18 @@ module Ethereum class Initializer attr_accessor :contracts, :file, :client + # Raised whenever there is an issue compiling the Solidity file. + class CompilationError < StandardError; end + def initialize(file, client = Ethereum::IpcClient.new) @file = File.read(file) @client = client sol_output = @client.compile_solidity(@file) + + if sol_output.has_key?('error') + raise CompilationError, sol_output['error']['message'] + end + contracts = sol_output["result"].keys @contracts = [] contracts.each do |contract|