1
1
import pytest
2
2
3
- from pyls .workspace import Document
3
+ from pyls .workspace import Workspace , Document
4
+ from pyls .config .config import Config
5
+ from pyls import uris
6
+ from mock import Mock
4
7
from mypy_ls import plugin
5
8
6
9
DOC_URI = __file__
15
18
'error: "Request" has no attribute "id"' )
16
19
17
20
21
+ @pytest .fixture
22
+ def workspace (tmpdir ):
23
+ """Return a workspace."""
24
+ ws = Workspace (uris .from_fs_path (str (tmpdir )), Mock ())
25
+ ws ._config = Config (ws .root_uri , {}, 0 , {})
26
+ return ws
27
+
28
+
18
29
class FakeConfig (object ):
19
-
30
+
20
31
def __init__ (self ):
21
32
self ._root_path = "C:"
22
33
23
34
def plugin_settings (self , plugin , document_path = None ):
24
35
return {}
25
36
26
37
27
- def test_plugin ():
38
+ def test_settings ():
28
39
config = FakeConfig ()
29
- doc = Document (DOC_URI , DOC_TYPE_ERR )
40
+ settings = plugin .pyls_settings (config )
41
+ assert settings == {"plugins" : {"mypy-ls" : {}}}
42
+
43
+
44
+ def test_plugin (workspace ):
45
+ config = FakeConfig ()
46
+ doc = Document (DOC_URI , workspace , DOC_TYPE_ERR )
30
47
workspace = None
31
48
plugin .pyls_settings (config )
32
49
diags = plugin .pyls_lint (config , workspace , doc , is_saved = False )
@@ -38,33 +55,33 @@ def test_plugin():
38
55
assert diag ['range' ]['end' ] == {'line' : 0 , 'character' : 1 }
39
56
40
57
41
- def test_parse_full_line ():
42
- doc = Document (DOC_URI , DOC_TYPE_ERR )
58
+ def test_parse_full_line (workspace ):
59
+ doc = Document (DOC_URI , workspace )
43
60
diag = plugin .parse_line (TEST_LINE , doc )
44
61
assert diag ['message' ] == '"Request" has no attribute "id"'
45
62
assert diag ['range' ]['start' ] == {'line' : 278 , 'character' : 7 }
46
63
assert diag ['range' ]['end' ] == {'line' : 278 , 'character' : 8 }
47
64
48
65
49
- def test_parse_line_without_col ():
50
- doc = Document (DOC_URI , DOC_TYPE_ERR )
66
+ def test_parse_line_without_col (workspace ):
67
+ doc = Document (DOC_URI , workspace )
51
68
diag = plugin .parse_line (TEST_LINE_WITHOUT_COL , doc )
52
69
assert diag ['message' ] == '"Request" has no attribute "id"'
53
70
assert diag ['range' ]['start' ] == {'line' : 278 , 'character' : 0 }
54
71
assert diag ['range' ]['end' ] == {'line' : 278 , 'character' : 1 }
55
72
56
73
57
- def test_parse_line_without_line ():
58
- doc = Document (DOC_URI , DOC_TYPE_ERR )
74
+ def test_parse_line_without_line (workspace ):
75
+ doc = Document (DOC_URI , workspace )
59
76
diag = plugin .parse_line (TEST_LINE_WITHOUT_LINE , doc )
60
77
assert diag ['message' ] == '"Request" has no attribute "id"'
61
78
assert diag ['range' ]['start' ] == {'line' : 0 , 'character' : 0 }
62
- assert diag ['range' ]['end' ] == {'line' : 0 , 'character' : 1 }
79
+ assert diag ['range' ]['end' ] == {'line' : 0 , 'character' : 6 }
63
80
64
81
65
82
@pytest .mark .parametrize ('word,bounds' , [('' , (7 , 8 )), ('my_var' , (7 , 13 ))])
66
- def test_parse_line_with_context (monkeypatch , word , bounds ):
67
- doc = Document (DOC_URI , 'DOC_TYPE_ERR' )
83
+ def test_parse_line_with_context (monkeypatch , word , bounds , workspace ):
84
+ doc = Document (DOC_URI , workspace )
68
85
monkeypatch .setattr (Document , 'word_at_position' , lambda * args : word )
69
86
diag = plugin .parse_line (TEST_LINE , doc )
70
87
assert diag ['message' ] == '"Request" has no attribute "id"'
0 commit comments