build: false
platform:
  - x64

clone_folder: c:\projects\php-project-workspace

## Set up environment variables
init:
  - SET PATH=C:\Program Files\OpenSSL;c:\tools\php;%PATH%
  - SET COMPOSER_NO_INTERACTION=1
  - SET PHP=1 # This var is connected to PHP install cache
  - SET ANSICON=121x90 (121x90)

environment:
  SSL_CERT_FILE: "C:\\tools\\php\\cacert.pem"
  matrix:
    - php_ver_target: 8.0
      DEPS: 'high'

cache:
  - '%LOCALAPPDATA%\Composer\files'
  - '%LOCALAPPDATA%\Composer\vcs'
  # Cache chocolatey packages
  - C:\ProgramData\chocolatey\bin
  - C:\ProgramData\chocolatey\lib
  # Cache php install
  - c:\tools\php

## Install PHP and composer, and run the appropriate composer command
install:
    - IF EXIST c:\tools\php (SET PHP=0) # Checks for the PHP install being cached
    - ps: appveyor-retry cinst --no-progress --params '""/InstallDir:C:\tools\php""' --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php_ver_target | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
    - appveyor DownloadFile https://curl.haxx.se/ca/cacert.pem -FileName C:\tools\php\cacert.pem
    - cd c:\tools\php
    - IF %PHP%==1 copy php.ini-production php.ini /Y
    - IF %PHP%==1 echo date.timezone="UTC" >> php.ini
    - IF %PHP%==1 echo extension_dir=ext >> php.ini
    - IF %PHP%==1 echo extension=php_curl.dll >> php.ini
    - IF NOT EXIST php-installed.txt echo curl.cainfo="C:/tools/php/cacert.pem" >> php.ini
    - IF NOT EXIST php-installed.txt echo openssl.cafile="C:/tools/php/cacert.pem" >> php.ini
    - IF %PHP%==1 echo extension=php_openssl.dll >> php.ini
    - IF %PHP%==1 echo extension=php_mbstring.dll >> php.ini
    - IF %PHP%==1 echo extension=php_fileinfo.dll >> php.ini
    - IF %PHP%==1 echo zend.assertions=1 >> php.ini
    - IF %PHP%==1 echo assert.exception=On >> php.ini
    - IF %PHP%==1 echo error_reporting=E_ALL >> php.ini
    - IF %PHP%==1 echo @php %%~dp0composer.phar %%* > composer.bat
    - IF NOT EXIST composer.phar appveyor-retry appveyor DownloadFile https://getcomposer.org/composer-stable.phar -FileName composer.phar
    - cd c:\projects\php-project-workspace
    - php -r "phpinfo(INFO_GENERAL);"
    - if NOT DEFINED APPVEYOR_REPO_TAG_NAME (set COMPOSER_ROOT_VERSION=dev-master)
    - if %DEPS%==low appveyor-retry composer update --no-interaction --no-progress --profile --prefer-lowest --prefer-stable
    - if %DEPS%==high appveyor-retry composer update --no-interaction --no-progress --profile

## Run the actual test
test_script:
    - cd c:\projects\php-project-workspace
    - vendor/bin/paratest --log-junit build/phpunit/phpunit.xml
    - php ./psalm --shepherd

on_finish:
    - ps: $wc = New-Object 'System.Net.WebClient'
    - ps: $wc.UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\build\phpunit\phpunit.xml))
