aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-02-27 15:33:58 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-02-27 15:33:58 +0000
commit2f20e4f7fe5cf9b40dc8781675672e69437166e3 (patch)
tree33ac38199af643b735ff5c513fe3c0ffa1662c7d /test
parent755c318fc6f67687042a03719adf13e86399337b (diff)
downloadrspamd-2f20e4f7fe5cf9b40dc8781675672e69437166e3.tar.gz
rspamd-2f20e4f7fe5cf9b40dc8781675672e69437166e3.zip
Add lua test framework.
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt12
-rw-r--r--test/lua/rsa.lua (renamed from test/lua/test_rsa.lua)0
-rw-r--r--test/rspamd_lua_test.c75
-rw-r--r--test/rspamd_test_suite.c1
-rw-r--r--test/tests.h2
5 files changed, 89 insertions, 1 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index f5743bd2f..9932fb87d 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -11,6 +11,7 @@ SET(TESTSRC rspamd_expression_test.c
rspamd_shingles_test.c
rspamd_upstream_test.c
rspamd_http_test.c
+ rspamd_lua_test.c
rspamd_test_suite.c)
ADD_EXECUTABLE(rspamd-test EXCLUDE_FROM_ALL ${TESTSRC})
@@ -18,4 +19,13 @@ SET_TARGET_PROPERTIES(rspamd-test PROPERTIES LINKER_LANGUAGE C)
SET_TARGET_PROPERTIES(rspamd-test PROPERTIES COMPILE_FLAGS "-DRSPAMD_TEST")
TARGET_LINK_LIBRARIES(rspamd-test rspamd-server)
-TARGET_LINK_LIBRARIES(rspamd-test ${RSPAMD_REQUIRED_LIBRARIES}) \ No newline at end of file
+TARGET_LINK_LIBRARIES(rspamd-test ${RSPAMD_REQUIRED_LIBRARIES})
+TARGET_LINK_LIBRARIES(rspamd-test stemmer)
+
+IF(NOT ${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
+ FILE(COPY "${CMAKE_CURRENT_SOURCE_DIR}/busted.lua"
+ "${CMAKE_CURRENT_SOURCE_DIR}/busted"
+ "${CMAKE_CURRENT_SOURCE_DIR}/lua"
+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+
+ENDIF() \ No newline at end of file
diff --git a/test/lua/test_rsa.lua b/test/lua/rsa.lua
index 83a6a9e45..83a6a9e45 100644
--- a/test/lua/test_rsa.lua
+++ b/test/lua/rsa.lua
diff --git a/test/rspamd_lua_test.c b/test/rspamd_lua_test.c
new file mode 100644
index 000000000..46303b356
--- /dev/null
+++ b/test/rspamd_lua_test.c
@@ -0,0 +1,75 @@
+/* Copyright (c) 2015, Vsevolod Stakhov
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "main.h"
+#include "util.h"
+#include "lua/lua_common.h"
+
+static const char *lua_src = "./lua";
+
+void
+rspamd_lua_test_func (void)
+{
+ lua_State *L = rspamd_lua_init (NULL);
+ gchar *lua_file;
+ gchar rp[PATH_MAX];
+ glob_t globbuf;
+ gchar *pattern;
+ guint i, len;
+
+ msg_info ("Starting lua tests");
+
+ if (realpath (lua_src, rp) == NULL) {
+ msg_err ("cannod find path %s: %s", lua_src, strerror (errno));
+ g_assert (0);
+ }
+
+ globbuf.gl_offs = 0;
+ len = strlen (rp) + sizeof ("*.lua") + 1;
+ pattern = g_malloc (len);
+ rspamd_snprintf (pattern, len, "%s/%s", rp, "*.lua");
+
+ if (glob (pattern, GLOB_DOOFFS, NULL, &globbuf) == 0) {
+ for (i = 0; i < globbuf.gl_pathc; i++) {
+ lua_file = globbuf.gl_pathv[i];
+
+ if (luaL_loadfile (L, lua_file) != 0) {
+ msg_err ("load test from %s failed", lua_file);
+ g_assert (0);
+ }
+ /* Now do it */
+ if (lua_pcall (L, 0, LUA_MULTRET, 0) != 0) {
+ msg_err ("run test from %s failed: %s", lua_file,
+ lua_tostring (L, -1));
+ g_assert (0);
+ }
+ }
+ globfree (&globbuf);
+ g_free (pattern);
+ }
+ else {
+ msg_err ("glob for %s failed: %s", pattern, strerror (errno));
+ g_assert (0);
+ }
+}
diff --git a/test/rspamd_test_suite.c b/test/rspamd_test_suite.c
index 1be17611b..9aece9b89 100644
--- a/test/rspamd_test_suite.c
+++ b/test/rspamd_test_suite.c
@@ -56,6 +56,7 @@ main (int argc, char **argv)
g_test_add_func ("/rspamd/upstream", rspamd_upstream_test_func);
g_test_add_func ("/rspamd/shingles", rspamd_shingles_test_func);
g_test_add_func ("/rspamd/http", rspamd_http_test_func);
+ g_test_add_func ("/rspamd/lua", rspamd_lua_test_func);
g_test_run ();
diff --git a/test/tests.h b/test/tests.h
index 8f4d8b80f..1d14bde4b 100644
--- a/test/tests.h
+++ b/test/tests.h
@@ -41,4 +41,6 @@ void rspamd_shingles_test_func (void);
void rspamd_http_test_func (void);
+void rspamd_lua_test_func (void);
+
#endif