@@ -47,3 +47,51 @@ def test_sync_multilspy_javascript_exceljs() -> None:
4747 {'range' : {'start' : {'line' : 180 , 'character' : 16 }, 'end' : {'line' : 180 , 'character' : 21 }}, 'relativePath' : path },
4848 {'range' : {'start' : {'line' : 185 , 'character' : 15 }, 'end' : {'line' : 185 , 'character' : 20 }}, 'relativePath' : path }
4949 ]
50+
51+ def test_sync_multilspy_javascript_violentmonkey_cross_file () -> None :
52+ """
53+ Test the working of multilspy with javascript repository - violentmonkey
54+ """
55+ code_language = Language .JAVASCRIPT
56+ params = {
57+ "code_language" : code_language ,
58+ "repo_url" : "https://github.com/violentmonkey/violentmonkey/" ,
59+ "repo_commit" : "e2930510b4fb5f59848ecafcd533d06fc41d4187"
60+ }
61+ with create_test_context (params ) as context :
62+ lsp = SyncLanguageServer .create (context .config , context .logger , context .source_directory )
63+
64+ # All the communication with the language server must be performed inside the context manager
65+ # The server process is started when the context manager is entered and is terminated when the context manager is exited.
66+ with lsp .start_server ():
67+ result = lsp .request_definition ("src/common/util.js" , 335 , 55 )
68+ assert isinstance (result , list )
69+ assert len (result ) == 1
70+
71+ item = result [0 ]
72+ assert item ["relativePath" ] == "src/common/consts.js"
73+ assert item ["range" ] == {
74+ "start" : {"line" : 46 , "character" : 13 },
75+ "end" : {"line" : 46 , "character" : 21 },
76+ }
77+
78+ result = lsp .request_references ("src/common/consts.js" , 46 , 13 )
79+ assert isinstance (result , list )
80+ assert len (result ) == 10
81+
82+ for item in result :
83+ del item ["uri" ]
84+ del item ["absolutePath" ]
85+
86+ assert result == [
87+ {"range" : {"start" : {"line" : 2 , "character" : 9 }, "end" : {"line" : 2 , "character" : 17 }}, "relativePath" : "src/common/util.js" },
88+ {"range" : {"start" : {"line" : 335 , "character" : 51 }, "end" : {"line" : 335 , "character" : 59 }}, "relativePath" : "src/common/util.js" },
89+ {"range" : {"start" : {"line" : 5 , "character" : 16 }, "end" : {"line" : 5 , "character" : 24 }}, "relativePath" : "src/background/sync/base.js" },
90+ {"range" : {"start" : {"line" : 342 , "character" : 34 }, "end" : {"line" : 342 , "character" : 42 }}, "relativePath" : "src/background/sync/base.js" },
91+ {"range" : {"start" : {"line" : 4 , "character" : 36 }, "end" : {"line" : 4 , "character" : 44 }}, "relativePath" : "src/background/utils/update.js" },
92+ {"range" : {"start" : {"line" : 15 , "character" : 5 }, "end" : {"line" : 15 , "character" : 13 }}, "relativePath" : "src/background/utils/update.js" },
93+ {"range" : {"start" : {"line" : 40 , "character" : 11 }, "end" : {"line" : 40 , "character" : 19 }}, "relativePath" : "src/background/utils/update.js" },
94+ {"range" : {"start" : {"line" : 123 , "character" : 48 }, "end" : {"line" : 123 , "character" : 56 }}, "relativePath" : "src/background/utils/update.js" },
95+ {"range" : {"start" : {"line" : 1 , "character" : 9 }, "end" : {"line" : 1 , "character" : 17 }}, "relativePath" : "src/background/utils/storage-fetch.js" },
96+ {"range" : {"start" : {"line" : 70 , "character" : 26 }, "end" : {"line" : 70 , "character" : 34 }}, "relativePath" : "src/background/utils/storage-fetch.js" }
97+ ]
0 commit comments