Skip to content

Commit

Permalink
Use Docker for easier test running (#86)
Browse files Browse the repository at this point in the history
Switches to CircleCI instead of Travis, which handles running tests in
Docker much better, especially since Travis is really slow (~30min vs
2.5min on CircleCI).

The Docker image is based on
https://github.com/tweekmonster/vim-testbed, and targets are added to
the Makefile to build/push it.
  • Loading branch information
blueyed authored Jul 21, 2018
1 parent ef1c1d0 commit 99991a3
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 15 deletions.
31 changes: 31 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
version: 2

jobs:
test:
docker:
- image: blueyed/vim-python-pep8-indent-vims-for-test:1@sha256:8c77867e1fdf673a6df0ecf6628f8e4d80579a0a097ec196109ca0bc145d86c0
steps:
- checkout
- run:
name: Run tests
command: |
Xvfb :99 &
DISPLAY=:99 VIMRUNNER_REUSE_SERVER=1 rspec spec
checkqa:
docker:
- image: circleci/python:3.7
steps:
- checkout
- run:
name: Lint
command: |
pip install --user vim-vint
~/.local/bin/vint **/*.vim
workflows:
version: 2
test:
jobs:
- test
- checkqa
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*
!Gemfile
!indent
!spec
15 changes: 0 additions & 15 deletions .travis.yml

This file was deleted.

8 changes: 8 additions & 0 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,14 @@ Running Tests
- Run the tests with the command::

$ rspec spec
- Alternatively you can use Docker::

$ make test_docker

- You can select tests based on line numbers, e.g.::

$ rspec ./spec/indent/indent_spec.rb:385
$ make test_docker RSPEC_ARGS=./spec/indent/indent_spec.rb:385

Thank you for considering to contribute!

Expand Down
19 changes: 19 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM testbed/vim:latest

RUN apk --no-cache add gtk+2.0-dev libx11-dev libxt-dev mcookie xauth xvfb
RUN install_vim -tag master --with-features=normal \
--disable-channel --disable-netbeans --disable-xim \
--enable-gui=gtk2 --with-x -build
RUN ln -s /vim-build/bin/vim-master /usr/bin/gvim
RUN gvim --version

WORKDIR /vim-python-pep8-indent

ADD Gemfile .
RUN apk --no-cache add coreutils ruby-bundler
RUN bundle install

ADD indent ./indent
ADD spec ./spec

ENTRYPOINT ["rspec", "spec"]
20 changes: 20 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,23 @@ test_slow:

test_visible:
VIMRUNNER_REUSE_SERVER=1 bundle exec rspec

# Run tests in dockerized Vims.
DOCKER_REPO:=blueyed/vim-python-pep8-indent-vims-for-test
DOCKER_TAG:=1
DOCKER_IMAGE:=$(DOCKER_REPO):$(DOCKER_TAG)

docker_image:
docker build -t $(DOCKER_REPO):$(DOCKER_TAG) .
docker_push:
docker push $(DOCKER_REPO):$(DOCKER_TAG)
docker_update_latest:
docker tag $(DOCKER_REPO):$(DOCKER_TAG) $(DOCKER_REPO):latest
docker push $(DOCKER_REPO):latest

test_docker: XVFB_ERRORFILE:=/dev/null
test_docker:
@set -x; export DISPLAY=$(if $(VIMRUNNER_TEST_DISPLAY),$(VIMRUNNER_TEST_DISPLAY),172.17.0.1:99; Xvfb -ac -listen tcp :99 >$(XVFB_ERRORFILE) 2>&1 & XVFB_PID=$$!); \
docker run --rm -ti -e DISPLAY -e VIMRUNNER_REUSE_SERVER=1 \
-v $(CURDIR):/vim-python-pep8-indent $(DOCKER_IMAGE) $(RSPEC_ARGS) \
$(if $(VIMRUNNER_TEST_DISPLAY),,; ret=$$?; kill $$XVFB_PID; exit $$ret)
6 changes: 6 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: '2'
services:
rspec:
build: .
volumes:
- .:/vim-python-pep8-indent

0 comments on commit 99991a3

Please sign in to comment.