summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnuradio-core/src/lib/runtime/Makefile.am1
-rw-r--r--gnuradio-core/src/lib/runtime/gr_unittests.h70
-rw-r--r--gnuradio-core/src/tests/test_all.cc9
-rw-r--r--gnuradio-core/src/tests/test_atsc.cc12
-rw-r--r--gnuradio-core/src/tests/test_filter.cc8
-rw-r--r--gnuradio-core/src/tests/test_general.cc8
-rw-r--r--gnuradio-core/src/tests/test_runtime.cc8
-rw-r--r--gruel/src/lib/test_gruel.cc53
8 files changed, 156 insertions, 13 deletions
diff --git a/gnuradio-core/src/lib/runtime/Makefile.am b/gnuradio-core/src/lib/runtime/Makefile.am
index b0e804277..abd789a1d 100644
--- a/gnuradio-core/src/lib/runtime/Makefile.am
+++ b/gnuradio-core/src/lib/runtime/Makefile.am
@@ -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
index 000000000..680e59ca4
--- /dev/null
+++ b/gnuradio-core/src/lib/runtime/gr_unittests.h
@@ -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);
+}
+
diff --git a/gnuradio-core/src/tests/test_all.cc b/gnuradio-core/src/tests/test_all.cc
index 35bc0a049..17ee32f34 100644
--- a/gnuradio-core/src/tests/test_all.cc
+++ b/gnuradio-core/src/tests/test_all.cc
@@ -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>
@@ -33,9 +34,11 @@
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 ());
diff --git a/gnuradio-core/src/tests/test_atsc.cc b/gnuradio-core/src/tests/test_atsc.cc
index f744d76e6..51642f81a 100644
--- a/gnuradio-core/src/tests/test_atsc.cc
+++ b/gnuradio-core/src/tests/test_atsc.cc
@@ -21,16 +21,24 @@
*/
#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;
diff --git a/gnuradio-core/src/tests/test_filter.cc b/gnuradio-core/src/tests/test_filter.cc
index 1e67b7180..90fe66c2f 100644
--- a/gnuradio-core/src/tests/test_filter.cc
+++ b/gnuradio-core/src/tests/test_filter.cc
@@ -22,14 +22,18 @@
#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 ());
diff --git a/gnuradio-core/src/tests/test_general.cc b/gnuradio-core/src/tests/test_general.cc
index bc89c0b6b..16ee9c3ad 100644
--- a/gnuradio-core/src/tests/test_general.cc
+++ b/gnuradio-core/src/tests/test_general.cc
@@ -22,14 +22,18 @@
#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 ());
diff --git a/gnuradio-core/src/tests/test_runtime.cc b/gnuradio-core/src/tests/test_runtime.cc
index 1efd9a0c0..c7983a23e 100644
--- a/gnuradio-core/src/tests/test_runtime.cc
+++ b/gnuradio-core/src/tests/test_runtime.cc
@@ -22,14 +22,18 @@
#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 ());
diff --git a/gruel/src/lib/test_gruel.cc b/gruel/src/lib/test_gruel.cc
index cb5f2d36b..f4b9fc4e2 100644
--- a/gruel/src/lib/test_gruel.cc
+++ b/gruel/src/lib/test_gruel.cc
@@ -22,14 +22,22 @@
#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);
+}
+