Test: Add local testing (no docker need), working on windows
Problem: User do not want to install docker to test and docker is not set for windows already Solution: Get the script to make the tests locally with current os and vim Log of workflow (6h): ===================== Test: cloning only last 10 Vader commits locally [tinwin] Test: run_bash fix local copies and prettify/robustify [tinwin] Test: Lint tests and fix err treatment in run_bash [Tinmarino] Test; Windows: Restore the bug that I appended on Linux OLD-PATH env deps [Tinmarino] Test: bash script first success on Windows (only the script not the tests) [tinwin] Test: Dirty Backup [tinwin]
This commit is contained in:
parent
c9ba53e204
commit
0a9b11fb0f
3
test/resources/rtp_local.vim
Normal file
3
test/resources/rtp_local.vim
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
set runtimepath+=/tmp/vader_wiki/home/vimtest/vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after,/tmp/vader_wiki/home/vimtest/vim/after
|
||||||
|
execute 'set rtp+='.join(filter(split(expand('/tmp/vader_wiki/home/vimtest/plugins/*')), 'isdirectory(v:val)'), ',')
|
||||||
|
set runtimepath+=/tmp/vader_wiki/testplugin
|
@ -3,8 +3,15 @@
|
|||||||
# credit to https://github.com/w0rp/ale for script ideas and the color vader
|
# credit to https://github.com/w0rp/ale for script ideas and the color vader
|
||||||
# output function.
|
# output function.
|
||||||
|
|
||||||
# Global error return of the script
|
# Say Hi
|
||||||
o_error=0
|
echo -en "Starting $(basename $0) for VimWiki\n"
|
||||||
|
|
||||||
|
# For windows: Cmder bash is appending busybox to the path and
|
||||||
|
# and a smlll vim is included, so that override the windows path vim
|
||||||
|
if [[ -v OLD_PATH ]]; then
|
||||||
|
echo "Setting path from OLD_PATH : $OLD_PATH"
|
||||||
|
export PATH="$OLD_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
printHelp() {
|
printHelp() {
|
||||||
cat << ' EOF' | sed -e 's/^ //'
|
cat << ' EOF' | sed -e 's/^ //'
|
||||||
@ -15,6 +22,8 @@ printHelp() {
|
|||||||
-h (Help) Print help message
|
-h (Help) Print help message
|
||||||
|
|
||||||
-n (versioN) Specify vim/nvim version to run tests for.
|
-n (versioN) Specify vim/nvim version to run tests for.
|
||||||
|
Specify "local" to run on your current vim install
|
||||||
|
for example on Windows.
|
||||||
Multiple versions can be specified by quoting the value and
|
Multiple versions can be specified by quoting the value and
|
||||||
separating versions with a space. E.g. -n "vim1 vim2".
|
separating versions with a space. E.g. -n "vim1 vim2".
|
||||||
Default is all available versions.
|
Default is all available versions.
|
||||||
@ -28,7 +37,10 @@ printHelp() {
|
|||||||
|
|
||||||
-v (Verbose) Turn on verbose output.
|
-v (Verbose) Turn on verbose output.
|
||||||
|
|
||||||
E.g. bash run_tests.sh -v -t vader -n "vim_7.4.1099 vim_8.1.0519" -f link_creation.vader,issue_markdown.vader
|
E.g. On Linux
|
||||||
|
bash run_tests.sh -v -t vader -n "vim_7.4.1099 vim_8.1.0519" -f link_creation.vader,issue_markdown.vader
|
||||||
|
E.g. On Windows
|
||||||
|
bash run_tests.sh -v -t vader -n local -f z_success.vader | cat
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
@ -42,7 +54,8 @@ printVersions() {
|
|||||||
|
|
||||||
runVader() {
|
runVader() {
|
||||||
# Run Vader tests
|
# Run Vader tests
|
||||||
echo "Starting Docker container and Vader tests."
|
echo -e "\nStarting Vader tests."
|
||||||
|
local err=0
|
||||||
|
|
||||||
# Parse tests files to execute
|
# Parse tests files to execute
|
||||||
if [[ -z $file_test ]]; then
|
if [[ -z $file_test ]]; then
|
||||||
@ -64,36 +77,112 @@ runVader() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
echo "Vader: running files: $res and independantly $ind"
|
echo "Vader: will run files: $res and independantly $ind"
|
||||||
|
|
||||||
# Run tests for each specified version
|
# Run tests for each specified version
|
||||||
for v in $vers; do
|
for v in $vers; do
|
||||||
echo -e "\nRunning version: $v"
|
echo -e "\nRunning version: $v"
|
||||||
vim="/vim-build/bin/$v -u test/vimrc -i NONE"
|
|
||||||
test_cmd="for VF in ${ind}; do $vim \"+Vader! \$VF\"; done"
|
# Set local environment variables
|
||||||
|
if [[ "$v" == "local" ]]; then
|
||||||
|
# Save HOME var
|
||||||
|
home_save="$HOME"
|
||||||
|
|
||||||
|
# Create temporary root
|
||||||
|
mkdir -p $tmp_dir/vader_wiki
|
||||||
|
mkdir -p $tmp_dir/vader_wiki/home
|
||||||
|
mkdir -p $tmp_dir/vader_wiki/home/test
|
||||||
|
mkdir -p $tmp_dir/vader_wiki/testplugin
|
||||||
|
|
||||||
|
# Set vars
|
||||||
|
export ROOT="$tmp_dir/vader_wiki/"
|
||||||
|
export HOME="$tmp_dir/vader_wiki/home"
|
||||||
|
vim="vim"
|
||||||
|
vim_opt="-u ~/test/vimrc -i NONE"
|
||||||
|
else
|
||||||
|
# Only set dockerized vars
|
||||||
|
export ROOT="/" # So no if in vimrc
|
||||||
|
vim="/vim-build/bin/$v"
|
||||||
|
vim_opt="-u test/vimrc -i NONE"
|
||||||
|
fi
|
||||||
|
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
# Run Fast tests
|
# Copy the resources to temporary directory
|
||||||
|
if [[ "$v" == "local" ]]; then
|
||||||
|
# flags=(--rm -v "$PWD/../:/testplugin" -v "$PWD/../test:/home" -w /testplugin vimwiki)
|
||||||
|
echo -e "\nCopying resources to $ROOT"
|
||||||
|
# Copy testplugin
|
||||||
|
cp -rf $wiki_path/* $ROOT/testplugin/
|
||||||
|
# Copy home
|
||||||
|
cp -rf $script_path/* $HOME/test/
|
||||||
|
# Copy rtp.vim
|
||||||
|
cp -rf $script_path/resources/rtp_local.vim $ROOT/rtp.vim
|
||||||
|
# Copy vader <- internet
|
||||||
|
echo 'Cloning Vader (git, do not care the fatal)'
|
||||||
|
git clone --depth 10 https://github.com/junegunn/vader.vim /tmp/vader_wiki/vader 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run batch of tests
|
||||||
|
if [[ "$v" == "local" ]]; then
|
||||||
|
pushd $tmp_dir/vader_wiki/testplugin
|
||||||
|
|
||||||
|
# Run the tests
|
||||||
|
echo -e "\nStarting vim with Vader"
|
||||||
|
"$vim" $vim_opt "+Vader! ${res}" 2>&1
|
||||||
|
err=$(( $err | $? ))
|
||||||
|
|
||||||
|
popd
|
||||||
|
else # In docker
|
||||||
|
echo -e "\nStarting docker with vim with Vader"
|
||||||
docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${flags[@]}" \
|
docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${flags[@]}" \
|
||||||
"$v" -u test/vimrc -i NONE "+Vader! ${res}" 2>&1 | vader_filter | vader_color
|
"$v" $vim_opt "+Vader! ${res}" 2>&1 | vader_filter | vader_color
|
||||||
o_error=$(( $o_error | $? ))
|
err=$(( $err | $? ))
|
||||||
|
fi
|
||||||
|
|
||||||
# Run Tests that must be run in individual vim instances
|
# Run Tests that must be run in individual vim instances
|
||||||
# see README.md for more information
|
# see README.md for more information
|
||||||
|
test_cmd="for VF in ${ind}; do $vim $vim_opt \"+Vader! \$VF\"; done"
|
||||||
|
if [[ "$v" == "local" ]]; then
|
||||||
|
pushd $tmp_dir/vader_wiki/testplugin
|
||||||
|
|
||||||
|
echo "Starting vim with Vader"
|
||||||
|
bash -c "$test_cmd" 2>&1
|
||||||
|
err=$(( $err | $? ))
|
||||||
|
|
||||||
|
popd
|
||||||
|
else # In docker
|
||||||
|
echo "Starting docker with vim with Vader"
|
||||||
docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${flags[@]}" \
|
docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${flags[@]}" \
|
||||||
/bin/bash -c "$test_cmd" 2>&1 | vader_filter | vader_color
|
/bin/bash -c "$test_cmd" 2>&1 | vader_filter | vader_color
|
||||||
o_error=$(( $o_error | $? ))
|
err=$(( $err | $? ))
|
||||||
|
fi
|
||||||
|
|
||||||
set +o pipefail
|
set +o pipefail
|
||||||
|
|
||||||
|
# Restore what must (I know it should be refactored in a while)
|
||||||
|
if [[ "$v" == "local" ]]; then
|
||||||
|
export HOME=$home_save
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
return $o_error
|
return $err
|
||||||
}
|
}
|
||||||
|
|
||||||
runVint() {
|
runVint() {
|
||||||
echo "Starting Docker container and running Vint."
|
local err=0
|
||||||
|
cmd="vint -s . && vint -s test/vimrc"
|
||||||
docker run -a stdout "${flags[@]}" vint -s .
|
if echo "$vers" | grep "local" > /dev/null; then
|
||||||
|
echo "Running Vint: $cmd : in $wiki_path"
|
||||||
|
pushd $wiki_path > /dev/null
|
||||||
|
$cmd
|
||||||
|
err=$(( $err | $? ))
|
||||||
|
popd > /dev/null
|
||||||
|
else
|
||||||
|
echo "Starting Docker container and running Vint: $cmd"
|
||||||
|
docker run -a stdout "${flags[@]}" bash -c "$cmd"
|
||||||
|
err=$(( $err | $? ))
|
||||||
|
fi
|
||||||
|
return $err
|
||||||
}
|
}
|
||||||
|
|
||||||
getVers() {
|
getVers() {
|
||||||
@ -130,18 +219,14 @@ vader_filter() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [[ "$err" == 1 ]]; then
|
if [[ "$err" == 1 ]]; then
|
||||||
o_error=1
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "!---------Failed tests detected---------!"
|
echo "!---------Failed tests detected---------!"
|
||||||
echo "Run with the '-v' flag for verbose output"
|
echo "Run with the '-v' flag for verbose output"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
return $o_error
|
return $err
|
||||||
}
|
}
|
||||||
|
|
||||||
# Say Hi
|
|
||||||
echo -en "Starting $(basename $0) for VimWiki\n"
|
|
||||||
|
|
||||||
|
|
||||||
red='\033[0;31m'
|
red='\033[0;31m'
|
||||||
green='\033[0;32m'
|
green='\033[0;32m'
|
||||||
@ -177,6 +262,12 @@ vader_color() {
|
|||||||
echo -en "$nc"
|
echo -en "$nc"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# path of the script, supposing no spaces
|
||||||
|
script_file="$(dirname $0)"
|
||||||
|
script_path="$( realpath $script_file )"
|
||||||
|
wiki_path="$( realpath $script_path/.. )"
|
||||||
|
tmp_dir=$(dirname $(mktemp -u))
|
||||||
|
|
||||||
# list of vim/nvim versions
|
# list of vim/nvim versions
|
||||||
vers="$(getVers)"
|
vers="$(getVers)"
|
||||||
|
|
||||||
@ -235,6 +326,9 @@ fi
|
|||||||
# stop tests on ctrl-c or ctrl-z
|
# stop tests on ctrl-c or ctrl-z
|
||||||
trap exit 1 SIGINT SIGTERM
|
trap exit 1 SIGINT SIGTERM
|
||||||
|
|
||||||
|
# Global error return of the script
|
||||||
|
o_error=0
|
||||||
|
|
||||||
# select which tests should run
|
# select which tests should run
|
||||||
case $type in
|
case $type in
|
||||||
"vader" )
|
"vader" )
|
||||||
@ -249,7 +343,7 @@ case $type in
|
|||||||
;;
|
;;
|
||||||
"all" )
|
"all" )
|
||||||
runVint ; err=$?
|
runVint ; err=$?
|
||||||
echo "Vint: returned $?"
|
echo "Vint: returned $err"
|
||||||
o_error=$(( $err | $o_error ))
|
o_error=$(( $err | $o_error ))
|
||||||
runVader ; err=$?
|
runVader ; err=$?
|
||||||
echo "Vader: returned $err"
|
echo "Vader: returned $err"
|
||||||
|
30
test/vimrc
30
test/vimrc
@ -1,18 +1,18 @@
|
|||||||
source /rtp.vim
|
" Declare tipical Vim preambule
|
||||||
set runtimepath+=/vader
|
|
||||||
|
|
||||||
" vint: -ProhibitSetNoCompatible
|
" vint: -ProhibitSetNoCompatible
|
||||||
set nocompatible
|
set nocompatible
|
||||||
filetype plugin indent on
|
filetype plugin indent on
|
||||||
syntax enable
|
syntax enable
|
||||||
|
|
||||||
" Wiki's resources to be used after:
|
" Set chrooted virtual runtime path
|
||||||
" :!cp -r /testplugin/test/resources/* $HOME/
|
let rtp=$ROOT.'/rtp.vim'
|
||||||
" or from a test.vader file Execute block:
|
exe 'source '.rtp
|
||||||
" call CopyResources()
|
|
||||||
" This complication aims for these copies to be writable
|
|
||||||
|
|
||||||
" default syntax
|
" Load Vader
|
||||||
|
let vader=$ROOT.'/vader'
|
||||||
|
exe 'set runtimepath+='.vader
|
||||||
|
|
||||||
|
" Declare default syntax
|
||||||
let vimwiki_default = {}
|
let vimwiki_default = {}
|
||||||
let vimwiki_default.path = $HOME . '/testwiki'
|
let vimwiki_default.path = $HOME . '/testwiki'
|
||||||
let vimwiki_default.path_html = $HOME . '/html/default'
|
let vimwiki_default.path_html = $HOME . '/html/default'
|
||||||
@ -21,7 +21,7 @@ let vimwiki_default.ext = '.wiki'
|
|||||||
let vimwiki_default.name = 'DefaultSyntax'
|
let vimwiki_default.name = 'DefaultSyntax'
|
||||||
let vimwiki_default.base_url = 'https://example.com/'
|
let vimwiki_default.base_url = 'https://example.com/'
|
||||||
|
|
||||||
" markdown syntax - https://github.github.com/gfm/
|
" Declare markdown syntax - https://github.github.com/gfm/
|
||||||
let vimwiki_markdown = {}
|
let vimwiki_markdown = {}
|
||||||
let vimwiki_markdown.path = $HOME . '/testmarkdown'
|
let vimwiki_markdown.path = $HOME . '/testmarkdown'
|
||||||
let vimwiki_markdown.path_html = $HOME . '/html/markdown'
|
let vimwiki_markdown.path_html = $HOME . '/html/markdown'
|
||||||
@ -29,7 +29,7 @@ let vimwiki_markdown.syntax = 'markdown'
|
|||||||
let vimwiki_markdown.ext = '.md'
|
let vimwiki_markdown.ext = '.md'
|
||||||
let vimwiki_markdown.name = 'MarkdownSyntax'
|
let vimwiki_markdown.name = 'MarkdownSyntax'
|
||||||
|
|
||||||
" mediawiki syntax - https://www.mediawiki.org/wiki/Help:Formatting
|
" Declare mediawiki syntax - https://www.mediawiki.org/wiki/Help:Formatting
|
||||||
let vimwiki_mediawiki = {}
|
let vimwiki_mediawiki = {}
|
||||||
let vimwiki_mediawiki.path = $HOME . '/testmediawiki'
|
let vimwiki_mediawiki.path = $HOME . '/testmediawiki'
|
||||||
let vimwiki_mediawiki.path_html = $HOME . '/html/mediawiki'
|
let vimwiki_mediawiki.path_html = $HOME . '/html/mediawiki'
|
||||||
@ -37,10 +37,10 @@ let vimwiki_mediawiki.syntax = 'media'
|
|||||||
let vimwiki_mediawiki.ext = '.mw'
|
let vimwiki_mediawiki.ext = '.mw'
|
||||||
let vimwiki_mediawiki.name = 'MediaWikiSyntax'
|
let vimwiki_mediawiki.name = 'MediaWikiSyntax'
|
||||||
|
|
||||||
" register the 3 wikis
|
" Register the 3 wikis
|
||||||
let g:vimwiki_list = [vimwiki_default, vimwiki_markdown, vimwiki_mediawiki]
|
let g:vimwiki_list = [vimwiki_default, vimwiki_markdown, vimwiki_mediawiki]
|
||||||
|
|
||||||
" basic settings
|
" Set basic settings
|
||||||
set backspace=indent,eol,start
|
set backspace=indent,eol,start
|
||||||
set wildmode=longest:full,full
|
set wildmode=longest:full,full
|
||||||
set wildmenu
|
set wildmenu
|
||||||
@ -54,11 +54,11 @@ set hidden
|
|||||||
set laststatus=2
|
set laststatus=2
|
||||||
set hlsearch
|
set hlsearch
|
||||||
|
|
||||||
" use ctrl-p/n for history completion instead of up/down arrows
|
" Map ctrl-p/n for history completion instead of up/down arrows
|
||||||
cnoremap <C-p> <Up>
|
cnoremap <C-p> <Up>
|
||||||
cnoremap <C-n> <Down>
|
cnoremap <C-n> <Down>
|
||||||
|
|
||||||
" jj to go back to command mode
|
" Map jj to go back to command mode
|
||||||
inoremap jj <esc>
|
inoremap jj <esc>
|
||||||
|
|
||||||
" Use <C-L> to clear the highlighting of :set hlsearch and also preserve the
|
" Use <C-L> to clear the highlighting of :set hlsearch and also preserve the
|
||||||
|
10
test/z_success.vader
Normal file
10
test/z_success.vader
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Succeding test just to test the script when everything goes fine
|
||||||
|
|
||||||
|
Given (Text v0.01):
|
||||||
|
Text
|
||||||
|
|
||||||
|
Do (press escape):
|
||||||
|
\<Esc>
|
||||||
|
|
||||||
|
Expect (Text):
|
||||||
|
Text
|
Loading…
Reference in New Issue
Block a user