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.
This commit is contained in:
Sam Doran 2018-07-19 10:07:00 -04:00 committed by GitHub
parent 786613f426
commit 0ca61e9d87
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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,6 +1010,7 @@ class FreeBsdUser(User):
if self.home is not None: 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): 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('-m')
if info[5] != self.home:
cmd.append('-d') cmd.append('-d')
cmd.append(self.home) cmd.append(self.home)

View file

@ -37,7 +37,13 @@
user: user:
name: ansibulluser name: ansibulluser
state: present state: present
register: user_test0 register: user_test0_0
- name: create the user again
user:
name: ansibulluser
state: present
register: user_test0_1
- debug: - debug:
var: user_test0 var: user_test0
@ -54,9 +60,50 @@
- name: validate results for testcase 0 - name: validate results for testcase 0
assert: assert:
that: that:
- user_test0 is changed - user_test0_0 is changed
- user_test0_1 is not changed
- '"ansibulluser" in user_names.stdout_lines' - '"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 ## user check
@ -65,7 +112,7 @@
name: "{{ user_names.stdout_lines | random }}" name: "{{ user_names.stdout_lines | random }}"
state: present state: present
create_home: no create_home: no
with_sequence: start=1 end=5 loop: "{{ range(1, 5+1) | list }}"
register: user_test1 register: user_test1
- debug: - debug:

View file

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