- name: Is the locale we're going to test against installed?
  shell: locale -a | grep pt_BR
  register: initial_state
  ignore_errors: True

- name: Make sure the locale is not installed
  locale_gen:
    name: pt_BR
    state: absent

- name: Is the locale present?
  shell: locale -a | grep pt_BR
  register: cleaned
  ignore_errors: True

- name: Make sure the locale is not present
  assert:
    that:
      - "cleaned.rc == 1"

- name: Install the locale
  locale_gen:
    name: pt_BR
    state: present
  register: output

- name: Is the locale present?
  shell: locale -a | grep pt_BR
  register: post_check_output
  ignore_errors: True

- name: Make sure the locale is present and we say we installed it
  assert:
    that:
      - "post_check_output.rc == 0"
      - "output.changed"

- name: Install the locale a second time
  locale_gen:
    name: pt_BR
    state: present
  register: output

- name: Is the locale present?
  shell: locale -a | grep pt_BR
  register: post_check_output
  ignore_errors: True

- name: Make sure the locale is present and we reported no change
  assert:
    that:
      - "post_check_output.rc == 0"
      - "not output.changed"

- name: Remove the locale
  locale_gen:
    name: pt_BR
    state: absent
  register: output

- name: Is the locale present?
  shell: locale -a | grep pt_BR
  register: post_check_output
  ignore_errors: True

- name: Make sure the locale is absent and we reported a change
  assert:
    that:
      - "post_check_output.rc == 1"
      - "output.changed"

- name: Remove the locale a second time
  locale_gen:
    name: pt_BR
    state: absent
  register: output

- name: Is the locale present?
  shell: locale -a | grep pt_BR
  register: post_check_output
  ignore_errors: True

- name: Make sure the locale is absent and we reported no change
  assert:
    that:
      - "post_check_output.rc == 1"
      - "not output.changed"

# Cleanup
- name: Reinstall the locale we tested against if it was initially installed
  locale_gen:
    name: pt_BR
    state: present
  when: initial_state.rc == 0
