diff options
Diffstat (limited to 'tests/extensions.vim')
-rw-r--r-- | tests/extensions.vim | 356 |
1 files changed, 356 insertions, 0 deletions
diff --git a/tests/extensions.vim b/tests/extensions.vim new file mode 100644 index 00000000..467ac86a --- /dev/null +++ b/tests/extensions.vim @@ -0,0 +1,356 @@ +function! TestExtension(filetype, filename, content) + try + let g:message = "" + exec "noautocmd n " . a:filename + put =a:content + 1delete _ + filetype detect + exec "if &filetype != '" . a:filetype . "' \nthrow &filetype\nendif" + exec ":bw!" + catch + echo g:message + echo "Filename '" . a:filename . "' does not resolve to extension '" . a:filetype . "'" + echo " instead received: '" . v:exception . "'" + exec ":cq!" + endtry +endfunction + +" make sure native vim scripts.vim is respected +call TestExtension("rib", "renderman", "##RenderMan") + +" make sure case of file does matter when recognizing file +call TestExtension("ruby", "scripts/build", "#!/usr/bin/env ruby") + +call TestExtension("sh", "bash1", "#!/bin/bash") +call TestExtension("sh", "bash2", "#! /bin/bash") +call TestExtension("sh", "bash3", "#! /bin/bash2.3") +call TestExtension("sh", "bash4", "#!/usr/bin/env bash") +call TestExtension("sh", "bash6", "#!/usr/bin/env -i -=split-string foo=bar bash -l foo") +call TestExtension("sh", "bash1", "#!/bin/bash") + +" Vim help file +call TestExtension("help", $VIMRUNTIME . "/doc/foobar.txt", "") + +" Abaqus or Trasys +call TestExtension("abaqus", "foobar.inp", "*HEADING\nFoobar") +call TestExtension("trasys", "foobar.inp", "MSC PATRAN\n* foobar\nHEADER SURFACE DATA\nBSC ENCLO1") + +" 8th (Firth-derivative) +call TestExtension("8th", "foobar.8th", "") +call TestExtension("8th", "foobar.8th", "") + +" A-A-P recipe +call TestExtension("aap", "foobar.aap", "") + + +" A2ps printing utility +call TestExtension("a2ps", "/etc/a2ps.cfg", "") +call TestExtension("a2ps", "/usr/local/etc/a2ps.cfg", "") +call TestExtension("a2ps", "/etc/a2ps/foobar.cfg", "") +call TestExtension("a2ps", "/usr/local/etc/a2ps/foobar.cfg", "") +call TestExtension("a2ps", "/tmp/a2psrc", "") +call TestExtension("a2ps", "/tmp/.a2psrc", "") + +" ABAB/4 +call TestExtension("abap", "foobar.abap", "") + +" ABC music notation +call TestExtension("abc", "foobar.abc", "") + +" ABEL +call TestExtension("abel", "foobar.abl", "") + +" AceDB +call TestExtension("acedb", "foobar.wrm", "") + +" Ada (83, 9X, 95) +call TestExtension("ada", "foobar.adb", "") +call TestExtension("ada", "foobar.ads", "") +call TestExtension("ada", "foobar.ada", "") +call TestExtension("ada", "foobar.gpr", "") + +" AHDL +call TestExtension("ahdl", "foobar.tdf", "") + +" AIDL +call TestExtension("aidl", "foobar.aidl", "") + +" AMPL +call TestExtension("ampl", "foobar.run", "") + +" Ant +call TestExtension("ant", "build.xml", "") + +" Arduino +call TestExtension("arduino", "foobar.ino", "") +call TestExtension("arduino", "foobar.pde", "") + +" Apache config file +call TestExtension("apache", ".htaccess", "") +call TestExtension("apache", "/etc/httpd/foobar.conf", "") +call TestExtension("apache", "/etc/apache2/sites-foobar/foobar.com", "") +call TestExtension("apache", "/usr/local/etc/httpd/foobar.conf", "") +call TestExtension("apache", "/usr/local/etc/apache2/sites-foobar/foobar.com", "") + +" XA65 MOS6510 cross assembler +call TestExtension("a65", "foobar.a65", "") + +" Applescript +call TestExtension("applescript", "foobar.scpt", "") + +" Applix ELF +call TestExtension("elf", "foobar.am", "") +call TestExtension("automake", "Makefile.am", "") +call TestExtension("automake", "makefile.am", "") + +" ALSA configuration +call TestExtension("alsaconf", ".asoundrc", "") +call TestExtension("alsaconf", "/usr/share/alsa/alsa.conf", "") +call TestExtension("alsaconf", "/media/foo/usr/share/alsa/alsa.conf", "") +call TestExtension("alsaconf", "/etc/asound.conf", "") +call TestExtension("alsaconf", "/media/foo/etc/asound.conf", "") + +" Arc Macro Language +call TestExtension("aml", "foobar.aml", "") + +" APT config file +call TestExtension("aptconf", "apt.conf", "") +call TestExtension("aptconf", "/root/.aptitude/config", "") +call TestExtension("aptconf", "/etc/apt/apt.conf.d/foo_bar-12", "") +call TestExtension("aptconf", "/etc/apt/apt.conf.d/foo_bar-12.conf", "") +call TestExtension("", "/etc/apt/apt.conf.d/.gsdf", "") + +" Arch Inventory file +call TestExtension("arch", ".arch-inventory", "") +call TestExtension("arch", "=tagging-method", "") + +" ART*Enterprise (formerly ART-IM) +call TestExtension("art", "foobar.art", "") + +" AsciiDoc +call TestExtension("asciidoc", "foobar.asciidoc", "") +call TestExtension("asciidoc", "foobar.adoc", "") + +" ASN.1 +call TestExtension("asn", "foobar.asn", "") +call TestExtension("asn", "foobar.asn1", "") + +" Active Server Pages (with Visual Basic Script) +call TestExtension("aspvbs", "foobar.asa", "") +let g:filetype_asa = "fizfuz" +call TestExtension("fizfuz", "foobar.asa", "") + +" Active Server Pages (with Perl or Visual Basic Script) +call TestExtension("aspvbs", "vbs.asp", "") +call TestExtension("aspperl", "perl.asp", "<Job ID=\"DropFiles\">\n<script language=\"PerlScript\">\n</script>\n</Job>") +let g:filetype_asp = "fizfuz" +call TestExtension("fizfuz", "fizfuz.asp", "") + + +" Grub (must be before catch *.lst) +call TestExtension("grub", "/boot/grub/menu.lst", "") +call TestExtension("grub", "/media/foobar/boot/grub/menu.lst", "") +call TestExtension("grub", "/boot/grub/grub.conf", "") +call TestExtension("grub", "/media/foobar/boot/grub/grub.conf", "") +call TestExtension("grub", "/etc/grub.conf", "") +call TestExtension("grub", "/media/foobar/etc/grub.conf", "") + +" Assembly (all kinds) +" *.lst is not pure assembly, it has two extra columns (address, byte codes) + +au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm() + +" Macro (VAX) +call TestExtension("vmasm", "foobar.mar", "") + +" Atlas +call TestExtension("atlas", "foobar.atl", "") +call TestExtension("atlas", "foobar.as", "") + +" Autoit v3 +call TestExtension("autoit", "foobar.au3", "") + +" Autohotkey +call TestExtension("autohotkey", "foobar.ahk", "") + +" Automake +call TestExtension("automake", "Makefile.am", "") +call TestExtension("automake", "makefile.am", "") +call TestExtension("automake", "GNUmakefile.am", "") + +" Autotest .at files are actually m4 +call TestExtension("m4", "foobar.at", "") + +" Avenue +call TestExtension("ave", "foobar.ave", "") + +" Awk +call TestExtension("awk", "foobar.awk", "") + +" C++ +call TestExtension("c", "foobar.c", "") +call TestExtension("cpp", "foobar.cxx", "") +call TestExtension("cpp", "foobar.c++", "") +call TestExtension("cpp", "foobar.hh", "") +call TestExtension("cpp", "foobar.hxx", "") +call TestExtension("cpp", "foobar.hpp", "") +call TestExtension("cpp", "foobar.ipp", "") +call TestExtension("cpp", "foobar.moc", "") +call TestExtension("cpp", "foobar.tcc", "") +call TestExtension("cpp", "foobar.inl", "") + +" vim-polyglot only +call TestExtension("blade", "test.blade.php", "") +call TestExtension("yaml.ansible", "playbook.yml", "") +call TestExtension("yaml.ansible", "host_vars/foobar", "") +call TestExtension("yaml.ansible", "handlers.foobar.yaml", "") +call TestExtension("yaml.ansible", "requirements.yaml", "") +call TestExtension("ps1xml", "foobar.ps1xml", "") +call TestExtension("terraform", "terraform.tf", "") + +call TestExtension("idris2", "foobar.idr", "") +call TestExtension("idris", "foobar.idr", "pkgs : List String\npkgs = [\"NCurses\", \"Readline\"]") +let g:filetype_idr = "fizfuz" +call TestExtension("fizfuz", "fizfuz.idr", "") + +" .m extension +call TestExtension("octave", "matlab.m", "") +call TestExtension("objc", "objc.m", "\n\n #import <Foundation/Foundation.h>") +call TestExtension("octave", "objc.m", "results_ub_times=zeros(2,2,M);\n%results pour la lower bound") +call TestExtension("mma", "mathematica.m", "newcase[ \"00003\" ];\n (* Hello world *)") +call TestExtension("murphi", "murphi.m", "type\n square: 1 .. 9") +call TestExtension("murphi", "murphi.m", "something\n--foobar") +call TestExtension("octave", "percentcomment.m", "hello world\n%foobar") +call TestExtension("objc", "comment.m", "\n/* Hello world */") +let g:filetype_m = "fizfuz" +call TestExtension("fizfuz", "fizfuz.m", "") + +" .fs extension +call TestExtension("forth", "empty.fs", "") +call TestExtension("fsharp", "fsharp.fs", "let myInt = 5") +call TestExtension("glsl", "glsl.fs", "//#version 120\nvoid main() {}") +let g:filetype_fs = "fizfuz" +call TestExtension("fizfuz", "fizfuz.fs", "") + +" .re extension +call TestExtension("reason", "empty.re", "") +call TestExtension("cpp", "cpp.re", "#include \"config.h\"") +call TestExtension("cpp", "cpp2.re", "#ifdef HAVE_CONFIG_H") +call TestExtension("cpp", "cpp3.re", "#define YYCTYPE unsigned char") +call TestExtension("reason", "react.re", "ReasonReact.Router.push('');") + +" .bas extension +call TestExtension("vbnet", "vb.vb", "") +call TestExtension("basic", "empty.bas", "") +call TestExtension("vb", "vb1.bas", "Attribute VB_Name = \"Class1\"") +call TestExtension("vb", "vb2.bas", "VERSION 5.00\nBegin VB.Form Form1") +call TestExtension("vb", "vb2.bas", "VERSION 5.00\nBegin VB.Form Form1") +call TestExtension("vb", "vb.sba", "") +call TestExtension("vb", "vb.vbs", "") +call TestExtension("vb", "vb.dsm", "") +call TestExtension("vb", "vb.dsm", "") +call TestExtension("vb", "vb.ctl", "") + +" .idr extension +call TestExtension("idris", "lowercase.idr", "--idris1") +call TestExtension("idris", "uppercase.idr", "--Idris1") +call TestExtension("idris", "start-space-l.idr", "-- idris1") +call TestExtension("idris", "start-space-u.idr", "-- Idris1") +call TestExtension("idris", "two-spaces-l.idr", "-- idris 1") +call TestExtension("idris", "two-spaces-u.idr", "-- Idris 1") +"call TestExtension("idris", "mypkg.ipkg", "package mypkg\n\npkgs = pruviloj, lightyear") +call TestExtension("idris", "use-type-prov.idr", "%language TypeProviders") +call TestExtension("idris", "use-elab-refl.idr", "%language ElabReflection") +call TestExtension("idris", "access-modifier.idr", "%access export\n\npublic export\nMyTest : Type-> Type\n\nfact : Nat -> Nat") +call TestExtension("idris2", "lowercase.idr", "--idris2") +call TestExtension("idris2", "uppercase.idr", "--Idris2") +call TestExtension("idris2", "start-space-l.idr", "-- idris2") +call TestExtension("idris2", "start-space-u.idr", "-- Idris2") +call TestExtension("idris2", "two-spaces-l.idr", "-- idris 2") +call TestExtension("idris2", "two-spaces-u.idr", "-- Idris 2") +call TestExtension("idris2", "mypkg.ipkg", "package mypkg\n\ndepends = effects") +call TestExtension("idris2", "use-post-proj.idr", "%language PostfixProjections") + +" .lidr extension +call TestExtension("lidris", "lidris-1.lidr", "Some test plaintext\n\n> --idris1\n> myfact : Nat -> Nat\n> myfact Z = 1\n> myfact (S k) = (S k) * myfact k\n\nMore plaintext") +call TestExtension("lidris2", "lidris-2.lidr", "Some test plaintext\n\n> --idris2\n> myfact : Nat -> Nat\n> myfact Z = 1\n> myfact (S k) = (S k) * myfact k\n\nMore plaintext") + + +" .h extension +call TestExtension("objcpp", "foo.h", "@interface MTNavigationController : UINavigationController") +call TestExtension("cpp", "foo.h", "") +let g:c_syntax_for_h = 1 +call TestExtension("objc", "foo.h", "@interface MTNavigationController : UINavigationController") +call TestExtension("c", "foo.h", "") +unlet g:c_syntax_for_h +let g:ch_syntax_for_h = 1 +call TestExtension("ch", "foo.h", "") + +" perl +call TestExtension("perl", "empty.plx", "") +call TestExtension("perl", "empty.al", "") +call TestExtension("perl", "empty.psgi", "") +call TestExtension("pod", "empty.pod", "") + +" raku +call TestExtension("raku", "empty.p6", "") +call TestExtension("raku", "empty.pm6", "") +call TestExtension("raku", "empty.pl6", "") +call TestExtension("raku", "empty.raku", "") +call TestExtension("raku", "empty.rakumod", "") +call TestExtension("raku", "empty.pod6", "") +call TestExtension("raku", "empty.rakudoc", "") +call TestExtension("raku", "empty.rakutest", "") +call TestExtension("raku", "empty.t6", "") + + +" .pm extension +call TestExtension("perl", "empty.pm", "") +call TestExtension("perl", "strict.pm", " use strict hello;") +call TestExtension("perl", "use5.pm", " use 5;") +call TestExtension("perl", "usev5.pm", " use v5;") +call TestExtension("raku", "script.pm", "#!/usr/bin/env perl6\nprint('Hello world')") +call TestExtension("raku", "class.pm", " class Class {}") +call TestExtension("raku", "module.pm", " module foobar") +call TestExtension("xpm", "xpm.pm", "/* XPM */") +call TestExtension("xpm2", "xpm2.pm", "/* XPM2 */") +let g:filetype_pm = "fizfuz" +call TestExtension("fizfuz", "fizfuz.pm", "") + +" .pl extension +call TestExtension("perl", "empty.pl", "") +call TestExtension("prolog", "comment.pl", "% hello world") +call TestExtension("prolog", "comment2.pl", "/* hello world */") +call TestExtension("prolog", "statement.pl", "happy(vincent). ") +call TestExtension("prolog", "statement2.pl", "nearbychk(X,Y) :- Y is X-1.") +call TestExtension("perl", "strict.pl", " use strict hello;") +call TestExtension("perl", "use5.pl", " use 5;") +call TestExtension("perl", "usev5.pl", " use v5;") +call TestExtension("raku", "script.pl", "#!/usr/bin/env perl6\nprint('Hello world')") +call TestExtension("raku", "class.pl", " class Class {}") +call TestExtension("raku", "module.pl", " module foobar") +let g:filetype_pl = "fizfuz" +call TestExtension("fizfuz", "fizfuz.pl", "") + +" .t extension +call TestExtension("perl", "empty.t", "") +call TestExtension("perl", "strict.t", " use strict hello;") +call TestExtension("perl", "use5.t", " use 5;") +call TestExtension("perl", "usev5.t", " use v5;") +call TestExtension("raku", "script.t", "#!/usr/bin/env perl6\nprint('Hello world')") +call TestExtension("raku", "class.t", " class Class {}") +call TestExtension("raku", "module.t", " module foobar") +call TestExtension("nroff", "module.t", ".nf\n101 Main Street") +let g:filetype_t = "fizfuz" +call TestExtension("fizfuz", "fizfuz.t", "") + +" .tt2 extension +call TestExtension("tt2", "empty.tt2", "") +call TestExtension("tt2html", "doctype.tt2", "<!DOCTYPE HTML>") +call TestExtension("tt2html", "percent.tt2", "<%filter>") +call TestExtension("tt2html", "html.tt2", "<html>") + +" .html extension +call TestExtension("html", "empty.html", "") +call TestExtension("mason", "mason1.html", "% my $planet = 42;") +call TestExtension("mason", "mason2.html", "<%filter></%filter>") |