language: go
os: linux
dist: bionic
sudo: require

cache:
  directories:
    - $HOME/.ccache

go:
  - "1.15"

env:
  global:
    - CCACHE_TEMPDIR=/tmp/.ccache-temp
  matrix:
    - LIBVIRT=2.3.0  EXT=xz
    - LIBVIRT=3.1.0  EXT=xz
    - LIBVIRT=5.1.0  EXT=xz

before_install:
  - go get golang.org/x/lint/golint
  - go get golang.org/x/tools/cmd/goyacc

install:
  # credit here goes to the go-libvirt authors,
  # see: https://github.com/rgbkrk/libvirt-go/blob/master/.travis.yml
  - sudo apt-get -qqy build-dep libvirt
  - sudo apt-get -qqy install curl qemu-system-x86
  - sudo mkdir -p /usr/src && sudo chown $(id -u) /usr/src
  - curl -O -s https://libvirt.org/sources/libvirt-${LIBVIRT}.tar.${EXT}
  - tar -C /usr/src -xf libvirt-${LIBVIRT}.tar.${EXT}
  - pushd /usr/src/libvirt-${LIBVIRT}
  - ccache --show-stats
  - |
        env PATH=/usr/lib/ccache:$PATH \
        ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc \
                    --without-polkit \
                    --without-esx --without-vbox --without-xen --without-libxl --without-lxc \
                    --with-qemu
  - make
  - sudo make install
  - ccache --show-stats
  - popd
  - sudo libvirtd -d -l -f libvirtd.conf
  - sudo virtlogd -d || true

before_script:
  - go get -d ./...
  - sudo qemu-img create -f raw -o size=10M /var/lib/libvirt/images/test.raw
  - sudo virsh define .travis/test-domain.xml
  - sudo virsh start test
  - sudo virsh pool-create .travis/test-pool.xml
  - sudo virsh secret-define .travis/test-secret.xml

script:
  - ./scripts/licensecheck.sh
  - LIBVIRT_SOURCE=/usr/src/libvirt-${LIBVIRT} go generate ./...
  - go build ./...
  - golint -set_exit_status ./...
  - go vet ./...
  - go test -v -tags=integration ./...
