def testUpdateCIPDPackage(self, run_mock): fake_cipd = FakeCIPD() fake_run_cmd = FakeRunCmd(cipd=fake_cipd) run_mock.side_effect = fake_run_cmd.run_cmd with tempfile_ext.NamedTemporaryDirectory() as tempDir,\ cts_utils.chdir(tempDir): writefile(CIPD_DATA['yaml'], 'cipd.yaml') version = cts_utils.update_cipd_package('cipd.yaml') uploaded = fake_cipd.get_package(CIPD_DATA['package'], version) self.assertEquals(CIPD_DATA['package'], uploaded['package']) uploaded_files = [e['file'] for e in uploaded['data']] self.assertEquals(4, len(uploaded_files)) for i in range(1, 5): self.assertTrue(CIPD_DATA['file' + str(i)] in uploaded_files)
def testFilterZip(self): with tempfile_ext.NamedTemporaryDirectory() as workDir,\ cts_utils.chdir(workDir): writefile('abc', 'a/b/one.apk') writefile('def', 'a/b/two.apk') writefile('ghi', 'a/b/three.apk') movetozip(['a/b/one.apk', 'a/b/two.apk', 'a/b/three.apk'], 'downloaded.zip') cts_utils.filterzip('downloaded.zip', ['a/b/one.apk', 'a/b/two.apk'], 'filtered.zip') zf = zipfile.ZipFile('filtered.zip', 'r') self.assertEquals(2, len(zf.namelist())) self.assertEquals(b'abc', zf.read('a/b/one.apk')) self.assertEquals(b'def', zf.read('a/b/two.apk'))
def testUpdateRepository_inconsistentFiles(self, cmd_mock, run_mock): with tempfile_ext.NamedTemporaryDirectory() as workDir,\ tempfile_ext.NamedTemporaryDirectory() as repoRoot,\ cts_utils.chdir(workDir): cts_utils_test.setup_fake_repo(repoRoot) cts_updater = update_cts.UpdateCTS('.', repoRoot) cts_utils_test.writefile('newversion', 'cipd_version.txt') cts_utils_test.writefile(CIPD_DATA['yaml'], os.path.join('staged', 'cipd.yaml')) cmd_mock.return_value = '' run_mock.return_value = 0 cts_utils_test.writefile( CIPD_DATA['template'] % ('wrong/package/name', CIPD_DATA['file1'], CIPD_DATA['file2'], CIPD_DATA['file3'], CIPD_DATA['file4']), os.path.join(os.path.join('staged', 'cipd.yaml'))) with self.assertRaises(update_cts.InconsistentFilesException): cts_updater.update_repository()
def testDownloadCIPD(self, run_mock): with tempfile_ext.NamedTemporaryDirectory() as workDir,\ tempfile_ext.NamedTemporaryDirectory() as repoRoot,\ cts_utils.chdir(workDir): cts_utils_test.setup_fake_repo(repoRoot) fake_cipd = cts_utils_test.FakeCIPD() fake_cipd.add_package( os.path.join(repoRoot, cts_utils.TOOLS_DIR, cts_utils.CIPD_FILE), DEPS_DATA['revision']) fake_run_cmd = cts_utils_test.FakeRunCmd(fake_cipd) run_mock.side_effect = fake_run_cmd.run_cmd cts_updater = update_cts.UpdateCTS('.', repoRoot) cts_updater.download_cipd() self.assertTrue(os.path.isdir('cipd')) for i in [str(x) for x in range(1, 5)]: self.assertEqual( CIPD_DATA['file' + i], cts_utils_test.readfile( os.path.join(workDir, 'cipd', CIPD_DATA['file' + i])))
def testChromiumRepoHelper(self): with tempfile_ext.NamedTemporaryDirectory() as tempDir,\ cts_utils.chdir(tempDir): setup_fake_repo('.') helper = cts_utils.ChromiumRepoHelper(root_dir='.') self.assertEqual(DEPS_DATA['revision'], helper.get_cipd_dependency_rev()) self.assertEqual(os.path.join(tempDir, 'a', 'b'), helper.rebase('a', 'b')) helper.update_cts_cipd_rev('newversion') self.assertEqual('newversion', helper.get_cipd_dependency_rev()) expected_deps = DEPS_DATA['template'] % (CIPD_DATA['package'], 'newversion') self.assertEqual(expected_deps, readfile(_CIPD_REFERRERS[0])) expected_suites = SUITES_DATA['template'] % ('newversion', 'newversion') self.assertEqual(expected_suites, readfile(_CIPD_REFERRERS[1])) writefile('#deps not referring to cts cipd', _CIPD_REFERRERS[0]) with self.assertRaises(Exception): helper.update_cts_cipd_rev('anothernewversion')
def filter_downloaded_cts(self): """Filter files from downloaded/ to filtered/ to contain only WebView apks. It is an error to call this if downloaded/ doesn't exist or if filtered/ already exists. Raises: DirExistsError: If filtered/ already exists in work_dir. MissingDirError: If downloaded/ does not exist in work_dir. """ if os.path.exists(self._filter_dir): raise DirExistsError(self._filter_dir) if not os.path.isdir(self._download_dir): raise MissingDirError(self._download_dir) os.makedirs(self._filter_dir) with cts_utils.chdir(self._download_dir): downloads = os.listdir('.') for download in downloads: logging.info('Filtering %s to %s/', download, self._filter_dir) cts_utils.filter_cts_file(self._CTSConfig, download, self._filter_dir)
def testCompleteUpdate(self, retrieve_mock, update_json_mock, cmd_mock, run_mock): with tempfile_ext.NamedTemporaryDirectory() as workDir,\ tempfile_ext.NamedTemporaryDirectory() as repoRoot,\ cts_utils.chdir(workDir): cts_utils_test.setup_fake_repo(repoRoot) fake_cipd = cts_utils_test.FakeCIPD() fake_cipd.add_package( os.path.join(repoRoot, cts_utils.TOOLS_DIR, cts_utils.CIPD_FILE), DEPS_DATA['revision']) fake_download = FakeDownload() fake_download.add_fake_zip_files(CONFIG_DATA['json']) fake_run_cmd = cts_utils_test.FakeRunCmd(fake_cipd) retrieve_mock.side_effect = fake_download.download run_mock.side_effect = fake_run_cmd.run_cmd update_json_mock.return_value = 0 cmd_mock.return_value = '' cts_updater = update_cts.UpdateCTS('.', repoRoot) cts_updater.download_cts_cmd() cts_updater.create_cipd_cmd() cts_updater.update_repository_cmd() latest_version = fake_cipd.get_latest_version( 'chromium/android_webview/tools/cts_archive') self.assertNotEqual(DEPS_DATA['revision'], latest_version) self._assertCIPDVersionUpdated(repoRoot, latest_version) repo_cipd_yaml = os.path.join(repoRoot, cts_utils.TOOLS_DIR, cts_utils.CIPD_FILE) run_mock.assert_any_call([ 'cp', os.path.join(workDir, 'staged', 'cipd.yaml'), repo_cipd_yaml ]) run_mock.assert_any_call([ 'cipd', 'ensure', '-root', os.path.dirname(repo_cipd_yaml), '-ensure-file', mock.ANY ]) update_json_mock.assert_called_with()