Skip to content

Commit

Permalink
Macos ci and more scandir test in order to track down macos issues
Browse files Browse the repository at this point in the history
  • Loading branch information
Conni2461 committed Feb 22, 2021
1 parent 116aedc commit 9b4216d
Show file tree
Hide file tree
Showing 3 changed files with 211 additions and 15 deletions.
39 changes: 31 additions & 8 deletions .github/workflows/default.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,44 @@ name: default
on: [push, pull_request]

jobs:
x64-ubuntu:
name: X64-ubuntu
runs-on: ubuntu-20.04
native:
name: native
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, macos-10.15]
include:
- os: ubuntu-20.04
url: https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz
manager: sudo apt
packages: fd-find
- os: macos-10.15
url: https://github.com/neovim/neovim/releases/download/nightly/nvim-macos.tar.gz
manager: brew
packages: fd
steps:
- uses: actions/checkout@v2
- run: date +%F > todays-date
- name: Restore cache for today's nightly.
uses: actions/cache@v2
with:
path: _neovim
key: ${{ runner.os }}-x64-${{ hashFiles('todays-date') }}
key: ${{ matrix.os }}-${{ hashFiles('todays-date') }}

- name: Prepare
run: |
${{ matrix.manager }} install ${{ matrix.packages }}
test -d _neovim || {
mkdir -p _neovim
curl -sL ${{ matrix.url }} | tar xzf - --strip-components=1 -C "${PWD}/_neovim"
}
git clone --depth 1 https://github.com/neovim/neovim
- name: Run tests
run: |
curl -OL https://raw.githubusercontent.com/norcalli/bot-ci/master/scripts/github-actions-setup.sh
source github-actions-setup.sh nightly-x64
export PATH="${PWD}/_neovim/bin:${PATH}"
export VIM="${PWD}/_neovim/share/nvim/runtime"
nvim --version
make test
appimage-ubuntu:
Expand All @@ -35,6 +57,7 @@ jobs:

