### Summary

In check mode, when I use ansible builtin module **ansible.builtin.copy** to copy a remote file or directory to a destination which ends with a `/`, it creates destination directory on remote host despite check mode is enabled.

### Issue Type

Bug Report

### Component Name

ansible.builtin.copy

### Ansible Version

```console
$ ansible --version
ansible 2.10.8
  config file = /home/user/.ansible.cfg
  configured module search path = ['/home/user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
DEFAULT_BECOME_METHOD(/home/user/.ansible.cfg) = sudo
DEFAULT_ROLES_PATH(/home/user/.ansible.cfg) = ['/home/user/data/git/ansible/roles']
DEFAULT_SCP_IF_SSH(/home/user/.ansible.cfg) = True
```


### OS / Environment

Ansible controller OS is Debian bullseye.

### Steps to Reproduce

On ansible controller :
1. Create directory **/tmp/ansible-test**
   `$ mkdir /tmp/ansible-test`
2. Create empty file **/tmp/ansible-test/empty.txt**
   `$ touch /tmp/ansible-test/empty.txt`
3. Create playbook **/tmp/ansible-test/playbook.yml** with the following content
   ```yaml
   ---
   - hosts: localhost
     tasks:
       - name: copy file empty.txt into /tmp/ansible-test/not-existing-subdir/
         ansible.builtin.copy:
           remote_src: yes
           src: /tmp/ansible-test/empty.txt
           dest: /tmp/ansible-test/not-existing-subdir/
   ```
4. Run playbook
   `$ ansible-playbook --check /tmp/ansible-test/playbook.yml`

### Expected Results

Directory **/tmp/ansible-test/not-existing-subdir/** is not created after having run playbook (cf. step 3 in section **Steps to Reproduce**) in check mode

### Actual Results

```console
# Directory **/tmp/ansible-test/not-existing-subdir/** has been created by running playbook (cf. step 3 in section **Steps to Reproduce**) in check mode (cf. execution output below)


user@debian:/tmp/ansible-test$ ls -Al
total 4
-rw-r--r-- 1 user user   0 22 août  14:29 empty.txt
-rw-r--r-- 1 user user 239 22 août  15:16 playbook.yml
user@debian:/tmp/ansible-test$ ansible-playbook --check --diff /tmp/ansible-test/playbook.yml 
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'

PLAY [localhost] **************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [localhost]

TASK [copy file empty.txt into /tmp/ansible-test/not-existing-subdir/] ********************************************************************************************************************************************
changed: [localhost]

PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

user@debian:/tmp/ansible-test$ ls -Al
total 8
-rw-r--r-- 1 user user    0 22 août  14:29 empty.txt
drwxr-xr-x 2 user user 4096 22 août  15:19 not-existing-subdir
-rw-r--r-- 1 user user  239 22 août  15:16 playbook.yml
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
import errno
import filecmp
import grp
import os
import os.path
import platform
import pwd
import shutil
import stat
import tempfile
import traceback
from ansible.module_utils._text import to_bytes, to_native
from ansible.module_utils.basic import AnsibleModule
from ansible.module_utils.common.process import get_bin_path
from ansible.module_utils.common.locale import get_best_parsable_locale
from ansible.module_utils.six import PY3
module = None
class AnsibleModuleError(Exception):
    def __init__(self, results):
        self.results = results
def clear_facls(path):
    setfacl = get_bin_path('setfacl')
    
    acl_command = [setfacl, '-b', path]
    b_acl_command = [to_bytes(x) for x in acl_command]
    locale = get_best_parsable_locale(module)
    rc, out, err = module.run_command(b_acl_command, environ_update=dict(LANG=locale, LC_ALL=locale, LC_MESSAGES=locale))
    if rc != 0:
        raise RuntimeError('Error running "{0}": stdout: "{1}"; stderr: "{2}"'.format(' '.join(b_acl_command), out, err))
def split_pre_existing_dir(dirname):