.appveyor.yml

Summary

Maintainability
Test Coverage
# This tests against the supported versions of Phan 1.x.y (PHP 7.0, 7.1, 7.2)
# The project name is the same as the build id used, e.g. https://www.appveyor.com/docs/environment-variables/

version: '{branch}.{build}'
clone_folder: C:\projects\phan
# Don't include full git history
clone_depth: 1
# Test 32-bit builds
platform: x86

# Test with a given PHP version
# 1. (PHP_VERSION is the only version tested of PHP_EXT_VERSION, and it can only be built with VC_VERSION)
# 2. Also, run tests with a variety of supported php-ast versions. Phan should work properly with php-ast 1.0.1+
environment:
  matrix:
    # This major release of Phan (2.0) requires php-ast 1.0.1+
    - PHP_EXT_VERSION: '7.4'
      PHP_VERSION: '7.4.9'
      VC_VERSION: 15
      PHP_AST_VERSION: 1.0.8
      PHAN_RUN_INTEGRATION_TEST: 1
    - PHP_EXT_VERSION: '7.3'
      PHP_VERSION: '7.3.21'
      VC_VERSION: 15
      PHP_AST_VERSION: 1.0.4
    - PHP_EXT_VERSION: '7.2'
      PHP_VERSION: '7.2.33'
      VC_VERSION: 15
      PHP_AST_VERSION: 1.0.4

init:
    - SET PATH=c:\projects\php;C:\projects\composer;%PATH%

# There are more than one version of php and php-ast that could be installed (for php 7.1 and 7.2),
# so I'm not sure how to cache those.
cache:
    - '%LOCALAPPDATA%\Composer\files -> composer.lock'
    - 'C:\projects\composer\composer.phar'

branches:
  only:
    - master
    - v4

install:
- cmd: choco feature enable -n=allowGlobalConfirmation
- cmd: mkdir %APPVEYOR_BUILD_FOLDER%\bin
build_script:
- cmd: >-
    mkdir C:\projects\php

    cd C:\projects\php

    SET PHP_ZIP_BASENAME=php-%PHP_VERSION%-nts-Win32-VC%VC_VERSION%-x86.zip

    curl -fsS https://windows.php.net/downloads/releases/archives/%PHP_ZIP_BASENAME% -o %PHP_ZIP_BASENAME% || curl -fsS https://windows.php.net/downloads/releases/%PHP_ZIP_BASENAME% -o %PHP_ZIP_BASENAME%

    7z x -y %PHP_ZIP_BASENAME%

    del /Q *.zip

    cd C:\projects\php\ext

    SET AST_ZIP_BASENAME=php_ast-%PHP_AST_VERSION%-%PHP_EXT_VERSION%-nts-vc%VC_VERSION%-x86.zip

    curl -fsS https://windows.php.net/downloads/pecl/releases/ast/%PHP_AST_VERSION%/%AST_ZIP_BASENAME% -o %AST_ZIP_BASENAME%

    7z x %AST_ZIP_BASENAME% php_ast.dll -y >nul

    cd C:\projects\php

    echo [PHP] > php.ini

    echo extension_dir = "ext" >> php.ini

    echo extension=php_ast.dll >> php.ini

    echo extension=php_curl.dll >> php.ini

    echo extension=php_intl.dll >> php.ini

    echo extension=php_mbstring.dll >> php.ini

    echo extension=php_openssl.dll >> php.ini

    echo extension=php_soap.dll >> php.ini

    echo %PATH%

    php -v

    php -m

    IF NOT exist "C:\projects\composer\composer.phar" ( curl --create-dirs -fsS https://getcomposer.org/composer.phar -o "C:\projects\composer\composer.phar" )

test_script:
- cmd: cd C:\projects\phan\internal\paratest
- cmd: php C:\projects\composer\composer.phar install --classmap-authoritative --prefer-dist --ignore-platform-reqs
- cmd: cd C:\projects\phan
- cmd: php C:\projects\composer\composer.phar install --classmap-authoritative --prefer-dist
- cmd: php phan --plugin InvokePHPNativeSyntaxCheckPlugin
# Run phpunit tests in parallel on all available processors (2 on appveyor).
# If running this step with Wine or symlinks, then use paratest --phpunit vendor/phpunit/phpunit/phpunit --verbose instead.
- cmd: .\internal\paratest\vendor\bin\paratest.bat --processes 2 --phpunit .\vendor\phpunit\phpunit\phpunit
# Verify that a phar can be built and executed under windows
- cmd: mkdir build
- cmd: php -d phar.readonly=0 internal/package.php
- cmd: php build/phan.phar --quick