From cb4bdd18a74470e190f552a2425c12c6e2f33138 Mon Sep 17 00:00:00 2001
From: Gavin Andresen <gavinandresen@gmail.com>
Date: Wed, 2 Apr 2014 16:30:38 -0400
Subject: [PATCH] Have pull-tester run the listtransactions.py regression test

This should show how to run a python-based regression test
successfully in the pull-tester environment.
---
 Makefile.am                      |  2 +-
 qa/pull-tester/build-tests.sh.in |  3 +++
 qa/rpc-tests/util.py             | 13 ++++++++-----
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 7a46652ec..0b3a822bf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -162,7 +162,7 @@ check-local:
 	@qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS)
 endif
 
-EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/pull-tester.sh $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING)
+EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/pull-tester.sh qa/rpc-tests $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING)
 
 CLEANFILES = $(OSX_DMG) $(OSX_APP) $(BITCOIN_WIN_INSTALLER)
 
diff --git a/qa/pull-tester/build-tests.sh.in b/qa/pull-tester/build-tests.sh.in
index e7db72111..ebf377a48 100755
--- a/qa/pull-tester/build-tests.sh.in
+++ b/qa/pull-tester/build-tests.sh.in
@@ -74,6 +74,9 @@ make check
 
 # Run RPC integration test on Linux:
 @abs_top_srcdir@/qa/rpc-tests/wallet.sh @abs_top_srcdir@/linux-build/src
+@abs_top_srcdir@/qa/rpc-tests/listtransactions.py --srcdir @abs_top_srcdir@/linux-build/src
+# Clean up cache/ directory that the python regression tests create
+rm -rf cache
 
 if [ $RUN_EXPENSIVE_TESTS = 1 ]; then
   # Run unit tests and blockchain-tester on Windows:
diff --git a/qa/rpc-tests/util.py b/qa/rpc-tests/util.py
index fa0700f1c..1d0896a3f 100644
--- a/qa/rpc-tests/util.py
+++ b/qa/rpc-tests/util.py
@@ -65,6 +65,7 @@ def initialize_chain(test_dir):
     """
 
     if not os.path.isdir(os.path.join("cache", "node0")):
+        devnull = open("/dev/null", "w+")
         # Create cache directories, run bitcoinds:
         for i in range(4):
             datadir = os.path.join("cache", "node"+str(i))
@@ -79,9 +80,9 @@ def initialize_chain(test_dir):
             if i > 0:
                 args.append("-connect=127.0.0.1:"+str(START_P2P_PORT))
             bitcoind_processes.append(subprocess.Popen(args))
-            subprocess.check_output([ "bitcoin-cli", "-datadir="+datadir,
-                                      "-rpcwait", "getblockcount"])
-
+            subprocess.check_call([ "bitcoin-cli", "-datadir="+datadir,
+                                    "-rpcwait", "getblockcount"], stdout=devnull)
+        devnull.close()
         rpcs = []
         for i in range(4):
             try:
@@ -113,12 +114,14 @@ def initialize_chain(test_dir):
 
 def start_nodes(num_nodes, dir):
     # Start bitcoinds, and wait for RPC interface to be up and running:
+    devnull = open("/dev/null", "w+")
     for i in range(num_nodes):
         datadir = os.path.join(dir, "node"+str(i))
         args = [ "bitcoind", "-datadir="+datadir ]
         bitcoind_processes.append(subprocess.Popen(args))
-        subprocess.check_output([ "bitcoin-cli", "-datadir="+datadir,
-                                  "-rpcwait", "getblockcount"])
+        subprocess.check_call([ "bitcoin-cli", "-datadir="+datadir,
+                                  "-rpcwait", "getblockcount"], stdout=devnull)
+    devnull.close()
     # Create&return JSON-RPC connections
     rpc_connections = []
     for i in range(num_nodes):