| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2013 The Chromium Authors. All rights reserved. | 2 # Copyright 2013 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 unittest | 6 import unittest |
| 7 | 7 |
| 8 from app_yaml_helper import AppYamlHelper | 8 from app_yaml_helper import AppYamlHelper |
| 9 from extensions_paths import SERVER2 |
| 9 from file_system import FileNotFoundError | 10 from file_system import FileNotFoundError |
| 10 from host_file_system_provider import HostFileSystemProvider | 11 from host_file_system_provider import HostFileSystemProvider |
| 11 from mock_file_system import MockFileSystem | 12 from mock_file_system import MockFileSystem |
| 12 from object_store_creator import ObjectStoreCreator | 13 from object_store_creator import ObjectStoreCreator |
| 13 from test_file_system import TestFileSystem | 14 from test_file_system import MoveTo, TestFileSystem |
| 14 from test_util import DisableLogging | 15 from test_util import DisableLogging |
| 15 | 16 |
| 16 _ExtractVersion, _IsGreater, _GenerateAppYaml = ( | 17 _ExtractVersion, _IsGreater, _GenerateAppYaml = ( |
| 17 AppYamlHelper.ExtractVersion, | 18 AppYamlHelper.ExtractVersion, |
| 18 AppYamlHelper.IsGreater, | 19 AppYamlHelper.IsGreater, |
| 19 AppYamlHelper.GenerateAppYaml) | 20 AppYamlHelper.GenerateAppYaml) |
| 20 | 21 |
| 21 class AppYamlHelperTest(unittest.TestCase): | 22 class AppYamlHelperTest(unittest.TestCase): |
| 22 def testExtractVersion(self): | 23 def testExtractVersion(self): |
| 23 def run_test(version): | 24 def run_test(version): |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 assert_is_greater('3-1-0', '2-1-0') | 66 assert_is_greater('3-1-0', '2-1-0') |
| 66 assert_is_greater('3-1-0', '2-11-0') | 67 assert_is_greater('3-1-0', '2-11-0') |
| 67 assert_is_greater('3-1-3', '3-1-0') | 68 assert_is_greater('3-1-3', '3-1-0') |
| 68 assert_is_greater('3-12-0', '3-1-0') | 69 assert_is_greater('3-12-0', '3-1-0') |
| 69 assert_is_greater('3-12-0', '3-1-3') | 70 assert_is_greater('3-12-0', '3-1-3') |
| 70 assert_is_greater('3-12-0', '3-1-3-0') | 71 assert_is_greater('3-12-0', '3-1-3-0') |
| 71 | 72 |
| 72 @DisableLogging('warning') | 73 @DisableLogging('warning') |
| 73 def testInstanceMethods(self): | 74 def testInstanceMethods(self): |
| 74 test_data = { | 75 test_data = { |
| 75 'server2': { | 76 'app.yaml': _GenerateAppYaml('1-0'), |
| 76 'app.yaml': _GenerateAppYaml('1-0'), | 77 'app_yaml_helper.py': 'Copyright notice etc' |
| 77 'app_yaml_helper.py': 'Copyright notice etc' | |
| 78 } | |
| 79 } | 78 } |
| 80 | 79 |
| 81 updates = [] | 80 updates = [] |
| 82 # Pass a specific file system at head to the HostFileSystemProvider so that | 81 # Pass a specific file system at head to the HostFileSystemProvider so that |
| 83 # we know it's always going to be backed by a MockFileSystem. The Provider | 82 # we know it's always going to be backed by a MockFileSystem. The Provider |
| 84 # may decide to wrap it in caching etc. | 83 # may decide to wrap it in caching etc. |
| 85 file_system_at_head = MockFileSystem(TestFileSystem(test_data)) | 84 file_system_at_head = MockFileSystem( |
| 85 TestFileSystem(test_data, relative_to=SERVER2)) |
| 86 | 86 |
| 87 def apply_update(update): | 87 def apply_update(update): |
| 88 update = MoveTo(SERVER2, update) |
| 88 file_system_at_head.Update(update) | 89 file_system_at_head.Update(update) |
| 89 updates.append(update) | 90 updates.append(update) |
| 90 | 91 |
| 91 def host_file_system_constructor(branch, revision=None): | 92 def host_file_system_constructor(branch, revision=None): |
| 92 self.assertEqual('trunk', branch) | 93 self.assertEqual('trunk', branch) |
| 93 self.assertTrue(revision is not None) | 94 self.assertTrue(revision is not None) |
| 94 return MockFileSystem.Create(TestFileSystem(test_data), | 95 return MockFileSystem.Create( |
| 95 updates[:revision]) | 96 TestFileSystem(test_data, relative_to=SERVER2), updates[:revision]) |
| 96 | 97 |
| 97 object_store_creator = ObjectStoreCreator.ForTest() | 98 object_store_creator = ObjectStoreCreator.ForTest() |
| 98 host_file_system_provider = HostFileSystemProvider( | 99 host_file_system_provider = HostFileSystemProvider( |
| 99 object_store_creator, | 100 object_store_creator, |
| 100 default_trunk_instance=file_system_at_head, | 101 default_trunk_instance=file_system_at_head, |
| 101 constructor_for_test=host_file_system_constructor) | 102 constructor_for_test=host_file_system_constructor) |
| 102 helper = AppYamlHelper('server2/app.yaml', | 103 helper = AppYamlHelper(object_store_creator, host_file_system_provider) |
| 103 object_store_creator, | |
| 104 host_file_system_provider) | |
| 105 | 104 |
| 106 def assert_is_up_to_date(version): | 105 def assert_is_up_to_date(version): |
| 107 self.assertTrue(helper.IsUpToDate(version), | 106 self.assertTrue(helper.IsUpToDate(version), |
| 108 '%s is not up to date' % version) | 107 '%s is not up to date' % version) |
| 109 self.assertRaises(ValueError, | 108 self.assertRaises(ValueError, |
| 110 helper.GetFirstRevisionGreaterThan, version) | 109 helper.GetFirstRevisionGreaterThan, version) |
| 111 | 110 |
| 112 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) | 111 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) |
| 113 assert_is_up_to_date('1-0-0') | 112 assert_is_up_to_date('1-0-0') |
| 114 assert_is_up_to_date('1-5-0') | 113 assert_is_up_to_date('1-5-0') |
| 115 | 114 |
| 116 # Revision 1. | 115 # Revision 1. |
| 117 apply_update({'server2': { | 116 apply_update({ |
| 118 'app.yaml': _GenerateAppYaml('1-5-0') | 117 'app.yaml': _GenerateAppYaml('1-5-0') |
| 119 }}) | 118 }) |
| 120 | 119 |
| 121 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) | 120 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) |
| 122 self.assertEqual(1, helper.GetFirstRevisionGreaterThan('1-0-0')) | 121 self.assertEqual(1, helper.GetFirstRevisionGreaterThan('1-0-0')) |
| 123 assert_is_up_to_date('1-5-0') | 122 assert_is_up_to_date('1-5-0') |
| 124 assert_is_up_to_date('2-5-0') | 123 assert_is_up_to_date('2-5-0') |
| 125 | 124 |
| 126 # Revision 2. | 125 # Revision 2. |
| 127 apply_update({'server2': { | 126 apply_update({ |
| 128 'app_yaml_helper.py': 'fixed a bug' | 127 'app_yaml_helper.py': 'fixed a bug' |
| 129 }}) | 128 }) |
| 130 | 129 |
| 131 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) | 130 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) |
| 132 self.assertEqual(1, helper.GetFirstRevisionGreaterThan('1-0-0')) | 131 self.assertEqual(1, helper.GetFirstRevisionGreaterThan('1-0-0')) |
| 133 assert_is_up_to_date('1-5-0') | 132 assert_is_up_to_date('1-5-0') |
| 134 assert_is_up_to_date('2-5-0') | 133 assert_is_up_to_date('2-5-0') |
| 135 | 134 |
| 136 # Revision 3. | 135 # Revision 3. |
| 137 apply_update({'server2': { | 136 apply_update({ |
| 138 'app.yaml': _GenerateAppYaml('1-6-0') | 137 'app.yaml': _GenerateAppYaml('1-6-0') |
| 139 }}) | 138 }) |
| 140 | 139 |
| 141 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) | 140 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) |
| 142 self.assertEqual(1, helper.GetFirstRevisionGreaterThan('1-0-0')) | 141 self.assertEqual(1, helper.GetFirstRevisionGreaterThan('1-0-0')) |
| 143 self.assertEqual(3, helper.GetFirstRevisionGreaterThan('1-5-0')) | 142 self.assertEqual(3, helper.GetFirstRevisionGreaterThan('1-5-0')) |
| 144 assert_is_up_to_date('2-5-0') | 143 assert_is_up_to_date('2-5-0') |
| 145 | 144 |
| 146 # Revision 4. | 145 # Revision 4. |
| 147 apply_update({'server2': { | 146 apply_update({ |
| 148 'app.yaml': _GenerateAppYaml('1-8-0') | 147 'app.yaml': _GenerateAppYaml('1-8-0') |
| 149 }}) | 148 }) |
| 150 # Revision 5. | 149 # Revision 5. |
| 151 apply_update({'server2': { | 150 apply_update({ |
| 152 'app.yaml': _GenerateAppYaml('2-0-0') | 151 'app.yaml': _GenerateAppYaml('2-0-0') |
| 153 }}) | 152 }) |
| 154 # Revision 6. | 153 # Revision 6. |
| 155 apply_update({'server2': { | 154 apply_update({ |
| 156 'app.yaml': _GenerateAppYaml('2-2-0') | 155 'app.yaml': _GenerateAppYaml('2-2-0') |
| 157 }}) | 156 }) |
| 158 # Revision 7. | 157 # Revision 7. |
| 159 apply_update({'server2': { | 158 apply_update({ |
| 160 'app.yaml': _GenerateAppYaml('2-4-0') | 159 'app.yaml': _GenerateAppYaml('2-4-0') |
| 161 }}) | 160 }) |
| 162 # Revision 8. | 161 # Revision 8. |
| 163 apply_update({'server2': { | 162 apply_update({ |
| 164 'app.yaml': _GenerateAppYaml('2-6-0') | 163 'app.yaml': _GenerateAppYaml('2-6-0') |
| 165 }}) | 164 }) |
| 166 | 165 |
| 167 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) | 166 self.assertEqual(0, helper.GetFirstRevisionGreaterThan('0-5-0')) |
| 168 self.assertEqual(1, helper.GetFirstRevisionGreaterThan('1-0-0')) | 167 self.assertEqual(1, helper.GetFirstRevisionGreaterThan('1-0-0')) |
| 169 self.assertEqual(3, helper.GetFirstRevisionGreaterThan('1-5-0')) | 168 self.assertEqual(3, helper.GetFirstRevisionGreaterThan('1-5-0')) |
| 170 self.assertEqual(5, helper.GetFirstRevisionGreaterThan('1-8-0')) | 169 self.assertEqual(5, helper.GetFirstRevisionGreaterThan('1-8-0')) |
| 171 self.assertEqual(6, helper.GetFirstRevisionGreaterThan('2-0-0')) | 170 self.assertEqual(6, helper.GetFirstRevisionGreaterThan('2-0-0')) |
| 172 self.assertEqual(6, helper.GetFirstRevisionGreaterThan('2-1-0')) | 171 self.assertEqual(6, helper.GetFirstRevisionGreaterThan('2-1-0')) |
| 173 self.assertEqual(7, helper.GetFirstRevisionGreaterThan('2-2-0')) | 172 self.assertEqual(7, helper.GetFirstRevisionGreaterThan('2-2-0')) |
| 174 self.assertEqual(7, helper.GetFirstRevisionGreaterThan('2-3-0')) | 173 self.assertEqual(7, helper.GetFirstRevisionGreaterThan('2-3-0')) |
| 175 self.assertEqual(8, helper.GetFirstRevisionGreaterThan('2-4-0')) | 174 self.assertEqual(8, helper.GetFirstRevisionGreaterThan('2-4-0')) |
| 176 self.assertEqual(8, helper.GetFirstRevisionGreaterThan('2-5-0')) | 175 self.assertEqual(8, helper.GetFirstRevisionGreaterThan('2-5-0')) |
| 177 assert_is_up_to_date('2-6-0') | 176 assert_is_up_to_date('2-6-0') |
| 178 assert_is_up_to_date('2-7-0') | 177 assert_is_up_to_date('2-7-0') |
| 179 | 178 |
| 180 if __name__ == '__main__': | 179 if __name__ == '__main__': |
| 181 unittest.main() | 180 unittest.main() |
| OLD | NEW |