The problem here is that sim_path is not a canonical path name, so the assertion would fail if the path we're switching into contains a symbolic link. This problem affects all operating systems, it's not limited to macOS. But on macOS, the problem is especially serious, since macOS's /tmp is a link to /private/tmp by default. Thus, it causes an AssertionError in all the included Python examples.
$ python3
Python 3.11.3 (main, May 3 2023, 02:26:34) [GCC 12.2.0] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.path.realpath("/tmp")
'/private/tmp'
>>> os.chdir("/tmp")
>>> os.getcwd()
'/private/tmp'
Instead of doing assert os.getcwd() == sim_path, we should do assert os.getcwd() == os.path.realpath(sim_path) instead. I'll submit my patch in a Pull Request to fix this problem.
Currently, running openEMS's example Python scripts on macOS always fails with the following error:
This is caused by an oversight of an assertion in
openEMS.pyx
:The problem here is that
sim_path
is not a canonical path name, so the assertion would fail if the path we're switching into contains a symbolic link. This problem affects all operating systems, it's not limited to macOS. But on macOS, the problem is especially serious, since macOS's/tmp
is a link to/private/tmp
by default. Thus, it causes an AssertionError in all the included Python examples.Instead of doing
assert os.getcwd() == sim_path
, we should doassert os.getcwd() == os.path.realpath(sim_path)
instead. I'll submit my patch in a Pull Request to fix this problem.