- add sources.
[platform/framework/web/crosswalk.git] / src / native_client_sdk / src / build_tools / tests / verify_filelist_test.py
1 #!/usr/bin/env python
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.
5
6 import os
7 import sys
8 import unittest
9
10 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
11 BUILD_TOOLS_DIR = os.path.dirname(SCRIPT_DIR)
12
13 sys.path.append(BUILD_TOOLS_DIR)
14 import verify_filelist
15
16
17 def Verify(platform, rules_contents, directory_list):
18   rules = verify_filelist.Rules('test', platform, rules_contents)
19   rules.VerifyDirectoryList(directory_list)
20
21
22 class VerifyFilelistTestCase(unittest.TestCase):
23   def testBasic(self):
24     rules = """\
25 foo/file1
26 foo/file2
27 foo/file3
28 bar/baz/other
29 """
30     dirlist = ['foo/file1', 'foo/file2', 'foo/file3', 'bar/baz/other']
31     Verify('linux', rules, dirlist)
32
33   def testGlob(self):
34     rules = 'foo/*'
35     dirlist = ['foo/file1', 'foo/file2', 'foo/file3/and/subdir']
36     Verify('linux', rules, dirlist)
37
38   def testPlatformVar(self):
39     rules = 'dir/${PLATFORM}/blah'
40     dirlist = ['dir/linux/blah']
41     Verify('linux', rules, dirlist)
42
43   def testPlatformVarGlob(self):
44     rules = 'dir/${PLATFORM}/*'
45     dirlist = ['dir/linux/file1', 'dir/linux/file2']
46     Verify('linux', rules, dirlist)
47
48   def testPlatformRule(self):
49     rules = """\
50 [linux]dir/linux/only
51 all/platforms
52 """
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)
57
58   def testMultiPlatformRule(self):
59     rules = """\
60 [linux,win]dir/no/macs
61 all/platforms
62 """
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)
68
69   def testPlatformRuleBadPlatform(self):
70     rules = '[frob]bad/platform'
71     self.assertRaises(verify_filelist.ParseException, Verify,
72                       'linux', rules, [])
73
74   def testMissingFile(self):
75     rules = """\
76 foo/file1
77 foo/missing
78 """
79     dirlist = ['foo/file1']
80     self.assertRaises(verify_filelist.VerifyException, Verify,
81                       'linux', rules, dirlist)
82
83   def testExtraFile(self):
84     rules = 'foo/file1'
85     dirlist = ['foo/file1', 'foo/extra_file']
86     self.assertRaises(verify_filelist.VerifyException, Verify,
87                       'linux', rules, dirlist)
88
89   def testEmptyGlob(self):
90     rules = 'foo/*'
91     dirlist = ['foo']  # Directory existing is not enough!
92     self.assertRaises(verify_filelist.VerifyException, Verify,
93                       'linux', rules, dirlist)
94
95   def testBadGlob(self):
96     rules = '*/foo/bar'
97     dirlist = []
98     self.assertRaises(verify_filelist.ParseException, Verify,
99                       'linux', rules, dirlist)
100
101   def testUnknownPlatform(self):
102     rules = 'foo'
103     dirlist = ['foo']
104     for platform in ('linux', 'mac', 'win'):
105       Verify(platform, rules, dirlist)
106     self.assertRaises(verify_filelist.ParseException, Verify,
107                       'foobar', rules, dirlist)
108
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)
114
115   def testWindowsPaths(self):
116     if os.path.sep != '/':
117       rules = 'foo/bar/baz'
118       dirlist = ['foo\\bar\\baz']
119       Verify('win', rules, dirlist)
120     else:
121       rules = 'foo/bar/baz\\foo'
122       dirlist = ['foo/bar/baz\\foo']
123       Verify('linux', rules, dirlist)
124
125   def testNestedGlobs(self):
126     rules = """\
127 foo/*
128 foo/bar/*"""
129     dirlist = ['foo/file', 'foo/bar/file']
130     Verify('linux', rules, dirlist)
131
132     rules = """\
133 foo/bar/*
134 foo/*"""
135     dirlist = ['foo/file', 'foo/bar/file']
136     Verify('linux', rules, dirlist)
137
138
139 if __name__ == '__main__':
140   unittest.main()