fix #3904, also simplify and clean up gnunet-publish shutdown logic in general
[oweals/gnunet.git] / src / fs / test_gnunet_fs_rec.py.in
index e86bb0ab2b3922c2be6d8a9a59e79f433ab2d1d1..3828a65c984bd77de5d609cc2d62453b6375f65f 100755 (executable)
@@ -14,8 +14,8 @@
 #
 #    You should have received a copy of the GNU General Public License
 #    along with GNUnet; see the file COPYING.  If not, write to the
-#    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-#    Boston, MA 02111-1307, USA.
+#    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+#    Boston, MA 02110-1301, USA.
 #
 # Testcase for file-sharing command-line tools (recursive publishing & download)
 import sys
@@ -23,6 +23,8 @@ import os
 import subprocess
 import re
 import shutil
+import tarfile
+import filecmp
 
 srcdir = "../.."
 gnunet_pyexpect_dir = os.path.join (srcdir, "contrib")
@@ -30,21 +32,22 @@ if gnunet_pyexpect_dir not in sys.path:
   sys.path.append (gnunet_pyexpect_dir)
 
 from gnunet_pyexpect import pexpect
+from pydiffer import dcdiff
 
 if os.name == 'posix':
-  download = 'gnunet-download'
+  download = './gnunet-download'
   gnunetarm = 'gnunet-arm'
-  publish = 'gnunet-publish'
-  unindex = 'gnunet-unindex'
-  search = 'gnunet-search'
-  directory = 'gnunet-directory'
+  publish = './gnunet-publish'
+  unindex = './gnunet-unindex'
+  search = './gnunet-search'
+  directory = './gnunet-directory'
 elif os.name == 'nt':
-  download = 'gnunet-download.exe'
+  download = './gnunet-download.exe'
   gnunetarm = 'gnunet-arm.exe'
-  publish = 'gnunet-publish.exe'
-  unindex = 'gnunet-unindex.exe'
-  search = 'gnunet-search.exe'
-  directory = 'gnunet-directory.exe'
+  publish = './gnunet-publish.exe'
+  unindex = './gnunet-unindex.exe'
+  search = './gnunet-search.exe'
+  directory = './gnunet-directory.exe'
 
 if os.name == "nt":
   shutil.rmtree (os.path.join (os.getenv ("TEMP"), "gnunet-test-fs-py-rec"), True)
@@ -55,7 +58,8 @@ arm = subprocess.Popen ([gnunetarm, '-sq', '-c', 'test_gnunet_fs_rec_data.conf']
 arm.communicate ()
 
 # pray that `tar' is in PATH
-os.system ('tar xfz test_gnunet_fs_rec_data.tgz')
+tar = tarfile.open ('test_gnunet_fs_rec_data.tgz')
+tar.extractall ()
 # first, basic publish-search-download run
 try:
   pub = pexpect ()
@@ -93,8 +97,9 @@ try:
 
   os.remove ("rdir/b.gnd")
   os.remove ("rdir/a.gnd")
-  if 0 != os.system ("diff -r dir rdir"):
-    raise Exception ("Unexpected difference between source directory and downloaded result")
+  diff = dcdiff ('dir', 'rdir')
+  if len (diff) != 0:
+    raise Exception ("Unexpected difference between source directory and downloaded result:\n{}".format (diff))
   
 
 finally: