[Forensics-changes] [yara] 289/415: More regexp test cases

Hilko Bengen bengen at moszumanska.debian.org
Thu Apr 3 05:43:16 UTC 2014


This is an automated email from the git hooks/post-receive script.

bengen pushed a commit to branch debian
in repository yara.

commit 9b66d5fe215c762c0af9b8796e1a4e0692c74024
Author: Victor M. Alvarez <plusvic at gmail.com>
Date:   Wed Dec 4 16:54:57 2013 +0100

    More regexp test cases
---
 yara-python/tests.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/yara-python/tests.py b/yara-python/tests.py
index ef1f142..725b97c 100644
--- a/yara-python/tests.py
+++ b/yara-python/tests.py
@@ -59,9 +59,18 @@ RE_TESTS = [
 
   # RE, string, expected result, expected matching
 
+  (')', '', SYNTAX_ERROR),
   ('abc', 'abc', SUCCEED, 'abc'),
+  ('abc', 'xbc', FAIL),
+  ('abc', 'axc', FAIL),
+  ('abc', 'abx', FAIL),
   ('abc', 'xabcx', SUCCEED, 'abc'),
+  ('abc', 'ababc', SUCCEED, 'abc'),
   ('a.c', 'abc', SUCCEED, 'abc'),
+  ('a.b', 'a\nb', FAIL),
+  ('a.*b', 'acc\nccb', FAIL),
+  ('a.{4,5}b', 'acc\nccb', FAIL),
+  ('a.b', 'a\rb', SUCCEED, 'a\rb'),
   ('ab*c', 'abc', SUCCEED, 'abc'),
   ('ab*c', 'ac', SUCCEED, 'ac'),
   ('ab*bc', 'abc', SUCCEED, 'abc'),
@@ -72,6 +81,9 @@ RE_TESTS = [
   ('ab+c', 'ac', FAIL),
   ('ab+', 'abbbb', SUCCEED, 'abbbb'),
   ('ab+?', 'abbbb', SUCCEED, 'ab'),
+  ('ab+bc', 'abc', FAIL),
+  ('ab+bc', 'abq', FAIL),
+  ('a+b+c', 'aabbabc', SUCCEED, 'abc'),
   ('ab?bc', 'abbbbc', FAIL),
   ('ab?c', 'abc', SUCCEED, 'abc'),
   ('ab*?', 'abbb', SUCCEED, 'a'),
@@ -81,6 +93,9 @@ RE_TESTS = [
   ('a(b|x)c', 'axc', SUCCEED, 'axc'),
   ('a(b|.)c', 'axc', SUCCEED, 'axc'),
   ('a(b|x|y)c', 'ayc', SUCCEED, 'ayc'),
+  ('(a+|b)*', 'ab', SUCCEED, 'ab'),
+  ('a|b|c|d|e', 'e', SUCCEED, 'e'),
+  ('(a|b|c|d|e)f', 'ef', SUCCEED, 'ef'),
   ('ab{1}c', 'abc', SUCCEED, 'abc'),
   ('ab{1,2}c', 'abbc', SUCCEED, 'abbc'),
   ('ab{1,}c', 'abbbc', SUCCEED, 'abbbc'),
@@ -112,6 +127,7 @@ RE_TESTS = [
   ('(abc', '', SYNTAX_ERROR),
   ('abc)', '', SYNTAX_ERROR),
   ('a[]b', '', SYNTAX_ERROR),
+  ('a\\', '', SYNTAX_ERROR),
   ('a[\\-b]', 'a-', SUCCEED, 'a-'),
   ('a[\\-b]', 'ab', SUCCEED, 'ab'),
   ('a[\\', '', SYNTAX_ERROR),
@@ -124,6 +140,7 @@ RE_TESTS = [
   ('a[^-b]c', 'a-c', FAIL),
   ('a[^]b]c', 'a]c', FAIL),
   ('a[^]b]c', 'adc', SUCCEED, 'adc'),
+  ('[^ab]*', 'cde', SUCCEED, 'cde'),
   (')(', '', SYNTAX_ERROR),
   (r'\n\r\t\f\a', '\n\r\t\f\a', SUCCEED, '\n\r\t\f\a'),
   (r'[\n][\r][\t][\f][\a]', '\n\r\t\f\a', SUCCEED, '\n\r\t\f\a'),
@@ -139,6 +156,38 @@ RE_TESTS = [
   ('\D+', '1234abc5678', SUCCEED, 'abc'),
   ('[\D]+', '1234abc5678', SUCCEED, 'abc'),
   ('[\da-fA-F]+', '123abc', SUCCEED, '123abc'),
+  ('^(ab|cd)e', 'abcde', FAIL),
+  ('(abc|)ef', 'abcdef', SUCCEED, 'ef'),
+  ('(abc|)ef', 'abcef', SUCCEED, 'abcef'),
+
+  # This is allowed in most regexp engines but in order to keep the
+  # grammar free of shift/reduce conflicts I've decided not supporting
+  # it. Users can use the (abc|) form instead.
+
+  ('(|abc)ef', '', SYNTAX_ERROR),
+
+  ('((a)(b)c)(d)', 'abcd', SUCCEED, 'abcd'),
+  ('(a|b)c*d', 'abcd', SUCCEED, 'bcd'),
+  ('(ab|ab*)bc', 'abc', SUCCEED, 'abc'),
+  ('a([bc]*)c*', 'abc', SUCCEED, 'abc'),
+  ('a([bc]*)c*', 'ac', SUCCEED, 'ac'),
+  ('a([bc]*)c*', 'a', SUCCEED, 'a'),
+  ('a([bc]*)(c*d)', 'abcd', SUCCEED, 'abcd'),
+  ('a([bc]+)(c*d)', 'abcd', SUCCEED, 'abcd'),
+  ('a([bc]*)(c+d)', 'abcd', SUCCEED, 'abcd'),
+  ('a[bcd]*dcdcde', 'adcdcde', SUCCEED, 'adcdcde'),
+  ('a[bcd]+dcdcde', 'adcdcde', FAIL),
+  (r'\((.*), (.*)\)', '(a, b)', SUCCEED, '(a, b)'),
+  ('abc|123$', 'abcx', SUCCEED, 'abc'),
+  ('abc|123$', '123x', FAIL),
+  ('abc|^123', '123', SUCCEED, '123'),
+  ('abc|^123', 'x123', FAIL),
+  ('^a(bc+|b[eh])g|.h$', 'abhg', SUCCEED, 'abhg'),
+  ('(bc+d$|ef*g.|h?i(j|k))', 'effgz', SUCCEED, 'effgz'),
+  ('(bc+d$|ef*g.|h?i(j|k))', 'ij', SUCCEED, 'ij'),
+  ('(bc+d$|ef*g.|h?i(j|k))', 'effg', FAIL),
+  ('(bc+d$|ef*g.|h?i(j|k))', 'bcdd', FAIL),
+  ('(bc+d$|ef*g.|h?i(j|k))', 'reffgz', SUCCEED, 'effgz'),
 
 ]
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/forensics/yara.git



More information about the forensics-changes mailing list