[gjs: 7/9] test: Split test utility function into file
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs: 7/9] test: Split test utility function into file
- Date: Sun, 2 Sep 2018 00:08:02 +0000 (UTC)
commit 7b420cf3f1fce7433931e2bb4017655cc4c1d93b
Author: Philip Chimento <philip chimento gmail com>
Date: Wed Aug 29 23:17:23 2018 -0400
test: Split test utility function into file
This utility function depends only on JSAPI so we'll split it into a
separate file that doesn't use any GjsContext API.
Makefile-test.am | 2 ++
test/gjs-test-call-args.cpp | 5 +++--
test/gjs-test-common.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++
test/gjs-test-common.h | 31 +++++++++++++++++++++++++++++++
test/gjs-test-utils.cpp | 23 ++---------------------
test/gjs-test-utils.h | 2 --
6 files changed, 83 insertions(+), 25 deletions(-)
---
diff --git a/Makefile-test.am b/Makefile-test.am
index 58901cbd..c251f1cc 100644
--- a/Makefile-test.am
+++ b/Makefile-test.am
@@ -74,6 +74,8 @@ gjs_tests_gtester_LDADD = \
gjs_tests_gtester_SOURCES = \
test/gjs-tests.cpp \
+ test/gjs-test-common.cpp \
+ test/gjs-test-common.h \
test/gjs-test-utils.cpp \
test/gjs-test-utils.h \
test/gjs-test-call-args.cpp \
diff --git a/test/gjs-test-call-args.cpp b/test/gjs-test-call-args.cpp
index a2a7f799..d62d86e6 100644
--- a/test/gjs-test-call-args.cpp
+++ b/test/gjs-test-call-args.cpp
@@ -5,6 +5,7 @@
#include "gjs/context.h"
#include "gjs/jsapi-util-args.h"
#include "gjs/jsapi-wrapper.h"
+#include "test/gjs-test-common.h"
#include "test/gjs-test-utils.h"
#define assert_match(str, pattern) \
@@ -271,7 +272,7 @@ run_code(GjsUnitTestFixture *fx,
JS::RootedValue ignored(fx->cx);
bool ok = JS::Evaluate(fx->cx, options, script, strlen(script), &ignored);
- g_assert_null(gjs_unit_test_exception_message(fx));
+ g_assert_null(gjs_test_get_exception_message(fx->cx));
g_assert_true(ok);
}
@@ -287,7 +288,7 @@ run_code_expect_exception(GjsUnitTestFixture *fx,
JS::RootedValue ignored(fx->cx);
bool ok = JS::Evaluate(fx->cx, options, script, strlen(script), &ignored);
g_assert_false(ok);
- GjsAutoChar message = gjs_unit_test_exception_message(fx);
+ GjsAutoChar message = gjs_test_get_exception_message(fx->cx);
g_assert_nonnull(message);
/* Cheap way to shove an expected exception message into the data argument */
diff --git a/test/gjs-test-common.cpp b/test/gjs-test-common.cpp
new file mode 100644
index 00000000..a4158e55
--- /dev/null
+++ b/test/gjs-test-common.cpp
@@ -0,0 +1,45 @@
+/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/*
+ * Copyright © 2018 Philip Chimento
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include <glib.h>
+
+#include "gjs/jsapi-wrapper.h"
+#include "test/gjs-test-common.h"
+
+char* gjs_test_get_exception_message(JSContext* cx) {
+ if (!JS_IsExceptionPending(cx))
+ return nullptr;
+
+ JS::RootedValue v_exc(cx);
+ g_assert_true(JS_GetPendingException(cx, &v_exc));
+ g_assert_true(v_exc.isObject());
+
+ JS::RootedObject exc(cx, &v_exc.toObject());
+ JSErrorReport* report = JS_ErrorFromException(cx, exc);
+ g_assert_nonnull(report);
+
+ char* retval = g_strdup(report->message().c_str());
+ g_assert_nonnull(retval);
+ JS_ClearPendingException(cx);
+ return retval;
+}
diff --git a/test/gjs-test-common.h b/test/gjs-test-common.h
new file mode 100644
index 00000000..ad0c493b
--- /dev/null
+++ b/test/gjs-test-common.h
@@ -0,0 +1,31 @@
+/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/*
+ * Copyright © 2018 Philip Chimento
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef TEST_GJS_TEST_COMMON_H_
+#define TEST_GJS_TEST_COMMON_H_
+
+#include "gjs/jsapi-wrapper.h"
+
+char* gjs_test_get_exception_message(JSContext* cx);
+
+#endif // TEST_GJS_TEST_COMMON_H_
diff --git a/test/gjs-test-utils.cpp b/test/gjs-test-utils.cpp
index 127d2baf..d60929d4 100644
--- a/test/gjs-test-utils.cpp
+++ b/test/gjs-test-utils.cpp
@@ -35,6 +35,7 @@
#include "gjs/jsapi-util.h"
#include "gjs/jsapi-wrapper.h"
#include "gjs-test-utils.h"
+#include "test/gjs-test-common.h"
void
gjs_unit_test_fixture_setup(GjsUnitTestFixture *fx,
@@ -52,7 +53,7 @@ gjs_unit_test_fixture_setup(GjsUnitTestFixture *fx,
void
gjs_unit_test_destroy_context(GjsUnitTestFixture *fx)
{
- GjsAutoChar message = gjs_unit_test_exception_message(fx);
+ GjsAutoChar message = gjs_test_get_exception_message(fx->cx);
if (message)
g_printerr("**\n%s\n", message.get());
@@ -68,23 +69,3 @@ gjs_unit_test_fixture_teardown(GjsUnitTestFixture *fx,
{
gjs_unit_test_destroy_context(fx);
}
-
-char *
-gjs_unit_test_exception_message(GjsUnitTestFixture *fx)
-{
- if (!JS_IsExceptionPending(fx->cx))
- return nullptr;
-
- JS::RootedValue v_exc(fx->cx);
- g_assert_true(JS_GetPendingException(fx->cx, &v_exc));
- g_assert_true(v_exc.isObject());
-
- JS::RootedObject exc(fx->cx, &v_exc.toObject());
- JSErrorReport *report = JS_ErrorFromException(fx->cx, exc);
- g_assert_nonnull(report);
-
- char *retval = g_strdup(report->message().c_str());
- g_assert_nonnull(retval);
- JS_ClearPendingException(fx->cx);
- return retval;
-}
diff --git a/test/gjs-test-utils.h b/test/gjs-test-utils.h
index c9ba764e..977f4276 100644
--- a/test/gjs-test-utils.h
+++ b/test/gjs-test-utils.h
@@ -44,8 +44,6 @@ void gjs_unit_test_destroy_context(GjsUnitTestFixture *fx);
void gjs_unit_test_fixture_teardown(GjsUnitTestFixture *fx,
gconstpointer unused);
-char *gjs_unit_test_exception_message(GjsUnitTestFixture *fx);
-
void gjs_test_add_tests_for_coverage ();
void gjs_test_add_tests_for_parse_call_args(void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]