From 521583452eedb1faea9269768124cb2bb04fb840 Mon Sep 17 00:00:00 2001 From: David Martin Date: Fri, 31 Jan 2020 11:07:52 +0100 Subject: [PATCH] fix issue #159 Signed-off-by: David Martin --- CHANGELOG.md | 3 +++ chaoslib/provider/process.py | 6 +++--- tests/test_probe.py | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a454fad..02674a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,12 +38,15 @@ - Optional default value for environment variable in configuration - Warn the user for an action process returning a non-zero exit code - Support for process path relative to homedir ~ +- Indicate path in validation when path is not found nor executable [#159][159] ### Changed - Changed the method's one-step minimum requirement. An experiment with an empty method (without any activities) is now valid. +[159]: https://github.com/chaostoolkit/chaostoolkit-lib/issues/159 + ## [1.7.1][] - 2019-09-27 [1.7.1]: https://github.com/chaostoolkit/chaostoolkit-lib/compare/1.7.0...1.7.1 diff --git a/chaoslib/provider/process.py b/chaoslib/provider/process.py index acc3a7c..948bf7c 100644 --- a/chaoslib/provider/process.py +++ b/chaoslib/provider/process.py @@ -94,7 +94,7 @@ def validate_process_activity(activity: Activity): name = activity["name"] provider = activity["provider"] - path = provider.get("path") + path = raw_path = provider.get("path") if not path: raise InvalidActivity("a process activity must have a path") @@ -102,9 +102,9 @@ def validate_process_activity(activity: Activity): if not path: raise InvalidActivity( "path '{path}' cannot be found, in activity '{name}'".format( - path=path, name=name)) + path=raw_path, name=name)) if not os.access(path, os.X_OK): raise InvalidActivity( "no access permission to '{path}', in activity '{name}'".format( - path=path, name=name)) + path=raw_path, name=name)) diff --git a/tests/test_probe.py b/tests/test_probe.py index a60bff9..161d7e1 100644 --- a/tests/test_probe.py +++ b/tests/test_probe.py @@ -78,7 +78,7 @@ def test_process_probe_have_a_path(): def test_process_probe_path_must_exist(): with pytest.raises(InvalidActivity) as exc: ensure_activity_is_valid(probes.ProcessPathDoesNotExistProbe) - assert "path 'None' cannot be found, in activity" in str(exc.value) + assert "path 'somewhere/not/here' cannot be found, in activity" in str(exc.value) def test_http_probe_must_have_a_url():