11from connect .eaas .core .validation .helpers import get_code_context
22
33
4- def test_get_code_context_module (mocker , faker ):
4+ def test_get_code_context_module (mocker ):
55 mocker .patch (
66 'connect.eaas.core.validation.helpers.inspect.getsourcefile' ,
77 return_value = 'path/file.py' ,
88 )
99
10- code_lines = [f'{ line } \n ' for line in faker .paragraphs (nb = 10 )]
11-
12- code = '' .join (code_lines )
10+ pattern = 'target_pattern'
11+ pattern_line = 6
12+ code_lines = [f'line { i } \n ' for i in range (10 )]
13+ code_lines [pattern_line ] = f'something { pattern } something\n '
1314
1415 mocker .patch (
1516 'connect.eaas.core.validation.helpers.inspect.getsourcelines' ,
@@ -23,23 +24,25 @@ def test_get_code_context_module(mocker, faker):
2324 return_value = True ,
2425 )
2526
26- result = get_code_context (mocker .MagicMock (), 'country store build before' )
27+ result = get_code_context (mocker .MagicMock (), pattern )
2728
29+ expected_lineno = 1 + pattern_line
2830 assert result ['file' ] == 'path/file.py'
2931 assert result ['start_line' ] == 1
30- assert result ['lineno' ] == 7
31- assert result ['code' ] == '' .join (code . splitlines ( keepends = True ) [0 :7 + 3 ])
32+ assert result ['lineno' ] == expected_lineno
33+ assert result ['code' ] == '' .join (code_lines [0 :expected_lineno + 3 ])
3234
3335
34- def test_get_code_context_function (mocker , faker ):
36+ def test_get_code_context_function (mocker ):
3537 mocker .patch (
3638 'connect.eaas.core.validation.helpers.inspect.getsourcefile' ,
3739 return_value = 'path/file.py' ,
3840 )
3941
40- code_lines = [f'{ line } \n ' for line in faker .paragraphs (nb = 10 )]
41-
42- code = '' .join (code_lines )
42+ pattern = 'target_pattern'
43+ pattern_line = 6
44+ code_lines = [f'line { i } \n ' for i in range (10 )]
45+ code_lines [pattern_line ] = f'something { pattern } something\n '
4346
4447 mocker .patch (
4548 'connect.eaas.core.validation.helpers.inspect.getsourcelines' ,
@@ -53,9 +56,37 @@ def test_get_code_context_function(mocker, faker):
5356 return_value = False ,
5457 )
5558
56- result = get_code_context (mocker .MagicMock (), 'country store build before' )
59+ result = get_code_context (mocker .MagicMock (), pattern )
5760
5861 assert result ['file' ] == 'path/file.py'
5962 assert result ['start_line' ] == 1
60- assert result ['lineno' ] == 7
61- assert result ['code' ] == '' .join (code .splitlines (keepends = True ))
63+ assert result ['lineno' ] == 1 + pattern_line
64+ assert result ['code' ] == '' .join (code_lines )
65+
66+
67+ def test_get_code_context_pattern_not_found (mocker ):
68+ mocker .patch (
69+ 'connect.eaas.core.validation.helpers.inspect.getsourcefile' ,
70+ return_value = 'path/file.py' ,
71+ )
72+
73+ code_lines = [f'line { i } \n ' for i in range (10 )]
74+
75+ mocker .patch (
76+ 'connect.eaas.core.validation.helpers.inspect.getsourcelines' ,
77+ return_value = (
78+ code_lines ,
79+ 5 ,
80+ ),
81+ )
82+ mocker .patch (
83+ 'connect.eaas.core.validation.helpers.inspect.ismodule' ,
84+ return_value = False ,
85+ )
86+
87+ result = get_code_context (mocker .MagicMock (), 'nonexistent_pattern' )
88+
89+ assert result ['file' ] == 'path/file.py'
90+ assert result ['start_line' ] == 5
91+ assert result ['lineno' ] == 5
92+ assert result ['code' ] == '' .join (code_lines )
0 commit comments