version: '{build}'

branches:
  only:
  - master

skip_commits:
  files:
    - demos/
    - docs/
    - interface/
    - locale/
    - misc/
    - include/wx/dfb/
    - src/dfb/
    - include/wx/gtk/
    - src/gtk/
    - include/wx/osx/
    - src/osx/
    - include/wx/unix/
    - src/unix/
    - include/wx/x11/
    - src/x11/
    - '**/*.md'
    - .circleci/
    - .github/ISSUE_TEMPLATE/
    - .github/workflows/
    - build/tools/before_install.sh
    - build/tools/httpbin.sh

environment:
  matrix:
  - TOOLSET: msbuild
    CONFIGURATION: DLL Release
    ARCH: x64
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
  - TOOLSET: msbuild
    CONFIGURATION: Debug
    ARCH: x64
    wxUSE_UNICODE_UTF8: 1
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
  - TOOLSET: nmake
    VS: '14.0'
    BUILD: debug
    ARCH: amd64
    wxUSE_WEBVIEW_EDGE: 1
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
  - TOOLSET: cmake
    GENERATOR: 'Visual Studio 15 2017'
    SHARED: ON
    CONFIGURATION: Release
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
  - TOOLSET: cmake_qt
    GENERATOR: 'Visual Studio 14 2015 Win64'
    SHARED: ON
    CONFIGURATION: Release
    APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015

clone_depth: 50

install: git submodule update --init

init:
- ps: |
    if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
        https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
        Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
        throw "There are newer queued builds for this pull request, failing early." }

before_build:
- ps: |
    $env:PATH = $env:PATH -replace "C:\\Program Files\\Git\\usr\\bin",""
    if (-not (Test-Path env:wxUSE_UNICODE_UTF8)) { $env:wxUSE_UNICODE_UTF8 = '0' }
    if (-not (Test-Path env:wxUSE_WEBVIEW_EDGE)) { $env:wxUSE_WEBVIEW_EDGE = '0' }
    if (($env:TOOLSET -ne "msys2") -and ($env:TOOLSET -ne "cygwin")) {
      $txt = gc include\wx\msw\setup.h
      Write-Output $txt |
      %{$_ -replace "define wxUSE_UNICODE_UTF8 0", "define wxUSE_UNICODE_UTF8 $env:wxUSE_UNICODE_UTF8"} |
      %{$_ -replace "define wxUSE_WEBVIEW_EDGE 0", "define wxUSE_WEBVIEW_EDGE $env:wxUSE_WEBVIEW_EDGE"} |
      sc include\wx\msw\setup.h
    }

build_script: c:\projects\wxwidgets\build\tools\appveyor.bat

before_test:
- ps: |
    Write-Output "Getting and launching httpbin."
    $env:PATH = "C:\Python38;C:\Python38\Scripts;" + $env:PATH
    pip.exe --disable-pip-version-check install Flask==2.0.3 Werkzeug==2.0.3 httpbin
    Start-Job -Name wx_httpbin { python.exe -m httpbin.core 2>&1 > c:\projects\wxwidgets\httpbin.log }
    Start-Sleep -Seconds 5
    curl.exe --silent --show-error http://127.0.0.1:5000/ip > $null
    if ($lastExitCode -eq "0") {
        $env:WX_TEST_WEBREQUEST_URL="http://127.0.0.1:5000"
    }
    else {
        Write-Error "Disabling wxWebRequest tests as launching httpbin failed, log follows:"
        Get-Content c:\projects\wxwidgets\httpbin.log
        $env:WX_TEST_WEBREQUEST_URL="0"
    }

test_script: c:\projects\wxwidgets\build\tools\appveyor-test.bat

after_test:
- ps: |
    Stop-Job -Name wx_httpbin
