# Verify the behaviour of _low_level_execute_command().

- name: integration/action/low_level_execute_command.yml
  hosts: test-targets
  tasks:

    # "echo -en" to test we actually hit bash shell too.
    - name: Run raw module without sudo
      raw: 'echo -en $((1 + 1))'
      register: raw

    - name: Verify raw module output.
      assert:
        that:
          - 'raw.rc == 0'
          - 'raw.stdout_lines[-1]|to_text == "2"'
          - 'raw.stdout[-1]|to_text == "2"'
        fail_msg: |
          raw={{ raw }}

    - name: Run raw module with sudo
      become: true
      raw: 'whoami'
      register: raw

    - debug: msg="x{{raw}}x"

    # Can't test stdout because TTY inserts \r in Ansible version.
    - name: Verify raw module output.
      assert:
        that:
        - raw.rc == 0
        # WHY DOES VANILLA INSERT NEWLINES HERE!?!?!?!?!?!ONE
        #- raw.stdout in ("\r\nroot\r\n", "root\r\n")
        - '(raw.stdout|to_text).endswith("root\r\n")'
        - |
          raw.stdout_lines|to_text in (
            ["\r\n"],
            ["", "root"],
            ["root\r\n"],
            ["root"],
          )
        fail_msg: |
          raw={{ raw }}
  tags:
    - low_level_execute_command
