def test_multiple_nots_with_ors(self):
     patterns = TagPatterns('a OR b NOT c OR d NOT e OR f')
     assert_true(patterns.match(['a']))
     assert_true(patterns.match(['B']))
     assert_false(patterns.match(['c']))
     assert_true(all(not patterns.match(['a', 'b', c]) for c in 'cdef'))
     assert_true(patterns.match(['a', 'x']))
Beispiel #2
0
 def test_str(self):
     for pattern in ['a', 'NOT a', 'a NOT b', 'a AND b', 'a OR b', 'a*',
                     'a OR b NOT c OR d AND e OR ??']:
         assert_equal(str(TagPatterns(pattern)),
                      '[%s]' % pattern)
         assert_equal(str(TagPatterns(pattern.replace(' ', ''))),
                      '[%s]' % pattern)
         assert_equal(str(TagPatterns([pattern, 'x', pattern, 'y'])),
                      '[%s, x, y]' % pattern)
Beispiel #3
0
 def test_or(self):
     patterns = TagPatterns(['xORy', '???ORz'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['a', 'b', '12', '1234']))
     assert_true(patterns.match(['x']))
     assert_true(patterns.match(['Y']))
     assert_true(patterns.match(['123']))
     assert_true(patterns.match(['Z']))
     assert_true(patterns.match(['x', 'y', 'z']))
     assert_true(patterns.match(['123', 'a', 'b', 'c', 'd']))
     assert_true(patterns.match(['a', 'b', 'c', 'd', 'Z']))
Beispiel #4
0
 def test_multiple_nots(self):
     patterns = TagPatterns(['xNOTyNOTz', '1 NOT 2 NOT 3 NOT 4'])
     assert_true(patterns.match(['x']))
     assert_false(patterns.match(['x', 'y']))
     assert_false(patterns.match(['x', 'z']))
     assert_false(patterns.match(['x', 'y', 'z']))
     assert_false(patterns.match(['xxx']))
     assert_true(patterns.match(['1']))
     assert_false(patterns.match(['1', '3', '4']))
     assert_false(patterns.match(['1', '2', '3']))
     assert_false(patterns.match(['1', '2', '3', '4']))
 def test_or(self):
     patterns = TagPatterns(['xORy', '???ORz'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['a', 'b', '12', '1234']))
     assert_true(patterns.match(['x']))
     assert_true(patterns.match(['Y']))
     assert_true(patterns.match(['123']))
     assert_true(patterns.match(['Z']))
     assert_true(patterns.match(['x', 'y', 'z']))
     assert_true(patterns.match(['123', 'a', 'b', 'c', 'd']))
     assert_true(patterns.match(['a', 'b', 'c', 'd', 'Z']))
Beispiel #6
0
 def test_multiple_ors(self):
     patterns = TagPatterns(['xORyORz'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['xxx']))
     assert_true(all(patterns.match([c]) for c in 'XYZ'))
     assert_true(all(patterns.match(['a', 'b', c, 'd']) for c in 'xyz'))
     assert_true(patterns.match(['x', 'y']))
     assert_true(patterns.match(['x', 'Y', 'z']))
Beispiel #7
0
 def test_starts_with_not(self):
     patterns = TagPatterns('NOTe')
     assert_true(patterns.match('d'))
     assert_false(patterns.match('e'))
     patterns = TagPatterns('NOT e OR f')
     assert_true(patterns.match('d'))
     assert_false(patterns.match('e'))
     assert_false(patterns.match('f'))
Beispiel #8
0
 def test_multiple_nots_with_ands(self):
     patterns = TagPatterns('a AND b NOT c AND d NOT e AND f')
     assert_true(patterns.match(['a', 'b']))
     assert_true(patterns.match(['a', 'b', 'c']))
     assert_true(patterns.match(['a', 'b', 'c', 'e']))
     assert_false(patterns.match(['a', 'b', 'c', 'd']))
     assert_false(patterns.match(['a', 'b', 'e', 'f']))
     assert_false(patterns.match(['a', 'b', 'c', 'd', 'e', 'f']))
     assert_false(patterns.match(['a', 'b', 'c', 'd', 'e']))
