]> granicus.if.org Git - transmission/commitdiff
(trunk) move sandboxed session creation/teardown into libtransmission-test.[ch] so...
authorJordan Lee <jordan@transmissionbt.com>
Sun, 20 Jan 2013 04:41:38 +0000 (04:41 +0000)
committerJordan Lee <jordan@transmissionbt.com>
Sun, 20 Jan 2013 04:41:38 +0000 (04:41 +0000)
libtransmission/libtransmission-test.c
libtransmission/libtransmission-test.h
libtransmission/rename-test.c

index 0e8855f2c3b904890cb64b78e2256173ff75a5cb..1c892e018cf68e3a5c5e724ee16b6c37e858e911 100644 (file)
@@ -95,3 +95,108 @@ runTests (const testFunc * const tests, int numTests)
 
   return 0; /* All tests passed */
 }
+
+/***
+****
+***/
+
+#include <sys/types.h> /* stat(), opendir() */
+#include <sys/stat.h> /* stat() */
+#include <dirent.h> /* opendir() */
+#include <unistd.h> /* getcwd() */
+
+#include <errno.h>
+#include <string.h> /* strcmp() */
+
+#include "variant.h"
+
+tr_session * session = NULL;
+static char * sandbox = NULL;
+
+static char*
+tr_getcwd (void)
+{
+  char * result;
+  char buf[2048];
+
+#ifdef WIN32
+  result = _getcwd (buf, sizeof (buf));
+#else
+  result = getcwd (buf, sizeof (buf));
+#endif
+
+  if (result == NULL)
+    {
+      fprintf (stderr, "getcwd error: \"%s\"", tr_strerror (errno));
+      *buf = '\0';
+    }
+
+  return tr_strdup (buf);
+}
+
+static void
+rm_rf (const char * killme)
+{
+  struct stat sb;
+
+  if (!stat (killme, &sb))
+    {
+      DIR * odir;
+
+      if (S_ISDIR (sb.st_mode) && ((odir = opendir (killme))))
+        {
+          struct dirent *d;
+          for (d = readdir(odir); d != NULL; d=readdir(odir))
+            {
+              if (d->d_name && strcmp(d->d_name,".") && strcmp(d->d_name,".."))
+                {
+                  char * tmp = tr_buildPath (killme, d->d_name, NULL);
+                  rm_rf (tmp);
+                  tr_free (tmp);
+                }
+            }
+          closedir (odir);
+        }
+
+      if (verbose)
+        fprintf (stderr, "cleanup: removing %s\n", killme);
+
+      remove (killme);
+    }
+}
+
+void
+libtransmission_test_session_init (void)
+{
+  char * cwd;
+  char * downloadDir;
+  tr_variant dict;
+
+  /* create a sandbox for the test session */
+  cwd = tr_getcwd ();
+  sandbox = tr_buildPath (cwd, "sandbox-XXXXXX", NULL);
+  tr_mkdtemp (sandbox);
+  downloadDir = tr_buildPath (sandbox, "Downloads", NULL);
+  tr_mkdirp (downloadDir, 0700);
+
+  /* create a test session */
+  tr_variantInitDict    (&dict, 3);
+  tr_variantDictAddStr  (&dict, TR_KEY_download_dir, downloadDir);
+  tr_variantDictAddBool (&dict, TR_KEY_port_forwarding_enabled, false);
+  tr_variantDictAddBool (&dict, TR_KEY_dht_enabled, false);
+  session = tr_sessionInit ("rename-test", sandbox, true, &dict);
+
+  /* cleanup locals*/
+  tr_variantFree (&dict);
+  tr_free (downloadDir);
+  tr_free (cwd);
+}
+
+void
+libtransmission_test_session_close (void)
+{
+  tr_sessionClose (session);
+  tr_freeMessageList (tr_getQueuedMessages ());
+  rm_rf (sandbox);
+  tr_free (sandbox);
+}
index fbc413c8f12f148a198516405d6d50949e7f61d2..ade4d2d70dab1134992be00ee827a5ddca31fe06 100644 (file)
@@ -65,4 +65,9 @@ int main (void) { \
     return runTests (tests, 1); \
 }
 
