Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: build/android/pylib/utils/md5sum_test.py

Issue 2101243005: Add a snapshot of flutter/engine/src/build to our sdk (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: add README.dart Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/android/pylib/utils/md5sum.py ('k') | build/android/pylib/utils/mock_calls.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2014 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 from pylib import cmd_helper
11 from pylib import constants
12 from pylib.utils import md5sum
13
14 sys.path.append(
15 os.path.join(constants.DIR_SOURCE_ROOT, 'third_party', 'pymock'))
16 import mock
17
18 TEST_OUT_DIR = os.path.join('test', 'out', 'directory')
19 HOST_MD5_EXECUTABLE = os.path.join(TEST_OUT_DIR, 'md5sum_bin_host')
20
21 class Md5SumTest(unittest.TestCase):
22
23 def setUp(self):
24 self._patchers = [
25 mock.patch('pylib.constants.GetOutDirectory',
26 new=mock.Mock(return_value=TEST_OUT_DIR)),
27 mock.patch('os.path.exists',
28 new=mock.Mock(return_value=True)),
29 ]
30 for p in self._patchers:
31 p.start()
32
33 def tearDown(self):
34 for p in self._patchers:
35 p.stop()
36
37 def testCalculateHostMd5Sums_singlePath(self):
38 test_path = '/test/host/file.dat'
39 mock_get_cmd_output = mock.Mock(
40 return_value='0123456789abcdeffedcba9876543210 /test/host/file.dat')
41 with mock.patch('pylib.cmd_helper.GetCmdOutput', new=mock_get_cmd_output):
42 out = md5sum.CalculateHostMd5Sums(test_path)
43 self.assertEquals(1, len(out))
44 self.assertTrue('/test/host/file.dat' in out)
45 self.assertEquals('0123456789abcdeffedcba9876543210',
46 out['/test/host/file.dat'])
47 mock_get_cmd_output.assert_called_once_with(
48 [HOST_MD5_EXECUTABLE, '/test/host/file.dat'])
49
50 def testCalculateHostMd5Sums_list(self):
51 test_paths = ['/test/host/file0.dat', '/test/host/file1.dat']
52 mock_get_cmd_output = mock.Mock(
53 return_value='0123456789abcdeffedcba9876543210 /test/host/file0.dat\n'
54 '123456789abcdef00fedcba987654321 /test/host/file1.dat\n')
55 with mock.patch('pylib.cmd_helper.GetCmdOutput', new=mock_get_cmd_output):
56 out = md5sum.CalculateHostMd5Sums(test_paths)
57 self.assertEquals(2, len(out))
58 self.assertTrue('/test/host/file0.dat' in out)
59 self.assertEquals('0123456789abcdeffedcba9876543210',
60 out['/test/host/file0.dat'])
61 self.assertTrue('/test/host/file1.dat' in out)
62 self.assertEquals('123456789abcdef00fedcba987654321',
63 out['/test/host/file1.dat'])
64 mock_get_cmd_output.assert_called_once_with(
65 [HOST_MD5_EXECUTABLE, '/test/host/file0.dat',
66 '/test/host/file1.dat'])
67
68 def testCalculateHostMd5Sums_generator(self):
69 test_paths = ('/test/host/' + p for p in ['file0.dat', 'file1.dat'])
70 mock_get_cmd_output = mock.Mock(
71 return_value='0123456789abcdeffedcba9876543210 /test/host/file0.dat\n'
72 '123456789abcdef00fedcba987654321 /test/host/file1.dat\n')
73 with mock.patch('pylib.cmd_helper.GetCmdOutput', new=mock_get_cmd_output):
74 out = md5sum.CalculateHostMd5Sums(test_paths)
75 self.assertEquals(2, len(out))
76 self.assertTrue('/test/host/file0.dat' in out)
77 self.assertEquals('0123456789abcdeffedcba9876543210',
78 out['/test/host/file0.dat'])
79 self.assertTrue('/test/host/file1.dat' in out)
80 self.assertEquals('123456789abcdef00fedcba987654321',
81 out['/test/host/file1.dat'])
82 mock_get_cmd_output.assert_called_once_with(
83 [HOST_MD5_EXECUTABLE, '/test/host/file0.dat', '/test/host/file1.dat'])
84
85 def testCalculateDeviceMd5Sums_singlePath(self):
86 test_path = '/storage/emulated/legacy/test/file.dat'
87
88 device = mock.NonCallableMock()
89 device.adb = mock.NonCallableMock()
90 device.adb.Push = mock.Mock()
91 device_md5sum_output = [
92 '0123456789abcdeffedcba9876543210 '
93 '/storage/emulated/legacy/test/file.dat',
94 ]
95 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
96
97 mock_temp_file = mock.mock_open()
98 mock_temp_file.return_value.name = '/tmp/test/script/file.sh'
99
100 mock_device_temp_file = mock.mock_open()
101 mock_device_temp_file.return_value.name = (
102 '/data/local/tmp/test/script/file.sh')
103
104 with mock.patch('tempfile.NamedTemporaryFile', new=mock_temp_file), (
105 mock.patch('pylib.utils.device_temp_file.DeviceTempFile',
106 new=mock_device_temp_file)):
107 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
108 self.assertEquals(1, len(out))
109 self.assertTrue('/storage/emulated/legacy/test/file.dat' in out)
110 self.assertEquals('0123456789abcdeffedcba9876543210',
111 out['/storage/emulated/legacy/test/file.dat'])
112 device.adb.Push.assert_called_once_with(
113 '/tmp/test/script/file.sh', '/data/local/tmp/test/script/file.sh')
114 device.RunShellCommand.assert_called_once_with(
115 ['sh', '/data/local/tmp/test/script/file.sh'])
116
117 def testCalculateDeviceMd5Sums_list(self):
118 test_path = ['/storage/emulated/legacy/test/file0.dat',
119 '/storage/emulated/legacy/test/file1.dat']
120 device = mock.NonCallableMock()
121 device.adb = mock.NonCallableMock()
122 device.adb.Push = mock.Mock()
123 device_md5sum_output = [
124 '0123456789abcdeffedcba9876543210 '
125 '/storage/emulated/legacy/test/file0.dat',
126 '123456789abcdef00fedcba987654321 '
127 '/storage/emulated/legacy/test/file1.dat',
128 ]
129 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
130
131 mock_temp_file = mock.mock_open()
132 mock_temp_file.return_value.name = '/tmp/test/script/file.sh'
133
134 mock_device_temp_file = mock.mock_open()
135 mock_device_temp_file.return_value.name = (
136 '/data/local/tmp/test/script/file.sh')
137
138 with mock.patch('tempfile.NamedTemporaryFile', new=mock_temp_file), (
139 mock.patch('pylib.utils.device_temp_file.DeviceTempFile',
140 new=mock_device_temp_file)):
141 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
142 self.assertEquals(2, len(out))
143 self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out)
144 self.assertEquals('0123456789abcdeffedcba9876543210',
145 out['/storage/emulated/legacy/test/file0.dat'])
146 self.assertTrue('/storage/emulated/legacy/test/file1.dat' in out)
147 self.assertEquals('123456789abcdef00fedcba987654321',
148 out['/storage/emulated/legacy/test/file1.dat'])
149 device.adb.Push.assert_called_once_with(
150 '/tmp/test/script/file.sh', '/data/local/tmp/test/script/file.sh')
151 device.RunShellCommand.assert_called_once_with(
152 ['sh', '/data/local/tmp/test/script/file.sh'])
153
154 def testCalculateDeviceMd5Sums_generator(self):
155 test_path = ('/storage/emulated/legacy/test/file%d.dat' % n
156 for n in xrange(0, 2))
157
158 device = mock.NonCallableMock()
159 device.adb = mock.NonCallableMock()
160 device.adb.Push = mock.Mock()
161 device_md5sum_output = [
162 '0123456789abcdeffedcba9876543210 '
163 '/storage/emulated/legacy/test/file0.dat',
164 '123456789abcdef00fedcba987654321 '
165 '/storage/emulated/legacy/test/file1.dat',
166 ]
167 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
168
169 mock_temp_file = mock.mock_open()
170 mock_temp_file.return_value.name = '/tmp/test/script/file.sh'
171
172 mock_device_temp_file = mock.mock_open()
173 mock_device_temp_file.return_value.name = (
174 '/data/local/tmp/test/script/file.sh')
175
176 with mock.patch('tempfile.NamedTemporaryFile', new=mock_temp_file), (
177 mock.patch('pylib.utils.device_temp_file.DeviceTempFile',
178 new=mock_device_temp_file)):
179 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
180 self.assertEquals(2, len(out))
181 self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out)
182 self.assertEquals('0123456789abcdeffedcba9876543210',
183 out['/storage/emulated/legacy/test/file0.dat'])
184 self.assertTrue('/storage/emulated/legacy/test/file1.dat' in out)
185 self.assertEquals('123456789abcdef00fedcba987654321',
186 out['/storage/emulated/legacy/test/file1.dat'])
187 device.adb.Push.assert_called_once_with(
188 '/tmp/test/script/file.sh', '/data/local/tmp/test/script/file.sh')
189 device.RunShellCommand.assert_called_once_with(
190 ['sh', '/data/local/tmp/test/script/file.sh'])
191
192 def testCalculateDeviceMd5Sums_singlePath_linkerWarning(self):
193 # See crbug/479966
194 test_path = '/storage/emulated/legacy/test/file.dat'
195
196 device = mock.NonCallableMock()
197 device.adb = mock.NonCallableMock()
198 device.adb.Push = mock.Mock()
199 device_md5sum_output = [
200 'WARNING: linker: /data/local/tmp/md5sum/md5sum_bin: '
201 'unused DT entry: type 0x1d arg 0x15db',
202 'THIS_IS_NOT_A_VALID_CHECKSUM_ZZZ some random text',
203 '0123456789abcdeffedcba9876543210 '
204 '/storage/emulated/legacy/test/file.dat',
205 ]
206 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
207
208 mock_temp_file = mock.mock_open()
209 mock_temp_file.return_value.name = '/tmp/test/script/file.sh'
210
211 mock_device_temp_file = mock.mock_open()
212 mock_device_temp_file.return_value.name = (
213 '/data/local/tmp/test/script/file.sh')
214
215 with mock.patch('tempfile.NamedTemporaryFile', new=mock_temp_file), (
216 mock.patch('pylib.utils.device_temp_file.DeviceTempFile',
217 new=mock_device_temp_file)):
218 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
219 self.assertEquals(1, len(out))
220 self.assertTrue('/storage/emulated/legacy/test/file.dat' in out)
221 self.assertEquals('0123456789abcdeffedcba9876543210',
222 out['/storage/emulated/legacy/test/file.dat'])
223 device.adb.Push.assert_called_once_with(
224 '/tmp/test/script/file.sh', '/data/local/tmp/test/script/file.sh')
225 device.RunShellCommand.assert_called_once_with(
226 ['sh', '/data/local/tmp/test/script/file.sh'])
227
228
229 if __name__ == '__main__':
230 unittest.main(verbosity=2)
231
OLDNEW
« no previous file with comments | « build/android/pylib/utils/md5sum.py ('k') | build/android/pylib/utils/mock_calls.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698