---
parameters:
  - name: build_number
    type: string
  - name: scenario
    type: string
    default: fedora-latest
  - name: ansible_version
    type: string
    default: ""
  - name: python_version
    type: string
    default: 3.x

jobs:
- job: Test_PyTests
  displayName: Run pytests on ${{ parameters.scenario }}
  timeoutInMinutes: 120
  variables:
  - template: variables.yaml
  - template: variables_${{ parameters.scenario }}.yaml
  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '${{ parameters.python_version }}'

  - script: |
      pip install \
        "molecule[docker]>=3" \
        "ansible${{ parameters.ansible_version }}"
    displayName: Install molecule and Ansible

  - script: ansible-galaxy collection install community.docker ansible.posix
    displayName: Install Ansible collections

  - script: pip install -r requirements-tests.txt
    displayName: Install dependencies

  - script: |
      mkdir -p ~/.ansible/roles ~/.ansible/library ~/.ansible/module_utils
      cp -a roles/* ~/.ansible/roles
      cp -a plugins/modules/* ~/.ansible/library
      cp -a plugins/module_utils/* ~/.ansible/module_utils
      molecule create -s ${{ parameters.scenario }}
    displayName: Setup test container
    env:
      ANSIBLE_LIBRARY: ./molecule

  - script: |
      pytest \
        -m "not playbook" \
        --verbose \
        --color=yes \
        --junit-xml=TEST-results-pytests.xml
    displayName: Run tests
    env:
      IPA_SERVER_HOST: ${{ parameters.scenario }}
      RUN_TESTS_IN_DOCKER: true
      IPA_DISABLED_MODULES: ${{ variables.ipa_disabled_modules }}
      IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }}
      IPA_ENABLED_MODULES: ${{ variables.ipa_enabled_modules }}
      IPA_ENABLED_TESTS: ${{ variables.ipa_enabled_tests }}

  - task: PublishTestResults@2
    inputs:
      mergeTestResults: true
      testRunTitle: PlaybookTests-Build${{ parameters.build_number }}
    condition: succeededOrFailed()
