Mercurial > vim
comparison src/testdir/test_vim9_import.vim @ 29970:d891115c0aea v9.0.0323
patch 9.0.0323: using common name in tests leads to flaky tests
Commit: https://github.com/vim/vim/commit/3b0d70f4ff436cb144683dafd956e8a3ee485a90
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Aug 29 22:31:20 2022 +0100
patch 9.0.0323: using common name in tests leads to flaky tests
Problem: Using common name in tests leads to flaky tests.
Solution: Rename files and directories to be more specific.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 29 Aug 2022 23:45:04 +0200 |
parents | cd573d7bc30d |
children | 13b02c1ea0f7 |
comparison
equal
deleted
inserted
replaced
29969:5f2d38cacd6c | 29970:d891115c0aea |
---|---|
764 vim9script | 764 vim9script |
765 export def Func() | 765 export def Func() |
766 g:result = 49 | 766 g:result = 49 |
767 enddef | 767 enddef |
768 END | 768 END |
769 mkdir('Xdir/autoload', 'p') | 769 mkdir('Ximpdir/autoload', 'p') |
770 writefile(lines, 'Xdir/autoload/XautoloadExport.vim') | 770 writefile(lines, 'Ximpdir/autoload/XautoloadExport.vim') |
771 var save_rtp = &rtp | 771 var save_rtp = &rtp |
772 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 772 exe 'set rtp^=' .. getcwd() .. '/Ximpdir' |
773 | 773 |
774 lines =<< trim END | 774 lines =<< trim END |
775 vim9script | 775 vim9script |
776 import autoload 'XautoloadExport.vim' as some | 776 import autoload 'XautoloadExport.vim' as some |
777 nnoremap <F3> :call <SID>some.Func()<CR> | 777 nnoremap <F3> :call <SID>some.Func()<CR> |
784 assert_equal(49, g:result) | 784 assert_equal(49, g:result) |
785 | 785 |
786 unlet g:result | 786 unlet g:result |
787 delete('Xmapscript.vim') | 787 delete('Xmapscript.vim') |
788 nunmap <F3> | 788 nunmap <F3> |
789 delete('Xdir', 'rf') | 789 delete('Ximpdir', 'rf') |
790 &rtp = save_rtp | 790 &rtp = save_rtp |
791 enddef | 791 enddef |
792 | 792 |
793 def Test_use_import_in_command_completion() | 793 def Test_use_import_in_command_completion() |
794 var lines =<< trim END | 794 var lines =<< trim END |
836 delcommand Cmd | 836 delcommand Cmd |
837 delete('Xscript.vim') | 837 delete('Xscript.vim') |
838 enddef | 838 enddef |
839 | 839 |
840 def Test_use_autoload_import_in_insert_completion() | 840 def Test_use_autoload_import_in_insert_completion() |
841 mkdir('Xdir/autoload', 'p') | 841 mkdir('Xinsdir/autoload', 'p') |
842 var save_rtp = &rtp | 842 var save_rtp = &rtp |
843 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 843 exe 'set rtp^=' .. getcwd() .. '/Xinsdir' |
844 | 844 |
845 var lines =<< trim END | 845 var lines =<< trim END |
846 vim9script | 846 vim9script |
847 export def ThesaurusFunc(findbase: bool, _): any | 847 export def ThesaurusFunc(findbase: bool, _): any |
848 if findbase | 848 if findbase |
855 'verification' | 855 'verification' |
856 ] | 856 ] |
857 enddef | 857 enddef |
858 g:completion_loaded = 'yes' | 858 g:completion_loaded = 'yes' |
859 END | 859 END |
860 writefile(lines, 'Xdir/autoload/completion.vim') | 860 writefile(lines, 'Xinsdir/autoload/completion.vim') |
861 | 861 |
862 new | 862 new |
863 lines =<< trim END | 863 lines =<< trim END |
864 vim9script | 864 vim9script |
865 g:completion_loaded = 'no' | 865 g:completion_loaded = 'no' |
872 END | 872 END |
873 v9.CheckScriptSuccess(lines) | 873 v9.CheckScriptSuccess(lines) |
874 | 874 |
875 set thesaurusfunc= | 875 set thesaurusfunc= |
876 bwipe! | 876 bwipe! |
877 delete('Xdir', 'rf') | 877 delete('Xinsdir', 'rf') |
878 &rtp = save_rtp | 878 &rtp = save_rtp |
879 enddef | 879 enddef |
880 | 880 |
881 def Test_use_autoload_import_partial_in_opfunc() | 881 def Test_use_autoload_import_partial_in_opfunc() |
882 mkdir('Xdir/autoload', 'p') | 882 mkdir('Xpartdir/autoload', 'p') |
883 var save_rtp = &rtp | 883 var save_rtp = &rtp |
884 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 884 exe 'set rtp^=' .. getcwd() .. '/Xpartdir' |
885 | 885 |
886 var lines =<< trim END | 886 var lines =<< trim END |
887 vim9script | 887 vim9script |
888 export def Opfunc(..._) | 888 export def Opfunc1(..._) |
889 g:opfunc_called = 'yes' | 889 g:opfunc_called = 'yes' |
890 enddef | 890 enddef |
891 END | 891 END |
892 writefile(lines, 'Xdir/autoload/opfunc.vim') | 892 writefile(lines, 'Xpartdir/autoload/opfunc.vim') |
893 | 893 |
894 new | 894 new |
895 lines =<< trim END | 895 lines =<< trim END |
896 vim9script | 896 vim9script |
897 import autoload 'opfunc.vim' | 897 import autoload 'opfunc.vim' |
898 nnoremap <expr> <F3> TheFunc() | 898 nnoremap <expr> <F3> TheFunc() |
899 def TheFunc(): string | 899 def TheFunc(): string |
900 &operatorfunc = function('opfunc.Opfunc', [0]) | 900 &operatorfunc = function('opfunc.Opfunc1', [0]) |
901 return 'g@' | 901 return 'g@' |
902 enddef | 902 enddef |
903 feedkeys("\<F3>l", 'xt') | 903 feedkeys("\<F3>l", 'xt') |
904 assert_equal('yes', g:opfunc_called) | 904 assert_equal('yes', g:opfunc_called) |
905 END | 905 END |
906 v9.CheckScriptSuccess(lines) | 906 v9.CheckScriptSuccess(lines) |
907 | 907 |
908 set opfunc= | 908 set opfunc= |
909 bwipe! | 909 bwipe! |
910 delete('Xdir', 'rf') | 910 delete('Xpartdir', 'rf') |
911 nunmap <F3> | 911 nunmap <F3> |
912 &rtp = save_rtp | 912 &rtp = save_rtp |
913 enddef | 913 enddef |
914 | 914 |
915 def Test_set_opfunc_to_autoload_func_directly() | 915 def Test_set_opfunc_to_autoload_func_directly() |
916 mkdir('Xdir/autoload', 'p') | 916 mkdir('Xdirdir/autoload', 'p') |
917 var save_rtp = &rtp | 917 var save_rtp = &rtp |
918 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 918 exe 'set rtp^=' .. getcwd() .. '/Xdirdir' |
919 | 919 |
920 var lines =<< trim END | 920 var lines =<< trim END |
921 vim9script | 921 vim9script |
922 export def Opfunc(..._) | 922 export def Opfunc2(..._) |
923 g:opfunc_called = 'yes' | 923 g:opfunc_called = 'yes' |
924 enddef | 924 enddef |
925 END | 925 END |
926 writefile(lines, 'Xdir/autoload/opfunc.vim') | 926 writefile(lines, 'Xdirdir/autoload/opfunc.vim') |
927 | 927 |
928 new | 928 new |
929 lines =<< trim END | 929 lines =<< trim END |
930 vim9script | 930 vim9script |
931 import autoload 'opfunc.vim' | 931 import autoload 'opfunc.vim' |
932 nnoremap <expr> <F3> TheFunc() | 932 nnoremap <expr> <F3> TheFunc() |
933 def TheFunc(): string | 933 def TheFunc(): string |
934 &operatorfunc = opfunc.Opfunc | 934 &operatorfunc = opfunc.Opfunc2 |
935 return 'g@' | 935 return 'g@' |
936 enddef | 936 enddef |
937 feedkeys("\<F3>l", 'xt') | 937 feedkeys("\<F3>l", 'xt') |
938 assert_equal('yes', g:opfunc_called) | 938 assert_equal('yes', g:opfunc_called) |
939 END | 939 END |
940 v9.CheckScriptSuccess(lines) | 940 v9.CheckScriptSuccess(lines) |
941 | 941 |
942 set opfunc= | 942 set opfunc= |
943 bwipe! | 943 bwipe! |
944 delete('Xdir', 'rf') | 944 delete('Xdirdir', 'rf') |
945 nunmap <F3> | 945 nunmap <F3> |
946 &rtp = save_rtp | 946 &rtp = save_rtp |
947 enddef | 947 enddef |
948 | 948 |
949 def Test_use_autoload_import_in_fold_expression() | 949 def Test_use_autoload_import_in_fold_expression() |
950 mkdir('Xdir/autoload', 'p') | 950 mkdir('Xfolddir/autoload', 'p') |
951 var save_rtp = &rtp | 951 var save_rtp = &rtp |
952 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 952 exe 'set rtp^=' .. getcwd() .. '/Xfolddir' |
953 | 953 |
954 var lines =<< trim END | 954 var lines =<< trim END |
955 vim9script | 955 vim9script |
956 export def Expr(): string | 956 export def Expr(): string |
957 return getline(v:lnum) =~ '^#' ? '>1' : '1' | 957 return getline(v:lnum) =~ '^#' ? '>1' : '1' |
959 export def Text(): string | 959 export def Text(): string |
960 return 'fold text' | 960 return 'fold text' |
961 enddef | 961 enddef |
962 g:fold_loaded = 'yes' | 962 g:fold_loaded = 'yes' |
963 END | 963 END |
964 writefile(lines, 'Xdir/autoload/fold.vim') | 964 writefile(lines, 'Xfolddir/autoload/fold.vim') |
965 | 965 |
966 lines =<< trim END | 966 lines =<< trim END |
967 vim9script | 967 vim9script |
968 import autoload 'fold.vim' | 968 import autoload 'fold.vim' |
969 &foldexpr = 'fold.Expr()' | 969 &foldexpr = 'fold.Expr()' |
983 edit! otherfile | 983 edit! otherfile |
984 redraw | 984 redraw |
985 | 985 |
986 set foldexpr= foldtext& foldmethod& debug= | 986 set foldexpr= foldtext& foldmethod& debug= |
987 bwipe! | 987 bwipe! |
988 delete('Xdir', 'rf') | 988 delete('Xfolddir', 'rf') |
989 &rtp = save_rtp | 989 &rtp = save_rtp |
990 enddef | 990 enddef |
991 | 991 |
992 def Test_autoload_import_relative() | 992 def Test_autoload_import_relative() |
993 var lines =<< trim END | 993 var lines =<< trim END |
1198 delete('Xa.vim') | 1198 delete('Xa.vim') |
1199 var x = Xa.FOO | 1199 var x = Xa.FOO |
1200 END | 1200 END |
1201 v9.CheckScriptFailure(lines, 'E484:') | 1201 v9.CheckScriptFailure(lines, 'E484:') |
1202 | 1202 |
1203 delete('Xdir', 'rf') | 1203 delete('Xa.vim') |
1204 enddef | 1204 enddef |
1205 | 1205 |
1206 func Test_import_in_diffexpr() | 1206 func Test_import_in_diffexpr() |
1207 CheckExecutable diff | 1207 CheckExecutable diff |
1208 | 1208 |
1453 delete('Xsuggest.vim') | 1453 delete('Xsuggest.vim') |
1454 set nospell spellsuggest& verbose=0 | 1454 set nospell spellsuggest& verbose=0 |
1455 enddef | 1455 enddef |
1456 | 1456 |
1457 def Test_export_shadows_global_function() | 1457 def Test_export_shadows_global_function() |
1458 mkdir('Xdir/autoload', 'p') | 1458 mkdir('Xglobdir/autoload', 'p') |
1459 var save_rtp = &rtp | 1459 var save_rtp = &rtp |
1460 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 1460 exe 'set rtp^=' .. getcwd() .. '/Xglobdir' |
1461 | 1461 |
1462 var lines =<< trim END | 1462 var lines =<< trim END |
1463 vim9script | 1463 vim9script |
1464 export def Shadow(): string | 1464 export def Shadow(): string |
1465 return 'Shadow()' | 1465 return 'Shadow()' |
1466 enddef | 1466 enddef |
1467 END | 1467 END |
1468 writefile(lines, 'Xdir/autoload/shadow.vim') | 1468 writefile(lines, 'Xglobdir/autoload/shadow.vim') |
1469 | 1469 |
1470 lines =<< trim END | 1470 lines =<< trim END |
1471 vim9script | 1471 vim9script |
1472 | 1472 |
1473 def g:Shadow(): string | 1473 def g:Shadow(): string |
1479 END | 1479 END |
1480 v9.CheckScriptSuccess(lines) | 1480 v9.CheckScriptSuccess(lines) |
1481 | 1481 |
1482 delfunc g:Shadow | 1482 delfunc g:Shadow |
1483 bwipe! | 1483 bwipe! |
1484 delete('Xdir', 'rf') | 1484 delete('Xglobdir', 'rf') |
1485 &rtp = save_rtp | 1485 &rtp = save_rtp |
1486 enddef | 1486 enddef |
1487 | 1487 |
1488 def Test_export_fails() | 1488 def Test_export_fails() |
1489 v9.CheckScriptFailure(['export var some = 123'], 'E1042:') | 1489 v9.CheckScriptFailure(['export var some = 123'], 'E1042:') |
2176 export def Varargs(a1: string, ...l: list<string>): string | 2176 export def Varargs(a1: string, ...l: list<string>): string |
2177 return a1 .. l[0] .. l[1] | 2177 return a1 .. l[0] .. l[1] |
2178 enddef | 2178 enddef |
2179 END | 2179 END |
2180 | 2180 |
2181 mkdir('Xdir/autoload', 'p') | 2181 mkdir('Xfulldir/autoload', 'p') |
2182 writefile(lines, 'Xdir/autoload/some.vim') | 2182 writefile(lines, 'Xfulldir/autoload/some.vim') |
2183 var save_rtp = &rtp | 2183 var save_rtp = &rtp |
2184 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2184 exe 'set rtp^=' .. getcwd() .. '/Xfulldir' |
2185 | 2185 |
2186 assert_equal('test', g:some#Gettest()) | 2186 assert_equal('test', g:some#Gettest()) |
2187 assert_equal('name', g:some#name) | 2187 assert_equal('name', g:some#name) |
2188 assert_equal('value', g:some#dict.key) | 2188 assert_equal('value', g:some#dict.key) |
2189 g:some#other = 'other' | 2189 g:some#other = 'other' |
2196 vim9script | 2196 vim9script |
2197 export def GetOther(): string | 2197 export def GetOther(): string |
2198 return 'other' | 2198 return 'other' |
2199 enddef | 2199 enddef |
2200 END | 2200 END |
2201 writefile(lines, 'Xdir/autoload/Other.vim') | 2201 writefile(lines, 'Xfulldir/autoload/Other.vim') |
2202 assert_equal('other', g:Other#GetOther()) | 2202 assert_equal('other', g:Other#GetOther()) |
2203 | 2203 |
2204 delete('Xdir', 'rf') | 2204 delete('Xfulldir', 'rf') |
2205 &rtp = save_rtp | 2205 &rtp = save_rtp |
2206 enddef | 2206 enddef |
2207 | 2207 |
2208 def Test_vim9script_autoload() | 2208 def Test_vim9script_autoload() |
2209 mkdir('Xdir/autoload', 'p') | 2209 mkdir('Xaldir/autoload', 'p') |
2210 var save_rtp = &rtp | 2210 var save_rtp = &rtp |
2211 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2211 exe 'set rtp^=' .. getcwd() .. '/Xaldir' |
2212 | 2212 |
2213 # when the path has "/autoload/" prefix is not needed | 2213 # when the path has "/autoload/" prefix is not needed |
2214 var lines =<< trim END | 2214 var lines =<< trim END |
2215 vim9script | 2215 vim9script |
2216 g:prefixed_loaded += 1 | 2216 g:prefixed_loaded += 1 |
2230 enddef | 2230 enddef |
2231 | 2231 |
2232 export final fname = 'final' | 2232 export final fname = 'final' |
2233 export const cname = 'const' | 2233 export const cname = 'const' |
2234 END | 2234 END |
2235 writefile(lines, 'Xdir/autoload/prefixed.vim') | 2235 writefile(lines, 'Xaldir/autoload/prefixed.vim') |
2236 | 2236 |
2237 g:prefixed_loaded = 0 | 2237 g:prefixed_loaded = 0 |
2238 g:expected_loaded = 0 | 2238 g:expected_loaded = 0 |
2239 lines =<< trim END | 2239 lines =<< trim END |
2240 vim9script | 2240 vim9script |
2264 END | 2264 END |
2265 v9.CheckScriptSuccess(lines) | 2265 v9.CheckScriptSuccess(lines) |
2266 | 2266 |
2267 unlet g:prefixed_loaded | 2267 unlet g:prefixed_loaded |
2268 unlet g:expected_loaded | 2268 unlet g:expected_loaded |
2269 delete('Xdir', 'rf') | 2269 delete('Xaldir', 'rf') |
2270 &rtp = save_rtp | 2270 &rtp = save_rtp |
2271 enddef | 2271 enddef |
2272 | 2272 |
2273 def Test_import_autoload_not_exported() | 2273 def Test_import_autoload_not_exported() |
2274 mkdir('Xdir/autoload', 'p') | 2274 mkdir('Xnimdir/autoload', 'p') |
2275 var save_rtp = &rtp | 2275 var save_rtp = &rtp |
2276 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2276 exe 'set rtp^=' .. getcwd() .. '/Xnimdir' |
2277 | 2277 |
2278 # error when using an item that is not exported from an autoload script | 2278 # error when using an item that is not exported from an autoload script |
2279 var exportLines =<< trim END | 2279 var exportLines =<< trim END |
2280 vim9script | 2280 vim9script |
2281 var notExported = 123 | 2281 var notExported = 123 |
2282 def NotExport() | 2282 def NotExport() |
2283 echo 'nop' | 2283 echo 'nop' |
2284 enddef | 2284 enddef |
2285 END | 2285 END |
2286 writefile(exportLines, 'Xdir/autoload/notExport1.vim') | 2286 writefile(exportLines, 'Xnimdir/autoload/notExport1.vim') |
2287 | 2287 |
2288 var lines =<< trim END | 2288 var lines =<< trim END |
2289 vim9script | 2289 vim9script |
2290 import autoload 'notExport1.vim' | 2290 import autoload 'notExport1.vim' |
2291 echo notExport1.notFound | 2291 echo notExport1.notFound |
2327 END | 2327 END |
2328 v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport') | 2328 v9.CheckScriptFailure(lines, 'E1049: Item not exported in script: NotExport') |
2329 | 2329 |
2330 # using a :def function we use a different autoload script every time so that | 2330 # using a :def function we use a different autoload script every time so that |
2331 # the function is compiled without the script loaded | 2331 # the function is compiled without the script loaded |
2332 writefile(exportLines, 'Xdir/autoload/notExport2.vim') | 2332 writefile(exportLines, 'Xnimdir/autoload/notExport2.vim') |
2333 lines =<< trim END | 2333 lines =<< trim END |
2334 vim9script | 2334 vim9script |
2335 import autoload 'notExport2.vim' | 2335 import autoload 'notExport2.vim' |
2336 def Testit() | 2336 def Testit() |
2337 echo notExport2.notFound | 2337 echo notExport2.notFound |
2338 enddef | 2338 enddef |
2339 Testit() | 2339 Testit() |
2340 END | 2340 END |
2341 v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notExport2#notFound') | 2341 v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notExport2#notFound') |
2342 | 2342 |
2343 writefile(exportLines, 'Xdir/autoload/notExport3.vim') | 2343 writefile(exportLines, 'Xnimdir/autoload/notExport3.vim') |
2344 lines =<< trim END | 2344 lines =<< trim END |
2345 vim9script | 2345 vim9script |
2346 import autoload 'notExport3.vim' | 2346 import autoload 'notExport3.vim' |
2347 def Testit() | 2347 def Testit() |
2348 echo notExport3.notExported | 2348 echo notExport3.notExported |
2350 Testit() | 2350 Testit() |
2351 END | 2351 END |
2352 # don't get E1049 because it is too complicated to figure out | 2352 # don't get E1049 because it is too complicated to figure out |
2353 v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notExport3#notExported') | 2353 v9.CheckScriptFailure(lines, 'E1048: Item not found in script: notExport3#notExported') |
2354 | 2354 |
2355 writefile(exportLines, 'Xdir/autoload/notExport4.vim') | 2355 writefile(exportLines, 'Xnimdir/autoload/notExport4.vim') |
2356 lines =<< trim END | 2356 lines =<< trim END |
2357 vim9script | 2357 vim9script |
2358 import autoload 'notExport4.vim' | 2358 import autoload 'notExport4.vim' |
2359 def Testit() | 2359 def Testit() |
2360 echo notExport4.NotFunc() | 2360 echo notExport4.NotFunc() |
2361 enddef | 2361 enddef |
2362 Testit() | 2362 Testit() |
2363 END | 2363 END |
2364 v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport4#NotFunc') | 2364 v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport4#NotFunc') |
2365 | 2365 |
2366 writefile(exportLines, 'Xdir/autoload/notExport5.vim') | 2366 writefile(exportLines, 'Xnimdir/autoload/notExport5.vim') |
2367 lines =<< trim END | 2367 lines =<< trim END |
2368 vim9script | 2368 vim9script |
2369 import autoload 'notExport5.vim' | 2369 import autoload 'notExport5.vim' |
2370 def Testit() | 2370 def Testit() |
2371 echo notExport5.NotExport() | 2371 echo notExport5.NotExport() |
2372 enddef | 2372 enddef |
2373 Testit() | 2373 Testit() |
2374 END | 2374 END |
2375 v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport5#NotExport') | 2375 v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport5#NotExport') |
2376 | 2376 |
2377 writefile(exportLines, 'Xdir/autoload/notExport6.vim') | 2377 writefile(exportLines, 'Xnimdir/autoload/notExport6.vim') |
2378 lines =<< trim END | 2378 lines =<< trim END |
2379 vim9script | 2379 vim9script |
2380 import autoload 'notExport6.vim' | 2380 import autoload 'notExport6.vim' |
2381 def Testit() | 2381 def Testit() |
2382 echo 'text'->notExport6.NotFunc() | 2382 echo 'text'->notExport6.NotFunc() |
2383 enddef | 2383 enddef |
2384 Testit() | 2384 Testit() |
2385 END | 2385 END |
2386 v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport6#NotFunc') | 2386 v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport6#NotFunc') |
2387 | 2387 |
2388 writefile(exportLines, 'Xdir/autoload/notExport7.vim') | 2388 writefile(exportLines, 'Xnimdir/autoload/notExport7.vim') |
2389 lines =<< trim END | 2389 lines =<< trim END |
2390 vim9script | 2390 vim9script |
2391 import autoload 'notExport7.vim' | 2391 import autoload 'notExport7.vim' |
2392 def Testit() | 2392 def Testit() |
2393 echo 'text'->notExport7.NotExport() | 2393 echo 'text'->notExport7.NotExport() |
2394 enddef | 2394 enddef |
2395 Testit() | 2395 Testit() |
2396 END | 2396 END |
2397 v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport7#NotExport') | 2397 v9.CheckScriptFailure(lines, 'E117: Unknown function: notExport7#NotExport') |
2398 | 2398 |
2399 delete('Xdir', 'rf') | 2399 delete('Xnimdir', 'rf') |
2400 &rtp = save_rtp | 2400 &rtp = save_rtp |
2401 enddef | 2401 enddef |
2402 | 2402 |
2403 def Test_vim9script_autoload_call() | 2403 def Test_vim9script_autoload_call() |
2404 mkdir('Xdir/autoload', 'p') | 2404 mkdir('Xcalldir/autoload', 'p') |
2405 var save_rtp = &rtp | 2405 var save_rtp = &rtp |
2406 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2406 exe 'set rtp^=' .. getcwd() .. '/Xcalldir' |
2407 | 2407 |
2408 var lines =<< trim END | 2408 var lines =<< trim END |
2409 vim9script | 2409 vim9script |
2410 | 2410 |
2411 export def RetArg(arg: string): string | 2411 export def RetArg(arg: string): string |
2414 | 2414 |
2415 export def Getother() | 2415 export def Getother() |
2416 g:result = 'other' | 2416 g:result = 'other' |
2417 enddef | 2417 enddef |
2418 END | 2418 END |
2419 writefile(lines, 'Xdir/autoload/another.vim') | 2419 writefile(lines, 'Xcalldir/autoload/another.vim') |
2420 | 2420 |
2421 lines =<< trim END | 2421 lines =<< trim END |
2422 vim9script | 2422 vim9script |
2423 import autoload 'another.vim' | 2423 import autoload 'another.vim' |
2424 | 2424 |
2438 verbose function another#Getother | 2438 verbose function another#Getother |
2439 END | 2439 END |
2440 v9.CheckScriptSuccess(lines) | 2440 v9.CheckScriptSuccess(lines) |
2441 | 2441 |
2442 unlet g:result | 2442 unlet g:result |
2443 delete('Xdir', 'rf') | 2443 delete('Xcalldir', 'rf') |
2444 &rtp = save_rtp | 2444 &rtp = save_rtp |
2445 enddef | 2445 enddef |
2446 | 2446 |
2447 def Test_vim9script_noclear_autoload() | 2447 def Test_vim9script_noclear_autoload() |
2448 mkdir('Xdir/autoload', 'p') | 2448 mkdir('Xnocdir/autoload', 'p') |
2449 var save_rtp = &rtp | 2449 var save_rtp = &rtp |
2450 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2450 exe 'set rtp^=' .. getcwd() .. '/Xnocdir' |
2451 | 2451 |
2452 var lines =<< trim END | 2452 var lines =<< trim END |
2453 vim9script | 2453 vim9script |
2454 export def Func(): string | 2454 export def Func(): string |
2455 return 'called' | 2455 return 'called' |
2456 enddef | 2456 enddef |
2457 g:double_loaded = 'yes' | 2457 g:double_loaded = 'yes' |
2458 END | 2458 END |
2459 writefile(lines, 'Xdir/autoload/double.vim') | 2459 writefile(lines, 'Xnocdir/autoload/double.vim') |
2460 | 2460 |
2461 lines =<< trim END | 2461 lines =<< trim END |
2462 vim9script noclear | 2462 vim9script noclear |
2463 if exists('g:script_loaded') | 2463 if exists('g:script_loaded') |
2464 finish | 2464 finish |
2480 | 2480 |
2481 delete('Xloaddouble') | 2481 delete('Xloaddouble') |
2482 unlet g:double_loaded | 2482 unlet g:double_loaded |
2483 unlet g:script_loaded | 2483 unlet g:script_loaded |
2484 unlet g:result | 2484 unlet g:result |
2485 delete('Xdir', 'rf') | 2485 delete('Xnocdir', 'rf') |
2486 &rtp = save_rtp | 2486 &rtp = save_rtp |
2487 enddef | 2487 enddef |
2488 | 2488 |
2489 def Test_vim9script_autoload_duplicate() | 2489 def Test_vim9script_autoload_duplicate() |
2490 mkdir('Xdir/autoload', 'p') | 2490 mkdir('Xdupdir/autoload', 'p') |
2491 | 2491 |
2492 var lines =<< trim END | 2492 var lines =<< trim END |
2493 vim9script | 2493 vim9script |
2494 | 2494 |
2495 export def Func() | 2495 export def Func() |
2496 enddef | 2496 enddef |
2497 | 2497 |
2498 def Func() | 2498 def Func() |
2499 enddef | 2499 enddef |
2500 END | 2500 END |
2501 writefile(lines, 'Xdir/autoload/dupfunc.vim') | 2501 writefile(lines, 'Xdupdir/autoload/dupfunc.vim') |
2502 assert_fails('source Xdir/autoload/dupfunc.vim', 'E1073:') | 2502 assert_fails('source Xdupdir/autoload/dupfunc.vim', 'E1073:') |
2503 | 2503 |
2504 lines =<< trim END | 2504 lines =<< trim END |
2505 vim9script | 2505 vim9script |
2506 | 2506 |
2507 def Func() | 2507 def Func() |
2508 enddef | 2508 enddef |
2509 | 2509 |
2510 export def Func() | 2510 export def Func() |
2511 enddef | 2511 enddef |
2512 END | 2512 END |
2513 writefile(lines, 'Xdir/autoload/dup2func.vim') | 2513 writefile(lines, 'Xdupdir/autoload/dup2func.vim') |
2514 assert_fails('source Xdir/autoload/dup2func.vim', 'E1073:') | 2514 assert_fails('source Xdupdir/autoload/dup2func.vim', 'E1073:') |
2515 | 2515 |
2516 lines =<< trim END | 2516 lines =<< trim END |
2517 vim9script | 2517 vim9script |
2518 | 2518 |
2519 def Func() | 2519 def Func() |
2520 enddef | 2520 enddef |
2521 | 2521 |
2522 export var Func = 'asdf' | 2522 export var Func = 'asdf' |
2523 END | 2523 END |
2524 writefile(lines, 'Xdir/autoload/dup3func.vim') | 2524 writefile(lines, 'Xdupdir/autoload/dup3func.vim') |
2525 assert_fails('source Xdir/autoload/dup3func.vim', 'E1041: Redefining script item: "Func"') | 2525 assert_fails('source Xdupdir/autoload/dup3func.vim', 'E1041: Redefining script item: "Func"') |
2526 | 2526 |
2527 lines =<< trim END | 2527 lines =<< trim END |
2528 vim9script | 2528 vim9script |
2529 | 2529 |
2530 export var Func = 'asdf' | 2530 export var Func = 'asdf' |
2531 | 2531 |
2532 def Func() | 2532 def Func() |
2533 enddef | 2533 enddef |
2534 END | 2534 END |
2535 writefile(lines, 'Xdir/autoload/dup4func.vim') | 2535 writefile(lines, 'Xdupdir/autoload/dup4func.vim') |
2536 assert_fails('source Xdir/autoload/dup4func.vim', 'E707:') | 2536 assert_fails('source Xdupdir/autoload/dup4func.vim', 'E707:') |
2537 | 2537 |
2538 lines =<< trim END | 2538 lines =<< trim END |
2539 vim9script | 2539 vim9script |
2540 | 2540 |
2541 var Func = 'asdf' | 2541 var Func = 'asdf' |
2542 | 2542 |
2543 export def Func() | 2543 export def Func() |
2544 enddef | 2544 enddef |
2545 END | 2545 END |
2546 writefile(lines, 'Xdir/autoload/dup5func.vim') | 2546 writefile(lines, 'Xdupdir/autoload/dup5func.vim') |
2547 assert_fails('source Xdir/autoload/dup5func.vim', 'E707:') | 2547 assert_fails('source Xdupdir/autoload/dup5func.vim', 'E707:') |
2548 | 2548 |
2549 lines =<< trim END | 2549 lines =<< trim END |
2550 vim9script | 2550 vim9script |
2551 | 2551 |
2552 export def Func() | 2552 export def Func() |
2553 enddef | 2553 enddef |
2554 | 2554 |
2555 var Func = 'asdf' | 2555 var Func = 'asdf' |
2556 END | 2556 END |
2557 writefile(lines, 'Xdir/autoload/dup6func.vim') | 2557 writefile(lines, 'Xdupdir/autoload/dup6func.vim') |
2558 assert_fails('source Xdir/autoload/dup6func.vim', 'E1041: Redefining script item: "Func"') | 2558 assert_fails('source Xdupdir/autoload/dup6func.vim', 'E1041: Redefining script item: "Func"') |
2559 | 2559 |
2560 delete('Xdir', 'rf') | 2560 delete('Xdupdir', 'rf') |
2561 enddef | 2561 enddef |
2562 | 2562 |
2563 def Test_autoload_missing_function_name() | 2563 def Test_autoload_missing_function_name() |
2564 mkdir('Xdir/autoload', 'p') | 2564 mkdir('Xmisdir/autoload', 'p') |
2565 | 2565 |
2566 var lines =<< trim END | 2566 var lines =<< trim END |
2567 vim9script | 2567 vim9script |
2568 | 2568 |
2569 def loadme#() | 2569 def loadme#() |
2570 enddef | 2570 enddef |
2571 END | 2571 END |
2572 writefile(lines, 'Xdir/autoload/loadme.vim') | 2572 writefile(lines, 'Xmisdir/autoload/loadme.vim') |
2573 assert_fails('source Xdir/autoload/loadme.vim', 'E129:') | 2573 assert_fails('source Xmisdir/autoload/loadme.vim', 'E129:') |
2574 | 2574 |
2575 delete('Xdir', 'rf') | 2575 delete('Xmisdir', 'rf') |
2576 enddef | 2576 enddef |
2577 | 2577 |
2578 def Test_autoload_name_wrong() | 2578 def Test_autoload_name_wrong() |
2579 var lines =<< trim END | 2579 var lines =<< trim END |
2580 def Xscriptname#Func() | 2580 def Xscriptname#Func() |
2582 END | 2582 END |
2583 writefile(lines, 'Xscriptname.vim') | 2583 writefile(lines, 'Xscriptname.vim') |
2584 v9.CheckScriptFailure(lines, 'E746:') | 2584 v9.CheckScriptFailure(lines, 'E746:') |
2585 delete('Xscriptname.vim') | 2585 delete('Xscriptname.vim') |
2586 | 2586 |
2587 mkdir('Xdir/autoload', 'p') | 2587 mkdir('Xwrodir/autoload', 'p') |
2588 lines =<< trim END | 2588 lines =<< trim END |
2589 vim9script | 2589 vim9script |
2590 def somescript#Func() | 2590 def somescript#Func() |
2591 enddef | 2591 enddef |
2592 END | 2592 END |
2593 writefile(lines, 'Xdir/autoload/somescript.vim') | 2593 writefile(lines, 'Xwrodir/autoload/somescript.vim') |
2594 assert_fails('source Xdir/autoload/somescript.vim', 'E1263:') | 2594 assert_fails('source Xwrodir/autoload/somescript.vim', 'E1263:') |
2595 | 2595 |
2596 delete('Xdir', 'rf') | 2596 delete('Xwrodir', 'rf') |
2597 enddef | 2597 enddef |
2598 | 2598 |
2599 def Test_import_autoload_postponed() | 2599 def Test_import_autoload_postponed() |
2600 mkdir('Xdir/autoload', 'p') | 2600 mkdir('Xpostdir/autoload', 'p') |
2601 var save_rtp = &rtp | 2601 var save_rtp = &rtp |
2602 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2602 exe 'set rtp^=' .. getcwd() .. '/Xpostdir' |
2603 | 2603 |
2604 var lines =<< trim END | 2604 var lines =<< trim END |
2605 vim9script | 2605 vim9script |
2606 | 2606 |
2607 g:loaded_postponed = 'true' | 2607 g:loaded_postponed = 'true' |
2608 export var variable = 'bla' | 2608 export var variable = 'bla' |
2609 export def Function(): string | 2609 export def Function(): string |
2610 return 'bla' | 2610 return 'bla' |
2611 enddef | 2611 enddef |
2612 END | 2612 END |
2613 writefile(lines, 'Xdir/autoload/postponed.vim') | 2613 writefile(lines, 'Xpostdir/autoload/postponed.vim') |
2614 | 2614 |
2615 lines =<< trim END | 2615 lines =<< trim END |
2616 vim9script | 2616 vim9script |
2617 | 2617 |
2618 import autoload 'postponed.vim' | 2618 import autoload 'postponed.vim' |
2626 assert_false(exists('g:loaded_postponed')) | 2626 assert_false(exists('g:loaded_postponed')) |
2627 v9.CheckScriptSuccess(lines + ['Tryit()']) | 2627 v9.CheckScriptSuccess(lines + ['Tryit()']) |
2628 assert_equal('true', g:loaded_postponed) | 2628 assert_equal('true', g:loaded_postponed) |
2629 | 2629 |
2630 unlet g:loaded_postponed | 2630 unlet g:loaded_postponed |
2631 delete('Xdir', 'rf') | 2631 delete('Xpostdir', 'rf') |
2632 &rtp = save_rtp | 2632 &rtp = save_rtp |
2633 enddef | 2633 enddef |
2634 | 2634 |
2635 def Test_import_autoload_override() | 2635 def Test_import_autoload_override() |
2636 mkdir('Xdir/autoload', 'p') | 2636 mkdir('Xoverdir/autoload', 'p') |
2637 var save_rtp = &rtp | 2637 var save_rtp = &rtp |
2638 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2638 exe 'set rtp^=' .. getcwd() .. '/Xoverdir' |
2639 test_override('autoload', 1) | 2639 test_override('autoload', 1) |
2640 | 2640 |
2641 var lines =<< trim END | 2641 var lines =<< trim END |
2642 vim9script | 2642 vim9script |
2643 | 2643 |
2645 export var variable = 'bla' | 2645 export var variable = 'bla' |
2646 export def Function(): string | 2646 export def Function(): string |
2647 return 'bla' | 2647 return 'bla' |
2648 enddef | 2648 enddef |
2649 END | 2649 END |
2650 writefile(lines, 'Xdir/autoload/override.vim') | 2650 writefile(lines, 'Xoverdir/autoload/override.vim') |
2651 | 2651 |
2652 lines =<< trim END | 2652 lines =<< trim END |
2653 vim9script | 2653 vim9script |
2654 | 2654 |
2655 import autoload 'override.vim' | 2655 import autoload 'override.vim' |
2662 END | 2662 END |
2663 v9.CheckScriptFailure(lines, 'E1048: Item not found in script: doesNotExist', 1) | 2663 v9.CheckScriptFailure(lines, 'E1048: Item not found in script: doesNotExist', 1) |
2664 | 2664 |
2665 test_override('autoload', 0) | 2665 test_override('autoload', 0) |
2666 unlet g:loaded_override | 2666 unlet g:loaded_override |
2667 delete('Xdir', 'rf') | 2667 delete('Xoverdir', 'rf') |
2668 &rtp = save_rtp | 2668 &rtp = save_rtp |
2669 enddef | 2669 enddef |
2670 | 2670 |
2671 def Test_autoload_mapping() | 2671 def Test_autoload_mapping() |
2672 mkdir('Xdir/autoload', 'p') | 2672 mkdir('Xmapdir/autoload', 'p') |
2673 var save_rtp = &rtp | 2673 var save_rtp = &rtp |
2674 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2674 exe 'set rtp^=' .. getcwd() .. '/Xmapdir' |
2675 | 2675 |
2676 var lines =<< trim END | 2676 var lines =<< trim END |
2677 vim9script | 2677 vim9script |
2678 | 2678 |
2679 g:toggle_loaded = 'yes' | 2679 g:toggle_loaded = 'yes' |
2683 enddef | 2683 enddef |
2684 export def Doit() | 2684 export def Doit() |
2685 g:doit_called = 'yes' | 2685 g:doit_called = 'yes' |
2686 enddef | 2686 enddef |
2687 END | 2687 END |
2688 writefile(lines, 'Xdir/autoload/toggle.vim') | 2688 writefile(lines, 'Xmapdir/autoload/toggle.vim') |
2689 | 2689 |
2690 lines =<< trim END | 2690 lines =<< trim END |
2691 vim9script | 2691 vim9script |
2692 | 2692 |
2693 import autoload 'toggle.vim' | 2693 import autoload 'toggle.vim' |
2714 nunmap tt | 2714 nunmap tt |
2715 nunmap xx | 2715 nunmap xx |
2716 nunmap yy | 2716 nunmap yy |
2717 unlet g:toggle_loaded | 2717 unlet g:toggle_loaded |
2718 unlet g:toggle_called | 2718 unlet g:toggle_called |
2719 delete('Xdir', 'rf') | 2719 delete('Xmapdir', 'rf') |
2720 &rtp = save_rtp | 2720 &rtp = save_rtp |
2721 enddef | 2721 enddef |
2722 | 2722 |
2723 def Test_vim9script_autoload_fails() | 2723 def Test_vim9script_autoload_fails() |
2724 var lines =<< trim END | 2724 var lines =<< trim END |
2772 v9.CheckScriptFailure(lines, 'E1053: Could not import "doesNotExist.vim"') | 2772 v9.CheckScriptFailure(lines, 'E1053: Could not import "doesNotExist.vim"') |
2773 enddef | 2773 enddef |
2774 | 2774 |
2775 " test disassembling an auto-loaded function starting with "debug" | 2775 " test disassembling an auto-loaded function starting with "debug" |
2776 def Test_vim9_autoload_disass() | 2776 def Test_vim9_autoload_disass() |
2777 mkdir('Xdir/autoload', 'p') | 2777 mkdir('Xdasdir/autoload', 'p') |
2778 var save_rtp = &rtp | 2778 var save_rtp = &rtp |
2779 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2779 exe 'set rtp^=' .. getcwd() .. '/Xdasdir' |
2780 | 2780 |
2781 var lines =<< trim END | 2781 var lines =<< trim END |
2782 vim9script | 2782 vim9script |
2783 export def Test(): string | 2783 export def Test(): string |
2784 return 'debug' | 2784 return 'debug' |
2785 enddef | 2785 enddef |
2786 END | 2786 END |
2787 writefile(lines, 'Xdir/autoload/debugit.vim') | 2787 writefile(lines, 'Xdasdir/autoload/debugit.vim') |
2788 | 2788 |
2789 lines =<< trim END | 2789 lines =<< trim END |
2790 vim9script | 2790 vim9script |
2791 export def Test(): string | 2791 export def Test(): string |
2792 return 'profile' | 2792 return 'profile' |
2793 enddef | 2793 enddef |
2794 END | 2794 END |
2795 writefile(lines, 'Xdir/autoload/profileit.vim') | 2795 writefile(lines, 'Xdasdir/autoload/profileit.vim') |
2796 | 2796 |
2797 lines =<< trim END | 2797 lines =<< trim END |
2798 vim9script | 2798 vim9script |
2799 assert_equal('debug', debugit#Test()) | 2799 assert_equal('debug', debugit#Test()) |
2800 disass debugit#Test | 2800 disass debugit#Test |
2801 assert_equal('profile', profileit#Test()) | 2801 assert_equal('profile', profileit#Test()) |
2802 disass profileit#Test | 2802 disass profileit#Test |
2803 END | 2803 END |
2804 v9.CheckScriptSuccess(lines) | 2804 v9.CheckScriptSuccess(lines) |
2805 | 2805 |
2806 delete('Xdir', 'rf') | 2806 delete('Xdasdir', 'rf') |
2807 &rtp = save_rtp | 2807 &rtp = save_rtp |
2808 enddef | 2808 enddef |
2809 | 2809 |
2810 " test using a vim9script that is auto-loaded from an autocmd | 2810 " test using a vim9script that is auto-loaded from an autocmd |
2811 def Test_vim9_aucmd_autoload() | 2811 def Test_vim9_aucmd_autoload() |
2814 export def Test() | 2814 export def Test() |
2815 echomsg getreg('"') | 2815 echomsg getreg('"') |
2816 enddef | 2816 enddef |
2817 END | 2817 END |
2818 | 2818 |
2819 mkdir('Xdir/autoload', 'p') | 2819 mkdir('Xauldir/autoload', 'p') |
2820 writefile(lines, 'Xdir/autoload/foo.vim') | 2820 writefile(lines, 'Xauldir/autoload/foo.vim') |
2821 var save_rtp = &rtp | 2821 var save_rtp = &rtp |
2822 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2822 exe 'set rtp^=' .. getcwd() .. '/Xauldir' |
2823 augroup test | 2823 augroup test |
2824 autocmd TextYankPost * call foo#Test() | 2824 autocmd TextYankPost * call foo#Test() |
2825 augroup END | 2825 augroup END |
2826 | 2826 |
2827 normal Y | 2827 normal Y |
2828 | 2828 |
2829 augroup test | 2829 augroup test |
2830 autocmd! | 2830 autocmd! |
2831 augroup END | 2831 augroup END |
2832 delete('Xdir', 'rf') | 2832 delete('Xauldir', 'rf') |
2833 &rtp = save_rtp | 2833 &rtp = save_rtp |
2834 enddef | 2834 enddef |
2835 | 2835 |
2836 " test using a autoloaded file that is case sensitive | 2836 " test using a autoloaded file that is case sensitive |
2837 def Test_vim9_autoload_case_sensitive() | 2837 def Test_vim9_autoload_case_sensitive() |
2840 export def CaseSensitive(): string | 2840 export def CaseSensitive(): string |
2841 return 'done' | 2841 return 'done' |
2842 enddef | 2842 enddef |
2843 END | 2843 END |
2844 | 2844 |
2845 mkdir('Xdir/autoload', 'p') | 2845 mkdir('Xcasedir/autoload', 'p') |
2846 writefile(lines, 'Xdir/autoload/CaseSensitive.vim') | 2846 writefile(lines, 'Xcasedir/autoload/CaseSensitive.vim') |
2847 var save_rtp = &rtp | 2847 var save_rtp = &rtp |
2848 exe 'set rtp^=' .. getcwd() .. '/Xdir' | 2848 exe 'set rtp^=' .. getcwd() .. '/Xcasedir' |
2849 | 2849 |
2850 lines =<< trim END | 2850 lines =<< trim END |
2851 vim9script | 2851 vim9script |
2852 import autoload 'CaseSensitive.vim' | 2852 import autoload 'CaseSensitive.vim' |
2853 assert_equal('done', CaseSensitive.CaseSensitive()) | 2853 assert_equal('done', CaseSensitive.CaseSensitive()) |
2861 import autoload 'casesensitive.vim' | 2861 import autoload 'casesensitive.vim' |
2862 END | 2862 END |
2863 v9.CheckScriptFailure(lines, 'E1262:') | 2863 v9.CheckScriptFailure(lines, 'E1262:') |
2864 endif | 2864 endif |
2865 | 2865 |
2866 delete('Xdir', 'rf') | 2866 delete('Xcasedir', 'rf') |
2867 &rtp = save_rtp | 2867 &rtp = save_rtp |
2868 enddef | 2868 enddef |
2869 | 2869 |
2870 " This was causing a crash because suppress_errthrow wasn't reset. | 2870 " This was causing a crash because suppress_errthrow wasn't reset. |
2871 def Test_vim9_autoload_error() | 2871 def Test_vim9_autoload_error() |