# Verify with_items that modifies the execution environment still executes in
# the correct context.

- name: integration/playbook_semantics/with_items.yml
  hosts: test-targets
  gather_facts: true
  tasks:
    - block:
        - name: Spin up a few interpreters
          become: true
          vars:
            ansible_become_user: "mitogen__user{{ item }}"
          command:
            cmd: whoami
          with_sequence: start=1 end=3
          register: first_run
          changed_when: false

        - name: Reuse them
          become: true
          vars:
            ansible_become_user: "mitogen__user{{ item }}"
          command:
            cmd: whoami
          with_sequence: start=1 end=3
          register: second_run
          changed_when: false

        - name: Verify first and second run matches expected username.
          vars:
            user_expected: "mitogen__user{{ item | int + 1 }}"
          assert:
            that:
              - first_run.results[item | int].stdout == user_expected
              - second_run.results[item | int].stdout == user_expected
          with_sequence: start=0 end=2
      when:
        - become_unpriv_available
