Only report change when home directory is different on FreeBSD (#42865)

* Only report change when home directory is different

Add tests with home: parameter

Have to skip macOS for now since there is a bug when specifying the home directory path for an existing user that results in a module failure. That needs to be fixed in a separate PR.

(cherry picked from commit 0ca61e9d87)
This commit is contained in:
Sam Doran 2018-07-19 10:07:00 -04:00 committed by Matt Clay
parent e288c23a18
commit 2267ba2f05
4 changed files with 60 additions and 5 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- user - fix bug that resulted in module always reporting a change when specifiying the home directory on FreeBSD (https://github.com/ansible/ansible/issues/42484)

View file

@ -1010,8 +1010,9 @@ class FreeBsdUser(User):
if self.home is not None:
if (info[5] != self.home and self.move_home) or (not os.path.exists(self.home) and self.create_home):
cmd.append('-m')
cmd.append('-d')
cmd.append(self.home)
if info[5] != self.home:
cmd.append('-d')
cmd.append(self.home)
if self.skeleton is not None:
cmd.append('-k')

View file

@ -37,7 +37,13 @@
user:
name: ansibulluser
state: present
register: user_test0
register: user_test0_0
- name: create the user again
user:
name: ansibulluser
state: present
register: user_test0_1
- debug:
var: user_test0
@ -54,9 +60,50 @@
- name: validate results for testcase 0
assert:
that:
- user_test0 is changed
- user_test0_0 is changed
- user_test0_1 is not changed
- '"ansibulluser" in user_names.stdout_lines'
# https://github.com/ansible/ansible/issues/42484
# Skipping macOS for now since there is a bug when changing home directory
- block:
- name: create user specifying home
user:
name: ansibulluser
state: present
home: "{{ user_home_prefix[ansible_system] }}/ansibulluser"
register: user_test3_0
- name: create user again specifying home
user:
name: ansibulluser
state: present
home: "{{ user_home_prefix[ansible_system] }}/ansibulluser"
register: user_test3_1
- name: change user home
user:
name: ansibulluser
state: present
home: "{{ user_home_prefix[ansible_system] }}/ansibulluser-mod"
register: user_test3_2
- name: change user home back
user:
name: ansibulluser
state: present
home: "{{ user_home_prefix[ansible_system] }}/ansibulluser"
register: user_test3_3
- name: validate results for testcase 3
assert:
that:
- user_test3_0 is not changed
- user_test3_1 is not changed
- user_test3_2 is changed
- user_test3_3 is changed
when: ansible_system != 'Darwin'
## user check
@ -65,7 +112,7 @@
name: "{{ user_names.stdout_lines | random }}"
state: present
create_home: no
with_sequence: start=1 end=5
loop: "{{ range(1, 5+1) | list }}"
register: user_test1
- debug:

View file

@ -0,0 +1,5 @@
user_home_prefix:
Linux: '/home'
FreeBSD: '/home'
SunOS: '/home'
Darwin: '/Users'