---
- name: create test folder(s)
  ansible.windows.win_file:
    path: '{{test_win_pester_path}}\{{item}}'
    state: directory
  with_items:
  - Modules
  - Tests

- name: download Pester module from S3 bucket
  ansible.windows.win_get_url:
    # this was downloaded straight off the Pester GitHub release page and uploaded to the S3 bucket
    # https://github.com/pester/Pester/releases 
    url: 'https://ansible-ci-files.s3.amazonaws.com/test/integration/roles/test_win_pester/Pester-4.3.1.zip'
    dest: '{{test_win_pester_path}}\Pester-4.3.1.zip'
  register: download_res
  until: download_res is successful
  retries: 3
  delay: 5

- name: unzip Pester module
  win_unzip:
    src: '{{test_win_pester_path}}\Pester-4.3.1.zip'
    dest: '{{test_win_pester_path}}\Modules'

- name: rename extracted zip to match module name
  ansible.windows.win_shell: Rename-Item -Path '{{test_win_pester_path}}\Modules\Pester-4.3.1' -NewName Pester

- name: add custom Pester location to the PSModulePath
  ansible.windows.win_path:
    name: PSModulePath
    scope: machine
    state: present
    elements:
    - '{{test_win_pester_path}}\Modules'

- name: copy test files
  ansible.windows.win_copy:
    src: files/
    dest: '{{test_win_pester_path}}\Tests'

- block:
  - name: run Pester tests
    include_tasks: test.yml
    vars:
      test_path: '{{ test_win_pester_path }}\Tests'

  always:
  - name: remove custom pester location on the PSModulePath
    ansible.windows.win_path:
      name: PSModulePath
      scope: machine
      state: absent
      elements:
      - '{{test_win_pester_path}}\Modules'

  - name: delete test folder
    ansible.windows.win_file:
      path: '{{test_win_pester_path}}'
      state: absent
