| 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 | 5 |
| 6 import optparse | 6 import optparse |
| 7 import os | 7 import os |
| 8 import shutil | 8 import shutil |
| 9 import sys | 9 import sys |
| 10 import tempfile | 10 import tempfile |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 'buildtype': ['dev'], | 103 'buildtype': ['dev'], |
| 104 'archive': 'renamed_direct_archive.txt', | 104 'archive': 'renamed_direct_archive.txt', |
| 105 'direct_archive': 1, | 105 'direct_archive': 1, |
| 106 }, | 106 }, |
| 107 { | 107 { |
| 108 'filename': 'dev64_implied_direct_archive.txt', | 108 'filename': 'dev64_implied_direct_archive.txt', |
| 109 'arch': ['64bit'], | 109 'arch': ['64bit'], |
| 110 'buildtype': ['dev'], | 110 'buildtype': ['dev'], |
| 111 'archive': 'dev64_implied_direct_archive.txt', | 111 'archive': 'dev64_implied_direct_archive.txt', |
| 112 }, | 112 }, |
| 113 { |
| 114 'filename': 'archive_1.txt', |
| 115 'buildtype': ['dev'], |
| 116 'archive': 'archive_1.zip', |
| 117 }, |
| 118 { |
| 119 'filename': 'archive_2.txt', |
| 120 'buildtype': ['dev'], |
| 121 'archive': 'archive_2.zip', |
| 122 }, |
| 123 { |
| 124 'filename': 'multiple_archive.txt', |
| 125 'buildtype': ['dev'], |
| 126 'archive': 'archive_1.zip', |
| 127 }, |
| 128 { |
| 129 'filename': 'multiple_archive.txt', |
| 130 'buildtype': ['dev'], |
| 131 'archive': 'archive_2.zip', |
| 132 }, |
| 113 ] | 133 ] |
| 114 | 134 |
| 115 | 135 |
| 116 def CreateTestFilesCfg(path): | 136 def CreateTestFilesCfg(path): |
| 117 files_cfg = os.path.join(path, archive_utils.FILES_FILENAME) | 137 files_cfg = os.path.join(path, archive_utils.FILES_FILENAME) |
| 118 f = open(files_cfg, 'w') | 138 f = open(files_cfg, 'w') |
| 119 f.write('FILES = %s' % str(TEST_FILES_CFG)) | 139 f.write('FILES = %s' % str(TEST_FILES_CFG)) |
| 120 f.close() | 140 f.close() |
| 121 return files_cfg | 141 return files_cfg |
| 122 | 142 |
| (...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 self.assertNotIn(i['filename'], files_list) | 344 self.assertNotIn(i['filename'], files_list) |
| 325 else: | 345 else: |
| 326 self.assertIn(i['filename'], files_list) | 346 self.assertIn(i['filename'], files_list) |
| 327 files_list.remove(i['filename']) | 347 files_list.remove(i['filename']) |
| 328 # No duplicate files. | 348 # No duplicate files. |
| 329 self.assertEqual(files_list.count(i['filename']), 0) | 349 self.assertEqual(files_list.count(i['filename']), 0) |
| 330 # No unexpected files. | 350 # No unexpected files. |
| 331 self.assertEqual(len(files_list), 0) | 351 self.assertEqual(len(files_list), 0) |
| 332 | 352 |
| 333 def testParseArchiveLists(self): | 353 def testParseArchiveLists(self): |
| 334 ARCHIVENAME = 'static_archive.zip' | 354 STATIC_ARCHIVE = 'static_archive.zip' |
| 355 ARCHIVE_1 = 'archive_1.zip' |
| 356 ARCHIVE_2 = 'archive_2.zip' |
| 357 ARCHIVENAMES = [STATIC_ARCHIVE, ARCHIVE_1, ARCHIVE_2] |
| 335 files_cfg = CreateTestFilesCfg(self.temp_dir) | 358 files_cfg = CreateTestFilesCfg(self.temp_dir) |
| 336 arch = '64bit' | 359 arch = '64bit' |
| 337 buildtype = 'official' | 360 buildtype = 'official' |
| 338 fparser = archive_utils.FilesCfgParser(files_cfg, buildtype, arch) | 361 fparser = archive_utils.FilesCfgParser(files_cfg, buildtype, arch) |
| 339 archives = fparser.ParseArchiveLists() | 362 archives = fparser.ParseArchiveLists() |
| 340 self.assertEqual(archives.keys(), [ARCHIVENAME]) | 363 self.assertEqual(archives.keys(), [STATIC_ARCHIVE]) |
| 341 self.assertEqual([x['filename'] for x in archives[ARCHIVENAME]], | 364 self.assertItemsEqual([x['filename'] for x in archives[STATIC_ARCHIVE]], |
| 342 ['archive_allany.txt', 'subdirectory/archive_allany.txt']) | 365 ['archive_allany.txt', 'subdirectory/archive_allany.txt']) |
| 343 | 366 |
| 344 # 32bit dev has additional files under the same archive name. | 367 # 32bit dev has additional files under the same archive name. |
| 345 arch = '32bit' | 368 arch = '32bit' |
| 346 buildtype = 'dev' | 369 buildtype = 'dev' |
| 347 fparser = archive_utils.FilesCfgParser(files_cfg, buildtype, arch) | 370 fparser = archive_utils.FilesCfgParser(files_cfg, buildtype, arch) |
| 348 archives = fparser.ParseArchiveLists() | 371 archives = fparser.ParseArchiveLists() |
| 349 self.assertEqual(archives.keys(), [ARCHIVENAME]) | 372 self.assertEqual(archives.keys(), ARCHIVENAMES) |
| 350 self.assertEqual([x['filename'] for x in archives[ARCHIVENAME]], | 373 self.assertItemsEqual([x['filename'] for x in archives[STATIC_ARCHIVE]], |
| 351 ['archive_allany.txt', 'subdirectory/archive_allany.txt', | 374 ['archive_allany.txt', 'subdirectory/archive_allany.txt', |
| 352 'subdirectory/archive_dev32.txt']) | 375 'subdirectory/archive_dev32.txt']) |
| 376 self.assertItemsEqual([x['filename'] for x in archives[ARCHIVE_1]], |
| 377 ['multiple_archive.txt', 'archive_1.txt']) |
| 378 self.assertItemsEqual([x['filename'] for x in archives[ARCHIVE_2]], |
| 379 ['multiple_archive.txt', 'archive_2.txt']) |
| 353 | 380 |
| 354 def testOptionalFiles(self): | 381 def testOptionalFiles(self): |
| 355 files_cfg = CreateTestFilesCfg(self.temp_dir) | 382 files_cfg = CreateTestFilesCfg(self.temp_dir) |
| 356 optional_fn = 'allany_dev_optional.txt' | 383 optional_fn = 'allany_dev_optional.txt' |
| 357 arch = '64bit' | 384 arch = '64bit' |
| 358 buildtype = 'dev' | 385 buildtype = 'dev' |
| 359 fparser = archive_utils.FilesCfgParser(files_cfg, buildtype, arch) | 386 fparser = archive_utils.FilesCfgParser(files_cfg, buildtype, arch) |
| 360 self.assertTrue(fparser.IsOptional(optional_fn)) | 387 self.assertTrue(fparser.IsOptional(optional_fn)) |
| 388 non_existent_fn = 'non_existent_fn.txt' |
| 389 self.assertFalse(fparser.IsOptional(non_existent_fn)) |
| 361 | 390 |
| 362 # It's only optional for 'dev' builds. | 391 # It's only optional for 'dev' builds. |
| 363 buildtype = 'official' | 392 buildtype = 'official' |
| 364 fparser = archive_utils.FilesCfgParser(files_cfg, buildtype, arch) | 393 fparser = archive_utils.FilesCfgParser(files_cfg, buildtype, arch) |
| 365 self.assertFalse(fparser.IsOptional(optional_fn)) | 394 self.assertFalse(fparser.IsOptional(optional_fn)) |
| 366 | 395 |
| 367 def testDirectArchive(self): | 396 def testDirectArchive(self): |
| 368 files_cfg = CreateTestFilesCfg(self.temp_dir) | 397 files_cfg = CreateTestFilesCfg(self.temp_dir) |
| 369 arch = '64bit' | 398 arch = '64bit' |
| 370 buildtype = 'dev' | 399 buildtype = 'dev' |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) | 633 sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) |
| 605 svn_client = pysvn.Client() | 634 svn_client = pysvn.Client() |
| 606 DiffFilesCfg(RealFilesCfgTest.WIN_PATH, svn_client) | 635 DiffFilesCfg(RealFilesCfgTest.WIN_PATH, svn_client) |
| 607 DiffFilesCfg(RealFilesCfgTest.LINUX_PATH, svn_client) | 636 DiffFilesCfg(RealFilesCfgTest.LINUX_PATH, svn_client) |
| 608 DiffFilesCfg(RealFilesCfgTest.MAC_PATH, svn_client) | 637 DiffFilesCfg(RealFilesCfgTest.MAC_PATH, svn_client) |
| 609 DiffFilesCfg(RealFilesCfgTest.CROS_PATH, svn_client) | 638 DiffFilesCfg(RealFilesCfgTest.CROS_PATH, svn_client) |
| 610 | 639 |
| 611 # Specify error return so caller (e.g. shell script) can easily detect | 640 # Specify error return so caller (e.g. shell script) can easily detect |
| 612 # failures. | 641 # failures. |
| 613 sys.exit(errors) | 642 sys.exit(errors) |
| OLD | NEW |