Exemplo n.º 1
0
    def setUp(self):
        super(TestProcessorFixture, self).setUp()
        variable_regex = '\$(IDOPTION|IDFILE|IDLIST|LISTOPT)'
        variables = {}
        list_variables = {'LISTOPT': self.listopt}
        cmd = self.template
        default_idstr = None

        def list_subst(match):
            return list_variables.get(match.groups(1)[0], '')

        self.list_cmd = re.sub(variable_regex, list_subst, cmd)
        nonparallel = not self.parallel
        selection_logic = (self.test_filters or self.blacklist_file
                           or self.whitelist_file or self.black_regex)
        if nonparallel:
            self.concurrency = 1
        else:
            self.concurrency = None
            if self.concurrency_value:
                self.concurrency = int(self.concurrency_value)
            if not self.concurrency:
                self.concurrency = scheduler.local_concurrency()
            if not self.concurrency:
                self.concurrency = 1
        if self.test_ids is None:
            if self.concurrency == 1:
                if default_idstr:
                    self.test_ids = default_idstr.split()
            if self.concurrency != 1 or selection_logic or self.worker_path:
                # Have to be able to tell each worker what to run / filter
                # tests.
                self.test_ids = self.list_tests()
        if self.test_ids is None:
            # No test ids to supply to the program.
            self.list_file_name = None
            name = ''
            idlist = ''
        else:
            self.test_ids = selection.construct_list(
                self.test_ids,
                blacklist_file=self.blacklist_file,
                whitelist_file=self.whitelist_file,
                regexes=self.test_filters,
                black_regex=self.black_regex)
            name = self.make_listfile()
            variables['IDFILE'] = name
            idlist = ' '.join(self.test_ids)
        variables['IDLIST'] = idlist

        def subst(match):
            return variables.get(match.groups(1)[0], '')

        if self.test_ids is None:
            # No test ids, no id option.
            idoption = ''
        else:
            idoption = re.sub(variable_regex, subst, self.idoption)
            variables['IDOPTION'] = idoption
        self.cmd = re.sub(variable_regex, subst, cmd)
Exemplo n.º 2
0
 def test_inclusion_list(self):
     include_list = [re.compile('fake_test1'), re.compile('fake_test2')]
     test_lists = ['fake_test1[tg]', 'fake_test2[tg]', 'fake_test3[tg]']
     include_getter = 'stestr.selection._get_regex_from_include_list'
     with mock.patch(include_getter, return_value=include_list):
         result = selection.construct_list(test_lists, include_list='file')
     self.assertEqual(set(result), {'fake_test1[tg]', 'fake_test2[tg]'})
Exemplo n.º 3
0
 def test_whitelist(self):
     white_list = [re.compile('fake_test1'), re.compile('fake_test2')]
     test_lists = ['fake_test1[tg]', 'fake_test2[tg]', 'fake_test3[tg]']
     white_getter = 'stestr.selection._get_regex_from_whitelist_file'
     with mock.patch(white_getter, return_value=white_list):
         result = selection.construct_list(test_lists,
                                           whitelist_file='file')
     self.assertEqual(set(result), {'fake_test1[tg]', 'fake_test2[tg]'})
Exemplo n.º 4
0
 def test_precedence_black_re_vs_exclude_re(self):
     test_lists = ['fake_test(scen)[tag,bar])', 'fake_test(scen)[egg,foo])']
     result = selection.construct_list(test_lists,
                                       exclude_regex='foo',
                                       black_regex='bar')
     # When both options are used together, 'exclude_regex'
     # is respected while 'black_regex' is ignored!
     self.assertEqual(list(result), ['fake_test(scen)[tag,bar])'])
Exemplo n.º 5
0
 def test_exclusion_list(self):
     exclude_list = [(re.compile('foo'), 'foo not liked', [])]
     test_lists = ['fake_test(scen)[tag,bar])', 'fake_test(scen)[egg,foo])']
     with mock.patch('stestr.selection.exclusion_reader',
                     return_value=exclude_list):
         result = selection.construct_list(test_lists,
                                           exclude_list='file',
                                           regexes=['fake_test'])
     self.assertEqual(list(result), ['fake_test(scen)[tag,bar])'])
