| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2015 The LUCI Authors. All rights reserved. | 2 # Copyright 2015 The LUCI Authors. All rights reserved. |
| 3 # Use of this source code is governed under the Apache License, Version 2.0 | 3 # Use of this source code is governed under the Apache License, Version 2.0 |
| 4 # that can be found in the LICENSE file. | 4 # that can be found in the LICENSE file. |
| 5 | 5 |
| 6 import copy | 6 import copy |
| 7 import doctest | 7 import doctest |
| 8 import os | 8 import os |
| 9 import subprocess | 9 import subprocess |
| 10 import unittest | 10 import unittest |
| 11 | 11 |
| 12 import repo_test_util | 12 import repo_test_util |
| 13 | 13 |
| 14 import mock | 14 import mock |
| 15 |
| 16 from recipe_engine import fetch |
| 15 from recipe_engine import package | 17 from recipe_engine import package |
| 16 | 18 |
| 17 | |
| 18 TEST_AUTHOR = 'foo@example.com' | 19 TEST_AUTHOR = 'foo@example.com' |
| 19 | 20 |
| 20 | 21 |
| 21 class MockIOThings(object): | 22 class MockIOThings(object): |
| 22 def setUp(self): | 23 def setUp(self): |
| 23 super(MockIOThings, self).setUp() | 24 super(MockIOThings, self).setUp() |
| 24 | 25 |
| 25 self.mock_os_patcher = mock.patch('recipe_engine.package.os') | 26 self.mock_os_patcher = mock.patch('recipe_engine.package.os') |
| 26 self.mock_os = self.mock_os_patcher.start() | 27 self.mock_os = self.mock_os_patcher.start() |
| 27 self.mock_os.path.join = os.path.join | 28 self.mock_os.path.join = os.path.join |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 def write(self, buf): | 376 def write(self, buf): |
| 376 pass | 377 pass |
| 377 | 378 |
| 378 | 379 |
| 379 class TestPackageSpec(MockIOThings, unittest.TestCase): | 380 class TestPackageSpec(MockIOThings, unittest.TestCase): |
| 380 def setUp(self): | 381 def setUp(self): |
| 381 super(TestPackageSpec, self).setUp() | 382 super(TestPackageSpec, self).setUp() |
| 382 | 383 |
| 383 self.proto_text = '\n'.join([ | 384 self.proto_text = '\n'.join([ |
| 384 '{', | 385 '{', |
| 385 ' "api_version": 1,', | 386 ' "api_version": 2,', |
| 386 ' "deps": [', | 387 ' "deps": {', |
| 387 ' {', | 388 ' "bar": {', |
| 388 ' "branch": "superbar",', | 389 ' "branch": "superbar",', |
| 389 ' "project_id": "bar",', | |
| 390 ' "revision": "deadd00d",', | 390 ' "revision": "deadd00d",', |
| 391 ' "url": "https://repo.com/bar.git"', | 391 ' "url": "https://repo.com/bar.git"', |
| 392 ' },', | 392 ' },', |
| 393 ' {', | 393 ' "foo": {', |
| 394 ' "branch": "master",', | 394 ' "branch": "master",', |
| 395 ' "project_id": "foo",', | |
| 396 ' "revision": "cafebeef",', | 395 ' "revision": "cafebeef",', |
| 397 ' "url": "https://repo.com/foo.git"', | 396 ' "url": "https://repo.com/foo.git"', |
| 398 ' }', | 397 ' }', |
| 399 ' ],', | 398 ' },', |
| 400 ' "project_id": "super_main_package",', | 399 ' "project_id": "super_main_package",', |
| 401 ' "recipes_path": "path/to/recipes"', | 400 ' "recipes_path": "path/to/recipes"', |
| 402 '}', | 401 '}', |
| 403 ]) | 402 ]) |
| 404 self.proto_file = MockProtoFile('repo/root/infra/config/recipes.cfg', | 403 self.proto_file = MockProtoFile('repo/root/infra/config/recipes.cfg', |
| 405 self.proto_text) | 404 self.proto_text) |
| 406 self.context = package.PackageContext.from_proto_file( | 405 self.context = package.PackageContext.from_proto_file( |
| 407 'repo/root', self.proto_file, allow_fetch=False) | 406 'repo/root', self.proto_file, allow_fetch=False) |
| 408 | 407 |
| 409 def test_dump_load_inverses(self): | 408 def test_dump_load_inverses(self): |
| (...skipping 17 matching lines...) Expand all Loading... |
| 427 proto_text = """{ | 426 proto_text = """{ |
| 428 "project_id": "foo", | 427 "project_id": "foo", |
| 429 "recipes_path": "path/to/recipes" | 428 "recipes_path": "path/to/recipes" |
| 430 } | 429 } |
| 431 """ | 430 """ |
| 432 proto_file = MockProtoFile('repo/root/infra/config/recipes.cfg', proto_text) | 431 proto_file = MockProtoFile('repo/root/infra/config/recipes.cfg', proto_text) |
| 433 | 432 |
| 434 with self.assertRaises(AssertionError): | 433 with self.assertRaises(AssertionError): |
| 435 package.PackageSpec.load_proto(proto_file) | 434 package.PackageSpec.load_proto(proto_file) |
| 436 | 435 |
| 436 def test_old_deps(self): |
| 437 proto_text = '\n'.join([ |
| 438 '{', |
| 439 ' "api_version": 1,', |
| 440 ' "deps": [', |
| 441 ' {', |
| 442 ' "branch": "superbar",', |
| 443 ' "project_id": "bar",', |
| 444 ' "revision": "deadd00d",', |
| 445 ' "url": "https://repo.com/bar.git"', |
| 446 ' },', |
| 447 ' {', |
| 448 ' "branch": "master",', |
| 449 ' "project_id": "foo",', |
| 450 ' "revision": "cafebeef",', |
| 451 ' "url": "https://repo.com/foo.git"', |
| 452 ' }', |
| 453 ' ],', |
| 454 ' "project_id": "super_main_package",', |
| 455 ' "recipes_path": "path/to/recipes"', |
| 456 '}', |
| 457 ]) |
| 458 proto_file = MockProtoFile('repo/root/infra/config/recipes.cfg', proto_text) |
| 459 |
| 460 spec = package.PackageSpec.load_proto(proto_file) |
| 461 self.assertEqual(spec.deps['foo'], package.GitRepoSpec( |
| 462 'foo', |
| 463 'https://repo.com/foo.git', |
| 464 'master', |
| 465 'cafebeef', |
| 466 '', |
| 467 fetch.GitBackend() |
| 468 )) |
| 469 self.assertEqual(proto_file.to_raw(spec.dump()), proto_text) |
| 470 |
| 471 |
| 437 def test_unsupported_version(self): | 472 def test_unsupported_version(self): |
| 438 proto_text = """{ | 473 proto_text = """{ |
| 439 "api_version": 99999999, | 474 "api_version": 99999999, |
| 440 "project_id": "fizzbar", | 475 "project_id": "fizzbar", |
| 441 "recipes_path": "path/to/recipes" | 476 "recipes_path": "path/to/recipes" |
| 442 }""" | 477 }""" |
| 443 proto_file = MockProtoFile('repo/root/infra/config/recipes.cfg', proto_text) | 478 proto_file = MockProtoFile('repo/root/infra/config/recipes.cfg', proto_text) |
| 444 | 479 |
| 445 with self.assertRaises(AssertionError): | 480 with self.assertRaises(AssertionError): |
| 446 package.PackageSpec.load_proto(proto_file) | 481 package.PackageSpec.load_proto(proto_file) |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 self.assertFalse(checkout.called) | 522 self.assertFalse(checkout.called) |
| 488 | 523 |
| 489 | 524 |
| 490 def load_tests(_loader, tests, _ignore): | 525 def load_tests(_loader, tests, _ignore): |
| 491 tests.addTests(doctest.DocTestSuite(package)) | 526 tests.addTests(doctest.DocTestSuite(package)) |
| 492 return tests | 527 return tests |
| 493 | 528 |
| 494 | 529 |
| 495 if __name__ == '__main__': | 530 if __name__ == '__main__': |
| 496 result = unittest.main() | 531 result = unittest.main() |
| OLD | NEW |