blob: 557e28d5a671b0bc956e039c88080cc776c2b6ba [file] [log] [blame]
Dan Shicdbda552018-05-18 23:31:33 -07001#!/usr/bin/env python
2#
3# Copyright 2018, The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the 'License');
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an 'AS IS' BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17"""Unittests for test_mapping"""
18
19import unittest
kellyhunge029a742019-12-30 17:14:19 +080020import mock
Dan Shicdbda552018-05-18 23:31:33 -070021
22import test_mapping
23import unittest_constants as uc
24
25
26class TestMappingUnittests(unittest.TestCase):
27 """Unit tests for test_mapping.py"""
28
29 def test_parsing(self):
30 """Test creating TestDetail object"""
31 detail = test_mapping.TestDetail(uc.TEST_MAPPING_TEST)
32 self.assertEqual(uc.TEST_MAPPING_TEST['name'], detail.name)
Dan Shi08c7b722018-11-29 10:25:59 -080033 self.assertTrue(detail.host)
Dan Shicdbda552018-05-18 23:31:33 -070034 self.assertEqual([], detail.options)
35
36 def test_parsing_with_option(self):
37 """Test creating TestDetail object with option configured"""
38 detail = test_mapping.TestDetail(uc.TEST_MAPPING_TEST_WITH_OPTION)
39 self.assertEqual(uc.TEST_MAPPING_TEST_WITH_OPTION['name'], detail.name)
40 self.assertEqual(uc.TEST_MAPPING_TEST_WITH_OPTION_STR, str(detail))
41
42 def test_parsing_with_bad_option(self):
43 """Test creating TestDetail object with bad option configured"""
44 with self.assertRaises(Exception) as context:
45 test_mapping.TestDetail(uc.TEST_MAPPING_TEST_WITH_BAD_OPTION)
46 self.assertEqual(
47 'Each option can only have one key.', str(context.exception))
48
Dan Shi08c7b722018-11-29 10:25:59 -080049 def test_parsing_with_bad_host_value(self):
50 """Test creating TestDetail object with bad host value configured"""
51 with self.assertRaises(Exception) as context:
52 test_mapping.TestDetail(uc.TEST_MAPPING_TEST_WITH_BAD_HOST_VALUE)
53 self.assertEqual(
54 'host can only have boolean value.', str(context.exception))
Dan Shicdbda552018-05-18 23:31:33 -070055
kellyhunge029a742019-12-30 17:14:19 +080056 @mock.patch("atest_utils.get_modified_files")
57 def test_is_match_file_patterns(self, mock_modified_files):
58 """Test mathod is_match_file_patterns."""
59 test_mapping_file = ''
60 test_detail = {
61 "name": "Test",
62 "file_patterns": ["(/|^)test_fp1[^/]*\\.java",
63 "(/|^)test_fp2[^/]*\\.java"]
64 }
65 mock_modified_files.return_value = {'/a/b/test_fp122.java',
66 '/a/b/c/d/test_fp222.java'}
67 self.assertTrue(test_mapping.is_match_file_patterns(test_mapping_file,
68 test_detail))
69 mock_modified_files.return_value = {}
70 self.assertFalse(test_mapping.is_match_file_patterns(test_mapping_file,
71 test_detail))
72 mock_modified_files.return_value = {'/a/b/test_fp3.java'}
73 self.assertFalse(test_mapping.is_match_file_patterns(test_mapping_file,
74 test_detail))
75 test_mapping_file = '/a/b/TEST_MAPPING'
76 mock_modified_files.return_value = {'/a/b/test_fp3.java',
77 '/a/b/TEST_MAPPING'}
78 self.assertTrue(test_mapping.is_match_file_patterns(test_mapping_file,
79 test_detail))
80
81
Dan Shicdbda552018-05-18 23:31:33 -070082if __name__ == '__main__':
83 unittest.main()