From 692d015627ecf03fbc23cfdb4afcf398b9a09a51 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Thu, 12 Jan 2012 17:26:28 +0100 Subject: scripts for testing and syntax unit test --- tests/CrypterPluginTester.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 tests/CrypterPluginTester.py (limited to 'tests/CrypterPluginTester.py') diff --git a/tests/CrypterPluginTester.py b/tests/CrypterPluginTester.py new file mode 100644 index 000000000..124cb4d0a --- /dev/null +++ b/tests/CrypterPluginTester.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- + +from unittest import TestCase + +class DecryptPluginTester(TestCase): + pass \ No newline at end of file -- cgit v1.2.3 From c7ad1cc5b4a5d190a060e3ddd9274c3065da6708 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Fri, 13 Jan 2012 23:24:21 +0100 Subject: plugin unit test, closed #499, #500 --- tests/CrypterPluginTester.py | 71 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 3 deletions(-) (limited to 'tests/CrypterPluginTester.py') diff --git a/tests/CrypterPluginTester.py b/tests/CrypterPluginTester.py index 124cb4d0a..27013ede7 100644 --- a/tests/CrypterPluginTester.py +++ b/tests/CrypterPluginTester.py @@ -1,6 +1,71 @@ # -*- coding: utf-8 -*- -from unittest import TestCase +from os.path import dirname, join +from nose.tools import nottest -class DecryptPluginTester(TestCase): - pass \ No newline at end of file +from logging import log, DEBUG + +from helper.Stubs import Core +from helper.PluginTester import PluginTester + +from module.plugins.Base import Fail +from module.utils import accumulate, to_int + +class CrypterPluginTester(PluginTester): + + @nottest + def test_plugin(self, name, url, flag): + + log(DEBUG, "%s: %s", name, url) + + plugin = self.core.pluginManager.getPluginClass(name) + p = plugin(self.core, None, "") + self.thread.plugin = p + + try: + result = p._decrypt([url]) + + if to_int(flag): + assert to_int(flag) == len(result) + + except Exception, e: + if isinstance(e, Fail) and flag == "fail": + pass + else: + raise + + +# setup methods + +c = Core() + +f = open(join(dirname(__file__), "crypterlinks.txt")) +links = [x.strip() for x in f.readlines()] +urls = [] +flags = {} + +for l in links: + if not l or l.startswith("#"): continue + if l.startswith("http"): + if "||" in l: + l, flag = l.split("||") + flags[l] = flag + + urls.append(l) + +h, crypter = c.pluginManager.parseUrls(urls) +plugins = accumulate(crypter) +for plugin, urls in plugins.iteritems(): + + for i, url in enumerate(urls): + + + def meta(plugin, url, flag, sig): + def _test(self): + self.test_plugin(plugin, url, flag) + + _test.func_name = sig + return _test + + sig = "test_%s_LINK%d" % (plugin, i) + setattr(CrypterPluginTester, sig, meta(plugin, url, flags.get(url, None), sig)) \ No newline at end of file -- cgit v1.2.3 From 26227cfe53f8fd4bc1631d8e1b35031f589682dc Mon Sep 17 00:00:00 2001 From: RaNaN Date: Sun, 15 Jan 2012 15:55:19 +0100 Subject: backend + api test case, nicer format for plugin tester --- tests/CrypterPluginTester.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'tests/CrypterPluginTester.py') diff --git a/tests/CrypterPluginTester.py b/tests/CrypterPluginTester.py index 27013ede7..ceb58adc5 100644 --- a/tests/CrypterPluginTester.py +++ b/tests/CrypterPluginTester.py @@ -12,10 +12,10 @@ from module.plugins.Base import Fail from module.utils import accumulate, to_int class CrypterPluginTester(PluginTester): - @nottest def test_plugin(self, name, url, flag): + print "%s: %s" % (name, url) log(DEBUG, "%s: %s", name, url) plugin = self.core.pluginManager.getPluginClass(name) @@ -57,9 +57,15 @@ h, crypter = c.pluginManager.parseUrls(urls) plugins = accumulate(crypter) for plugin, urls in plugins.iteritems(): - for i, url in enumerate(urls): + def meta_class(plugin): + class _testerClass(CrypterPluginTester): + pass + _testerClass.__name__ = plugin + return _testerClass + _testerClass = meta_class(plugin) + for i, url in enumerate(urls): def meta(plugin, url, flag, sig): def _test(self): self.test_plugin(plugin, url, flag) @@ -67,5 +73,9 @@ for plugin, urls in plugins.iteritems(): _test.func_name = sig return _test - sig = "test_%s_LINK%d" % (plugin, i) - setattr(CrypterPluginTester, sig, meta(plugin, url, flags.get(url, None), sig)) \ No newline at end of file + sig = "test_LINK%d" % i + setattr(_testerClass, sig, meta(plugin, url, flags.get(url, None), sig)) + print url + + locals()[plugin] = _testerClass + del _testerClass \ No newline at end of file -- cgit v1.2.3 From 8b0fafe9dee3bdf60b8cf8639b14c6a06366e029 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Fri, 20 Jan 2012 15:26:24 +0100 Subject: plugintester fix --- tests/CrypterPluginTester.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'tests/CrypterPluginTester.py') diff --git a/tests/CrypterPluginTester.py b/tests/CrypterPluginTester.py index ceb58adc5..67e5ddebc 100644 --- a/tests/CrypterPluginTester.py +++ b/tests/CrypterPluginTester.py @@ -15,8 +15,8 @@ class CrypterPluginTester(PluginTester): @nottest def test_plugin(self, name, url, flag): - print "%s: %s" % (name, url) - log(DEBUG, "%s: %s", name, url) + print "%s: %s" % (name, url.encode("utf8")) + log(DEBUG, "%s: %s", name, url.encode("utf8")) plugin = self.core.pluginManager.getPluginClass(name) p = plugin(self.core, None, "") @@ -78,4 +78,4 @@ for plugin, urls in plugins.iteritems(): print url locals()[plugin] = _testerClass - del _testerClass \ No newline at end of file + del _testerClass -- cgit v1.2.3