##### SUMMARY
In check mode, when using the file module to create a directory, if the directory already exists but the requested owner or group do not, the module will fail. I encountered this when running a playbook in check mode that creates a new user and changes the ownership of an existing directory.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
file

##### ANSIBLE VERSION
```
ansible 2.9.3
  config file = /home/nepeta/wip/lockss-playbook/ansible.cfg
  configured module search path = ['/home/nepeta/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.7/site-packages/ansible
  executable location = /bin/ansible
  python version = 3.7.6 (default, Jan 30 2020, 09:44:41) [GCC 9.2.1 20190827 (Red Hat 9.2.1-1)]
```

##### CONFIGURATION
```
```

##### OS / ENVIRONMENT
Fedora 31 host

##### STEPS TO REPRODUCE
Run the following playbook in check mode (`ansible-playbook demo.playbook.yml -C`):

```yaml
# demo.playbook.yml---

- hosts: localhost
  tasks:
    - name: Create user.
      user:
        name: notauser
        state: present

    - name: Task succeeds in check mode.
      file:
        path: /notadirectory
        state: directory
        owner: notauser

    - name: Task fails in check mode.
      file:
        path: /usr
        state: directory
        owner: notauser
```

##### EXPECTED RESULTS
I expect the module to skip the lookup of the user or group if it doesn't exist and to report the task as changed.

##### ACTUAL RESULTS
```
TASK [Create user.] ***********************************************************************************************************************
changed: [localhost]

TASK [Task succeeds in check mode.] *******************************************************************************************************
changed: [localhost]

TASK [Task fails in check mode.] **********************************************************************************************************
fatal: [localhost]: FAILED! => changed=false 
  gid: 0
  group: root
  mode: '0755'
  msg: 'chown failed: failed to look up user notauser'
  owner: root
  path: /usr
  secontext: system_u:object_r:usr_t:s0
  size: 4096
  state: directory
  uid: 0
```
not exist as the state did not change.
    - If C(directory), all intermediate subdirectories will be created if they
      do not exist. Since Ansible 1.7 they will be created with the supplied permissions.
    - If C(file), without any other options this works mostly as a 'stat' and will return the current state of C(path).
      Even with other options (i.e C(mode)), the file will be modified but will NOT be created if it does not exist;
      see the C(touch) value or the M(ansible.builtin.copy) or M(ansible.builtin.template) module if you want that behavior.
    - If C(hard), the hard link will be created or changed.
    - If C(link), the symbolic link will be created or changed.
    - If C(touch) (new in 1.4), an empty file will be created if the C(path) does not
      exist, while an existing file or directory will receive updated file access and
      modification times (similar to the way C(touch) works from the command line).
    type: str
    default: file
    choices: [ absent, directory, file, hard, link, touch ]
  src:
    description:
    - Path of the file to link to.
    - This applies only to C(state=link) and C(state=hard).
    - For C(state=link), this will also accept a non-existing path.
    - Relative paths are relative to the file being created (C(path)) which is how
      the Unix command C(ln -s SRC DEST) treats relative paths.
    type: path
  recurse:
    description:
    - Recursively set the specified file attributes on directory contents.
    - This applies only when C(state) is set to C(directory).
    type: bool
    default: no
    version_added: '1.1'
  force: