blob: b91ced4809bdd47a723ed05180531e62542eab66 [file] [log] [blame]
#!/usr/bin/env vpython
# Copyright 2018 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import argparse
import sys
import tempfile
import unittest
from pylib.utils import test_filter
class ParseFilterFileTest(unittest.TestCase):
def testParseFilterFile_commentsAndBlankLines(self):
input_lines = [
'positive1',
'# comment',
'positive2 # Another comment',
''
'positive3'
]
actual = test_filter.ParseFilterFile(input_lines)
expected = ['positive1', 'positive2', 'positive3'], []
self.assertEquals(expected, actual)
def testParseFilterFile_onlyPositive(self):
input_lines = [
'positive1',
'positive2'
]
actual = test_filter.ParseFilterFile(input_lines)
expected = ['positive1', 'positive2'], []
self.assertEquals(expected, actual)
def testParseFilterFile_onlyNegative(self):
input_lines = [
'-negative1',
'-negative2'
]
actual = test_filter.ParseFilterFile(input_lines)
expected = [], ['negative1', 'negative2']
self.assertEquals(expected, actual)
def testParseFilterFile_positiveAndNegative(self):
input_lines = [
'positive1',
'positive2',
'-negative1',
'-negative2'
]
actual = test_filter.ParseFilterFile(input_lines)
expected = ['positive1', 'positive2'], ['negative1', 'negative2']
self.assertEquals(expected, actual)
class InitializeFilterFromArgsTest(unittest.TestCase):
def testInitializeBasicFilter(self):
parser = argparse.ArgumentParser()
test_filter.AddFilterOptions(parser)
args = parser.parse_args([
'--test-filter',
'FooTest.testFoo:BarTest.testBar'])
expected = 'FooTest.testFoo:BarTest.testBar'
actual = test_filter.InitializeFilterFromArgs(args)
self.assertEquals(actual, expected)
def testInitializeJavaStyleFilter(self):
parser = argparse.ArgumentParser()
test_filter.AddFilterOptions(parser)
args = parser.parse_args([
'--test-filter',
'FooTest#testFoo:BarTest#testBar'])
expected = 'FooTest.testFoo:BarTest.testBar'
actual = test_filter.InitializeFilterFromArgs(args)
self.assertEquals(actual, expected)
def testInitializeBasicIsolatedScript(self):
parser = argparse.ArgumentParser()
test_filter.AddFilterOptions(parser)
args = parser.parse_args([
'--isolated-script-test-filter',
'FooTest.testFoo::BarTest.testBar'])
expected = 'FooTest.testFoo:BarTest.testBar'
actual = test_filter.InitializeFilterFromArgs(args)
self.assertEquals(actual, expected)
def testFilterArgWithPositiveFilterInFilterFile(self):
parser = argparse.ArgumentParser()
test_filter.AddFilterOptions(parser)
with tempfile.NamedTemporaryFile() as tmp_file:
tmp_file.write('positive1\npositive2\n-negative2\n-negative3\n')
tmp_file.seek(0)
args = parser.parse_args([
'--test-filter=-negative1',
'--test-launcher-filter-file',
tmp_file.name])
expected = 'positive1:positive2-negative1:negative2:negative3'
actual = test_filter.InitializeFilterFromArgs(args)
self.assertEquals(actual, expected)
def testFilterFileWithPositiveFilterInFilterArg(self):
parser = argparse.ArgumentParser()
test_filter.AddFilterOptions(parser)
with tempfile.NamedTemporaryFile() as tmp_file:
tmp_file.write('-negative2\n-negative3\n')
tmp_file.seek(0)
args = parser.parse_args([
'--test-filter',
'positive1:positive2-negative1',
'--test-launcher-filter-file',
tmp_file.name])
expected = 'positive1:positive2-negative1:negative2:negative3'
actual = test_filter.InitializeFilterFromArgs(args)
self.assertEquals(actual, expected)
def testPositiveFilterInBothFileAndArg(self):
parser = argparse.ArgumentParser()
test_filter.AddFilterOptions(parser)
with tempfile.NamedTemporaryFile() as tmp_file:
tmp_file.write('positive1\n')
tmp_file.seek(0)
args = parser.parse_args([
'--test-filter',
'positive2',
'--test-launcher-filter-file',
tmp_file.name])
with self.assertRaises(test_filter.ConflictingPositiveFiltersException):
test_filter.InitializeFilterFromArgs(args)
def testFilterArgWithFilterFileAllNegative(self):
parser = argparse.ArgumentParser()
test_filter.AddFilterOptions(parser)
with tempfile.NamedTemporaryFile() as tmp_file:
tmp_file.write('-negative3\n-negative4\n')
tmp_file.seek(0)
args = parser.parse_args([
'--test-filter=-negative1:negative2',
'--test-launcher-filter-file',
tmp_file.name])
expected = '-negative1:negative2:negative3:negative4'
actual = test_filter.InitializeFilterFromArgs(args)
self.assertEquals(actual, expected)
if __name__ == '__main__':
sys.exit(unittest.main())