Пример #1
0
    def test_highlight_errors_and_warnings(self):

        (window, view) = default_mock_window()

        panel = MagicMock()
        window.create_output_panel = Mock(return_value=panel)

        filePath = relative_view_file_name(view)
        error = create_source_error(filePath, "KindError", "<error message here>")
        warning = create_source_error(filePath, "KindWarning", "<warning message here>")
        errors = [error, warning]

        Win(window).handle_source_errors(errors)

        # panel recreated
        window.create_output_panel.assert_called_with("hide_errors")
        window.run_command.assert_any_call("hide_panel",  {"panel": "output.hide_errors"})
        # panel.run_command.assert_any_call("clear_error_panel")
        panel.set_read_only.assert_any_call(False)

        # panel should have received two messages
        panel.run_command.assert_any_call("append_to_error_panel", {"message": "src/Main.hs:1:1: KindError:\n<error message here>"})
        panel.run_command.assert_any_call("append_to_error_panel", {"message": "src/Main.hs:1:1: KindWarning:\n<warning message here>"})

        # regions added
        view.add_regions.assert_called_with("warnings", [ANY], "comment", "dot", sublime.DRAW_OUTLINED)
        view.add_regions.assert_any_call('errors', [ANY], 'invalid', 'dot', 2)

        # panel shown and locked
        window.run_command.assert_called_with("show_panel", {"panel": "output.hide_errors"})
        panel.set_read_only.assert_any_call(True)
Пример #2
0
    def test_highlight_errors_and_warnings(self):

        (window, view) = default_mock_window()

        panel = MagicMock()
        window.create_output_panel = Mock(return_value=panel)

        filePath = relative_view_file_name(view)
        error = create_source_error(filePath, "KindError", "<error message here>")
        warning = create_source_error(filePath, "KindWarning", "<warning message here>")
        errors = [error, warning]

        Win(window).handle_source_errors(errors)

        # panel recreated
        window.create_output_panel.assert_called_with("hide_errors")
        panel.settings().set.assert_called_with("result_file_regex", "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$")
        window.run_command.assert_any_call("hide_panel",  {"panel": "output.hide_errors"})
        # panel.run_command.assert_any_call("clear_error_panel")
        panel.set_read_only.assert_any_call(False)

        # panel should have received two messages
        panel.run_command.assert_any_call("update_error_panel", {"message": "src/Main.hs:1:1: KindError:\n<error message here>"})
        panel.run_command.assert_any_call("update_error_panel", {"message": "src/Main.hs:1:1: KindWarning:\n<warning message here>"})

        # regions added
        view.add_regions.assert_called_with("warnings", [ANY], "comment", "dot", sublime.DRAW_OUTLINED)
        view.add_regions.assert_any_call('errors', [ANY], 'invalid', 'dot', 2)

        # panel shown and locked
        window.run_command.assert_called_with("show_panel", {"panel": "output.hide_errors"})
        panel.set_read_only.assert_any_call(True)
Пример #3
0
    def on_post_save(self, view):

        if not is_haskell_view(view):
            return

        if not StackIDEManager.is_running(view.window()):
            return

        StackIDEManager.for_window(view.window()).update_files([relative_view_file_name(view)])
Пример #4
0
    def on_post_save(self, view):

        if not is_haskell_view(view):
            return

        if not StackIDEManager.is_running(view.window()):
            return

        StackIDEManager.for_window(view.window()).update_files(
            [relative_view_file_name(view)])
Пример #5
0
    def test_request_completions(self):

        listener = StackIDEAutocompleteHandler()
        (window, view) = default_mock_window()
        view.settings().get = Mock(return_value=False)
        backend = setup_mock_backend(window)

        listener.on_query_completions(view, 'm', []) #locations not used.

        req = Req.get_autocompletion(filepath=util.relative_view_file_name(view),prefix="m")
        req['seq'] = ANY
        backend.send_request.assert_called_with(req)
Пример #6
0
    def on_query_completions(self, view, prefix, locations):

        if not is_haskell_view(view):
            return

        window = view.window()
        if not StackIDEManager.is_running(window):
            return
        # Check if this completion query is due to our refreshing the completions list
        # after receiving a response from stack-ide, and if so, don't send
        # another request for completions.
        if not self.refreshing:
            self.view = view
            request = Req.get_autocompletion(filepath=relative_view_file_name(view),prefix=prefix)
            send_request(window, request, self._handle_response)

        # Clear the flag to allow future completion queries
        self.refreshing = False
        return list(self.format_completion(*completion) for completion in self.returned_completions)
Пример #7
0
    def on_query_completions(self, view, prefix, locations):

        if not is_haskell_view(view):
            return

        window = view.window()
        if not StackIDEManager.is_running(window):
            return
        # Check if this completion query is due to our refreshing the completions list
        # after receiving a response from stack-ide, and if so, don't send
        # another request for completions.
        if not self.refreshing:
            self.view = view
            request = Req.get_autocompletion(
                filepath=relative_view_file_name(view), prefix=prefix)
            send_request(window, request, self._handle_response)

        # Clear the flag to allow future completion queries
        self.refreshing = False
        return list(
            self.format_completion(*completion)
            for completion in self.returned_completions)
Пример #8
0
 def test_get_relative_filename(self):
     window = mock_window([cur_dir + '/projects/helloworld'])
     view = mock_view('src/Main.hs', window)
     self.assertEqual('src/Main.hs', utility.relative_view_file_name(view))