# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

environment:

  TOX_ENV: pywin

  matrix:
    - PYTHON: "C:\\Python27"
      PYTHON_VERSION: 2.7.8
      PYTHON_ARCH: 32

build: false

install:
  - SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%
  - ps: (new-object System.Net.WebClient).Downloadfile('https://bootstrap.pypa.io/get-pip.py', 'C:\Users\appveyor\get-pip.py')
  - ps: Start-Process -FilePath "C:\Python27\python.exe" -ArgumentList "C:\Users\appveyor\get-pip.py" -Wait -Passthru

before_test:
  - pip install virtualenv --upgrade
  - virtualenv env
  - 'env\Scripts\activate.bat'
  - pip install tox

test_script:
  - pip --version
  - tox --version
  - tox -e %TOX_ENV%
