#  Copyright 2021 The casbin Authors. All Rights Reserved.

#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at

#     http://www.apache.org/licenses/LICENSE-2.0

#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

name: Python Bindings Test

on: [push, pull_request]

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        platform: [windows-latest, macos-latest, ubuntu-latest]
        python-version: ["3.8", "3.10"]

    runs-on: ${{ matrix.platform }}

    steps:
    - uses: actions/checkout@v4
      with:
        submodules: true
    - uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}
    - name: Add requirements
      run: python -m pip install --upgrade wheel setuptools

    - name: Build and install
      run: pip install --verbose .

    - name: Test
      run:  cd pycasbin/tests && python pycasbin_test_suite.py
