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 authored and olofk committed Feb 13, 2025
1 parent 03d1943 commit 4a799ad
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.normpath(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)


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)


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.12

test_config_relative_path_with_local_config AssertionError: assert '/private/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp6lu7pje8/build_root' == '/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp6lu7pje8/build_root' - /var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp6lu7pje8/build_root + /private/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp6lu7pje8/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/tmpm0o_n1gm/build_root' == '/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpm0o_n1gm/build_root' - /var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpm0o_n1gm/build_root + /private/var/folders/2s/h6hvv9ps03xgz_krkkstvq_r0000gn/T/tmpm0o_n1gm/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/_n/gzrw0jcd3lz912_xvb8y94zm0000gn/T/tmpamq9cyvc/build_root' == '/var/folders/_n/gzrw0jcd3lz912_xvb8y94zm0000gn/T/tmpamq9cyvc/build_root' - /var/folders/_n/gzrw0jcd3lz912_xvb8y94zm0000gn/T/tmpamq9cyvc/build_root + /private/var/folders/_n/gzrw0jcd3lz912_xvb8y94zm0000gn/T/tmpamq9cyvc/build_root ? ++++++++

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/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpuv_29und/build_root' == '/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpuv_29und/build_root' - /var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpuv_29und/build_root + /private/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpuv_29und/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/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp3jkjp052/build_root' == '/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp3jkjp052/build_root' - /var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp3jkjp052/build_root + /private/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp3jkjp052/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/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp6axkolpb/build_root' == '/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp6axkolpb/build_root' - /var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp6axkolpb/build_root + /private/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmp6axkolpb/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/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpjxwejty3/build_root' == '/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpjxwejty3/build_root' - /var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpjxwejty3/build_root + /private/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpjxwejty3/build_root ? ++++++++

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/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpkb67rctk/build_root' == '/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpkb67rctk/build_root' - /var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpkb67rctk/build_root + /private/var/folders/s3/vj2zzxnd01l53jcjc04ljvz80000gn/T/tmpkb67rctk/build_root ? ++++++++
os.chdir(prev_dir)


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

0 comments on commit 4a799ad

Please sign in to comment.