def test_does_not_reflect_changes_when_changes_should_not_be_reflected_on_empty_buffer(self): self.current_index.return_value = Index([IndexEntry('M', 'file.txt')]) self.edit_index.return_value = Index() self.should_reflect_changes_on_empty_buffer.return_value = False main(['git-edit-index']) self.assertTrue(self.should_reflect_changes_on_empty_buffer.called) self.assertFalse(self.reflect_index_changes.called)
def test_calls_reflect_index_change_for_correct_entries(self): entry1 = IndexEntry('M', 'file1.txt') entry2 = IndexEntry('M', 'file2.txt') entry3 = IndexEntry('?', 'file1.txt') orig_index = Index([entry1, entry2]) new_index = Index([entry3, entry2]) reflect_index_changes(orig_index, new_index) self.reflect_index_change.assert_called_once_with(entry1, entry3)
def test_shows_editor_to_user_and_reflects_changes_when_index_is_nonempty(self): orig_index = Index([IndexEntry('M', 'file.txt')]) self.current_index.return_value = orig_index main(['git-edit-index']) self.edit_index.assert_called_once_with(orig_index) self.reflect_index_changes.assert_called_once_with( orig_index, self.edit_index.return_value )
def test_str_returns_correct_representation_when_there_are_entries(self): index = Index([ IndexEntry('M', 'file1.txt'), IndexEntry('?', 'file2.txt'), IndexEntry('!', 'file3.txt') ]) # The last entry has to end with a newline. Otherwise, some editors may # have problems displaying it. self.assertEqual(str(index), 'M file1.txt\n? file2.txt\n! file3.txt\n')
def test_from_text_returns_correct_index_when_there_are_lines(self): index = Index.from_text( 'M file1.txt\n' '? file2.txt\n' '! file3.txt\n' ) self.assertEqual(len(index), 3) self.assertEqual(index.entry_for('file1.txt').status, 'M') self.assertEqual(index.entry_for('file2.txt').status, '?') self.assertEqual(index.entry_for('file3.txt').status, '!')
def test_stores_index_to_file_and_shows_it_to_user_and_returns_new_index(self): index = Index([IndexEntry('M', 'file.txt')]) self.editor_cmd.return_value = ['vim'] tmp_fd = 123 tmp_path = 'git-edit-index-temp' self.tempfile.mkstemp.return_value = tmp_fd, tmp_path tmp_f1 = self.os.fdopen.return_value.__enter__.return_value tmp_f2 = self.open.return_value.__enter__.return_value tmp_f2.read.return_value = 'A file.txt\n' new_index = edit_index(index) self.assertEqual(len(new_index), 1) self.assertEqual(new_index[0].status, 'A') self.assertEqual(new_index[0].file, 'file.txt') tmp_f1.write.assert_called_once_with('M file.txt\n') self.subprocess.call.assert_called_once_with( self.editor_cmd() + [tmp_path] ) tmp_f2.read.assert_called_once_with() self.os.remove.assert_called_once_with(tmp_path)
def test_from_text_returns_empty_index_when_there_are_no_lines(self): index = Index.from_text('') self.assertEqual(len(index), 0)
def test_entry_for_returns_correct_entry_when_it_exists(self): entry = IndexEntry('M', 'file1.txt') index = Index([entry]) self.assertEqual(index.entry_for('file1.txt'), entry)
def test_entry_for_returns_no_index_entry_when_there_is_no_entry(self): index = Index() self.assertIsInstance(index.entry_for('file.txt'), NoIndexEntry)
def test_does_not_show_editor_to_user_when_index_is_empty(self): self.current_index.return_value = Index() main(['git-edit-index']) self.assertFalse(self.edit_index.called)
def test_str_returns_correct_representation_when_there_are_no_entries(self): index = Index() self.assertEqual(str(index), '')
def test_repr_returns_correct_representation(self): index = Index([IndexEntry('M', 'file1.txt')]) self.assertEqual(repr(index), "Index([IndexEntry('M', 'file1.txt')])")