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

Side by Side Diff: build/android/pylib/device/device_utils_device_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
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2015 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 """
7 Unit tests for the contents of device_utils.py (mostly DeviceUtils).
8 The test will invoke real devices
9 """
10
11 import os
12 import tempfile
13 import unittest
14
15 from pylib import cmd_helper
16 from pylib import constants
17 from pylib.device import adb_wrapper
18 from pylib.device import device_utils
19 from pylib.utils import md5sum
20
21 _OLD_CONTENTS = "foo"
22 _NEW_CONTENTS = "bar"
23 _DEVICE_DIR = "/data/local/tmp/device_utils_test"
24 _SUB_DIR = "sub"
25 _SUB_DIR1 = "sub1"
26 _SUB_DIR2 = "sub2"
27
28 class DeviceUtilsPushDeleteFilesTest(unittest.TestCase):
29
30 def setUp(self):
31 devices = adb_wrapper.AdbWrapper.Devices()
32 assert devices, 'A device must be attached'
33 self.adb = devices[0]
34 self.adb.WaitForDevice()
35 self.device = device_utils.DeviceUtils(
36 self.adb, default_timeout=10, default_retries=0)
37 default_build_type = os.environ.get('BUILDTYPE', 'Debug')
38 constants.SetBuildType(default_build_type)
39
40 @staticmethod
41 def _MakeTempFile(contents):
42 """Make a temporary file with the given contents.
43
44 Args:
45 contents: string to write to the temporary file.
46
47 Returns:
48 the tuple contains the absolute path to the file and the file name
49 """
50 fi, path = tempfile.mkstemp(text=True)
51 with os.fdopen(fi, 'w') as f:
52 f.write(contents)
53 file_name = os.path.basename(path)
54 return (path, file_name)
55
56 @staticmethod
57 def _MakeTempFileGivenDir(directory, contents):
58 """Make a temporary file under the given directory
59 with the given contents
60
61 Args:
62 directory: the temp directory to create the file
63 contents: string to write to the temp file
64
65 Returns:
66 the list contains the absolute path to the file and the file name
67 """
68 fi, path = tempfile.mkstemp(dir=directory, text=True)
69 with os.fdopen(fi, 'w') as f:
70 f.write(contents)
71 file_name = os.path.basename(path)
72 return (path, file_name)
73
74 @staticmethod
75 def _ChangeTempFile(path, contents):
76 with os.open(path, 'w') as f:
77 f.write(contents)
78
79 @staticmethod
80 def _DeleteTempFile(path):
81 os.remove(path)
82
83 def testPushChangedFiles_noFileChange(self):
84 (host_file_path, file_name) = self._MakeTempFile(_OLD_CONTENTS)
85 device_file_path = "%s/%s" % (_DEVICE_DIR, file_name)
86 self.adb.Push(host_file_path, device_file_path)
87 self.device.PushChangedFiles([(host_file_path, device_file_path)])
88 result = self.device.RunShellCommand(['cat', device_file_path],
89 single_line=True)
90 self.assertEqual(_OLD_CONTENTS, result)
91
92 cmd_helper.RunCmd(['rm', host_file_path])
93 self.device.RunShellCommand(['rm', '-rf', _DEVICE_DIR])
94
95 def testPushChangedFiles_singleFileChange(self):
96 (host_file_path, file_name) = self._MakeTempFile(_OLD_CONTENTS)
97 device_file_path = "%s/%s" % (_DEVICE_DIR, file_name)
98 self.adb.Push(host_file_path, device_file_path)
99
100 with open(host_file_path, 'w') as f:
101 f.write(_NEW_CONTENTS)
102 self.device.PushChangedFiles([(host_file_path, device_file_path)])
103 result = self.device.RunShellCommand(['cat', device_file_path],
104 single_line=True)
105 self.assertEqual(_NEW_CONTENTS, result)
106
107 cmd_helper.RunCmd(['rm', host_file_path])
108 self.device.RunShellCommand(['rm', '-rf', _DEVICE_DIR])
109
110 def testDeleteFiles(self):
111 host_tmp_dir = tempfile.mkdtemp()
112 (host_file_path, file_name) = self._MakeTempFileGivenDir(
113 host_tmp_dir, _OLD_CONTENTS)
114
115 device_file_path = "%s/%s" % (_DEVICE_DIR, file_name)
116 self.adb.Push(host_file_path, device_file_path)
117
118 cmd_helper.RunCmd(['rm', host_file_path])
119 self.device.PushChangedFiles([(host_tmp_dir, _DEVICE_DIR)],
120 delete_device_stale=True)
121 result = self.device.RunShellCommand(['ls', _DEVICE_DIR], single_line=True)
122 self.assertEqual('', result)
123
124 cmd_helper.RunCmd(['rm', '-rf', host_tmp_dir])
125 self.device.RunShellCommand(['rm', '-rf', _DEVICE_DIR])
126
127 def testPushAndDeleteFiles_noSubDir(self):
128 host_tmp_dir = tempfile.mkdtemp()
129 (host_file_path1, file_name1) = self._MakeTempFileGivenDir(
130 host_tmp_dir, _OLD_CONTENTS)
131 (host_file_path2, file_name2) = self._MakeTempFileGivenDir(
132 host_tmp_dir, _OLD_CONTENTS)
133
134 device_file_path1 = "%s/%s" % (_DEVICE_DIR, file_name1)
135 device_file_path2 = "%s/%s" % (_DEVICE_DIR, file_name2)
136 self.adb.Push(host_file_path1, device_file_path1)
137 self.adb.Push(host_file_path2, device_file_path2)
138
139 with open(host_file_path1, 'w') as f:
140 f.write(_NEW_CONTENTS)
141 cmd_helper.RunCmd(['rm', host_file_path2])
142
143 self.device.PushChangedFiles([(host_tmp_dir, _DEVICE_DIR)],
144 delete_device_stale=True)
145 result = self.device.RunShellCommand(['cat', device_file_path1],
146 single_line=True)
147 self.assertEqual(_NEW_CONTENTS, result)
148 result = self.device.RunShellCommand(['ls', _DEVICE_DIR], single_line=True)
149 self.assertEqual(file_name1, result)
150
151 self.device.RunShellCommand(['rm', '-rf', _DEVICE_DIR])
152 cmd_helper.RunCmd(['rm', '-rf', host_tmp_dir])
153
154 def testPushAndDeleteFiles_SubDir(self):
155 host_tmp_dir = tempfile.mkdtemp()
156 host_sub_dir1 = "%s/%s" % (host_tmp_dir, _SUB_DIR1)
157 host_sub_dir2 = "%s/%s/%s" % (host_tmp_dir, _SUB_DIR, _SUB_DIR2)
158 cmd_helper.RunCmd(['mkdir', '-p', host_sub_dir1])
159 cmd_helper.RunCmd(['mkdir', '-p', host_sub_dir2])
160
161 (host_file_path1, file_name1) = self._MakeTempFileGivenDir(
162 host_tmp_dir, _OLD_CONTENTS)
163 (host_file_path2, file_name2) = self._MakeTempFileGivenDir(
164 host_tmp_dir, _OLD_CONTENTS)
165 (host_file_path3, file_name3) = self._MakeTempFileGivenDir(
166 host_sub_dir1, _OLD_CONTENTS)
167 (host_file_path4, file_name4) = self._MakeTempFileGivenDir(
168 host_sub_dir2, _OLD_CONTENTS)
169
170 device_file_path1 = "%s/%s" % (_DEVICE_DIR, file_name1)
171 device_file_path2 = "%s/%s" % (_DEVICE_DIR, file_name2)
172 device_file_path3 = "%s/%s/%s" % (_DEVICE_DIR, _SUB_DIR1, file_name3)
173 device_file_path4 = "%s/%s/%s/%s" % (_DEVICE_DIR, _SUB_DIR,
174 _SUB_DIR2, file_name4)
175
176 self.adb.Push(host_file_path1, device_file_path1)
177 self.adb.Push(host_file_path2, device_file_path2)
178 self.adb.Push(host_file_path3, device_file_path3)
179 self.adb.Push(host_file_path4, device_file_path4)
180
181 with open(host_file_path1, 'w') as f:
182 f.write(_NEW_CONTENTS)
183 cmd_helper.RunCmd(['rm', host_file_path2])
184 cmd_helper.RunCmd(['rm', host_file_path4])
185
186 self.device.PushChangedFiles([(host_tmp_dir, _DEVICE_DIR)],
187 delete_device_stale=True)
188 result = self.device.RunShellCommand(['cat', device_file_path1],
189 single_line=True)
190 self.assertEqual(_NEW_CONTENTS, result)
191
192 result = self.device.RunShellCommand(['ls', _DEVICE_DIR])
193 self.assertIn(file_name1, result)
194 self.assertIn(_SUB_DIR1, result)
195 self.assertIn(_SUB_DIR, result)
196 self.assertEqual(3, len(result))
197
198 result = self.device.RunShellCommand(['cat', device_file_path3],
199 single_line=True)
200 self.assertEqual(_OLD_CONTENTS, result)
201
202 result = self.device.RunShellCommand(["ls", "%s/%s/%s"
203 % (_DEVICE_DIR, _SUB_DIR, _SUB_DIR2)],
204 single_line=True)
205 self.assertEqual('', result)
206
207 self.device.RunShellCommand(['rm', '-rf', _DEVICE_DIR])
208 cmd_helper.RunCmd(['rm', '-rf', host_tmp_dir])
209
210 if __name__ == '__main__':
211 unittest.main()
OLDNEW
« no previous file with comments | « build/android/pylib/device/device_utils.py ('k') | build/android/pylib/device/device_utils_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698