summaryrefslogtreecommitdiff
path: root/.github/workflows/test.yml
blob: 02ae8119a373c79ca25ffa394fa4b10ec37fb0a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
name: Test

on:
  push:
    branches:
    - main
    - v*-branch
  pull_request:
    branches:
    - main
    - v*-branch
  workflow_call:

concurrency:
  group: test-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    name: Test (Python ${{ matrix.target.python }}, ${{ matrix.target.os }})
    runs-on: ${{ matrix.target.builder }}

    defaults:
      run:
        shell: bash

    strategy:
      fail-fast: false
      matrix:
        # NOTE: Testing of the Windows targets are currently disabled because
        #       the test script is simply not ready for it.
        target:
        # Python 3.6
        - python: '3.6'
          os: Linux
          builder: ubuntu-20.04
        - python: '3.6'
          os: macOS
          builder: macos-13
        # - python: '3.6'
        #   os: Windows
        #   builder: windows-2019
        # Python 3.7
        - python: '3.7'
          os: Linux
          builder: ubuntu-20.04
        - python: '3.7'
          os: macOS
          builder: macos-13
        # - python: '3.7'
        #   os: Windows
        #   builder: windows-2019
        # Python 3.8
        - python: '3.8'
          os: Linux
          builder: ubuntu-20.04
        - python: '3.8'
          os: macOS
          builder: macos-13
        # - python: '3.8'
        #   os: Windows
        #   builder: windows-2019
        # Python 3.9
        - python: '3.9'
          os: Linux
          builder: ubuntu-20.04
        - python: '3.9'
          os: macOS
          builder: macos-13
        # - python: '3.9'
        #   os: Windows
        #   builder: windows-2019
        # Python 3.10
        - python: '3.10'
          os: Linux
          builder: ubuntu-22.04
        - python: '3.10'
          os: macOS
          builder: macos-14
        # - python: '3.10'
        #   os: Windows
        #   builder: windows-2022
        # Python 3.11
        - python: '3.11'
          os: Linux
          builder: ubuntu-22.04
        - python: '3.11'
          os: macOS
          builder: macos-14
        # - python: '3.11'
        #   os: Windows
        #   builder: windows-2022
        # Python 3.12
        - python: '3.12'
          os: Linux
          builder: ubuntu-22.04
        - python: '3.12'
          os: macOS
          builder: macos-14
        # - python: '3.12'
        #   os: Windows
        #   builder: windows-2022

    steps:
    - name: Set up environment
      run: |
        if [ "${{ runner.os }}" == "Windows" ]; then
          # Disable file name validation on Windows because Linux source tree
          # contains potentially problematic file names.
          git config --global core.protectNTFS false
        fi

    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.target.python }}

    - name: Check Python version
      run: |
        set -x
        python --version
        pip --version
        python -c "import platform; print(platform.architecture())"

    - name: Install Python dependencies
      run: |
        pip install --user setuptools wheel

    - name: Check out Linux source code
      uses: actions/checkout@v4
      # On Windows, checkout of 'aux.c' is expected to fail because ... Windows.
      continue-on-error: true
      with:
        repository: torvalds/linux
        ref: v5.4

    - name: Check out Kconfiglib source code
      uses: actions/checkout@v4
      with:
        path: Kconfiglib

    - name: Apply Linux Kconfig Makefile patch
      run: |
        git apply Kconfiglib/makefile.patch

    - name: Run testsuite
      run: |
        Kconfiglib/tests/reltest python