#
# 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.
#

# Configuration file for Appveyor continuous integration.
version: '{build}'
image: Visual Studio 2017
clone_depth: 100
# Space and plus are here to catch unit tests that fail to support folders with spaces
clone_folder: C:\projects\calcite +
# branches to build
init:
# We expect that Windows would have CRLF for newlines, so autocrlf=true should be used
# to automatically convert text files to CRLF on checkout
  - git config --global core.autocrlf true
branches:
  # whitelist
  only:
    - master
    - new-master
    - javadoc
    - /^branch-.*$/
    - /^[0-9]+-.*$/
matrix:
  fast_finish: true
environment:
  matrix:
    - JAVA_HOME: C:\Program Files\Java\jdk1.8.0
    - JAVA_HOME: C:\Program Files\Java\jdk13
build_script:
  - ./gradlew assemble javadoc
test_script:
  - ./gradlew check
