diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea54c54f..775203f8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,12 @@ +name: CI + on: push: branches: - master pull_request: + branches: + - master jobs: test: @@ -11,34 +15,29 @@ jobs: strategy: matrix: vim: - - v8.2.2000 - v8.2.1000 - v8.2.0000 - v8.1.0000 - v8.0.0000 + - v7.4 steps: - name: Checkout code - uses: actions/checkout@main + uses: actions/checkout@v3 + + - name: Checkout vim-themis + uses: actions/checkout@v3 + with: + repository: thinca/vim-themis + path: vim-themis - name: Setup Vim uses: rhysd/action-setup-vim@v1 + id: vim with: version: ${{ matrix.vim }} - - name: Install Dependencies - run: | - git clone https://github.com/junegunn/vader.vim.git - git clone https://github.com/vim-airline/vim-airline - find $PWD/autoload/airline/themes -name "*.vim" > themes.txt - - name: Run Test - run: | - vim --not-a-term -Nu <(cat << VIMRC - filetype off - set rtp+=vader.vim - set rtp+=vim-airline - set rtp+=. - set rtp+=after - filetype plugin indent on - syntax enable - VIMRC) -c 'Vader! test/*' > /dev/null + - name: Test + env: + THEMIS_VIM: ${{ steps.vim.outputs.executable }} + run: ./vim-themis/bin/themis --reporter spec diff --git a/.gitignore b/.gitignore index 17402e57..553bae52 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store doc/tags +test/.deps diff --git a/test/.themisrc b/test/.themisrc new file mode 100644 index 00000000..0390ae8a --- /dev/null +++ b/test/.themisrc @@ -0,0 +1,4 @@ +let s:deps = themis#helper('deps') +call s:deps.git('vim-airline/vim-airline') + +call themis#helper('command') diff --git a/test/airline-themes.vader b/test/airline-themes.vader deleted file mode 100644 index 253ef364..00000000 --- a/test/airline-themes.vader +++ /dev/null @@ -1,38 +0,0 @@ -# Make sure that theme and 5 basic modes don't throw an error -# Get list of all included themes -Execute (validate themes): - let themes = readfile('themes.txt') - call sort(themes) - - let err_proc = v:false - try - - for themePath in themes - - " Check all the basic modes and their modified counterparts - " This test only fails on exceptional cases - let theme = fnamemodify(themePath, ':t:r') - Log theme - execute('AirlineTheme ' . theme) - execute('source ' . themePath) - normal! i - normal! : - normal! R - normal! v - setlocal mod - normal! i - normal! : - normal! R - normal! v - setlocal nomod - - endfor - - catch - let err_proc = v:true - Log "Failed validation testing with exception:" - Log string(v:exception) - endtry - AirlineRefresh - - Assert !err_proc diff --git a/test/airline-themes.vim b/test/airline-themes.vim new file mode 100644 index 00000000..f7856c60 --- /dev/null +++ b/test/airline-themes.vim @@ -0,0 +1,35 @@ +scriptencoding utf-8 + +let s:themes_dir = expand(':h:h') . '/autoload/airline/themes' +let s:themes = map(glob(s:themes_dir . '/*.vim', 1, 1), 'fnamemodify(v:val, ":t:r")') +let s:suite = themis#suite('vim-airline-themes') + +function! s:Test_AirlineTheme(theme) + Throws execute('AirlineTheme ' . a:theme) +endfunction + +function! s:command_insert(theme) + execute('AirlineTheme ' . a:theme) + execute('source ' . expand(':h:h') . '/autoload/airline/themes/' . a:theme . '.vim') + Throws normal! i +endfunction + +function! s:command_command(theme) + execute('AirlineTheme ' . a:theme) + execute('source ' . expand(':h:h') . '/autoload/airline/themes/' . a:theme . '.vim') + Throws normal! : +endfunction + +function! s:suite.__insert__() + let child = themis#suite('INSERT') + for theme in s:themes + let child[theme] = funcref('s:command_insert', [theme]) + endfor +endfunction + +function! s:suite.__command__() + let child = themis#suite('COMMAND') + for theme in s:themes + let child[theme] = funcref('s:command_command', [theme]) + endfor +endfunction