2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
10 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
11 BUILD_TOOLS_DIR = os.path.dirname(SCRIPT_DIR)
13 sys.path.append(BUILD_TOOLS_DIR)
14 import verify_filelist
17 def Verify(platform, rules_contents, directory_list):
18 rules = verify_filelist.Rules('test', platform, rules_contents)
19 rules.VerifyDirectoryList(directory_list)
22 class VerifyFilelistTestCase(unittest.TestCase):
30 dirlist = ['foo/file1', 'foo/file2', 'foo/file3', 'bar/baz/other']
31 Verify('linux', rules, dirlist)
35 dirlist = ['foo/file1', 'foo/file2', 'foo/file3/and/subdir']
36 Verify('linux', rules, dirlist)
38 def testPlatformVar(self):
39 rules = 'dir/${PLATFORM}/blah'
40 dirlist = ['dir/linux/blah']
41 Verify('linux', rules, dirlist)
43 def testPlatformVarGlob(self):
44 rules = 'dir/${PLATFORM}/*'
45 dirlist = ['dir/linux/file1', 'dir/linux/file2']
46 Verify('linux', rules, dirlist)
48 def testPlatformRule(self):
53 linux_dirlist = ['dir/linux/only', 'all/platforms']
54 other_dirlist = ['all/platforms']
55 Verify('linux', rules, linux_dirlist)
56 Verify('mac', rules, other_dirlist)
58 def testMultiPlatformRule(self):
60 [linux,win]dir/no/macs
63 nonmac_dirlist = ['dir/no/macs', 'all/platforms']
64 mac_dirlist = ['all/platforms']
65 Verify('linux', rules, nonmac_dirlist)
66 Verify('win', rules, nonmac_dirlist)
67 Verify('mac', rules, mac_dirlist)
69 def testPlatformRuleBadPlatform(self):
70 rules = '[frob]bad/platform'
71 self.assertRaises(verify_filelist.ParseException, Verify,
74 def testMissingFile(self):
79 dirlist = ['foo/file1']
80 self.assertRaises(verify_filelist.VerifyException, Verify,
81 'linux', rules, dirlist)
83 def testExtraFile(self):
85 dirlist = ['foo/file1', 'foo/extra_file']
86 self.assertRaises(verify_filelist.VerifyException, Verify,
87 'linux', rules, dirlist)
89 def testEmptyGlob(self):
91 dirlist = ['foo'] # Directory existing is not enough!
92 self.assertRaises(verify_filelist.VerifyException, Verify,
93 'linux', rules, dirlist)
95 def testBadGlob(self):
98 self.assertRaises(verify_filelist.ParseException, Verify,
99 'linux', rules, dirlist)
101 def testUnknownPlatform(self):
104 for platform in ('linux', 'mac', 'win'):
105 Verify(platform, rules, dirlist)
106 self.assertRaises(verify_filelist.ParseException, Verify,
107 'foobar', rules, dirlist)
109 def testUnexpectedPlatformFile(self):
110 rules = '[mac,win]foo/file1'
111 dirlist = ['foo/file1']
112 self.assertRaises(verify_filelist.VerifyException, Verify,
113 'linux', rules, dirlist)
115 def testWindowsPaths(self):
116 if os.path.sep != '/':
117 rules = 'foo/bar/baz'
118 dirlist = ['foo\\bar\\baz']
119 Verify('win', rules, dirlist)
121 rules = 'foo/bar/baz\\foo'
122 dirlist = ['foo/bar/baz\\foo']
123 Verify('linux', rules, dirlist)
125 def testNestedGlobs(self):
129 dirlist = ['foo/file', 'foo/bar/file']
130 Verify('linux', rules, dirlist)
135 dirlist = ['foo/file', 'foo/bar/file']
136 Verify('linux', rules, dirlist)
139 if __name__ == '__main__':