Moving XML output files from cppunit tests to $HOME/.gnuradio/unittests.
authorTom Rondeau <trondeau@vt.edu>
Sat, 2 Oct 2010 21:16:04 +0000 (17:16 -0400)
committerTom Rondeau <trondeau@vt.edu>
Sat, 2 Oct 2010 21:16:04 +0000 (17:16 -0400)
This also adds a new utility gr_unittests.h, which sets up the path for output files.

gnuradio-core/src/lib/runtime/Makefile.am
gnuradio-core/src/lib/runtime/gr_unittests.h [new file with mode: 0644]
gnuradio-core/src/tests/test_all.cc
gnuradio-core/src/tests/test_atsc.cc
gnuradio-core/src/tests/test_filter.cc
gnuradio-core/src/tests/test_general.cc
gnuradio-core/src/tests/test_runtime.cc
gruel/src/lib/test_gruel.cc

index b0e80427700c649efbb25bf0e674a96be839e775..abd789a1d07a2d4d1d42b457a3267fe227358bc4 100644 (file)
@@ -120,6 +120,7 @@ grinclude_HEADERS =                                 \
        gr_timer.h                              \
        gr_tmp_path.h                           \
        gr_types.h                              \
+       gr_unittests.h                          \
        gr_vmcircbuf.h                          
 
 noinst_HEADERS =                               \
diff --git a/gnuradio-core/src/lib/runtime/gr_unittests.h b/gnuradio-core/src/lib/runtime/gr_unittests.h
new file mode 100644 (file)
index 0000000..680e59c
--- /dev/null
@@ -0,0 +1,70 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2010 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio 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, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio 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 GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+
+#ifdef MKDIR_TAKES_ONE_ARG
+#define gr_mkdir(pathname, mode) mkdir(pathname)
+#else
+#define gr_mkdir(pathname, mode) mkdir((pathname), (mode))
+#endif
+
+/*
+ * Mostly taken from gr_preferences.cc/h
+ * The simplest thing that could possibly work:
+ *  the key is the filename; the value is the file contents.
+ */
+
+static void
+ensure_unittest_path (const char *grpath, const char *path)
+{
+  struct stat statbuf;
+  if (stat (path, &statbuf) == 0 && S_ISDIR (statbuf.st_mode))
+    return;
+
+  // blindly try to make it    // FIXME make this robust. C++ SUCKS!
+  gr_mkdir (grpath, 0750);
+  gr_mkdir (path, 0750);
+}
+
+static void
+get_unittest_path (const char *filename, char *fullpath, size_t pathsize)
+{
+  char path[200];
+  char grpath[200];
+  snprintf (grpath, sizeof(grpath), "%s/.gnuradio", getenv ("HOME"));
+  snprintf (path, sizeof(path), "%s/unittests", grpath);
+  snprintf (fullpath, pathsize, "%s/%s", path, filename);
+
+  ensure_unittest_path(grpath, path);
+}
+
index 35bc0a049e710fc46000cb3219d7b27a920eda8c..17ee32f34dc9d75a3d1b51c02ecad320c351a605 100644 (file)
@@ -23,6 +23,7 @@
 #include <cppunit/TextTestRunner.h>
 #include <cppunit/XmlOutputter.h>
 
