コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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
        )
コード例 #4
0
    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')
コード例 #5
0
    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, '!')
コード例 #6
0
    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, '!')
コード例 #7
0
    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)
コード例 #8
0
    def test_from_text_returns_empty_index_when_there_are_no_lines(self):
        index = Index.from_text('')

        self.assertEqual(len(index), 0)
コード例 #9
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)
コード例 #10
0
    def test_entry_for_returns_no_index_entry_when_there_is_no_entry(self):
        index = Index()

        self.assertIsInstance(index.entry_for('file.txt'), NoIndexEntry)
コード例 #11
0
    def test_from_text_returns_empty_index_when_there_are_no_lines(self):
        index = Index.from_text('')

        self.assertEqual(len(index), 0)
コード例 #12
0
    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)
コード例 #13
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)
コード例 #14
0
    def test_entry_for_returns_no_index_entry_when_there_is_no_entry(self):
        index = Index()

        self.assertIsInstance(index.entry_for('file.txt'), NoIndexEntry)
コード例 #15
0
    def test_str_returns_correct_representation_when_there_are_no_entries(self):
        index = Index()

        self.assertEqual(str(index), '')
コード例 #16
0
    def test_repr_returns_correct_representation(self):
        index = Index([IndexEntry('M', 'file1.txt')])

        self.assertEqual(repr(index), "Index([IndexEntry('M', 'file1.txt')])")