- name: Test INI lookup errors
  hosts: testhost

  tasks:
    - name: Lookup a file with duplicate keys
      debug:
        msg: "{{ lookup('ini', 'name', file='duplicate.ini', section='reggae') }}"
      ignore_errors: yes
      register: duplicate

    - name: Lookup a file with keys that differ only in case
      debug:
        msg: "{{ lookup('ini', 'name', file='duplicate_case_check.ini', section='reggae') }}"
      ignore_errors: yes
      register: duplicate_case_sensitive

    - name: Ensure duplicate key errors were handled properly
      assert:
        that:
          - duplicate is failed
          - "'Duplicate option in' in duplicate.msg"
          - duplicate_case_sensitive is failed
          - "'Duplicate option in' in duplicate_case_sensitive.msg"

    - name: Lookup a file with a missing section
      debug:
        msg: "{{ lookup('ini', 'name', file='lookup.ini', section='missing') }}"
      ignore_errors: yes
      register: missing_section

    - name: Ensure error was shown for a missing section
      assert:
        that:
          - missing_section is failed
          - "'No section' in missing_section.msg"

    - name: Mix options type and push key out of order
      debug:
        msg: "{{ lookup('ini', 'file=lookup.ini', 'value1', section='value_section') }}"
      register: bad_mojo
      ignore_errors: yes

    - name: Verify bad behavior reported an error
      assert:
        that:
        - bad_mojo is failed
        - '"No key to look up was provided as first term within string inline options" in bad_mojo.msg'

    - name: Test invalid option
      debug:
        msg: "{{ lookup('ini', 'invalid=option') }}"
      ignore_errors: yes
      register: invalid_option

    - name: Ensure invalid option failed
      assert:
        that:
          - invalid_option is failed
          - "'is not a valid option' in invalid_option.msg"
