예제 #1
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']))
예제 #2
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']))
예제 #3
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']))
예제 #4
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']))
예제 #5
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']))
예제 #6
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']))
예제 #7
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)
예제 #8
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'))
예제 #9
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'))
예제 #10
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']))
예제 #11
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']))
예제 #12
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']))
예제 #13
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']))
예제 #14
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']))
예제 #15
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']))
예제 #16
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']))
예제 #17
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']))
예제 #18
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']))
예제 #19
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']))
예제 #20
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']))
예제 #21
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']))
예제 #22
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']))
예제 #23
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']))
예제 #24
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']))
예제 #25
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']))