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