示例#1
0
 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)
示例#2
0
 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'))
示例#3
0
    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()
示例#4
0
    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])))
示例#5
0
  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')
示例#6
0
  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)
示例#7
0
    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()