[PR #6774/3fd4cdb1 backport][stable-6] locale_gen: works with C.UTF-8 (#6817)

locale_gen: works with C.UTF-8 (#6774)

* locale_gen: fix

* test working with C.UTF-8

* working with locale eo

* handle C.UTF-8 edge cases

* grammatic pedantism

* add changelog frag

* add doc about specific OS support

* update changelog frag

(cherry picked from commit 3fd4cdb119)

Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
This commit is contained in:
patchback[bot] 2023-06-30 13:13:13 +02:00 committed by GitHub
commit 540c92fa62
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 137 additions and 119 deletions

View file

@ -6,3 +6,5 @@ azp/posix/3
destructive
needs/root
skip/aix
skip/freebsd
skip/macos

View file

@ -0,0 +1,102 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- name: Is the locale we're going to test against installed? {{ locale_basic.localegen }}
command: locale -a
register: initial_state
ignore_errors: true
- name: Make sure the locale is not installed {{ locale_basic.localegen }}
locale_gen:
name: "{{ locale_basic.localegen }}"
state: absent
- name: Is the locale present? {{ locale_basic.localegen }}
command: locale -a
register: cleaned
ignore_errors: true
- name: Make sure the locale is not present {{ locale_basic.localegen }}
assert:
that:
- locale_basic.skip_removal or locale_basic.locales | intersect(cleaned.stdout_lines) == []
- name: Install the locale {{ locale_basic.localegen }}
locale_gen:
name: "{{ locale_basic.localegen }}"
state: present
register: output_present
- name: Is the locale present? {{ locale_basic.localegen }}
command: locale -a
register: post_check_output_present
ignore_errors: true
- name: Make sure the locale is present and we say we installed it {{ locale_basic.localegen }}
assert:
that:
- locale_basic.locales | intersect(post_check_output_present.stdout_lines) != []
- locale_basic.skip_removal or output_present is changed
- name: Install the locale a second time {{ locale_basic.localegen }}
locale_gen:
name: "{{ locale_basic.localegen }}"
state: present
register: output_present_idempotent
- name: Is the locale present? {{ locale_basic.localegen }}
command: locale -a
register: post_check_output_present_idempotent
ignore_errors: true
- name: Make sure the locale is present and we reported no change {{ locale_basic.localegen }}
assert:
that:
- locale_basic.locales | intersect(post_check_output_present_idempotent.stdout_lines) != []
- output_present_idempotent is not changed
- name: Removals
when: locale_basic.skip_removal is false
block:
- name: Remove the locale {{ locale_basic.localegen }}
locale_gen:
name: "{{ locale_basic.localegen }}"
state: absent
register: output_absent
- name: Is the locale present? {{ locale_basic.localegen }}
command: locale -a
register: post_check_output_absent
ignore_errors: true
- name: Make sure the locale is absent and we reported a change {{ locale_basic.localegen }}
assert:
that:
- locale_basic.locales | intersect(post_check_output_absent.stdout_lines) == []
- output_absent is changed
- name: Remove the locale a second time {{ locale_basic.localegen }}
locale_gen:
name: "{{ locale_basic.localegen }}"
state: absent
register: output_absent_idempotent
- name: Is the locale present? {{ locale_basic.localegen }}
command: locale -a
register: post_check_output_absent_idempotent
ignore_errors: true
- name: Make sure the locale is absent and we reported no change {{ locale_basic.localegen }}
assert:
that:
- locale_basic.locales | intersect(post_check_output_absent_idempotent.stdout_lines) == []
- output_absent_idempotent is not changed
# Cleanup
- name: Reinstall the locale we tested against if it was initially installed {{ locale_basic.localegen }}
locale_gen:
name: "{{ locale_basic.localegen }}"
state: present
when: locale_basic.locales | intersect(initial_state.stdout_lines) != []

View file

@ -1,99 +0,0 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- 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

View file

@ -8,5 +8,11 @@
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
- include_tasks: 'locale_gen.yml'
when: ansible_distribution in ('Ubuntu', 'Debian')
- name: Bail out if not supported
ansible.builtin.meta: end_play
when: ansible_distribution not in ('Ubuntu', 'Debian')
- include_tasks: basic.yml
loop: "{{ locale_list_basic }}"
loop_control:
loop_var: locale_basic

View file

@ -0,0 +1,17 @@
---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later
# locale_basic: pt_BR
locale_list_basic:
- localegen: pt_BR
locales: [pt_BR]
skip_removal: false
- localegen: C.UTF-8
locales: [C.utf8, C.UTF-8]
skip_removal: true
- localegen: eo
locales: [eo]
skip_removal: false