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)
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)
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()
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))