]> source.dussan.org Git - rspamd.git/commitdiff
Add lua test framework.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 27 Feb 2015 15:33:58 +0000 (15:33 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 27 Feb 2015 15:33:58 +0000 (15:33 +0000)
test/CMakeLists.txt
test/lua/rsa.lua [new file with mode: 0644]
test/lua/test_rsa.lua [deleted file]
test/rspamd_lua_test.c [new file with mode: 0644]
test/rspamd_test_suite.c
test/tests.h

index f5743bd2f4d6a6a9e3b037fc5c5d29497fa07b88..9932fb87dd728cc90851efb1fc823f5171a11d69 100644 (file)
@@ -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/rsa.lua b/test/lua/rsa.lua
new file mode 100644 (file)
index 0000000..83a6a9e
--- /dev/null
@@ -0,0 +1,39 @@
+-- Test rsa signing
+
+local pubkey = 'testkey.pub'
+local privkey = 'testkey'
+local data = 'test.data'
+local signature = 'test.sig'
+
+-- Signing test
+local rsa_key = rsa_privkey.load(string.format('%s/%s', test_dir, privkey))
+
+if not rsa_key then
+       return -1
+end
+
+local rsa_sig = rsa.sign_file(rsa_key, string.format('%s/%s', test_dir, data))
+
+if not rsa_sig then
+       return -1
+end
+
+rsa_sig:save(string.format('%s/%s', test_dir, signature), true)
+
+-- Verifying test
+rsa_key = rsa_pubkey.load(string.format('%s/%s', test_dir, pubkey))
+
+if not rsa_key then
+       return -1
+end
+
+rsa_sig = rsa_signature.load(string.format('%s/%s', test_dir, signature))
+
+if not rsa_sig then
+       return -1
+end
+
+if not rsa.verify_file(rsa_key, rsa_sig, string.format('%s/%s', test_dir, data)) then
+       return -1
+end
+
diff --git a/test/lua/test_rsa.lua b/test/lua/test_rsa.lua
deleted file mode 100644 (file)
index 83a6a9e..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
--- Test rsa signing
-
-local pubkey = 'testkey.pub'
-local privkey = 'testkey'
-local data = 'test.data'
-local signature = 'test.sig'
-
--- Signing test
-local rsa_key = rsa_privkey.load(string.format('%s/%s', test_dir, privkey))
-
-if not rsa_key then
-       return -1
-end
-
-local rsa_sig = rsa.sign_file(rsa_key, string.format('%s/%s', test_dir, data))
-
-if not rsa_sig then
-       return -1
-end
-
-rsa_sig:save(string.format('%s/%s', test_dir, signature), true)
-
--- Verifying test
-rsa_key = rsa_pubkey.load(string.format('%s/%s', test_dir, pubkey))
-
-if not rsa_key then
-       return -1
-end
-
-rsa_sig = rsa_signature.load(string.format('%s/%s', test_dir, signature))
-
-if not rsa_sig then
-       return -1
-end
-
-if not rsa.verify_file(rsa_key, rsa_sig, string.format('%s/%s', test_dir, data)) then
-       return -1
-end
-
diff --git a/test/rspamd_lua_test.c b/test/rspamd_lua_test.c
new file mode 100644 (file)
index 0000000..46303b3
--- /dev/null
@@ -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);
+       }
+}
index 1be17611b608c34d3ebedcba30fc5209e6483c9b..9aece9b890f42da28ea3dd5a42b99f3a7a2dfb78 100644 (file)
@@ -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 ();
 
index 8f4d8b80f011f0d746b3f8fec0db9a880bc3d64f..1d14bde4bb689e8462e2af9e70e9610886d56bc7 100644 (file)
@@ -41,4 +41,6 @@ void rspamd_shingles_test_func (void);
 
 void rspamd_http_test_func (void);
 
+void rspamd_lua_test_func (void);
+
 #endif