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