/ test / test_path_equality.vader
test_path_equality.vader
 1  Before:
 2    function! CheckPath(path) abort
 3      return ale#path#IsBufferPath(bufnr(''), ale#path#Simplify(a:path))
 4    endfunction
 5  
 6  After:
 7    delfunction CheckPath
 8  
 9  Execute(ale#path#Simplify should adjust paths correctly):
10    if has('unix')
11      " Multiple slashes should be removed correctly.
12      AssertEqual '/foo/bar/baz', ale#path#Simplify('////foo///bar///baz')
13      " Back slashes should be converted to forward slashes.
14      " This means some valid filenames are adjusted incorrectly, but in practice
15      " no filenames for code should contain back slashes, and adjusting slashes
16      " like this makes ALE work in MSYS.
17      AssertEqual 'foo/bar/baz', ale#path#Simplify('foo\bar\baz')
18    else
19      " Multiple slashes should be removed correctly.
20      AssertEqual '\foo\bar\baz', ale#path#Simplify('\\\foo\bar\baz')
21      " Forward slashes should be replaced with back slashes.
22      AssertEqual 'foo\bar\baz', ale#path#Simplify('foo/bar/baz')
23    endif
24  
25  Execute(ale#path#IsBufferPath should match simple relative paths):
26    call ale#test#SetFilename('app/foo.txt')
27  
28    Assert CheckPath('app/foo.txt'), 'No match for foo.txt'
29    Assert !CheckPath('app/bar.txt'), 'Bad match for bar.txt'
30  
31  Execute(ale#path#IsBufferPath should match relative paths with dots):
32    call ale#test#SetFilename('app/foo.txt')
33  
34    " Skip these checks on Windows.
35    if !has('win32')
36      Assert CheckPath('../../app/foo.txt'), 'No match for ../../app/foo.txt'
37    endif
38  
39  Execute(ale#path#IsBufferPath should match absolute paths):
40    silent file! foo.txt
41  
42    Assert CheckPath(getcwd() . '/foo.txt'), 'No match for foo.txt'
43    Assert !CheckPath(getcwd() . '/bar.txt'), 'Bad match for bar.txt'
44  
45  Execute(ale#path#IsBufferPath should match paths beginning with ./):
46    silent file! foo.txt
47  
48    if !has('win32')
49      Assert ale#path#IsBufferPath(bufnr(''), './foo.txt'), 'No match for ./foo.txt'
50    endif
51  
52  Execute(ale#path#IsBufferPath should match if our path ends with the test path):
53    silent file! foo/bar/baz.txt
54  
55    Assert CheckPath('bar/baz.txt'), 'No match for bar/baz.txt'
56  
57  Execute(ale#path#IsBufferPath should match paths with redundant slashes):
58    silent file! foo.txt
59  
60    Assert CheckPath(getcwd() . '////foo.txt'), 'No match for foo.txt'
61  
62  Execute(ale#path#IsBufferPath should accept various names for stdin):
63    Assert ale#path#IsBufferPath(bufnr(''), '-')
64    Assert ale#path#IsBufferPath(bufnr(''), 'stdin')
65    Assert ale#path#IsBufferPath(bufnr(''), '<stdin>')
66    Assert ale#path#IsBufferPath(bufnr(''), '<somethingelse>')
67  
68  Execute(ale#path#IsBufferPath should match files in /tmp):
69    call ale#test#SetFilename('app/test.ts')
70  
71    Assert ale#path#IsBufferPath(bufnr(''), tempname() . '/test.ts')
72  
73  Execute(ale#path#IsBufferPath should match Windows paths on Unix):
74    " This test should pass Unix.
75    "
76    " Back slashes in paths should be replaced with forward slashes, even though
77    " back slashes are valid in filenames on Unix.
78    if has('unix')
79      call ale#test#SetFilename('app/foo/test.ts')
80  
81      Assert ale#path#IsBufferPath(bufnr(''), 'foo\test.ts')
82    endif