Skip to content

Commit

Permalink
Fixed erroneous path resolution
Browse files Browse the repository at this point in the history
Fixed wrong path resolution when fusesoc.conf file is in current dir,
also improved path resolution to avoid erros when comparing paths
  • Loading branch information
ivanvig committed Jan 24, 2025
1 parent b604f53 commit 855db4c
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 2 deletions.
4 changes: 2 additions & 2 deletions fusesoc/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ def _resolve_path_from_cfg(self, path):
if os.path.isabs(expanded):
return expanded
else:
cfg_file_dir = os.path.dirname(self._path)
return os.path.join(cfg_file_dir, expanded)
cfg_file_dir = os.path.dirname(os.path.abspath(self._path))
return os.path.realpath(os.path.join(cfg_file_dir, expanded))

def _path_from_cfg(self, name):
as_str = self._cp.get(Config.default_section, name, fallback=None)
Expand Down
41 changes: 41 additions & 0 deletions tests/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,47 @@ def test_config_relative_path():
assert getattr(conf, name) == os.path.join(abs_td, name)

Check failure on line 92 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.9

test_config_relative_path AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpumj5lv5s/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpumj5lv5s/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpumj5lv5s/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpumj5lv5s/build_root ? ++++++++

Check failure on line 92 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.10

test_config_relative_path AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpsq9cudbh/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpsq9cudbh/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpsq9cudbh/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpsq9cudbh/build_root ? ++++++++

Check failure on line 92 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.11

test_config_relative_path AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpfkfbd2nt/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpfkfbd2nt/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpfkfbd2nt/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpfkfbd2nt/build_root ? ++++++++

Check failure on line 92 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.12

test_config_relative_path AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpdjdtq9k6/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpdjdtq9k6/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpdjdtq9k6/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpdjdtq9k6/build_root ? ++++++++


def test_config_relative_path_starts_with_dot():
with tempfile.TemporaryDirectory() as td:
config_path = os.path.join(td, "fusesoc.conf")
with open(config_path, "w") as tcf:
tcf.write(
EXAMPLE_CONFIG.format(
build_root="./build_root",
cache_root="./cache_root",
cores_root="./cores_root",
library_root="./library_root",
)
)

conf = Config(tcf.name)
for name in ["build_root", "cache_root", "library_root"]:
abs_td = os.path.abspath(td)
assert getattr(conf, name) == os.path.join(abs_td, name)

Check failure on line 111 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.9

test_config_relative_path_starts_with_dot AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpyon9xari/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpyon9xari/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpyon9xari/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpyon9xari/build_root ? ++++++++

Check failure on line 111 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.10

test_config_relative_path_starts_with_dot AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmp_3nlmf8d/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmp_3nlmf8d/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmp_3nlmf8d/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmp_3nlmf8d/build_root ? ++++++++

Check failure on line 111 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.11

test_config_relative_path_starts_with_dot AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmphv5wpa9l/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmphv5wpa9l/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmphv5wpa9l/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmphv5wpa9l/build_root ? ++++++++

Check failure on line 111 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.12

test_config_relative_path_starts_with_dot AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpjvzhon80/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpjvzhon80/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpjvzhon80/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpjvzhon80/build_root ? ++++++++


def test_config_relative_path_with_local_config():
prev_dir = os.getcwd()
with tempfile.TemporaryDirectory() as td:
os.chdir(td)
config_path = "fusesoc.conf"
with open(config_path, "w") as tcf:
tcf.write(
EXAMPLE_CONFIG.format(
build_root="build_root",
cache_root="cache_root",
cores_root="cores_root",
library_root="library_root",
)
)

conf = Config(tcf.name)
for name in ["build_root", "cache_root", "library_root"]:
abs_td = os.path.abspath(td)
assert getattr(conf, name) == os.path.join(abs_td, name)

Check failure on line 132 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.9

test_config_relative_path_with_local_config AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpovjf_z1w/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpovjf_z1w/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpovjf_z1w/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpovjf_z1w/build_root ? ++++++++

Check failure on line 132 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.10

test_config_relative_path_with_local_config AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpm5gokjq_/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpm5gokjq_/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpm5gokjq_/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpm5gokjq_/build_root ? ++++++++

Check failure on line 132 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.11

test_config_relative_path_with_local_config AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpkugfg6p5/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpkugfg6p5/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpkugfg6p5/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpkugfg6p5/build_root ? ++++++++

Check failure on line 132 in tests/test_config.py

View workflow job for this annotation

GitHub Actions / 🍎 macos-latest | 3.12

test_config_relative_path_with_local_config AssertionError: assert '/private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpzliywqoe/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpzliywqoe/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpzliywqoe/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpzliywqoe/build_root ? ++++++++
os.chdir(prev_dir)


def test_config_libraries():
tcf = tempfile.NamedTemporaryFile(mode="w+")
tcf.write(
Expand Down

0 comments on commit 855db4c

Please sign in to comment.