summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2016-10-17 21:14:34 +0100
committerw0rp <devw0rp@gmail.com>2016-10-17 21:14:34 +0100
commit654a1724730e181c80cd262a781055c5a9f0ca05 (patch)
tree851119a3a64c9ae82cd95b3725f914c7271ec702
parent7c2a16e149a0dbcdfcac6ee441474caaad1ef3b6 (diff)
downloadale-654a1724730e181c80cd262a781055c5a9f0ca05.zip
Make the nearest file search result absolute paths, and add tests to cover it.
-rw-r--r--autoload/ale/util.vim10
-rw-r--r--test/test_nearest_file_search.vader11
-rw-r--r--test/top/example.ini0
-rw-r--r--test/top/middle/bottom/dummy.txt0
4 files changed, 20 insertions, 1 deletions
diff --git a/autoload/ale/util.vim b/autoload/ale/util.vim
index c218f090..82bed85a 100644
--- a/autoload/ale/util.vim
+++ b/autoload/ale/util.vim
@@ -33,7 +33,15 @@ endfunction
" Given a buffer and a filename, find the nearest file by searching upwards
" through the paths relative to the given buffer.
function! ale#util#FindNearestFile(buffer, filename) abort
- return findfile(a:filename, fnamemodify(bufname(a:buffer), ':p') . ';')
+ let l:buffer_filename = fnamemodify(bufname(a:buffer), ':p')
+
+ let l:relative_path = findfile(a:filename, l:buffer_filename . ';')
+
+ if !empty(l:relative_path)
+ return fnamemodify(l:relative_path, ':p')
+ endif
+
+ return ''
endfunction
function! ale#util#GetFunction(string_or_ref) abort
diff --git a/test/test_nearest_file_search.vader b/test/test_nearest_file_search.vader
new file mode 100644
index 00000000..c59bfce2
--- /dev/null
+++ b/test/test_nearest_file_search.vader
@@ -0,0 +1,11 @@
+Execute(Open a file some directory down):
+ silent! cd /testplugin/test
+ :e! top/middle/bottom/dummy.txt
+
+Then(We should be able to find a configuration file further up):
+ AssertEqual expand('%:p:h:h:h:h') . '/top/example.ini', ale#util#FindNearestFile(bufnr('%'), 'example.ini')
+
+Execute(Do nothing):
+
+Then(We shouldn't find anything for files which don't match):
+ AssertEqual '', ale#util#FindNearestFile(bufnr('%'), 'cantfindthis')
diff --git a/test/top/example.ini b/test/top/example.ini
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/top/example.ini
diff --git a/test/top/middle/bottom/dummy.txt b/test/top/middle/bottom/dummy.txt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/top/middle/bottom/dummy.txt