xref: /vim-8.2.3635/src/testdir/test_gf.vim (revision bc93cebb)
1
2" This is a test if a URL is recognized by "gf", with the cursor before and
3" after the "://".  Also test ":\\".
4func Test_gf_url()
5  enew!
6  call append(0, [
7      \ "first test for URL://machine.name/tmp/vimtest2a and other text",
8      \ "second test for URL://machine.name/tmp/vimtest2b. And other text",
9      \ "third test for URL:\\\\machine.name\\vimtest2c and other text",
10      \ "fourth test for URL:\\\\machine.name\\tmp\\vimtest2d, and other text",
11      \ "fifth test for URL://machine.name/tmp?q=vim&opt=yes and other text",
12      \ "sixth test for URL://machine.name:1234?q=vim and other text",
13      \ ])
14  call cursor(1,1)
15  call search("^first")
16  call search("tmp")
17  call assert_equal("URL://machine.name/tmp/vimtest2a", expand("<cfile>"))
18  call search("^second")
19  call search("URL")
20  call assert_equal("URL://machine.name/tmp/vimtest2b", expand("<cfile>"))
21  if has("ebcdic")
22      set isf=@,240-249,/,.,-,_,+,,,$,:,~,\
23  else
24      set isf=@,48-57,/,.,-,_,+,,,$,~,\
25  endif
26  call search("^third")
27  call search("name")
28  call assert_equal("URL:\\\\machine.name\\vimtest2c", expand("<cfile>"))
29  call search("^fourth")
30  call search("URL")
31  call assert_equal("URL:\\\\machine.name\\tmp\\vimtest2d", expand("<cfile>"))
32
33  call search("^fifth")
34  call search("URL")
35  call assert_equal("URL://machine.name/tmp?q=vim&opt=yes", expand("<cfile>"))
36
37  call search("^sixth")
38  call search("URL")
39  call assert_equal("URL://machine.name:1234?q=vim", expand("<cfile>"))
40
41  set isf&vim
42  enew!
43endfunc
44
45func Test_gF()
46  new
47  call setline(1, ['111', '222', '333', '444'])
48  w! Xfile
49  close
50  new
51  set isfname-=:
52  call setline(1, ['one', 'Xfile:3', 'three'])
53  2
54  call assert_fails('normal gF', 'E37:')
55  call assert_equal(2, getcurpos()[1])
56  w! Xfile2
57  normal gF
58  call assert_equal('Xfile', bufname('%'))
59  call assert_equal(3, getcurpos()[1])
60
61  enew!
62  call setline(1, ['one', 'the Xfile line 2, and more', 'three'])
63  w! Xfile2
64  normal 2GfX
65  normal gF
66  call assert_equal('Xfile', bufname('%'))
67  call assert_equal(2, getcurpos()[1])
68
69  set isfname&
70  call delete('Xfile')
71  call delete('Xfile2')
72  bwipe Xfile
73  bwipe Xfile2
74endfunc
75
76" Test for invoking 'gf' on a ${VAR} variable
77func Test_gf()
78  if has("ebcdic")
79    set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
80  else
81    set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
82  endif
83
84  call writefile(["Test for gf command"], "Xtest1")
85  if has("unix")
86    call writefile(["    ${CDIR}/Xtest1"], "Xtestgf")
87  else
88    call writefile(["    $TDIR/Xtest1"], "Xtestgf")
89  endif
90  new Xtestgf
91  if has("unix")
92    let $CDIR = "."
93    /CDIR
94  else
95    if has("amiga")
96      let $TDIR = "/testdir"
97    else
98      let $TDIR = "."
99    endif
100    /TDIR
101  endif
102
103  normal gf
104  call assert_equal('Xtest1', fnamemodify(bufname(''), ":t"))
105  close!
106
107  call delete('Xtest1')
108  call delete('Xtestgf')
109endfunc
110
111func Test_gf_visual()
112  call writefile([], "Xtest_gf_visual")
113  new
114  call setline(1, 'XXXtest_gf_visualXXX')
115  set hidden
116
117  " Visually select Xtest_gf_visual and use gf to go to that file
118  norm! ttvtXgf
119  call assert_equal('Xtest_gf_visual', bufname('%'))
120
121  bwipe!
122  call delete('Xtest_gf_visual')
123  set hidden&
124endfunc
125
126func Test_gf_error()
127  new
128  call assert_fails('normal gf', 'E446:')
129  call assert_fails('normal gF', 'E446:')
130  call setline(1, '/doesnotexist')
131  call assert_fails('normal gf', 'E447:')
132  call assert_fails('normal gF', 'E447:')
133  bwipe!
134endfunc
135