diff options
Diffstat (limited to 'tests/test_git_superproject.py')
-rw-r--r-- | tests/test_git_superproject.py | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/tests/test_git_superproject.py b/tests/test_git_superproject.py index 707f7dab..ba61a3d1 100644 --- a/tests/test_git_superproject.py +++ b/tests/test_git_superproject.py | |||
@@ -139,9 +139,9 @@ class SuperprojectTestCase(unittest.TestCase): | |||
139 | manifest_path = self._superproject._WriteManfiestFile() | 139 | manifest_path = self._superproject._WriteManfiestFile() |
140 | self.assertIsNotNone(manifest_path) | 140 | self.assertIsNotNone(manifest_path) |
141 | with open(manifest_path, 'r') as fp: | 141 | with open(manifest_path, 'r') as fp: |
142 | manifest_xml = fp.read() | 142 | manifest_xml_data = fp.read() |
143 | self.assertEqual( | 143 | self.assertEqual( |
144 | sort_attributes(manifest_xml), | 144 | sort_attributes(manifest_xml_data), |
145 | '<?xml version="1.0" ?><manifest>' | 145 | '<?xml version="1.0" ?><manifest>' |
146 | '<remote fetch="http://localhost" name="default-remote"/>' | 146 | '<remote fetch="http://localhost" name="default-remote"/>' |
147 | '<default remote="default-remote" revision="refs/heads/main"/>' | 147 | '<default remote="default-remote" revision="refs/heads/main"/>' |
@@ -166,9 +166,9 @@ class SuperprojectTestCase(unittest.TestCase): | |||
166 | manifest_path = self._superproject.UpdateProjectsRevisionId(projects) | 166 | manifest_path = self._superproject.UpdateProjectsRevisionId(projects) |
167 | self.assertIsNotNone(manifest_path) | 167 | self.assertIsNotNone(manifest_path) |
168 | with open(manifest_path, 'r') as fp: | 168 | with open(manifest_path, 'r') as fp: |
169 | manifest_xml = fp.read() | 169 | manifest_xml_data = fp.read() |
170 | self.assertEqual( | 170 | self.assertEqual( |
171 | sort_attributes(manifest_xml), | 171 | sort_attributes(manifest_xml_data), |
172 | '<?xml version="1.0" ?><manifest>' | 172 | '<?xml version="1.0" ?><manifest>' |
173 | '<remote fetch="http://localhost" name="default-remote"/>' | 173 | '<remote fetch="http://localhost" name="default-remote"/>' |
174 | '<default remote="default-remote" revision="refs/heads/main"/>' | 174 | '<default remote="default-remote" revision="refs/heads/main"/>' |
@@ -178,6 +178,54 @@ class SuperprojectTestCase(unittest.TestCase): | |||
178 | '<superproject name="superproject"/>' | 178 | '<superproject name="superproject"/>' |
179 | '</manifest>') | 179 | '</manifest>') |
180 | 180 | ||
181 | def test_superproject_update_project_revision_id_from_local_manifest_group(self): | ||
182 | """Test update of commit ids of a manifest that have local manifest no superproject group.""" | ||
183 | local_group = manifest_xml.LOCAL_MANIFEST_GROUP_PREFIX + ':local' | ||
184 | manifest = self.getXmlManifest(""" | ||
185 | <manifest> | ||
186 | <remote name="default-remote" fetch="http://localhost" /> | ||
187 | <remote name="goog" fetch="http://localhost2" /> | ||
188 | <default remote="default-remote" revision="refs/heads/main" /> | ||
189 | <superproject name="superproject"/> | ||
190 | <project path="vendor/x" name="platform/vendor/x" remote="goog" | ||
191 | groups=\"""" + local_group + """ | ||
192 | " revision="master-with-vendor" clone-depth="1" /> | ||
193 | <project path="art" name="platform/art" groups="notdefault,platform-""" + self.platform + """ | ||
194 | " /></manifest> | ||
195 | """) | ||
196 | self.maxDiff = None | ||
197 | self._superproject = git_superproject.Superproject(manifest, self.repodir) | ||
198 | self.assertEqual(len(self._superproject._manifest.projects), 2) | ||
199 | projects = self._superproject._manifest.projects | ||
200 | data = ('160000 commit 2c2724cb36cd5a9cec6c852c681efc3b7c6b86ea\tart\x00' | ||
201 | '160000 commit e9d25da64d8d365dbba7c8ee00fe8c4473fe9a06\tbootable/recovery\x00') | ||
202 | with mock.patch.object(self._superproject, '_Init', return_value=True): | ||
203 | with mock.patch.object(self._superproject, '_Fetch', return_value=True): | ||
204 | with mock.patch.object(self._superproject, | ||
205 | '_LsTree', | ||
206 | return_value=data): | ||
207 | # Create temporary directory so that it can write the file. | ||
208 | os.mkdir(self._superproject._superproject_path) | ||
209 | manifest_path = self._superproject.UpdateProjectsRevisionId(projects) | ||
210 | self.assertIsNotNone(manifest_path) | ||
211 | with open(manifest_path, 'r') as fp: | ||
212 | manifest_xml_data = fp.read() | ||
213 | # Verify platform/vendor/x's project revision hasn't changed. | ||
214 | self.assertEqual( | ||
215 | sort_attributes(manifest_xml_data), | ||
216 | '<?xml version="1.0" ?><manifest>' | ||
217 | '<remote fetch="http://localhost" name="default-remote"/>' | ||
218 | '<remote fetch="http://localhost2" name="goog"/>' | ||
219 | '<default remote="default-remote" revision="refs/heads/main"/>' | ||
220 | '<project groups="notdefault,platform-' + self.platform + '" ' | ||
221 | 'name="platform/art" path="art" ' | ||
222 | 'revision="2c2724cb36cd5a9cec6c852c681efc3b7c6b86ea"/>' | ||
223 | '<project clone-depth="1" groups="' + local_group + '" ' | ||
224 | 'name="platform/vendor/x" path="vendor/x" remote="goog" ' | ||
225 | 'revision="master-with-vendor"/>' | ||
226 | '<superproject name="superproject"/>' | ||
227 | '</manifest>') | ||
228 | |||
181 | 229 | ||
182 | if __name__ == '__main__': | 230 | if __name__ == '__main__': |
183 | unittest.main() | 231 | unittest.main() |