#!/usr/bin/env python # # Copyright (C) 2013 Google Inc. # # 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 ..server_utils import SetUpPythonPath SetUpPythonPath() from .test_utils import Setup, BuildRequest from webtest import TestApp from nose.tools import eq_, with_setup from .. import handlers import bottle bottle.debug( True ) @with_setup( Setup ) def RunCompleterCommand_GoTo_Jedi_ZeroBasedLineAndColumn_test(): app = TestApp( handlers.app ) contents = """ def foo(): pass foo() """ goto_data = BuildRequest( completer_target = 'filetype_default', command_arguments = ['GoToDefinition'], line_num = 4, contents = contents, filetype = 'python', filepath = '/foo.py' ) # 0-based line and column! eq_( { 'filepath': '/foo.py', 'line_num': 1, 'column_num': 4 }, app.post_json( '/run_completer_command', goto_data ).json ) @with_setup( Setup ) def RunCompleterCommand_GoTo_Clang_ZeroBasedLineAndColumn_test(): app = TestApp( handlers.app ) contents = """ struct Foo { int x; int y; char c; }; int main() { Foo foo; return 0; } """ goto_data = BuildRequest( completer_target = 'filetype_default', command_arguments = ['GoToDefinition'], compilation_flags = ['-x', 'c++'], line_num = 9, column_num = 2, contents = contents, filetype = 'cpp' ) # 0-based line and column! eq_( { 'filepath': '/foo', 'line_num': 1, 'column_num': 7 }, app.post_json( '/run_completer_command', goto_data ).json ) @with_setup( Setup ) def DefinedSubcommands_Works_test(): app = TestApp( handlers.app ) subcommands_data = BuildRequest( completer_target = 'python' ) eq_( [ 'GoToDefinition', 'GoToDeclaration', 'GoTo' ], app.post_json( '/defined_subcommands', subcommands_data ).json ) @with_setup( Setup ) def DefinedSubcommands_WorksWhenNoExplicitCompleterTargetSpecified_test(): app = TestApp( handlers.app ) subcommands_data = BuildRequest( filetype = 'python' ) eq_( [ 'GoToDefinition', 'GoToDeclaration', 'GoTo' ], app.post_json( '/defined_subcommands', subcommands_data ).json )