language: ruby
sudo: false
cache: bundler

# Early warning system to catch if Rubygems breaks something
before_install:
  - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
  - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
  - rm -f .bundle/config

bundler_args: --without changelog development docgen guard maintenance omnibus_package tools aix bsd mac_os_x solaris windows --frozen

before_script:
 # force all .rspec tests into progress display to reduce line count
 - echo --color > .rspec
 - echo -fp >> .rspec
 # necessary for sudo: true tests, ingore failures on tests invoked with sudo: false
 - sudo sed -i -e 's/^Defaults\tsecure_path.*$//' /etc/sudoers || true

# do not run expensive spec tests on PRs, only on branches
branches:
  only:
  - master
  - 10-stable
  - 11-stable

env:
  global:
    - FORCE_FFI_YAJL=ext

matrix:
  include:
  - rvm: 2.1
    sudo: true
    script: sudo -E $(which bundle) exec rake spec;
    # also remove integration / external tests
    bundler_args: --without changelog development docgen guard integration maintenance omnibus_package tools aix bsd mac_os_x solaris windows --frozen
  - rvm: 2.2
    sudo: true
    script: sudo -E $(which bundle) exec rake spec;
    # also remove integration / external tests
    bundler_args: --without changelog development docgen guard integration maintenance omnibus_package tools aix bsd mac_os_x solaris windows --frozen
  - rvm: 2.3.0
    sudo: true
    script: sudo -E $(which bundle) exec rake spec;
    # also remove integration / external tests
    bundler_args: --without changelog development docgen guard integration maintenance omnibus_package tools aix bsd mac_os_x solaris windows --frozen
  - rvm: rbx
    sudo: true
    script: sudo -E $(which bundle) exec rake spec;
    # also remove integration / external tests
    bundler_args: --without changelog development docgen guard integration maintenance omnibus_package tools aix bsd mac_os_x solaris windows --frozen
  - env:
      CHEFSTYLE: 1
    rvm: 2.1
    script: bundle exec rake style
    # also remove integration / external tests
    bundler_args: --without changelog development docgen guard integration maintenance omnibus_package tools aix bsd mac_os_x solaris windows --frozen
  - env:
      AUDIT_CHECK: 1
    rvm: 2.1
    script: bundle exec bundle-audit check --update
    # also remove integration / external tests
    bundler_args: --without changelog development docgen guard integration maintenance omnibus_package tools aix bsd mac_os_x solaris windows --frozen
  #
  # External tests
  #
  - env:
      TEST_GEM: chef-provisioning
    script: tasks/bin/run_external_test $TEST_GEM rake spec
    rvm: 2.2
  - env:
      TEST_GEM: chef-provisioning-aws
    script: tasks/bin/run_external_test $TEST_GEM rake spec
    rvm: 2.2
  - env:
      TEST_GEM: chef-sugar
    script: tasks/bin/run_external_test $TEST_GEM rake
    rvm: 2.2
  - env:
      - TEST_GEM: chef-zero
    script: tasks/bin/run_external_test $TEST_GEM rake spec cheffs
    rvm: 2.2
  - env:
      TEST_GEM: cheffish
    script: tasks/bin/run_external_test $TEST_GEM rake spec
    rvm: 2.2
  - env:
      TEST_GEM: chefspec
    # The chefspec tests + bundler cache + "gem update --system" interact badly :/
    # (Cucumber doesn't start.)
    before_install:
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
      - bundle config --local without server:docgen:maintenance:omnibus_package:development:ruby_prof:pry
    script: tasks/bin/run_external_test $TEST_GEM rake
    rvm: 2.2.0
  - env:
      TEST_GEM: foodcritic
    script: tasks/bin/run_external_test $TEST_GEM rake test
    rvm: 2.2
  - env:
      TEST_GEM: halite
    script: tasks/bin/run_external_test $TEST_GEM rake spec
    rvm: 2.2
  - env:
      TEST_GEM: knife-windows
    script: tasks/bin/run_external_test $TEST_GEM rake unit_spec
    rvm: 2.2
  - env:
      TEST_GEM: poise
    script: tasks/bin/run_external_test $TEST_GEM rake spec
    rvm: 2.2
  ### START TEST KITCHEN ONLY ###
  #
  - rvm: 2.2
    services: docker
    sudo: required
    gemfile: kitchen-tests/Gemfile
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
    before_script:
      - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
      - cd kitchen-tests
    script:
      - bundle exec kitchen test ubuntu-1204
    after_failure:
      - cat .kitchen/logs/kitchen.log
    env:
      - UBUNTU=12.04
      - KITCHEN_YAML=.kitchen.travis.yml
  - rvm: 2.2
    services: docker
    sudo: required
    gemfile: kitchen-tests/Gemfile
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
    before_script:
      - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
      - cd kitchen-tests
    script:
      - bundle exec kitchen test ubuntu-1404
    after_failure:
      - cat .kitchen/logs/kitchen.log
    env:
      - UBUNTU=14.04
      - KITCHEN_YAML=.kitchen.travis.yml
  - rvm: 2.2
    services: docker
    sudo: required
    gemfile: kitchen-tests/Gemfile
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
    before_script:
      - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
      - cd kitchen-tests
    script:
      - bundle exec kitchen test ubuntu-1604
    after_failure:
      - cat .kitchen/logs/kitchen.log
    env:
      - UBUNTU=16.04
      - KITCHEN_YAML=.kitchen.travis.yml
  - rvm: 2.2
    services: docker
    sudo: required
    gemfile: kitchen-tests/Gemfile
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
    before_script:
      - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
      - cd kitchen-tests
    script:
      - bundle exec kitchen test debian-7
    after_failure:
      - cat .kitchen/logs/kitchen.log
    env:
      - DEBIAN=7
      - KITCHEN_YAML=.kitchen.travis.yml
  - rvm: 2.2
    services: docker
    sudo: required
    gemfile: kitchen-tests/Gemfile
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
    before_script:
      - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
      - cd kitchen-tests
    script:
      - bundle exec kitchen test debian-8
    after_failure:
      - cat .kitchen/logs/kitchen.log
    env:
      - DEBIAN=8
      - KITCHEN_YAML=.kitchen.travis.yml
  - rvm: 2.2
    services: docker
    sudo: required
    gemfile: kitchen-tests/Gemfile
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
    before_script:
      - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
      - cd kitchen-tests
    script:
      - bundle exec kitchen test centos-6
    after_failure:
      - cat .kitchen/logs/kitchen.log
    env:
      - CENTOS=6
      - KITCHEN_YAML=.kitchen.travis.yml
  - rvm: 2.2
    services: docker
    sudo: required
    gemfile: kitchen-tests/Gemfile
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
    before_script:
      - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
      - cd kitchen-tests
    script:
      - bundle exec kitchen test centos-7
    after_failure:
      - cat .kitchen/logs/kitchen.log
    env:
      - CENTOS=7
      - KITCHEN_YAML=.kitchen.travis.yml
  - rvm: 2.2
    services: docker
    sudo: required
    gemfile: kitchen-tests/Gemfile
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
    before_script:
      - sudo iptables -L DOCKER || ( echo "DOCKER iptables chain missing" ; sudo iptables -N DOCKER )
      - cd kitchen-tests
    script:
      - bundle exec kitchen test fedora-23
    after_failure:
      - cat .kitchen/logs/kitchen.log
    env:
      - FEDORA=23
      - KITCHEN_YAML=.kitchen.travis.yml
    ### END TEST KITCHEN ONLY ###
  - rvm: 2.2
    sudo: required
    dist: trusty
    before_install:
      - gem update --system $(grep rubygems omnibus_overrides.rb | cut -d'"' -f2)
      - gem install bundler -v $(grep bundler omnibus_overrides.rb | cut -d'"' -f2)
      - sudo apt-get update
      - sudo apt-get -y install squid3 git curl
    env:
      - PROXY_TESTS_DIR=proxy_tests/files/default/scripts
      - PROXY_TESTS_REPO=$PROXY_TESTS_DIR/repo
    script:
      - bundle exec chef-client --version
      - git clone https://github.com/chef/proxy_tests.git
      - rvmsudo -E bundle exec bash $PROXY_TESTS_DIR/run_tests.sh chef_client \* \* /tmp/out.txt
    after_script:
      - cat /tmp/out.txt
      - sudo cat /var/log/squid3/cache.log
      - sudo cat /var/log/squid3/access.log

  allow_failures:
    - rvm: 2.3.0
    - rvm: rbx

notifications:
  on_change: true
  on_failure: true
  on_success: change
  on_pull_requests: false
  irc:
    channels:
    - chat.freenode.net#chef-hacking