def onShortcutUnindentWithBackspace(self):
        """Backspace pressed, unindent
        """
        assert self._qpart.textBeforeCursor().endswith(self.text())

        charsToRemove = len(self._qpart.textBeforeCursor()) % len(self.text())
        if charsToRemove == 0:
            charsToRemove = len(self.text())

        cursor = self._qpart.textCursor()
        cursor.setPosition(cursor.position() - charsToRemove, QTextCursor.KeepAnchor)
        cursor.removeSelectedText()
def test_parse_section_body():
    output_section = {
        'action_template': '    task',
        'sources_repls': 'source',
        'variable': '6',
        'target_pattern': 'target',
    }
    assert mariofile.parse_section_body(SECTION.splitlines(True)) == output_section
    with pytest.raises(mariofile.ConfigurationFileError):
        mariofile.parse_section_body(SECTION_MULTIPLE_RULE.splitlines(True))
    with pytest.raises(mariofile.ConfigurationFileError):
        mariofile.parse_section_body(INVALID_CONFIG.splitlines(True))