diff --git a/appveyor.yml b/appveyor.yml
index 2af179120..28d530624 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -34,6 +34,10 @@ configuration:
# We can re-enable it when we find a way to mitigate the unreliability
# issues. Have automated builds be reliable is the more important thing.
#cache: build
+#
+# In case we'd need a RDP detail to login into appveyor
+#init:
+# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
install:
- git submodule update --init --recursive
- scripts/install_deps.bat
@@ -47,12 +51,15 @@ build_script:
- cd %APPVEYOR_BUILD_FOLDER%
- scripts\release.bat %CONFIGURATION%
-#test_script:
-# - cd %APPVEYOR_BUILD_FOLDER%\build\test\%CONFIGURATION%
-# - copy "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\msvc*.dll" .
-# - start eth.exe --test -d %TMP%\eth_for_soltest
-# - soltest.exe -- --ipc %TMP%\eth_for_soltest\geth.ipc
-# - pkill eth
+test_script:
+ - cd %APPVEYOR_BUILD_FOLDER%
+ - cd deps\install\x64\eth
+ - ps: $ethProc = Start-Process eth.exe --test
+ - ps: Start-Sleep -s 100
+ - cd %APPVEYOR_BUILD_FOLDER%\build\test\%CONFIGURATION%
+ - copy "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\msvc*.dll" .
+ - soltest.exe -- --ipcpath \\.\pipe\geth.ipc
+ - ps: Stop-Process -Id $ethProc.Id
artifacts:
- path: solidity-windows.zip
diff --git a/scripts/install_deps.bat b/scripts/install_deps.bat
index 512a28dfa..bd68b07af 100644
--- a/scripts/install_deps.bat
+++ b/scripts/install_deps.bat
@@ -59,3 +59,4 @@ REM Copyright (c) 2016 solidity contributors.
REM ---------------------------------------------------------------------------
cmake -P deps\install_deps.cmake
+cmake -P scripts\install_eth.cmake
diff --git a/scripts/install_eth.cmake b/scripts/install_eth.cmake
new file mode 100644
index 000000000..25f449e02
--- /dev/null
+++ b/scripts/install_eth.cmake
@@ -0,0 +1,76 @@
+#------------------------------------------------------------------------------
+# Cmake script for installing pre-requisite package eth for solidity.
+#
+# The aim of this script is to simply download and unpack eth binaries to the deps folder.
+#
+# The documentation for solidity is hosted at:
+#
+# http://solidity.readthedocs.io/
+#
+# ------------------------------------------------------------------------------
+# This file is part of solidity.
+#
+# solidity is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# solidity is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with solidity. If not, see
+#
+# (c) 2016 solidity contributors.
+#------------------------------------------------------------------------------
+
+function(download URL DST_FILE STATUS)
+ set(TMP_FILE "${DST_FILE}.part")
+
+ get_filename_component(FILE_NAME ${DST_FILE} NAME)
+ if (NOT EXISTS ${DST_FILE})
+ message("Downloading ${FILE_NAME}")
+ file(DOWNLOAD ${URL} ${TMP_FILE} SHOW_PROGRESS STATUS DOWNLOAD_STATUS)
+ list(GET DOWNLOAD_STATUS 0 STATUS_CODE)
+ if (STATUS_CODE EQUAL 0)
+ file(RENAME ${TMP_FILE} ${DST_FILE})
+ else()
+ file(REMOVE ${TMP_FILE})
+ list(GET DOWNLOAD_STATUS 1 ERROR_MSG)
+
+ message("ERROR! Downloading '${FILE_NAME}' failed.")
+ message(STATUS "URL: ${URL}")
+ message(STATUS "Error: ${STATUS_CODE} ${ERROR_MSG}")
+ set(STATUS FALSE PARENT_SCOPE)
+ return()
+ endif()
+ else()
+ message("Using cached ${FILE_NAME}")
+ endif()
+ set(STATUS TRUE PARENT_SCOPE)
+endfunction(download)
+
+function(download_and_unpack PACKAGE_URL DST_DIR)
+ get_filename_component(FILE_NAME ${PACKAGE_URL} NAME)
+
+ set(DST_FILE "${CACHE_DIR}/${FILE_NAME}")
+ set(TMP_FILE "${DST_FILE}.part")
+
+ file(MAKE_DIRECTORY ${CACHE_DIR})
+ file(MAKE_DIRECTORY ${DST_DIR})
+
+ download(${PACKAGE_URL} ${DST_FILE} STATUS)
+
+ if (STATUS)
+ message("Unpacking ${FILE_NAME} to ${DST_DIR}")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${DST_FILE}
+ WORKING_DIRECTORY ${DST_DIR})
+ endif()
+endfunction(download_and_unpack)
+
+get_filename_component(ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
+set(CACHE_DIR "${ROOT_DIR}/deps/cache")
+set(INSTALL_DIR "${ROOT_DIR}/deps/install/x64/eth")
+download_and_unpack("https://github.com/bobsummerwill/cpp-ethereum/releases/download/develop-v1.3.0.401/cpp-ethereum-develop-windows.zip" ${INSTALL_DIR})
diff --git a/test/RPCSession.cpp b/test/RPCSession.cpp
index de10b3819..0a01ddb2d 100644
--- a/test/RPCSession.cpp
+++ b/test/RPCSession.cpp
@@ -46,7 +46,7 @@ IPCSocket::IPCSocket(string const& _path): m_path(_path)
NULL); // no template file
if (m_socket == INVALID_HANDLE_VALUE)
- BOOST_FAIL("Error creating IPC socket object");
+ BOOST_FAIL("Error creating IPC socket object!");
#else
if (_path.length() >= sizeof(sockaddr_un::sun_path))
@@ -251,7 +251,7 @@ void RPCSession::test_mineBlocks(int _number)
unsigned sleepTime = m_sleepTime;
size_t polls = 0;
- for (; polls < 10 && !mined; ++polls)
+ for (; polls < 14 && !mined; ++polls)
{
std::this_thread::sleep_for(chrono::milliseconds(sleepTime));
if (fromBigEndian(fromHex(rpcCall("eth_blockNumber").asString())) >= startBlock + _number)
@@ -270,7 +270,8 @@ void RPCSession::test_mineBlocks(int _number)
if (m_successfulMineRuns > 5)
{
m_successfulMineRuns = 0;
- m_sleepTime--;
+ if (m_sleepTime > 2)
+ m_sleepTime--;
}
}