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_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)
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']))
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']))
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']))
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'))
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']))
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_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']))
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']))
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'))
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)
def test_seq2str(self): patterns = TagPatterns([u'is\xe4', u'\xe4iti']) assert_equal(seq2str(patterns), u"'is\xe4' and '\xe4iti'")
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']))
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']))
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']))
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']))
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']))