Merge pull request #4554 from mwichmann/move-env-checker
[scons.git] / .appveyor.yml
blob07b6fe1826480b79e0640b23edbb42907d085b5c
1 #version: '3.0.1.{build}'
3 # When planning updates here, check availability at:
4 # https://www.appveyor.com/docs/windows-images-software/
5 # This is slow, try to keep the number of builds as low as makes sense.
7 image:
8   # linux builds done in Travis CI for now
9   - Visual Studio 2017
10   - Visual Studio 2019
11   - Visual Studio 2022
13 cache:
14   - downloads -> appveyor.yml
15   - '%LOCALAPPDATA%\pip\Cache'
16   - C:\ProgramData\chocolatey\bin -> appveyor.yml
17   - C:\ProgramData\chocolatey\lib -> appveyor.yml
19 install:
20   # direct choco install supposed to work, but not? still doing in install.bat
21   #- cinst: dmd ldc swig vswhere ixsltproc winflexbison3
22   - cmd: .\.appveyor\install.bat
23   - cmd: if %COVERAGE% equ 1 .\.appveyor\install-cov.bat
25 # Build matrix will be number of images multiplied by #entries in matrix:,
26 # less any excludes.
28 # "Build" is kind of a misnomer - we are actually running the test suite,
29 # and this is slow on Windows, so keep the matrix as small as possible.
30 # Leaving the Coverage build on VS2017 for build-time reasons (1hr time limit).
31 # maybe move coverage to github in future to restore some flexibility?
32 environment:
33   # set COVERAGE to 1 for any builder that should run it
34   COVERAGE: 0
35   SCONS_CACHE_MSVC_CONFIG: "true"
36   matrix:
37     # Test oldest and newest supported Pythons, and a subset in between.
38     # Skipping 3.7 and 3.9 at this time
39     - WINPYTHON: "Python312"
41     - WINPYTHON: "Python310"
43     - WINPYTHON: "Python38"
45     - WINPYTHON: "Python36"
47 # remove sets of build jobs based on criteria below
48 # to fine tune the number and platforms tested
49 matrix:
50   exclude:
51     # test python 3.6 on Visual Studio 2017 image
52     - image: Visual Studio 2017
53       WINPYTHON: "Python312"
54     - image: Visual Studio 2017
55       WINPYTHON: "Python310"
56     - image: Visual Studio 2017
57       WINPYTHON: "Python38"
59     # test python 3.8 on Visual Studio 2019 image
60     - image: Visual Studio 2019
61       WINPYTHON: "Python312"
62     - image: Visual Studio 2019
63       WINPYTHON: "Python310"
64     - image: Visual Studio 2019
65       WINPYTHON: "Python36"
67     # test python 3.10 and 3.11 on Visual Studio 2022 image
68     - image: Visual Studio 2022
69       WINPYTHON: "Python36"
70     - image: Visual Studio 2022
71       WINPYTHON: "Python38"
73 # Remove some binaries we don't want to be found
74 # Note this is no longer needed, git-windows bin/ is quite minimal now.
75 before_build:
76     - ps: .\.appveyor\ignore_git_bins.ps1
78 build: off
80 build_script:
81   # Image version-based excludes:
82   # No excludes at the moment, but the exclude script generates the
83   # (possibly empty) exclude_list.txt which is used in the following step,
84   # so leave the scheme in place in case we need to put back excludes later.
85   - ps: .\.appveyor\exclude_tests.ps1
87   # setup coverage by creating the coverage config file, and adding coverage
88   # to the sitecustomize so that all python processes start with coverage
89   - ps: if ($env:COVERAGE -eq 1) { .\.appveyor\coverage_setup.ps1 }
91   # NOTE: running powershell from cmd is intended because
92   # it formats the output correctly
93   - cmd: powershell -Command "& { if($env:COVERAGE -eq 1) { coverage run -p --rcfile=$($env:COVERAGE_PROCESS_START) runtest.py -j 2 -t --exclude-list exclude_list.txt -a } else { C:\\%WINPYTHON%\\python.exe runtest.py -j 2 -t --exclude-list exclude_list.txt -a }; if($LastExitCode -eq 2 -Or $LastExitCode -eq 0) { $host.SetShouldExit(0 )} else {$host.SetShouldExit(1)}}"
95 # run coverage even if there was a test failure
96 on_finish:
97   - ps: if ($env:COVERAGE -eq 1) { .\.appveyor\coverage_report.ps1 }
98   # running codecov in powershell causes an error so running in cmd
99   - cmd: if %COVERAGE% equ 1 codecov -X gcov --file coverage_xml.xml