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

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

Issue 1321503003: Fix md5sum printing a stale checksum for missing files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: forgot if I already uploaded... Created 5 years, 3 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') | tools/android/md5sum/md5sum.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Chromium Authors. All rights reserved. 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 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import os 6 import os
7 import sys 7 import sys
8 import unittest 8 import unittest
9 9
10 from pylib import cmd_helper 10 from pylib import cmd_helper
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 def testCalculateDeviceMd5Sums_singlePath(self): 86 def testCalculateDeviceMd5Sums_singlePath(self):
87 test_path = '/storage/emulated/legacy/test/file.dat' 87 test_path = '/storage/emulated/legacy/test/file.dat'
88 88
89 device = mock.NonCallableMock() 89 device = mock.NonCallableMock()
90 device_md5sum_output = [ 90 device_md5sum_output = [
91 '0123456789abcdeffedcba9876543210 ' 91 '0123456789abcdeffedcba9876543210 '
92 '/storage/emulated/legacy/test/file.dat', 92 '/storage/emulated/legacy/test/file.dat',
93 ] 93 ]
94 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) 94 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
95 95
96 out = md5sum.CalculateDeviceMd5Sums(test_path, device) 96 with mock.patch('os.path.getsize', return_value=1337):
97 self.assertEquals(1, len(out)) 97 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
98 self.assertTrue('/storage/emulated/legacy/test/file.dat' in out) 98 self.assertEquals(1, len(out))
99 self.assertEquals('0123456789abcdeffedcba9876543210', 99 self.assertTrue('/storage/emulated/legacy/test/file.dat' in out)
100 out['/storage/emulated/legacy/test/file.dat']) 100 self.assertEquals('0123456789abcdeffedcba9876543210',
101 self.assertEquals(1, len(device.RunShellCommand.call_args_list)) 101 out['/storage/emulated/legacy/test/file.dat'])
102 self.assertEquals(1, len(device.RunShellCommand.call_args_list))
102 103
103 def testCalculateDeviceMd5Sums_list(self): 104 def testCalculateDeviceMd5Sums_list(self):
104 test_path = ['/storage/emulated/legacy/test/file0.dat', 105 test_path = ['/storage/emulated/legacy/test/file0.dat',
105 '/storage/emulated/legacy/test/file1.dat'] 106 '/storage/emulated/legacy/test/file1.dat']
106 device = mock.NonCallableMock() 107 device = mock.NonCallableMock()
107 device_md5sum_output = [ 108 device_md5sum_output = [
108 '0123456789abcdeffedcba9876543210 ' 109 '0123456789abcdeffedcba9876543210 '
109 '/storage/emulated/legacy/test/file0.dat', 110 '/storage/emulated/legacy/test/file0.dat',
110 '123456789abcdef00fedcba987654321 ' 111 '123456789abcdef00fedcba987654321 '
111 '/storage/emulated/legacy/test/file1.dat', 112 '/storage/emulated/legacy/test/file1.dat',
112 ] 113 ]
113 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) 114 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
114 115
115 out = md5sum.CalculateDeviceMd5Sums(test_path, device) 116 with mock.patch('os.path.getsize', return_value=1337):
116 self.assertEquals(2, len(out)) 117 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
117 self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out) 118 self.assertEquals(2, len(out))
118 self.assertEquals('0123456789abcdeffedcba9876543210', 119 self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out)
119 out['/storage/emulated/legacy/test/file0.dat']) 120 self.assertEquals('0123456789abcdeffedcba9876543210',
120 self.assertTrue('/storage/emulated/legacy/test/file1.dat' in out) 121 out['/storage/emulated/legacy/test/file0.dat'])
121 self.assertEquals('123456789abcdef00fedcba987654321', 122 self.assertTrue('/storage/emulated/legacy/test/file1.dat' in out)
122 out['/storage/emulated/legacy/test/file1.dat']) 123 self.assertEquals('123456789abcdef00fedcba987654321',
123 self.assertEquals(1, len(device.RunShellCommand.call_args_list)) 124 out['/storage/emulated/legacy/test/file1.dat'])
125 self.assertEquals(1, len(device.RunShellCommand.call_args_list))
124 126
125 def testCalculateDeviceMd5Sums_generator(self): 127 def testCalculateDeviceMd5Sums_generator(self):
126 test_path = ('/storage/emulated/legacy/test/file%d.dat' % n 128 test_path = ('/storage/emulated/legacy/test/file%d.dat' % n
127 for n in xrange(0, 2)) 129 for n in xrange(0, 2))
128 130
129 device = mock.NonCallableMock() 131 device = mock.NonCallableMock()
130 device_md5sum_output = [ 132 device_md5sum_output = [
131 '0123456789abcdeffedcba9876543210 ' 133 '0123456789abcdeffedcba9876543210 '
132 '/storage/emulated/legacy/test/file0.dat', 134 '/storage/emulated/legacy/test/file0.dat',
133 '123456789abcdef00fedcba987654321 ' 135 '123456789abcdef00fedcba987654321 '
134 '/storage/emulated/legacy/test/file1.dat', 136 '/storage/emulated/legacy/test/file1.dat',
135 ] 137 ]
136 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) 138 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
137 139
138 out = md5sum.CalculateDeviceMd5Sums(test_path, device) 140 with mock.patch('os.path.getsize', return_value=1337):
139 self.assertEquals(2, len(out)) 141 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
140 self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out) 142 self.assertEquals(2, len(out))
141 self.assertEquals('0123456789abcdeffedcba9876543210', 143 self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out)
142 out['/storage/emulated/legacy/test/file0.dat']) 144 self.assertEquals('0123456789abcdeffedcba9876543210',
143 self.assertTrue('/storage/emulated/legacy/test/file1.dat' in out) 145 out['/storage/emulated/legacy/test/file0.dat'])
144 self.assertEquals('123456789abcdef00fedcba987654321', 146 self.assertTrue('/storage/emulated/legacy/test/file1.dat' in out)
145 out['/storage/emulated/legacy/test/file1.dat']) 147 self.assertEquals('123456789abcdef00fedcba987654321',
146 self.assertEquals(1, len(device.RunShellCommand.call_args_list)) 148 out['/storage/emulated/legacy/test/file1.dat'])
149 self.assertEquals(1, len(device.RunShellCommand.call_args_list))
147 150
148 def testCalculateDeviceMd5Sums_singlePath_linkerWarning(self): 151 def testCalculateDeviceMd5Sums_singlePath_linkerWarning(self):
149 # See crbug/479966 152 # See crbug/479966
150 test_path = '/storage/emulated/legacy/test/file.dat' 153 test_path = '/storage/emulated/legacy/test/file.dat'
151 154
152 device = mock.NonCallableMock() 155 device = mock.NonCallableMock()
153 device_md5sum_output = [ 156 device_md5sum_output = [
154 'WARNING: linker: /data/local/tmp/md5sum/md5sum_bin: ' 157 'WARNING: linker: /data/local/tmp/md5sum/md5sum_bin: '
155 'unused DT entry: type 0x1d arg 0x15db', 158 'unused DT entry: type 0x1d arg 0x15db',
156 'THIS_IS_NOT_A_VALID_CHECKSUM_ZZZ some random text', 159 'THIS_IS_NOT_A_VALID_CHECKSUM_ZZZ some random text',
157 '0123456789abcdeffedcba9876543210 ' 160 '0123456789abcdeffedcba9876543210 '
158 '/storage/emulated/legacy/test/file.dat', 161 '/storage/emulated/legacy/test/file.dat',
159 ] 162 ]
160 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) 163 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
161 164
162 out = md5sum.CalculateDeviceMd5Sums(test_path, device) 165 with mock.patch('os.path.getsize', return_value=1337):
163 self.assertEquals(1, len(out)) 166 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
164 self.assertTrue('/storage/emulated/legacy/test/file.dat' in out) 167 self.assertEquals(1, len(out))
165 self.assertEquals('0123456789abcdeffedcba9876543210', 168 self.assertTrue('/storage/emulated/legacy/test/file.dat' in out)
166 out['/storage/emulated/legacy/test/file.dat']) 169 self.assertEquals('0123456789abcdeffedcba9876543210',
167 self.assertEquals(1, len(device.RunShellCommand.call_args_list)) 170 out['/storage/emulated/legacy/test/file.dat'])
171 self.assertEquals(1, len(device.RunShellCommand.call_args_list))
168 172
169 def testCalculateDeviceMd5Sums_list_fileMissing(self): 173 def testCalculateDeviceMd5Sums_list_fileMissing(self):
170 test_path = ['/storage/emulated/legacy/test/file0.dat', 174 test_path = ['/storage/emulated/legacy/test/file0.dat',
171 '/storage/emulated/legacy/test/file1.dat'] 175 '/storage/emulated/legacy/test/file1.dat']
172 device = mock.NonCallableMock() 176 device = mock.NonCallableMock()
173 device_md5sum_output = [ 177 device_md5sum_output = [
174 '0123456789abcdeffedcba9876543210 ' 178 '0123456789abcdeffedcba9876543210 '
175 '/storage/emulated/legacy/test/file0.dat', 179 '/storage/emulated/legacy/test/file0.dat',
176 '[0819/203513:ERROR:md5sum.cc(25)] Could not open file asdf', 180 '[0819/203513:ERROR:md5sum.cc(25)] Could not open file asdf',
177 '', 181 '',
178 ] 182 ]
179 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output) 183 device.RunShellCommand = mock.Mock(return_value=device_md5sum_output)
180 184
181 out = md5sum.CalculateDeviceMd5Sums(test_path, device) 185 with mock.patch('os.path.getsize', return_value=1337):
182 self.assertEquals(1, len(out)) 186 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
183 self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out) 187 self.assertEquals(1, len(out))
184 self.assertEquals('0123456789abcdeffedcba9876543210', 188 self.assertTrue('/storage/emulated/legacy/test/file0.dat' in out)
185 out['/storage/emulated/legacy/test/file0.dat']) 189 self.assertEquals('0123456789abcdeffedcba9876543210',
186 self.assertEquals(1, len(device.RunShellCommand.call_args_list)) 190 out['/storage/emulated/legacy/test/file0.dat'])
191 self.assertEquals(1, len(device.RunShellCommand.call_args_list))
187 192
188 193
189 def testCalculateDeviceMd5Sums_requiresBinary(self): 194 def testCalculateDeviceMd5Sums_requiresBinary(self):
190 test_path = '/storage/emulated/legacy/test/file.dat' 195 test_path = '/storage/emulated/legacy/test/file.dat'
191 196
192 device = mock.NonCallableMock() 197 device = mock.NonCallableMock()
193 device.adb = mock.NonCallableMock() 198 device.adb = mock.NonCallableMock()
194 device.adb.Push = mock.Mock() 199 device.adb.Push = mock.Mock()
195 device_md5sum_output = [ 200 device_md5sum_output = [
196 'WARNING: linker: /data/local/tmp/md5sum/md5sum_bin: ' 201 'WARNING: linker: /data/local/tmp/md5sum/md5sum_bin: '
197 'unused DT entry: type 0x1d arg 0x15db', 202 'unused DT entry: type 0x1d arg 0x15db',
198 'THIS_IS_NOT_A_VALID_CHECKSUM_ZZZ some random text', 203 'THIS_IS_NOT_A_VALID_CHECKSUM_ZZZ some random text',
199 '0123456789abcdeffedcba9876543210 ' 204 '0123456789abcdeffedcba9876543210 '
200 '/storage/emulated/legacy/test/file.dat', 205 '/storage/emulated/legacy/test/file.dat',
201 ] 206 ]
202 error = device_errors.AdbShellCommandFailedError('cmd', 'out', 2) 207 error = device_errors.AdbShellCommandFailedError('cmd', 'out', 2)
203 device.RunShellCommand = mock.Mock( 208 device.RunShellCommand = mock.Mock(
204 side_effect=(error, device_md5sum_output)) 209 side_effect=(error, device_md5sum_output))
205 210
206 out = md5sum.CalculateDeviceMd5Sums(test_path, device) 211 with mock.patch('os.path.getsize', return_value=1337):
207 self.assertEquals(1, len(out)) 212 out = md5sum.CalculateDeviceMd5Sums(test_path, device)
208 self.assertTrue('/storage/emulated/legacy/test/file.dat' in out) 213 self.assertEquals(1, len(out))
209 self.assertEquals('0123456789abcdeffedcba9876543210', 214 self.assertTrue('/storage/emulated/legacy/test/file.dat' in out)
210 out['/storage/emulated/legacy/test/file.dat']) 215 self.assertEquals('0123456789abcdeffedcba9876543210',
211 self.assertEquals(2, len(device.RunShellCommand.call_args_list)) 216 out['/storage/emulated/legacy/test/file.dat'])
212 device.adb.Push.assert_called_once_with( 217 self.assertEquals(2, len(device.RunShellCommand.call_args_list))
213 'test/out/directory/md5sum_dist', '/data/local/tmp/md5sum/') 218 device.adb.Push.assert_called_once_with(
219 'test/out/directory/md5sum_dist', '/data/local/tmp/md5sum/')
214 220
215 221
216 if __name__ == '__main__': 222 if __name__ == '__main__':
217 unittest.main(verbosity=2) 223 unittest.main(verbosity=2)
218 224
OLDNEW
« no previous file with comments | « build/android/pylib/utils/md5sum.py ('k') | tools/android/md5sum/md5sum.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698