77from pyls .workspace import Document
88
99DOC_URI = uris .from_fs_path (__file__ )
10+
11+ DOC_LINT = """
12+ import os
13+ time.sleep(10)
14+ t = 5
15+
16+ def useless_func():
17+ pass
18+ """
19+
1020DOC_ADD = """
1121time.sleep(10)
1222print("test")
1323"""
24+
1425DOC_REMOVE = """
1526import time
1627print("useless import")
1728"""
1829
30+ LINT_DIAGS = {
31+ "Unresolved import 'time.sleep'" : {
32+ 'range' : {'start' : {'line' : 2 , 'character' : 0 }, 'end' : {'line' : 2 , 'character' : 10 }},
33+ 'severity' : lsp .DiagnosticSeverity .Hint ,
34+ },
35+ "Unreferenced variable/function 'useless_func'" : {
36+ 'range' : {'start' : {'line' : 5 , 'character' : 4 }, 'end' : {'line' : 5 , 'character' : 16 }},
37+ 'severity' : lsp .DiagnosticSeverity .Warning ,
38+ },
39+ "Unreferenced variable/function 't'" : {
40+ 'range' : {'start' : {'line' : 3 , 'character' : 0 }, 'end' : {'line' : 3 , 'character' : 1 }},
41+ 'severity' : lsp .DiagnosticSeverity .Warning ,
42+ },
43+ "Unreferenced import 'os'" : {
44+ 'range' : {'start' : {'line' : 1 , 'character' : 7 }, 'end' : {'line' : 1 , 'character' : 9 }},
45+ 'severity' : lsp .DiagnosticSeverity .Warning ,
46+ },
47+ }
48+
1949
2050def temp_document (doc_text ):
2151 temp_file = tempfile .NamedTemporaryFile (mode = 'w' , delete = False )
@@ -29,14 +59,16 @@ def temp_document(doc_text):
2959
3060def test_importmagic_lint ():
3161 try :
32- name , doc = temp_document (DOC )
62+ name , doc = temp_document (DOC_LINT )
3363 diags = importmagic_lint .pyls_lint (doc )
34- unres_symbol = [d for d in diags if d ['source' ] == 'importmagic' ][0 ]
35-
36- assert unres_symbol ['message' ] == "Unresolved import 'time.sleep'"
37- assert unres_symbol ['range' ]['start' ] == {'line' : 1 , 'character' : 0 }
38- assert unres_symbol ['range' ]['end' ] == {'line' : 1 , 'character' : 10 }
39- assert unres_symbol ['severity' ] == lsp .DiagnosticSeverity .Hint
64+ importmagic_diags = [d for d in diags if d ['source' ] == 'importmagic' ]
65+ assert len (importmagic_diags ) == len (LINT_DIAGS )
66+
67+ for diag in importmagic_diags :
68+ expected_diag = LINT_DIAGS .get (diag ['message' ])
69+ assert expected_diag is not None , "Didn't expect diagnostic with message '{}'" .format (diag ['message' ])
70+ assert expected_diag ['range' ] == diag ['range' ]
71+ assert expected_diag ['severity' ] == diag ['severity' ]
4072
4173 finally :
4274 os .remove (name )
0 commit comments