From 5b8a833fe99a7d51b5dafb53191805952d2d2eb4 Mon Sep 17 00:00:00 2001 From: Ernst Widerberg Date: Sat, 20 Nov 2021 13:05:56 +0100 Subject: [PATCH] Add Docker setup for testing --- Dockerfile | 22 ++++++++++++++++++++++ README.md | 7 +++++-- makefile | 20 -------------------- run-tests.sh | 31 +++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 22 deletions(-) create mode 100644 Dockerfile delete mode 100644 makefile create mode 100755 run-tests.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..aeafded --- /dev/null +++ b/Dockerfile @@ -0,0 +1,22 @@ +FROM ubuntu + +RUN apt update && apt install -y \ + git \ + vim \ + neovim + +WORKDIR root + +RUN git clone https://github.com/junegunn/vader.vim +COPY . main + +RUN mkdir -p /root/.vim/pack/all/start +RUN mkdir -p /root/.local/share/nvim/site/pack/all/start + +RUN ln -s /root/* /root/.vim/pack/all/start +RUN ln -s /root/* /root/.local/share/nvim/site/pack/all/start + +RUN echo "set encoding=utf-8" > /root/.vim/vimrc + +WORKDIR main +ENTRYPOINT ["./run-tests.sh"] diff --git a/README.md b/README.md index ad6157a..a23871f 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,9 @@ See [`:help secret-highlight`](./doc/secret.txt#L74) for more info. ## Testing -`make` can be used to do testing in an isolated environment. The default target runs `test/*.vader` in Vim and Neovim. +Docker can be used to run tests in an isolated environment: -Thanks to [vim-sneak](https://github.com/justinmk/vim-sneak) for this idea. +``` +$ docker build -t vim-secret . +$ docker run --rm vim-secret [--verbose] +``` diff --git a/makefile b/makefile deleted file mode 100644 index 9f1bec9..0000000 --- a/makefile +++ /dev/null @@ -1,20 +0,0 @@ -VIM = vim -N -u NORC -i NONE --cmd 'set rtp=test/vim-vader packpath=' - -all: v nv - -v: test/vim-vader - $(VIM) -c 'Vader! test/*.vader' - -v-i: test/vim-vader - $(VIM) -c 'Vader test/*.vader' - -nv: test/vim-vader - n$(VIM) --headless -c 'Vader! test/*.vader' - -nv-i: test/vim-vader - n$(VIM) -c 'Vader test/*.vader' - -test/vim-vader: - git clone https://github.com/junegunn/vader.vim test/vim-vader || ( cd test/vim-vader && git pull --rebase ) - -.PHONY: all v v-i nv nv-i diff --git a/run-tests.sh b/run-tests.sh new file mode 100755 index 0000000..b91df6c --- /dev/null +++ b/run-tests.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +if [[ $1 == "--verbose" || $1 == "-v" ]]; then + VERBOSE=1 +fi + +check_results() { + if [[ $? -eq 0 ]]; then + echo -e "\e[32m$1: PASS\e[0m" + else + echo -e "\e[31m$1: FAIL\e[0m" + fi + + if [[ $VERBOSE == 1 ]]; then + sed -n '/^Starting Vader:/,$p' < vader_output + fi +} + +export VADER_OUTPUT_FILE=vader_output + +vim.basic --not-a-term -c Vader! test/*.vader &>/dev/null +check_results "VIM" $1 +rm vader_output + +if [[ $VERBOSE == 1 ]]; then + echo "" +fi + +nvim -es -c Vader! test/*.vader +check_results "NEOVIM" $1 +rm vader_output