1*6b0e5283SBram Moolenaar" Test to verify that the three function lists,
2*6b0e5283SBram Moolenaar"
3*6b0e5283SBram Moolenaar"   global_functions[] in src/evalfunc.c
4*6b0e5283SBram Moolenaar"   *functions* in runtime/doc/eval.txt
5*6b0e5283SBram Moolenaar"   *function-list* in runtime/doc/usr_41.txt
6*6b0e5283SBram Moolenaar"
7*6b0e5283SBram Moolenaar" contain the same functions and that the global_functions and ":help
8*6b0e5283SBram Moolenaar" functions" lists are in ASCII order.
9*6b0e5283SBram Moolenaar
10*6b0e5283SBram Moolenaarfunc Test_function_lists()
11*6b0e5283SBram Moolenaar
12*6b0e5283SBram Moolenaar  " Delete any files left over from an earlier run of this test.
13*6b0e5283SBram Moolenaar
14*6b0e5283SBram Moolenaar  call delete("Xglobal_functions.diff")
15*6b0e5283SBram Moolenaar  call delete("Xfunctions.diff")
16*6b0e5283SBram Moolenaar  call delete("Xfunction-list.diff")
17*6b0e5283SBram Moolenaar
18*6b0e5283SBram Moolenaar  " Create a file of the functions in evalfunc.c:global_functions[].
19*6b0e5283SBram Moolenaar
20*6b0e5283SBram Moolenaar  enew!
21*6b0e5283SBram Moolenaar  read ../evalfunc.c
22*6b0e5283SBram Moolenaar  1,/^static funcentry_T global_functions\[\] =$/d
23*6b0e5283SBram Moolenaar  call search('^};$')
24*6b0e5283SBram Moolenaar  .,$d
25*6b0e5283SBram Moolenaar  v/^    {/d
26*6b0e5283SBram Moolenaar  %s/^    {"//
27*6b0e5283SBram Moolenaar  %s/".*//
28*6b0e5283SBram Moolenaar  w! Xglobal_functions
29*6b0e5283SBram Moolenaar
30*6b0e5283SBram Moolenaar  " Verify that those functions are in ASCII order.
31*6b0e5283SBram Moolenaar
32*6b0e5283SBram Moolenaar  sort u
33*6b0e5283SBram Moolenaar  w! Xsorted_global_functions
34*6b0e5283SBram Moolenaar  let l:unequal = assert_equalfile("Xsorted_global_functions", "Xglobal_functions",
35*6b0e5283SBram Moolenaar      \ "global_functions[] not sorted")
36*6b0e5283SBram Moolenaar  if l:unequal && executable("diff")
37*6b0e5283SBram Moolenaar    call system("diff -u Xsorted_global_functions Xglobal_functions > Xglobal_functions.diff")
38*6b0e5283SBram Moolenaar  endif
39*6b0e5283SBram Moolenaar
40*6b0e5283SBram Moolenaar  " Create a file of the functions in evalfunc.c:global_functions[] that are
41*6b0e5283SBram Moolenaar  " not obsolete, sorted in ASCII order.
42*6b0e5283SBram Moolenaar
43*6b0e5283SBram Moolenaar  enew!
44*6b0e5283SBram Moolenaar  read ../evalfunc.c
45*6b0e5283SBram Moolenaar  1,/^static funcentry_T global_functions\[\] =$/d
46*6b0e5283SBram Moolenaar  call search('^};$')
47*6b0e5283SBram Moolenaar  .,$d
48*6b0e5283SBram Moolenaar  v/^    {/d
49*6b0e5283SBram Moolenaar  g/\/\/ obsolete$/d
50*6b0e5283SBram Moolenaar  %s/^    {"//
51*6b0e5283SBram Moolenaar  %s/".*//
52*6b0e5283SBram Moolenaar  sort u
53*6b0e5283SBram Moolenaar  w! Xsorted_current_global_functions
54*6b0e5283SBram Moolenaar
55*6b0e5283SBram Moolenaar  " Verify that the ":help functions" list is complete and in ASCII order.
56*6b0e5283SBram Moolenaar
57*6b0e5283SBram Moolenaar  enew!
58*6b0e5283SBram Moolenaar  read ../../runtime/doc/eval.txt
59*6b0e5283SBram Moolenaar  call search('\*functions\*$')
60*6b0e5283SBram Moolenaar  call search('^USAGE')
61*6b0e5283SBram Moolenaar  1,.d
62*6b0e5283SBram Moolenaar  call search('\*\K\k*()\*$')
63*6b0e5283SBram Moolenaar  .,$d
64*6b0e5283SBram Moolenaar  v/^\S/d
65*6b0e5283SBram Moolenaar  %s/(.*//
66*6b0e5283SBram Moolenaar  let l:lines = getline(1, '$')
67*6b0e5283SBram Moolenaar  call uniq(l:lines)
68*6b0e5283SBram Moolenaar  call writefile(l:lines, "Xfunctions")
69*6b0e5283SBram Moolenaar  let l:unequal = assert_equalfile("Xsorted_current_global_functions", "Xfunctions",
70*6b0e5283SBram Moolenaar      \ "\":help functions\" not sorted or incomplete")
71*6b0e5283SBram Moolenaar  if l:unequal && executable("diff")
72*6b0e5283SBram Moolenaar    call system("diff -u Xsorted_current_global_functions Xfunctions > Xfunctions.diff")
73*6b0e5283SBram Moolenaar  endif
74*6b0e5283SBram Moolenaar
75*6b0e5283SBram Moolenaar  " Verify that the ":help function-list" list is complete.
76*6b0e5283SBram Moolenaar
77*6b0e5283SBram Moolenaar  enew!
78*6b0e5283SBram Moolenaar  read ../../runtime/doc/usr_41.txt
79*6b0e5283SBram Moolenaar  call search('\*function-list\*$')
80*6b0e5283SBram Moolenaar  1,.d
81*6b0e5283SBram Moolenaar  call search('^==*$')
82*6b0e5283SBram Moolenaar  .,$d
83*6b0e5283SBram Moolenaar  v/^\t\S/d
84*6b0e5283SBram Moolenaar  %s/(.*//
85*6b0e5283SBram Moolenaar  %left
86*6b0e5283SBram Moolenaar  sort u
87*6b0e5283SBram Moolenaar  w! Xfunction-list
88*6b0e5283SBram Moolenaar  let l:unequal = assert_equalfile("Xsorted_current_global_functions", "Xfunction-list",
89*6b0e5283SBram Moolenaar      \ "\":help functions-list\" incomplete")
90*6b0e5283SBram Moolenaar  if l:unequal && executable("diff")
91*6b0e5283SBram Moolenaar    call system("diff -u Xsorted_current_global_functions Xfunction-list > Xfunction-list.diff")
92*6b0e5283SBram Moolenaar  endif
93*6b0e5283SBram Moolenaar
94*6b0e5283SBram Moolenaar  " Clean up.
95*6b0e5283SBram Moolenaar
96*6b0e5283SBram Moolenaar  call delete("Xglobal_functions")
97*6b0e5283SBram Moolenaar  call delete("Xsorted_global_functions")
98*6b0e5283SBram Moolenaar  call delete("Xsorted_current_global_functions")
99*6b0e5283SBram Moolenaar  call delete("Xfunctions")
100*6b0e5283SBram Moolenaar  call delete("Xfunction-list")
101*6b0e5283SBram Moolenaar  enew!
102*6b0e5283SBram Moolenaar
103*6b0e5283SBram Moolenaarendfunc
104*6b0e5283SBram Moolenaar
105*6b0e5283SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
106