+extern tr_session * session;
+void libtransmission_test_session_init (void);
+void libtransmission_test_session_close (void);
+
+
 #endif /* !LIBTRANSMISSION_TEST_H */
index de811fa5ef2c45e051ff9a2ac0770461c068322f..babc4b897f95c8e502016270092d689893794d43 100644 (file)
@@ -4,10 +4,7 @@
 #include <string.h> /* strcmp() */
 #include <stdio.h>
 
-#include <sys/types.h> /* stat(), opendir() */
-#include <sys/stat.h> /* stat() */
-#include <dirent.h> /* opendir() */
-#include <unistd.h> /* getcwd() */
+#include <unistd.h> /* sync() */
 
 #include "transmission.h"
 #include "resume.h"
 
 #include "libtransmission-test.h"
 
-static tr_session * session = NULL;
-
-static char*
-tr_getcwd (void)
-{
-  char * result;
-  char buf[2048];
-
-#ifdef WIN32
-  result = _getcwd (buf, sizeof (buf));
-#else
-  result = getcwd (buf, sizeof (buf));
-#endif
-
-  if (result == NULL)
-    {
-      fprintf (stderr, "getcwd error: \"%s\"", tr_strerror (errno));
-      *buf = '\0';
-    }
-
-  return tr_strdup (buf);
-}
-
 /***
 ****
 ***/
@@ -449,72 +423,16 @@ test_multifile_torrent (void)
 ****
 ***/
 
-static void
-rm_rf (const char * killme)
-{
-  struct stat sb;
-
-  if (!stat (killme, &sb))
-    {
-      DIR * odir;
-
-      if (S_ISDIR (sb.st_mode) && ((odir = opendir (killme))))
-        {
-          struct dirent *d;
-          for (d = readdir(odir); d != NULL; d=readdir(odir))
-            {
-              if (d->d_name && strcmp(d->d_name,".") && strcmp(d->d_name,".."))
-                {
-                  char * tmp = tr_buildPath (killme, d->d_name, NULL);
-                  rm_rf (tmp);
-                  tr_free (tmp);
-                }
-            }
-          closedir (odir);
-        }
-
-      if (verbose)
-        fprintf (stderr, "cleanup: removing %s\n", killme);
-
-      remove (killme);
-    }
-}
-
 int
 main (void)
 {
   int ret;
-  char * cwd;
-  char * sandbox;
-  char * downloadDir;
-  tr_variant dict;
   const testFunc tests[] = { test_single_filename_torrent,
                              test_multifile_torrent };
 
-  /* create a sandbox for the test session */
-  cwd = tr_getcwd ();
-  sandbox = tr_buildPath (cwd, "sandbox-XXXXXX", NULL);
-  tr_mkdtemp (sandbox);
-  downloadDir = tr_buildPath (sandbox, "Downloads", NULL);
-  tr_mkdirp (downloadDir, 0700);
-
-  /* create a test session */
-  tr_variantInitDict    (&dict, 3);
-  tr_variantDictAddStr  (&dict, TR_KEY_download_dir, downloadDir);
-  tr_variantDictAddBool (&dict, TR_KEY_port_forwarding_enabled, false);
-  tr_variantDictAddBool (&dict, TR_KEY_dht_enabled, false);
-  session = tr_sessionInit ("rename-test", sandbox, true, &dict);
-
-  /* run the tests */
+  libtransmission_test_session_init ();
   ret = runTests (tests, NUM_TESTS (tests));
+  libtransmission_test_session_close ();
 
-  /* cleanup */
-  tr_sessionClose (session);
-  tr_freeMessageList (tr_getQueuedMessages ());
-  tr_variantFree (&dict);
-  rm_rf (sandbox);
-  tr_free (downloadDir);
-  tr_free (sandbox);
-  tr_free (cwd);
   return ret;
 }