summaryrefslogtreecommitdiff
path: root/libqpdf/QTC.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libqpdf/QTC.cc')
-rw-r--r--libqpdf/QTC.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/libqpdf/QTC.cc b/libqpdf/QTC.cc
new file mode 100644
index 0000000..d0f3e11
--- /dev/null
+++ b/libqpdf/QTC.cc
@@ -0,0 +1,45 @@
+#include <qpdf/QTC.hh>
+
+#include <set>
+#include <stdio.h>
+#include <qpdf/QUtil.hh>
+
+static bool tc_active(char const* const scope)
+{
+ std::string value;
+ return (QUtil::get_env("TC_SCOPE", &value) && (value == scope));
+}
+
+void QTC::TC(char const* const scope, char const* const ccase, int n)
+{
+ static std::set<std::pair<std::string, int> > cache;
+
+ if (! tc_active(scope))
+ {
+ return;
+ }
+
+ std::string filename;
+#ifdef _WIN32
+# define TC_ENV "TC_WIN_FILENAME"
+#else
+# define TC_ENV "TC_FILENAME"
+#endif
+ if (! QUtil::get_env(TC_ENV, &filename))
+ {
+ return;
+ }
+#undef TC_ENV
+
+ if (cache.count(std::make_pair(ccase, n)))
+ {
+ return;
+ }
+ cache.insert(std::make_pair(ccase, n));
+
+ FILE* tc =
+ QUtil::fopen_wrapper("open test coverage file (" + filename + ")",
+ fopen(filename.c_str(), "ab"));
+ fprintf(tc, "%s %d\n", ccase, n);
+ fclose(tc);
+}