OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 import os | 5 import os |
6 import shutil | 6 import shutil |
7 import subprocess | 7 import subprocess |
8 import sys | 8 import sys |
9 import tempfile | 9 import tempfile |
10 import unittest | 10 import unittest |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 self.assertEqual(p.returncode, 0) | 138 self.assertEqual(p.returncode, 0) |
139 return name | 139 return name |
140 | 140 |
141 def tearDown(self): | 141 def tearDown(self): |
142 if self.tempdir: | 142 if self.tempdir: |
143 shutil.rmtree(self.tempdir) | 143 shutil.rmtree(self.tempdir) |
144 | 144 |
145 def Mktemp(self): | 145 def Mktemp(self): |
146 self.tempdir = tempfile.mkdtemp() | 146 self.tempdir = tempfile.mkdtemp() |
147 | 147 |
148 def CreateNmfUtils(self): | 148 def CreateNmfUtils(self, libdir=None): |
149 libdir = os.path.join(self.toolchain, 'x86_64-nacl', 'lib32') | 149 if not libdir: |
| 150 libdir = os.path.join(self.toolchain, 'x86_64-nacl', 'lib32') |
150 return create_nmf.NmfUtils([self.dyn_nexe], | 151 return create_nmf.NmfUtils([self.dyn_nexe], |
151 lib_path=[libdir], | 152 lib_path=[libdir], |
152 objdump=self.objdump) | 153 objdump=self.objdump) |
153 | 154 |
154 def testGetNeededStatic(self): | 155 def testGetNeededStatic(self): |
155 nexe = os.path.join(DATA_DIR, 'test_static_x86_32.nexe') | 156 nexe = os.path.join(DATA_DIR, 'test_static_x86_32.nexe') |
156 nmf = create_nmf.NmfUtils([nexe]) | 157 nmf = create_nmf.NmfUtils([nexe]) |
157 needed = nmf.GetNeeded() | 158 needed = nmf.GetNeeded() |
158 | 159 |
159 # static nexe should have exactly one needed file | 160 # static nexe should have exactly one needed file |
(...skipping 27 matching lines...) Expand all Loading... |
187 # this nexe has 5 dependencies | 188 # this nexe has 5 dependencies |
188 expected = set(self.dyn_deps) | 189 expected = set(self.dyn_deps) |
189 expected.add(os.path.basename(self.dyn_nexe)) | 190 expected.add(os.path.basename(self.dyn_nexe)) |
190 | 191 |
191 basenames = set(self.StripDependencies(names)) | 192 basenames = set(self.StripDependencies(names)) |
192 self.assertEqual(expected, basenames) | 193 self.assertEqual(expected, basenames) |
193 | 194 |
194 def testStageDependencies(self): | 195 def testStageDependencies(self): |
195 self.Mktemp() | 196 self.Mktemp() |
196 nmf = self.CreateNmfUtils() | 197 nmf = self.CreateNmfUtils() |
| 198 #create_nmf.DebugPrint.debug_mode = True |
| 199 #create_nmf.Trace.verbose = True |
197 | 200 |
198 # Stage dependencies | 201 # Stage dependencies |
199 nmf.StageDependencies(self.tempdir) | 202 nmf.StageDependencies(self.tempdir) |
200 | 203 |
201 # Verify directory contents | 204 # Verify directory contents |
202 contents = set(os.listdir(self.tempdir)) | 205 contents = set(os.listdir(self.tempdir)) |
203 expectedContents = set((os.path.basename(self.dyn_nexe), 'lib32')) | 206 expectedContents = set((os.path.basename(self.dyn_nexe), 'lib32')) |
204 self.assertEqual(contents, expectedContents) | 207 self.assertEqual(contents, expectedContents) |
205 | 208 |
206 contents = os.listdir(os.path.join(self.tempdir, 'lib32')) | 209 contents = os.listdir(os.path.join(self.tempdir, 'lib32')) |
207 contents = self.StripDependencies(contents) | 210 contents = self.StripDependencies(contents) |
208 contents = set(contents) | 211 contents = set(contents) |
209 expectedContents = self.dyn_deps | 212 expectedContents = self.dyn_deps |
210 self.assertEqual(contents, expectedContents) | 213 self.assertEqual(contents, expectedContents) |
211 | 214 |
| 215 def testMissingArchLibrary(self): |
| 216 self.Mktemp() |
| 217 nmf = self.CreateNmfUtils() |
| 218 # CreateNmfUtils uses the 32-bit library path, but not the 64-bit one |
| 219 # so searching for a 32-bit library should succeed while searching for |
| 220 # a 64-bit one should fail. |
| 221 nmf.GleanFromObjdump(['libgcc_s.so.1'], 'x86-32') |
| 222 self.assertRaises(create_nmf.Error, |
| 223 nmf.GleanFromObjdump, ['libgcc_s.so.1'], 'x86-64') |
| 224 |
212 | 225 |
213 if __name__ == '__main__': | 226 if __name__ == '__main__': |
214 unittest.main() | 227 unittest.main() |
OLD | NEW |