aboutsummaryrefslogtreecommitdiff
path: root/test/check_ppamltracer.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/check_ppamltracer.c')
-rw-r--r--test/check_ppamltracer.c58
1 files changed, 57 insertions, 1 deletions
diff --git a/test/check_ppamltracer.c b/test/check_ppamltracer.c
index 73a4631..e842789 100644
--- a/test/check_ppamltracer.c
+++ b/test/check_ppamltracer.c
@@ -22,7 +22,7 @@
# include <config.h>
#endif
-#define _POSIX_C_SOURCE 199309L
+#define _POSIX_C_SOURCE 200112L
#include <stdint.h>
#include <stdlib.h>
@@ -58,6 +58,49 @@
END_TEST
#endif
+#if (HAVE_FIXTURE_tmpdir && HAVE_UNISTD_H && HAVE_SETENV)
+# define HAVE_TEST_init_from_env
+ START_TEST(test_init_from_env)
+ {
+ // Figure out where to put the trace.
+ char trace_base[128];
+ strcpy(trace_base, tmpdir_name());
+ strcat(trace_base, "/trace");
+ // Tell ppamltracer where.
+ ck_assert(
+ setenv("PPAMLTRACER_TRACE_BASE", trace_base, 1) == 0);
+ // Create the trace.
+ ppaml_tracer_t tracer;
+ ck_assert(
+ ppaml_tracer_init_from_env(&tracer) == 0);
+ ck_assert(ppaml_tracer_done(&tracer) == 0);
+ // Make sure it's in the right place.
+ strcat(trace_base, ".otf");
+ ck_assert(access(trace_base, F_OK) == 0);
+ }
+ END_TEST
+
+# define HAVE_TEST_init_from_env_fails_on_empty
+ START_TEST(test_init_from_env_fails_on_empty)
+ {
+ ck_assert(setenv("PPAMLTRACER_TRACE_BASE", "", 1) == 0);
+ ppaml_tracer_t tracer;
+ ck_assert(ppaml_tracer_init_from_env(&tracer) == 5);
+ }
+ END_TEST
+#endif
+
+#if (HAVE_FIXTURE_tmpdir && HAVE_UNISTD_H && HAVE_UNSETENV)
+# define HAVE_TEST_init_from_env_fails_on_unset
+ START_TEST(test_init_from_env_fails_on_unset)
+ {
+ ck_assert(unsetenv("PPAMLTRACER_TRACE_BASE") == 0);
+ ppaml_tracer_t tracer;
+ ck_assert(ppaml_tracer_init_from_env(&tracer) == 5);
+ }
+ END_TEST
+#endif
+
#if (HAVE_FIXTURE_tmpdir && HAVE_FIXTURE_trace_valid)
# define HAVE_TEST_simple_creates_valid_trace
START_TEST(test_simple_creates_valid_trace)
@@ -198,6 +241,19 @@ Suite *ppamltracer_suite()
tcase_add_test(tc, test_init_creates_trace);
# endif
suite_add_tcase(s, tc);
+ // Test case: init from env
+ tc = tcase_create("init_from_env");
+ tmpdir_add_checked(tc);
+# ifdef HAVE_TEST_init_from_env
+ tcase_add_test(tc, test_init_from_env);
+# endif
+# ifdef HAVE_TEST_init_from_env_fails_on_unset
+ tcase_add_test(tc, test_init_from_env_fails_on_unset);
+# endif
+# ifdef HAVE_TEST_init_from_env_fails_on_empty
+ tcase_add_test(tc, test_init_from_env_fails_on_empty);
+# endif
+ suite_add_tcase(s, tc);
// Test case: valid
tc = tcase_create("valid");
tmpdir_add_checked(tc);