+#include <gr_unittests.h>
 #include <qa_runtime.h>
 #include <qa_general.h>
 #include <qa_filter.h>
 int 
 main (int argc, char **argv)
 {
-  
-  CppUnit::TextTestRunner      runner;
-  std::ofstream xmlfile("cppunit_test_all.xml");
+  char path[200];
+  get_unittest_path ("gnuradio_core_all.xml", path, 200);
+
+  CppUnit::TextTestRunner runner;
+  std::ofstream xmlfile(path);
   CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
 
   runner.addTest (qa_runtime::suite ());
index f744d76e69485eb16a8af9e7f64f332b84da4891..51642f81a330e26b34baf88923c9d7d3aa02aca1 100644 (file)
  */
 
 #include <cppunit/TextTestRunner.h>
+#include <cppunit/XmlOutputter.h>
+
+#include <gr_unittests.h>
 #include <qa_atsc.h>
 
 int 
 main (int argc, char **argv)
 {
+  char path[200];
+  get_unittest_path ("gnuradio_core_atsc.xml", path, 200);
   
-  CppUnit::TextTestRunner      runner;
+  CppUnit::TextTestRunner runner;
+  std::ofstream xmlfile(path);
+  CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
 
   runner.addTest (qa_atsc::suite ());
-  
+  runner.setOutputter(xmlout);
+
   bool was_successful = runner.run ("", false);
 
   return was_successful ? 0 : 1;
index 1e67b71801fbe0a4b302f9c56a89092be91389fd..90fe66c2f53a97db974ae415fe1489fd5e4b0f29 100644 (file)
 
 #include <cppunit/TextTestRunner.h>
 #include <cppunit/XmlOutputter.h>
+
+#include <gr_unittests.h>
 #include <qa_filter.h>
 
 int 
 main (int argc, char **argv)
 {
+  char path[200];
+  get_unittest_path ("gnuradio_core_atsc.xml", path, 200);
   
-  CppUnit::TextTestRunner      runner;
-  std::ofstream xmlfile("cppunit_test_filter.xml");
+  CppUnit::TextTestRunner runner;
+  std::ofstream xmlfile(path);
   CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
 
   runner.addTest (qa_filter::suite ());
index bc89c0b6b276df63613d72d200c387b3f25c724c..16ee9c3add1a6b0af88b24de403c0e1c8708fa91 100644 (file)
 
 #include <cppunit/TextTestRunner.h>
 #include <cppunit/XmlOutputter.h>
+
+#include <gr_unittests.h>
 #include <qa_general.h>
 
 int 
 main (int argc, char **argv)
 {
-  CppUnit::TextTestRunner      runner;
+  char path[200];
+  get_unittest_path ("gnuradio_core_general.xml", path, 200);
 
-  std::ofstream xmlfile("cppunit_test_general.xml");
+  CppUnit::TextTestRunner runner;
+  std::ofstream xmlfile(path);
   CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
 
   runner.addTest (qa_general::suite ());
index 1efd9a0c0ef6d05767bbbdb8488056e79600af9c..c7983a23ef59b0df5632005b6f33237cfbcace28 100644 (file)
 
 #include <cppunit/TextTestRunner.h>
 #include <cppunit/XmlOutputter.h>
+
+#include <gr_unittests.h>
 #include <qa_runtime.h>
 
 int 
 main (int argc, char **argv)
 {
+  char path[200];
+  get_unittest_path ("gnuradio_core_runtime.xml", path, 200);
   
-  CppUnit::TextTestRunner      runner;
-  std::ofstream xmlfile("cppunit_test_runtime.xml");
+  CppUnit::TextTestRunner runner;
+  std::ofstream xmlfile(path);
   CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
 
   runner.addTest (qa_runtime::suite ());
index cb5f2d36bc2f7d624a4f4077b528690b591981c0..f4b9fc4e2d7d03ebb23a53c3285d6a1cc6a85ade 100644 (file)
 
 #include <cppunit/TextTestRunner.h>
 #include <cppunit/XmlOutputter.h>
+
+#include <stdlib.h>
+#include <sys/stat.h>
+
 #include "pmt/qa_pmt.h"
 
+static void get_unittest_path (const char *filename, char *fullpath, size_t pathsize);
+
 int 
 main(int argc, char **argv)
 {
+  char path[200];
+  get_unittest_path ("gruel.xml", path, 200);
   
-  CppUnit::TextTestRunner      runner;
-  std::ofstream xmlfile("cppunit_gruel.xml");
+  CppUnit::TextTestRunner runner;
+  std::ofstream xmlfile(path);
   CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
 
   runner.addTest(qa_pmt::suite ());
@@ -39,3 +47,44 @@ main(int argc, char **argv)
 
   return was_successful ? 0 : 1;
 }
+
+
+// NOTE: These are defined in gr_unittest.h for the rest of the project;
+// rewriting here since we don't depend on gnuradio-core in gruel
+
+#ifdef MKDIR_TAKES_ONE_ARG
+#define gr_mkdir(pathname, mode) mkdir(pathname)
+#else
+#define gr_mkdir(pathname, mode) mkdir((pathname), (mode))
+#endif
+
+/*
+ * Mostly taken from gr_preferences.cc/h
+ * The simplest thing that could possibly work:
+ *  the key is the filename; the value is the file contents.
+ */
+
+static void
+ensure_unittest_path (const char *grpath, const char *path)
+{
+  struct stat statbuf;
+  if (stat (path, &statbuf) == 0 && S_ISDIR (statbuf.st_mode))
+    return;
+
+  // blindly try to make it    // FIXME make this robust. C++ SUCKS!
+  gr_mkdir (grpath, 0750);
+  gr_mkdir (path, 0750);
+}
+
+static void
+get_unittest_path (const char *filename, char *fullpath, size_t pathsize)
+{
+  char path[200];
+  char grpath[200];
+  snprintf (grpath, sizeof(grpath), "%s/.gnuradio", getenv ("HOME"));
+  snprintf (path, sizeof(path), "%s/unittests", grpath);
+  snprintf (fullpath, pathsize, "%s/%s", path, filename);
+
+  ensure_unittest_path(grpath, path);
+}
+