- name: Prepare
run: |
sudo apt install fd-find
test -d build || {
mkdir -p build
wget https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage
Expand All @@ -44,5 +67,5 @@ jobs:
- name: Run tests
run: |
export PATH="${PWD}/build/:${PATH}"
make test
export PATH="${PWD}/build/:${PATH}"
make test
3 changes: 2 additions & 1 deletion tests/plenary/job_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -237,11 +237,12 @@ describe('Job', function()
end)

it('should match larger systemlist', function()
local results = vim.fn.systemlist('find')
local results = vim.fn.systemlist('find .')
local stdout_results = {}

local job = Job:new {
command = 'find',
args = { '.' },

on_stdout = function(_, line) table.insert(stdout_results, line) end
}
Expand Down
184 changes: 178 additions & 6 deletions tests/plenary/scandir_spec.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
local scan = require'plenary.scandir'
local Job = require'plenary.job'
local eq = assert.are.same

local contains = function(tbl, str)
Expand All @@ -15,109 +16,280 @@ local contains_match = function(tbl, str)
return false
end

local compare_tables = function(expected, given, cwd)
local found = 0
for _, v in ipairs(expected) do
for k, w in ipairs(given) do
if v == w:sub(#cwd + 2, -1) then
found = found + 1
goto continue
end
end
::continue::
end
return found
end

local fd_cmd = (function()
if 1 == vim.fn.executable('fd') then
return 'fd'
else
return 'fdfind'
end
end)()

describe('scandir', function()
describe('can list all files recursive', function()
it('with cwd', function()
local dirs = scan.scan_dir('.')
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '--type', 'f', '-I' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './LICENSE'))
eq(true, contains(dirs, './lua/plenary/job.lua'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
end)

-- TODO(conni2461): Doesn't run in ci
-- it('with homedir', function()
-- local dirs = scan.scan_dir(vim.fn.expand('~'))
-- local job_dirs = Job:new({
-- command = fd_cmd,
-- args = { '.', '-I', '--type', 'f', '--type', 'l' },
-- cwd = vim.fn.expand('~')
-- }):sync()
-- eq('table', type(dirs))
-- eq(table.getn(job_dirs), table.getn(dirs))
-- eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, vim.fn.expand('~')))
-- end)

it('and callback gets called for each entry', function()
local count = 0
local dirs = scan.scan_dir('.', { on_insert = function() count = count + 1 end })
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '--type', 'f', '-I' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './LICENSE'))
eq(true, contains(dirs, './lua/plenary/job.lua'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
eq(count, #dirs)
eq(count, #job_dirs)
end)

it('with multiple paths', function()
local dirs = scan.scan_dir({ './lua' , './tests'})
local job_dirs1 = Job:new({
command = fd_cmd,
args = { '.', '--type', 'f', '-I' },
cwd = './lua' }
):sync()

local job_dirs2 = Job:new({
command = fd_cmd,
args = { '.', '--type', 'f', '-I' },
cwd = './tests'
}):sync()
local job_dirs = {}
for _, v in ipairs(job_dirs1) do
table.insert(job_dirs, 'lua/' .. v)
end
for _, v in ipairs(job_dirs2) do
table.insert(job_dirs, 'tests/' .. v)
end

eq('table', type(dirs))
eq(true, contains(dirs, './lua/say.lua'))
eq(true, contains(dirs, './lua/plenary/job.lua'))
eq(true, contains(dirs, './tests/plenary/scandir_spec.lua'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

it('with hidden files', function()
local dirs = scan.scan_dir('.', { hidden = true })
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '--type', 'f', '-I', '--hidden' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './lua/plenary/job.lua'))
eq(true, contains(dirs, './.gitignore'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

-- TODO(conni2461): Doesn't run in ci
-- it('with hidden files in homedir', function()
-- local dirs = scan.scan_dir(vim.fn.expand('~'), { hidden = true })
-- local job_dirs = Job:new({
-- command = fd_cmd,
-- args = { '.', '--type', 'f', '--type', 'l', '-I', '--hidden', '--type' },
-- cwd = vim.fn.expand('~')
-- }):sync()
-- eq('table', type(dirs))
-- local in_range = false
-- if table.getn(job_dirs) + 10 > table.getn(dirs) and
-- table.getn(job_dirs) - 10 < table.getn(dirs) then
-- in_range = true
-- end
-- eq(true, in_range)
-- end)

it('with add directories', function()
local dirs = scan.scan_dir('.', { add_dirs = true })
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '-I' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './lua/plenary/job.lua'))
eq(true, contains(dirs, './lua'))
eq(true, contains(dirs, './tests'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

it('until depth 1 is reached', function()
local dirs = scan.scan_dir('.', { depth = 1 })
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '--type', 'f', '--maxdepth', '1', '-I' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './README.md'))
eq(false, contains(dirs, './lua'))
eq(false, contains(dirs, './lua/say.lua'))
eq(false, contains(dirs, './lua/plenary/job.lua'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

it('until depth 1 is reached and with directories', function()
local dirs = scan.scan_dir('.', { depth = 1, add_dirs = true })
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '--maxdepth', '1', '-I' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './README.md'))
eq(true, contains(dirs, './lua'))
eq(false, contains(dirs, './lua/say.lua'))
eq(false, contains(dirs, './lua/plenary/job.lua'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

it('until depth 1 is reached and with directories and hidden', function()
local dirs = scan.scan_dir('.', { depth = 1, add_dirs = true, hidden = true })
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '--maxdepth', '1', '--hidden', '-I' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './README.md'))
eq(true, contains(dirs, './lua'))
eq(true, contains(dirs, './.gitignore'))
eq(false, contains(dirs, './lua/say.lua'))
eq(false, contains(dirs, './lua/plenary/job.lua'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

it('until depth 2 is reached', function()
local dirs = scan.scan_dir('.', { depth = 2 })
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '--type', 'f', '--maxdepth', '2', '-I' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './README.md'))
eq(true, contains(dirs, './lua/say.lua'))
eq(false, contains(dirs, './lua/plenary/job.lua'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

it('until depth 3 is reached and with directories and hidden', function()
local dirs = scan.scan_dir('.', { depth = 3, add_dirs = true, hidden = true })
local job_dirs = Job:new({
command = fd_cmd,
args = { '.', '--maxdepth', '3', '--hidden', '-I' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './README.md'))
eq(true, contains(dirs, './lua'))
eq(true, contains(dirs, './.gitignore'))
eq(true, contains(dirs, './lua/say.lua'))
eq(true, contains(dirs, './lua/plenary/job.lua'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

it('with respect_gitignore', function()
vim.cmd':silent !touch lua/test.so'
local dirs = scan.scan_dir('.', { respect_gitignore = true })
-- local job_dirs = Job:new({
-- command = fd_cmd,
-- args = { '--type', 'f', '.' },
-- cwd = '.'
-- }):sync()
vim.cmd':silent !rm lua/test.so'
eq('table', type(dirs))
eq(true, contains(dirs, './CHANGELOG.md'))
eq(true, contains(dirs, './LICENSE'))
eq(true, contains(dirs, './lua/plenary/job.lua'))
eq(false, contains(dirs, './lua/test.so'))
eq(false, contains(dirs, './asdf/asdf/adsf.lua'))
-- eq(table.getn(job_dirs), table.getn(dirs))
-- eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)

it('with search pattern', function()
local dirs = scan.scan_dir('.', { search_pattern = 'filetype' })
local dirs = scan.scan_dir('.', { search_pattern = 'scandir' })
local job_dirs = Job:new({
command = fd_cmd,
args = { 'scandir', '--type', 'f', '-I', '.' },
cwd = '.'
}):sync()
eq('table', type(dirs))
eq(true, contains(dirs, './scripts/update_filetypes_from_github.lua'))
eq(true, contains(dirs, './lua/plenary/filetype.lua'))
eq(true, contains(dirs, './tests/plenary/filetype_spec.lua'))
eq(true, contains(dirs, './data/plenary/filetypes/base.lua'))
eq(true, contains(dirs, './data/plenary/filetypes/builtin.lua'))
eq(true, contains(dirs, './lua/plenary/scandir.lua'))
eq(true, contains(dirs, './tests/plenary/scandir_spec.lua'))
eq(false, contains(dirs, './README.md'))
eq(table.getn(job_dirs), table.getn(dirs))
eq(table.getn(job_dirs), compare_tables(job_dirs, dirs, '.'))
end)
end)

Expand Down

0 comments on commit 9b4216d

Please sign in to comment.