# With infos from
# http://tjelvarolsson.com/blog/how-to-continuously-test-your-python-code-on-windows-using-appveyor/
# https://packaging.python.org/en/latest/appveyor/
---

# Backslashes in quotes need to be escaped: \ -> "\\"
branches:
  except:
    - /auto-backport-.*/
    - /^v\d+\.\d+\.[\dx]+-doc$/

skip_commits:
  message: /\[ci doc\]/
  files:
    - doc/
    - galleries/

clone_depth: 50

image: Visual Studio 2019

environment:

  global:
    PYTHONFAULTHANDLER: 1
    PYTHONIOENCODING: UTF-8
    PYTEST_ARGS: -rfEsXR --numprocesses=auto --timeout=300 --durations=25
                 --cov-report= --cov=lib --log-level=DEBUG

  matrix:
    - PYTHON_VERSION: "3.11"
      TEST_ALL: "yes"

# We always use a 64-bit machine, but can build x86 distributions
# with the PYTHON_ARCH variable
platform:
  - x64

# all our python builds have to happen in tests_script...
build: false

cache:
  - '%LOCALAPPDATA%\pip\Cache'
  - '%USERPROFILE%\.cache\matplotlib'

init:
  - ps:
      Invoke-Webrequest
      -URI https://micro.mamba.pm/api/micromamba/win-64/latest
      -OutFile C:\projects\micromamba.tar.bz2
  - ps: C:\PROGRA~1\7-Zip\7z.exe x C:\projects\micromamba.tar.bz2 -aoa -oC:\projects\
  - ps: C:\PROGRA~1\7-Zip\7z.exe x C:\projects\micromamba.tar -ttar -aoa -oC:\projects\
  - 'set PATH=C:\projects\Library\bin;%PATH%'
  - micromamba shell init --shell cmd.exe
  - micromamba config set always_yes true
  - micromamba config prepend channels conda-forge
  - micromamba info

install:
  - micromamba env create -f environment.yml python=%PYTHON_VERSION% pywin32
  - micromamba activate mpl-dev

test_script:
  # Now build the thing..
  - set LINK=/LIBPATH:%cd%\lib
  - pip install -v --no-build-isolation --config-settings=setup-args="--vsenv" --editable .[dev]
  # this should show no freetype dll...
  - set "DUMPBIN=%VS140COMNTOOLS%\..\..\VC\bin\dumpbin.exe"
  - '"%DUMPBIN%" /DEPENDENTS lib\matplotlib\ft2font*.pyd | findstr freetype.*.dll && exit /b 1 || exit /b 0'

  # this are optional dependencies so that we don't skip so many tests...
  - if x%TEST_ALL% == xyes micromamba install -q ffmpeg inkscape
  # miktex is available on conda, but seems to fail with permission errors.
  # missing packages on conda-forge for imagemagick
  # This install sometimes failed randomly :-(
  # - choco install imagemagick

  # Test import of tkagg backend
  - python -c
    "import matplotlib as m; m.use('tkagg');
    import matplotlib.pyplot as plt;
    print(plt.get_backend())"
  # tests
  - echo The following args are passed to pytest %PYTEST_ARGS%
  - pytest %PYTEST_ARGS%

artifacts:
  - path: result_images\*
    name: result_images
    type: Zip

on_finish:
  - micromamba install codecov
  - codecov -e PYTHON_VERSION PLATFORM -n "$PYTHON_VERSION Windows"

on_failure:
  # Generate a html for visual tests
  - python tools/visualize_tests.py --no-browser
  - echo zipping images after a failure...
  - 7z a result_images.zip result_images\ | grep -v "Compressing"
  - appveyor PushArtifact result_images.zip

matrix:
  fast_finish: true
