name: "ci"

on:
  - "push"

jobs:
  macos-unit-tests:
    runs-on: "macos-latest"
    strategy:
      matrix:
        python-version:
          - "2.7"

    steps:
      # Get tags not fetched by the checkout action, needed for auto-versioning.
    - name: "Finish checkout"
      run: |
        git fetch --tags

    - name: "Upgrade Pip"
      run: |
        python -m pip install -v --upgrade pip

    - name: "Install CI Dependencies"
      run: |
        python -m pip install -v wheel coverage

    - name: "Install Test Dependencies"
      run: |
        python -m pip install -v -r test-requirements.txt

    - name: "Install ZKAPAuthorizer"
      run: |
        python -m pip install -v ./

    - name: "Dump Python Environment"
      run: |
        pip freeze

    - name: "Run Tests"
      env:
        MAGIC_FOLDER_HYPOTHESIS_PROFILE: "ci"
      run: |
        python -m coverage run --debug=config -m twisted.trial _zkapauthorizer

    - name: "Convert Coverage"
      run: |
        echo "Files:"
        dir
        echo "Combining"
        coverage combine
        echo "Reporting"
        coverage report
        echo "Converting to XML"
        coverage xml

    - uses: codecov/codecov-action@v1
      with:
        file: "./coverage.xml"

  windows-unit-tests:
    runs-on: "windows-latest"
    strategy:
      matrix:
        python-version:
          - "2.7"

    steps:
    # Avoid letting Windows newlines confusing milksnake.
    - run: "git config --global core.autocrlf false"

    - uses: actions/checkout@v2
      with:
        fetch-depth: "0"

      # Get tags not fetched by the checkout action, needed for auto-versioning.
    - name: "Finish checkout"
      run: |
        git fetch --tags

    # Get MS VC++ 9 aka Visual Studio 2008, required to build Python 2.7
    # extensions (zfec via Tahoe-LAFS).
    - uses: "crazy-max/ghaction-chocolatey@v1"
      with:
        args: "install vcpython27"

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

    - name: "Upgrade Pip"
      run: |
        python -m pip install -v --upgrade pip

    - name: "Install CI Dependencies"
      run: |
        python -m pip install -v wheel coverage

    - name: "Install Test Dependencies"
      run: |
        python -m pip install -v -r test-requirements.txt

    - name: "Install ZKAPAuthorizer"
      run: |
        python -m pip install -v ./

    - name: "Dump Python Environment"
      run: |
        pip freeze

    - name: "Run Tests"
      env:
        MAGIC_FOLDER_HYPOTHESIS_PROFILE: "ci"
      run: |
        python -m coverage run --debug=config -m twisted.trial _zkapauthorizer

    - name: "Convert Coverage"
      run: |
        echo "Files:"
        dir
        echo "Combining"
        coverage combine
        echo "Reporting"
        coverage report
        echo "Converting to XML"
        coverage xml

    - uses: codecov/codecov-action@v1
      with:
        file: "./coverage.xml"