Beispiel #9
0
 def test_not(self):
     patterns = TagPatterns(['xNOTy', '???NOT?'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x', 'y']))
     assert_false(patterns.match(['123', 'y', 'z']))
     assert_true(patterns.match(['x']))
     assert_true(patterns.match(['123', 'xx']))
Beispiel #10
0
 def test_multiple_ands(self):
     patterns = TagPatterns(['xANDyANDz'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x']))
     assert_false(patterns.match(['x', 'y']))
     assert_true(patterns.match(['x', 'Y', 'z']))
     assert_true(patterns.match(['a', 'y', 'z', 'b', 'X']))
 def test_multiple_nots(self):
     patterns = TagPatterns(['xNOTyNOTz', '1 NOT 2 NOT 3 NOT 4'])
     assert_true(patterns.match(['x']))
     assert_false(patterns.match(['x', 'y']))
     assert_false(patterns.match(['x', 'z']))
     assert_false(patterns.match(['x', 'y', 'z']))
     assert_false(patterns.match(['xxx']))
     assert_true(patterns.match(['1']))
     assert_false(patterns.match(['1', '3', '4']))
     assert_false(patterns.match(['1', '2', '3']))
     assert_false(patterns.match(['1', '2', '3', '4']))
 def test_multiple_ors(self):
     patterns = TagPatterns(['xORyORz'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['xxx']))
     assert_true(all(patterns.match([c]) for c in 'XYZ'))
     assert_true(all(patterns.match(['a', 'b', c, 'd']) for c in 'xyz'))
     assert_true(patterns.match(['x', 'y']))
     assert_true(patterns.match(['x', 'Y', 'z']))
Beispiel #13
0
 def _add_combined_statistics(self, test):
     for pattern, name in self._combine:
         name = name or pattern
         if name not in self.stats:
             self.stats[name] = TagStat(name,
                                        self._get_doc(name),
                                        self._get_links(name),
                                        combined=pattern)
         if TagPatterns(pattern).match(test.tags):
             self.stats[name].add_test(test)
 def test_multiple_nots_with_ands(self):
     patterns = TagPatterns('a AND b NOT c AND d NOT e AND f')
     assert_true(patterns.match(['a', 'b']))
     assert_true(patterns.match(['a', 'b', 'c']))
     assert_true(patterns.match(['a', 'b', 'c', 'e']))
     assert_false(patterns.match(['a', 'b', 'c', 'd']))
     assert_false(patterns.match(['a', 'b', 'e', 'f']))
     assert_false(patterns.match(['a', 'b', 'c', 'd', 'e', 'f']))
     assert_false(patterns.match(['a', 'b', 'c', 'd', 'e']))
Beispiel #15
0
 def test_multiple_nots_with_ors(self):
     patterns = TagPatterns('a OR b NOT c OR d NOT e OR f')
     assert_true(patterns.match(['a']))
     assert_true(patterns.match(['B']))
     assert_false(patterns.match(['c']))
     assert_true(all(not patterns.match(['a', 'b', c]) for c in 'cdef'))
     assert_true(patterns.match(['a', 'x']))
 def test_multiple_ands(self):
     patterns = TagPatterns(['xANDyANDz'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x']))
     assert_false(patterns.match(['x', 'y']))
     assert_true(patterns.match(['x', 'Y', 'z']))
     assert_true(patterns.match(['a', 'y', 'z', 'b', 'X']))
 def test_not(self):
     patterns = TagPatterns(['xNOTy', '???NOT?'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x', 'y']))
     assert_false(patterns.match(['123', 'y', 'z']))
     assert_true(patterns.match(['x']))
     assert_true(patterns.match(['123', 'xx']))
 def test_starts_with_not(self):
     patterns = TagPatterns('NOTe')
     assert_true(patterns.match('d'))
     assert_false(patterns.match('e'))
     patterns = TagPatterns('NOT e OR f')
     assert_true(patterns.match('d'))
     assert_false(patterns.match('e'))
     assert_false(patterns.match('f'))
Beispiel #19
0
 def _should_skip_on_failure(self, test, skip_on_failure_tags,
                             critical_tags):
     # TODO: test if this can be used with not critical TagPattern
     critical_pattern = TagPatterns(critical_tags)
     if critical_pattern and critical_pattern.match(test.tags):
         return False
     skip_on_fail_pattern = TagPatterns(skip_on_failure_tags)
     return skip_on_fail_pattern and skip_on_fail_pattern.match(test.tags)
Beispiel #20
0
 def test_seq2str(self):
     patterns = TagPatterns([u'is\xe4', u'\xe4iti'])
     assert_equal(seq2str(patterns), u"'is\xe4' and '\xe4iti'")
Beispiel #21
0
 def test_unicode(self):
     pattern = u'\xe4 OR \xe5 NOT \xe6 AND \u2603 OR ??'
     expected = '[%s]' % pattern
     assert_equal(unicode(TagPatterns(pattern)), expected)
     assert_equal(unicode(TagPatterns(pattern.replace(' ', ''))), expected)
 def test_and(self):
     patterns = TagPatterns(['xANDy', '???ANDz'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x']))
     assert_true(patterns.match(['x', 'y', 'z']))
     assert_true(patterns.match(['123', 'y', 'z']))
Beispiel #23
0
 def test_not_and_or(self):
     patterns = TagPatterns(
         ['xNOTyORz', 'aORbNOTc', '1 OR 2? OR 3?? NOT 4* OR 5* OR 6*'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x', 'y', 'z']))
     assert_false(patterns.match(['x', 'y']))
     assert_false(patterns.match(['Z', 'x']))
     assert_true(patterns.match(['x']))
     assert_true(patterns.match(['xxx', 'X']))
     assert_true(patterns.match(['a', 'b']))
     assert_false(patterns.match(['a', 'b', 'c']))
     assert_true(patterns.match(['a']))
     assert_true(patterns.match(['B', 'XXX']))
     assert_false(patterns.match(['b', 'c']))
     assert_false(patterns.match(['c']))
     assert_true(patterns.match(['x', 'y', '321']))
     assert_false(patterns.match(['x', 'y', '32']))
     assert_false(patterns.match(['1', '2', '3', '4']))
     assert_true(patterns.match(['1', '22', '333']))
Beispiel #24
0
 def test_not_and_and(self):
     patterns = TagPatterns([
         'xNOTyANDz', 'aANDbNOTc', '1 AND 2? AND 3?? NOT 4* AND 5* AND 6*'
     ])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x', 'y', 'z']))
     assert_true(patterns.match(['x', 'y']))
     assert_true(patterns.match(['x']))
     assert_false(patterns.match(['a', 'b', 'c']))
     assert_false(patterns.match(['a']))
     assert_false(patterns.match(['b']))
     assert_true(patterns.match(['a', 'b']))
     assert_true(patterns.match(['a', 'b', 'xxxx']))
     assert_false(patterns.match(['1', '22', '33']))
     assert_false(patterns.match(['1', '22', '333', '4', '5', '6']))
     assert_true(patterns.match(['1', '22', '333']))
     assert_true(patterns.match(['1', '22', '333', '4', '5', '7']))
 def test_not_and_and(self):
     patterns = TagPatterns(['xNOTyANDz', 'aANDbNOTc',
                             '1 AND 2? AND 3?? NOT 4* AND 5* AND 6*'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x', 'y', 'z']))
     assert_true(patterns.match(['x', 'y']))
     assert_true(patterns.match(['x']))
     assert_false(patterns.match(['a', 'b', 'c']))
     assert_false(patterns.match(['a']))
     assert_false(patterns.match(['b']))
     assert_true(patterns.match(['a', 'b']))
     assert_true(patterns.match(['a', 'b', 'xxxx']))
     assert_false(patterns.match(['1', '22', '33']))
     assert_false(patterns.match(['1', '22', '333', '4', '5', '6']))
     assert_true(patterns.match(['1', '22', '333']))
     assert_true(patterns.match(['1', '22', '333', '4', '5', '7']))
 def test_not_and_or(self):
     patterns = TagPatterns(['xNOTyORz', 'aORbNOTc',
                             '1 OR 2? OR 3?? NOT 4* OR 5* OR 6*'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x', 'y', 'z']))
     assert_false(patterns.match(['x', 'y']))
     assert_false(patterns.match(['Z', 'x']))
     assert_true(patterns.match(['x']))
     assert_true(patterns.match(['xxx', 'X']))
     assert_true(patterns.match(['a', 'b']))
     assert_false(patterns.match(['a', 'b', 'c']))
     assert_true(patterns.match(['a']))
     assert_true(patterns.match(['B', 'XXX']))
     assert_false(patterns.match(['b', 'c']))
     assert_false(patterns.match(['c']))
     assert_true(patterns.match(['x', 'y', '321']))
     assert_false(patterns.match(['x', 'y', '32']))
     assert_false(patterns.match(['1', '2', '3', '4']))
     assert_true(patterns.match(['1', '22', '333']))
Beispiel #27
0
 def test_and(self):
     patterns = TagPatterns(['xANDy', '???ANDz'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['x']))
     assert_true(patterns.match(['x', 'y', 'z']))
     assert_true(patterns.match(['123', 'y', 'z']))
Beispiel #28
0
 def test_single_pattern(self):
     patterns = TagPatterns(['x', 'y', 'z*'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['no', 'match']))
     assert_true(patterns.match(['x']))
     assert_true(patterns.match(['xxx', 'zzz']))
 def test_single_pattern(self):
     patterns = TagPatterns(['x', 'y', 'z*'])
     assert_false(patterns.match([]))
     assert_false(patterns.match(['no', 'match']))
     assert_true(patterns.match(['x']))
     assert_true(patterns.match(['xxx', 'zzz']))