# Copyright (C) 2017 YouCompleteMe Contributors # # This file is part of YouCompleteMe. # # YouCompleteMe is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # YouCompleteMe is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with YouCompleteMe. If not, see . from __future__ import unicode_literals from __future__ import print_function from __future__ import division from __future__ import absolute_import # Not installing aliases from python-future; it's unreliable and slow. from builtins import * # noqa from copy import deepcopy from hamcrest import assert_that, contains_string, equal_to from ycm.client.debug_info_request import FormatDebugInfoResponse GENERIC_RESPONSE = { 'clang': { 'has_support': True, 'version': 'Clang version' }, 'completer': { 'items': [ { 'key': 'key', 'value': 'value' } ], 'name': 'Completer name', 'servers': [ { 'address': '127.0.0.1', 'executable': '/path/to/executable', 'extras': [ { 'key': 'key', 'value': 'value' } ], 'is_running': True, 'logfiles': [ '/path/to/stdout/logfile', '/path/to/stderr/logfile' ], 'name': 'Server name', 'pid': 12345, 'port': 1234 } ] }, 'extra_conf': { 'is_loaded': False, 'path': '/path/to/extra/conf' }, 'python': { 'executable': '/path/to/python/interpreter', 'version': 'Python version' } } def FormatDebugInfoResponse_NoResponse_test(): assert_that( FormatDebugInfoResponse( None ), equal_to( 'Server errored, no debug info from server\n' ) ) def FormatDebugInfoResponse_NoExtraConf_test(): response = deepcopy( GENERIC_RESPONSE ) response[ 'extra_conf' ].update( { 'is_loaded': False, 'path': None } ) assert_that( FormatDebugInfoResponse( response ), contains_string( 'No extra configuration file found\n' ) ) def FormatDebugInfoResponse_ExtraConfFoundButNotLoaded_test(): response = deepcopy( GENERIC_RESPONSE ) response[ 'extra_conf' ].update( { 'is_loaded': False, 'path': '/path/to/extra/conf' } ) assert_that( FormatDebugInfoResponse( response ), contains_string( 'Extra configuration file found but not loaded\n' 'Extra configuration path: /path/to/extra/conf\n' ) ) def FormatDebugInfoResponse_ExtraConfFoundAndLoaded_test(): response = deepcopy( GENERIC_RESPONSE ) response[ 'extra_conf' ].update( { 'is_loaded': True, 'path': '/path/to/extra/conf' } ) assert_that( FormatDebugInfoResponse( response ), contains_string( 'Extra configuration file found and loaded\n' 'Extra configuration path: /path/to/extra/conf\n' ) ) def FormatDebugInfoResponse_Completer_ServerRunningWithHost_test(): response = deepcopy( GENERIC_RESPONSE ) assert_that( FormatDebugInfoResponse( response ), contains_string( 'Completer name completer debug information:\n' ' Server name running at: http://127.0.0.1:1234\n' ' Server name process ID: 12345\n' ' Server name executable: /path/to/executable\n' ' Server name logfiles:\n' ' /path/to/stdout/logfile\n' ' /path/to/stderr/logfile\n' ' Server name key: value\n' ' Key: value\n' ) ) def FormatDebugInfoResponse_Completer_ServerRunningWithoutHost_test(): response = deepcopy( GENERIC_RESPONSE ) response[ 'completer' ][ 'servers' ][ 0 ].update( { 'address': None, 'port': None } ) assert_that( FormatDebugInfoResponse( response ), contains_string( 'Completer name completer debug information:\n' ' Server name running\n' ' Server name process ID: 12345\n' ' Server name executable: /path/to/executable\n' ' Server name logfiles:\n' ' /path/to/stdout/logfile\n' ' /path/to/stderr/logfile\n' ' Server name key: value\n' ' Key: value\n' ) ) def FormatDebugInfoResponse_Completer_ServerNotRunningWithNoLogfiles_test(): response = deepcopy( GENERIC_RESPONSE ) response[ 'completer' ][ 'servers' ][ 0 ].update( { 'is_running': False, 'logfiles': [] } ) assert_that( FormatDebugInfoResponse( response ), contains_string( 'Completer name completer debug information:\n' ' Server name not running\n' ' Server name executable: /path/to/executable\n' ' No logfiles available\n' ' Server name key: value\n' ' Key: value\n' ) )