Ejemplo n.º 1
0
  def testUpdatePackageContents(self):
    """Test that UpdatePackageContents makes the correct calls to portage."""
    autotest_quickmerge.portage = mock.MagicMock()
    portage = autotest_quickmerge.portage

    portage.root = TEST_PORTAGE_ROOT

    mock_vartree = mock.MagicMock()
    mock_vartree.settings = {'an arbitrary' : 'dictionary'}
    mock_tree = {TEST_PORTAGE_ROOT : {'vartree' : mock_vartree}}
    portage.create_trees.return_value = mock_tree

    mock_vartree.dbapi = mock.MagicMock()
    mock_vartree.dbapi.cp_list.return_value = [TEST_PACKAGE_CPV]

    mock_package = mock.MagicMock()
    portage.dblink.return_value = mock_package  # pylint: disable=no-member
    mock_package.getcontents.return_value = TEST_PACKAGE_OLDCONTENTS

    EXPECTED_NEW_ENTRIES = {
        '/foo/bar/new_empty_directory': (u'dir',),
        '/foo/bar/directory_a/new_file_in_directory': (u'obj', '0', '0'),
        '/foo/bar/new_file': (u'obj', '0', '0'),
        '/foo/bar/new_symlink': (u'obj', '0', '0')
    }
    RESULT_DICIONARY = TEST_PACKAGE_OLDCONTENTS.copy()
    RESULT_DICIONARY.update(EXPECTED_NEW_ENTRIES)

    mock_vartree.dbapi.writeContentsToContentsFile(mock_package,
                                                   RESULT_DICIONARY)

    change_report = autotest_quickmerge.ItemizeChangesFromRsyncOutput(
        RSYNC_TEST_OUTPUT, RSYNC_TEST_DESTINATION_PATH)
    autotest_quickmerge.UpdatePackageContents(change_report, TEST_PACKAGE_CP,
                                              TEST_PORTAGE_ROOT)
Ejemplo n.º 2
0
 def testGetStalePackageNames(self):
   autotest_sysroot = '/an/arbitrary/path/'
   change_report = autotest_quickmerge.ItemizeChangesFromRsyncOutput(
       RSYNC_TEST_OUTPUT_FOR_PACKAGE_UPDATE, autotest_sysroot)
   package_matches = autotest_quickmerge.GetStalePackageNames(
       change_report.modified_files + change_report.new_files,
       autotest_sysroot)
   expected_set = set(['factory_Leds', 'login_UserPolicyKeys',
                       'platform_Cryptohome', 'power_Thermal'])
   self.assertEqual(set(package_matches), expected_set)
Ejemplo n.º 3
0
    def testUpdatePackageContents(self):
        """Test that UpdatePackageContents makes the correct calls to portage."""
        autotest_quickmerge.portage = self.mox.CreateMockAnything('portage')
        portage = autotest_quickmerge.portage

        portage.root = TEST_PORTAGE_ROOT

        mock_vartree = self.mox.CreateMockAnything('vartree')
        mock_vartree.settings = {'an arbitrary': 'dictionary'}
        mock_tree = {TEST_PORTAGE_ROOT: {'vartree': mock_vartree}}
        portage.create_trees(TEST_PORTAGE_ROOT,
                             TEST_PORTAGE_ROOT).AndReturn(mock_tree)

        mock_vartree.dbapi = self.mox.CreateMockAnything('dbapi')
        mock_vartree.dbapi.cp_list(TEST_PACKAGE_CP).AndReturn(
            [TEST_PACKAGE_CPV])

        mock_package = self.mox.CreateMockAnything('dblink')
        portage.dblink(
            TEST_PACKAGE_C,
            TEST_PACKAGE_PV,  #pylint: disable-msg=E1101
            settings=mock_vartree.settings,
            vartree=mock_vartree).AndReturn(mock_package)
        mock_package.getcontents().AndReturn(TEST_PACKAGE_OLDCONTENTS)

        EXPECTED_NEW_ENTRIES = {
            '/foo/bar/new_empty_directory': (u'dir', ),
            '/foo/bar/directory_a/new_file_in_directory': (u'obj', '0', '0'),
            '/foo/bar/new_file': (u'obj', '0', '0'),
            '/foo/bar/new_symlink': (u'obj', '0', '0')
        }
        RESULT_DICIONARY = TEST_PACKAGE_OLDCONTENTS.copy()
        RESULT_DICIONARY.update(EXPECTED_NEW_ENTRIES)

        mock_vartree.dbapi.writeContentsToContentsFile(mock_package,
                                                       RESULT_DICIONARY)

        self.mox.ReplayAll()

        change_report = autotest_quickmerge.ItemizeChangesFromRsyncOutput(
            RSYNC_TEST_OUTPUT, RSYNC_TEST_DESTINATION_PATH)
        autotest_quickmerge.UpdatePackageContents(change_report,
                                                  TEST_PACKAGE_CP,
                                                  TEST_PORTAGE_ROOT)

        self.mox.VerifyAll()
Ejemplo n.º 4
0
  def testItemizeChangesFromRsyncOutput(self):
    """Test that rsync output parser returns correct FileMutations."""
    expected_new = set(
        [('>f+++++++++', '/foo/bar/new_file'),
         ('>f+++++++++', '/foo/bar/directory_a/new_file_in_directory'),
         ('cL+++++++++', '/foo/bar/new_symlink')])

    expected_mod = set(
        [('>f..t......', '/foo/bar/touched file with spaces'),
         ('>f..t......', '/foo/bar/touched_file'),
         ('>f.st......', '/foo/bar/modified_contents_file'),
         ('.f...p.....', '/foo/bar/modified_permissions_file'),
         ('.f....o....', '/foo/bar/modified_owner_file'),
         ('>f..t......', '/foo/bar/directory_a/touched_file_in_directory')])

    expected_dir = set([('cd+++++++++', '/foo/bar/new_empty_directory/')])

    report = autotest_quickmerge.ItemizeChangesFromRsyncOutput(
        RSYNC_TEST_OUTPUT, RSYNC_TEST_DESTINATION_PATH)

    self.assertEqual(expected_new, set(report.new_files))
    self.assertEqual(expected_mod, set(report.modified_files))
    self.assertEqual(expected_dir, set(report.new_directories))