Exemplo n.º 6
0
 def test_whitelist_blacklist_re(self):
     white_list = [re.compile('fake_test1'), re.compile('fake_test2')]
     test_lists = [
         'fake_test1[tg]', 'fake_test2[spam]', 'fake_test3[tg,foo]',
         'fake_test4[spam]'
     ]
     black_list = [(re.compile('spam'), 'spam not liked', [])]
     white_getter = 'stestr.selection._get_regex_from_whitelist_file'
     with mock.patch(white_getter, return_value=white_list):
         with mock.patch('stestr.selection.black_reader',
                         return_value=black_list):
             result = selection.construct_list(test_lists, 'black_file',
                                               'white_file', ['foo'])
     self.assertEqual(set(result), {'fake_test1[tg]', 'fake_test3[tg,foo]'})
Exemplo n.º 7
0
 def test_inclusion_exclusion_list_re(self):
     include_list = [re.compile('fake_test1'), re.compile('fake_test2')]
     test_lists = ['fake_test1[tg]', 'fake_test2[spam]',
                   'fake_test3[tg,foo]', 'fake_test4[spam]']
     exclude_list = [(re.compile('spam'), 'spam not liked', [])]
     include_getter = 'stestr.selection._get_regex_from_include_list'
     with mock.patch(include_getter,
                     return_value=include_list):
         with mock.patch('stestr.selection.exclusion_reader',
                         return_value=exclude_list):
             result = selection.construct_list(
                 test_lists, exclude_list='exclude_file',
                 include_list='include_file', regexes=['foo'])
     self.assertEqual(set(result),
                      {'fake_test1[tg]', 'fake_test3[tg,foo]'})
Exemplo n.º 8
0
    def test_overlapping_exclude_regex(self):

        exclude_list = [(re.compile('compute.test_keypairs.KeypairsTestV210'),
                         '', []),
                        (re.compile('compute.test_keypairs.KeypairsTestV21'),
                         '', [])]
        test_lists = [
            'compute.test_keypairs.KeypairsTestV210.test_create_keypair',
            'compute.test_keypairs.KeypairsTestV21.test_create_keypair',
            'compute.test_fake.FakeTest.test_fake_test']
        with mock.patch('stestr.selection.exclusion_reader',
                        return_value=exclude_list):
            result = selection.construct_list(test_lists,
                                              exclude_list='file',
                                              regexes=['fake_test'])
        self.assertEqual(
            list(result), ['compute.test_fake.FakeTest.test_fake_test'])
Exemplo n.º 9
0
    def test_precedence_whitelist_vs_include_list(self):
        test_lists = ['fake_test1[tg]', 'fake_test2[tg]', 'fake_test3[tg]']
        # New option --include-list to be passed -> should be used
        include_file = open('include_file.txt', 'w')
        include_file.write('fake_test1\nfake_test2')
        include_file.close()
        # Old option --whitelist-file to be passed -> should be ignored
        whitelist_file = open('whitelist_file.txt', 'w')
        whitelist_file.write('fake_test3')
        whitelist_file.close()

        result = selection.construct_list(test_lists,
                                          include_list='include_file.txt',
                                          whitelist_file='whitelist_file.txt')
        self.assertEqual({'fake_test1[tg]', 'fake_test2[tg]'}, set(result))
        # Cleanup
        os.remove('include_file.txt')
        os.remove('whitelist_file.txt')
Exemplo n.º 10
0
    def test_precedence_blacklist_vs_exclude_list(self):
        test_lists = ['fake_test(scen)[tag,bar])', 'fake_test(scen)[egg,foo])']
        # New option --exclude-list to be passed -> should be used
        exclude_file = open('exclude_file.txt', 'w')
        exclude_file.write("foo\nfoo not liked")
        exclude_file.close()
        # Old option --blacklist-file to be passed -> should be ignored
        black_file = open('black_file.txt', 'w')
        black_file.write("bar\nbar not liked")
        black_file.close()

        result = selection.construct_list(test_lists,
                                          exclude_list='exclude_file.txt',
                                          blacklist_file='black_file.txt',
                                          regexes=['fake_test'])
        self.assertEqual(list(result), ['fake_test(scen)[tag,bar])'])
        # Cleanup
        os.remove('exclude_file.txt')
        os.remove('black_file.txt')
Exemplo n.º 11
0
 def test_simple_exclusion_re(self):
     test_lists = ['fake_test(scen)[tag,bar])', 'fake_test(scen)[egg,foo])']
     result = selection.construct_list(test_lists, exclude_regex='foo')
     self.assertEqual(list(result), ['fake_test(scen)[tag,bar])'])