### Summary

The test_real_path_dev_null test fails on OpenIndiana (a Solaris clone) because on illumos (and Solaris) `/dev/null` is a symlink:
```
$ ls -l /dev/null
lrwxrwxrwx 1 root root 27 Mar 31  2015 /dev/null -> ../devices/pseudo/mm@0:null
$
```

### Issue Type

Bug Report

### Component Name

test_vault_editor.py

### Ansible Version

```console
$ ansible --version
ansible [core 2.14.4]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/marcel/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.9/vendor-packages/ansible
  ansible collection location = /home/marcel/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.16 (main, Feb 19 2023, 15:42:40) [GCC 10.4.0] (/usr/bin/python3.9)
  jinja version = 3.0.3
  libyaml = True
$
```


### Configuration

```console
NA.  Tests are run directly in the source directory after the source tarball is unpacked.
```


### OS / Environment

OpenIndiana

### Steps to Reproduce

```
$ bin/ansible-test units --python 3.9 --python-interpreter /usr/bin/python3.9 --local --color no --verbose
```


### Expected Results

The `test_real_path_dev_null` test either pass or is skipped.

### Actual Results

```console
___________________ TestVaultEditor.test_real_path_dev_null ____________________
[gw0] sunos5 -- Python 3.9.16 /usr/bin/python3.9
self = <units.parsing.vault.test_vault_editor.TestVaultEditor testMethod=test_real_path_dev_null>

    def test_real_path_dev_null(self):
        filename = '/dev/null'
        ve = self._vault_editor()

        res = ve._real_path(filename)
>       self.assertEqual(res, '/dev/null')

test/units/parsing/vault/test_vault_editor.py:509:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.9/vendor-packages/teamcity/diff_tools.py:33: in _patched_equals
    old(self, first, second, msg)
E   AssertionError: '/devices/pseudo/mm@0:null' != '/dev/null'
E   - /devices/pseudo/mm@0:null
E   + /dev/null
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
#
#
#
#
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import os
import tempfile
from io import BytesIO, StringIO
import pytest
from units.compat import unittest
from unittest.mock import patch
from ansible import errors
from ansible.parsing import vault
from ansible.parsing.vault import VaultLib, VaultEditor, match_encrypt_secret
from ansible.module_utils.six import PY3
from ansible.module_utils.common.text.converters import to_bytes, to_text
from units.mock.vault_helper import TextVaultSecret
v11_data = """$ANSIBLE_VAULT;1.1;AES256
62303130653266653331306264616235333735323636616539316433666463323964623162386137
3961616263373033353631316333623566303532663065310a393036623466376263393961326530
64336561613965383835646464623865663966323464653236343638373165343863623638316664
3631633031323837340a396530313963373030343933616133393566366137363761373930663833
3739"""
@pytest.mark.skipif(not vault.HAS_CRYPTOGRAPHY,
                    reason="Skipping cryptography tests because cryptography is not installed")
class TestVaultEditor(unittest.TestCase):