Mercurial > vim
annotate src/testdir/test_scriptnames.vim @ 29930:cd573d7bc30d v9.0.0303
patch 9.0.0303: it is not easy to get information about a script
Commit: https://github.com/vim/vim/commit/2f892d8663498c21296ad6661dac1bb8372cfd10
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Sun Aug 28 18:52:10 2022 +0100
patch 9.0.0303: it is not easy to get information about a script
Problem: It is not easy to get information about a script.
Solution: Make getscriptinf() return the version. When selecting a specific
script return functions and variables. (Yegappan Lakshmanan,
closes #10991)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 28 Aug 2022 20:00:05 +0200 |
parents | 8dca33bca038 |
children | ae10b91ac6b3 |
rev | line source |
---|---|
15085
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
1 |
29810
761631155a90
patch 9.0.0244: cannot easily get the list of sourced scripts
Bram Moolenaar <Bram@vim.org>
parents:
27209
diff
changeset
|
2 " Test for the :scriptnames command |
15085
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 func Test_scriptnames() |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
4 call writefile(['let did_load_script = 123'], 'Xscripting') |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
5 source Xscripting |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
6 call assert_equal(123, g:did_load_script) |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
7 |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
8 let scripts = split(execute('scriptnames'), "\n") |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 let last = scripts[-1] |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 call assert_match('\<Xscripting\>', last) |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 let lastnr = substitute(last, '\D*\(\d\+\):.*', '\1', '') |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
12 exe 'script ' . lastnr |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 call assert_equal('Xscripting', expand('%:t')) |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
14 |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
15 call assert_fails('script ' . (lastnr + 1), 'E474:') |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
16 call assert_fails('script 0', 'E939:') |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
17 |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
18 new |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
19 call setline(1, 'nothing') |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
20 call assert_fails('script ' . lastnr, 'E37:') |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
21 exe 'script! ' . lastnr |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
22 call assert_equal('Xscripting', expand('%:t')) |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
23 |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
24 bwipe |
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
25 call delete('Xscripting') |
27209
fa09602eae48
patch 8.2.4133: output of ":scriptnames" goes into the message history
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
26 |
fa09602eae48
patch 8.2.4133: output of ":scriptnames" goes into the message history
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
27 let msgs = execute('messages') |
fa09602eae48
patch 8.2.4133: output of ":scriptnames" goes into the message history
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
28 scriptnames |
fa09602eae48
patch 8.2.4133: output of ":scriptnames" goes into the message history
Bram Moolenaar <Bram@vim.org>
parents:
21765
diff
changeset
|
29 call assert_equal(msgs, execute('messages')) |
15085
1783c0b6bc2e
patch 8.1.0553: it is not easy to edit a script that was sourced
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
30 endfunc |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
15085
diff
changeset
|
31 |
29810
761631155a90
patch 9.0.0244: cannot easily get the list of sourced scripts
Bram Moolenaar <Bram@vim.org>
parents:
27209
diff
changeset
|
32 " Test for the getscriptinfo() function |
761631155a90
patch 9.0.0244: cannot easily get the list of sourced scripts
Bram Moolenaar <Bram@vim.org>
parents:
27209
diff
changeset
|
33 func Test_getscriptinfo() |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
34 let lines =<< trim END |
29930
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
35 scriptversion 3 |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
36 let g:loaded_script_id = expand("<SID>") |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
37 let s:XscriptVar = [1, #{v: 2}] |
29930
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
38 func s:XgetScriptVar() |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
39 return s:XscriptVar |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
40 endfunc |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
41 func s:Xscript_legacy_func1() |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
42 endfunc |
29930
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
43 def s:Xscript_def_func1() |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
44 enddef |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
45 func Xscript_legacy_func2() |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
46 endfunc |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
47 def Xscript_def_func2() |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
48 enddef |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
49 END |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
50 call writefile(lines, 'X22script91') |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
51 source X22script91 |
29810
761631155a90
patch 9.0.0244: cannot easily get the list of sourced scripts
Bram Moolenaar <Bram@vim.org>
parents:
27209
diff
changeset
|
52 let l = getscriptinfo() |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
53 call assert_match('X22script91$', l[-1].name) |
29810
761631155a90
patch 9.0.0244: cannot easily get the list of sourced scripts
Bram Moolenaar <Bram@vim.org>
parents:
27209
diff
changeset
|
54 call assert_equal(g:loaded_script_id, $"<SNR>{l[-1].sid}_") |
29930
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
55 call assert_equal(3, l[-1].version) |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
56 call assert_equal(0, has_key(l[-1], 'variables')) |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
57 call assert_equal(0, has_key(l[-1], 'functions')) |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
58 |
29930
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
59 " Get script information using script name |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
60 let l = getscriptinfo(#{name: '22script91'}) |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
61 call assert_equal(1, len(l)) |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
62 call assert_match('22script91$', l[0].name) |
29930
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
63 let sid = l[0].sid |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
64 |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
65 " Get script information using script-ID |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
66 let l = getscriptinfo({'sid': sid}) |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
67 call assert_equal(#{XscriptVar: [1, {'v': 2}]}, l[0].variables) |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
68 let funcs = ['Xscript_legacy_func2', |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
69 \ $"<SNR>{sid}_Xscript_legacy_func1", |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
70 \ $"<SNR>{sid}_Xscript_def_func1", |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
71 \ 'Xscript_def_func2', |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
72 \ $"<SNR>{sid}_XgetScriptVar"] |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
73 for f in funcs |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
74 call assert_true(index(l[0].functions, f) != -1) |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
75 endfor |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
76 |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
77 " Verify that a script-local variable cannot be modified using the dict |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
78 " returned by getscriptinfo() |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
79 let l[0].variables.XscriptVar = ['n'] |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
80 let funcname = $"<SNR>{sid}_XgetScriptVar" |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
81 call assert_equal([1, {'v': 2}], call(funcname, [])) |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
82 |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
83 let l = getscriptinfo({'name': 'foobar'}) |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
84 call assert_equal(0, len(l)) |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
85 let l = getscriptinfo({'name': ''}) |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
86 call assert_true(len(l) > 1) |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
87 |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
88 call assert_fails("echo getscriptinfo({'name': []})", 'E730:') |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
89 call assert_fails("echo getscriptinfo({'name': '\\@'})", 'E866:') |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
90 let l = getscriptinfo({'name': test_null_string()}) |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
91 call assert_true(len(l) > 1) |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
92 call assert_fails("echo getscriptinfo('foobar')", 'E1206:') |
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
93 |
29930
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
94 call assert_fails("echo getscriptinfo({'sid': []})", 'E745:') |
cd573d7bc30d
patch 9.0.0303: it is not easy to get information about a script
Bram Moolenaar <Bram@vim.org>
parents:
29861
diff
changeset
|
95 |
29861
8dca33bca038
patch 9.0.0269: getscriptinfo() does not include the version
Bram Moolenaar <Bram@vim.org>
parents:
29810
diff
changeset
|
96 call delete('X22script91') |
29810
761631155a90
patch 9.0.0244: cannot easily get the list of sourced scripts
Bram Moolenaar <Bram@vim.org>
parents:
27209
diff
changeset
|
97 endfunc |
761631155a90
patch 9.0.0244: cannot easily get the list of sourced scripts
Bram Moolenaar <Bram@vim.org>
parents:
27209
diff
changeset
|
98 |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
15085
diff
changeset
|
99 " vim: shiftwidth=2 sts=2 expandtab |