From f29b24cf13ca5f141b8386614b353d75fedd71b9 Mon Sep 17 00:00:00 2001 From: Melissa Xie Date: Fri, 14 Nov 2014 14:46:29 -0500 Subject: Manually resolve symlinks in test helpers Mac OS X's `readlink` command does not support the same options as GNU, FreeBSD, and other operating systems, nor does it support canonicalizing symlink resolutions. In place of `readlink`, we're going to borrow [this] suggested implementation from the community. [this]: http://stackoverflow.com/questions/1055671/how-can-i-get-the-behavior-of-gnus-readlink-f-on-a-mac --- test/helper.sh | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/helper.sh b/test/helper.sh index 539e270..86ff989 100644 --- a/test/helper.sh +++ b/test/helper.sh @@ -25,9 +25,28 @@ refute() { return 0 } +resolved_path() { + local original_path="$1" + local actual_path="$original_path" + local actual_basename="$(basename "$original_path")" + + cd "$(dirname "$original_path")" + + while [ -L "$actual_basename" ]; do + actual_path="$(readlink "$actual_basename")" + actual_basename="$(basename "$actual_path")" + + cd "$(dirname "$actual_path")" + done + + local current_directory="$(pwd -P)" + + printf "%s/%s\n" "$current_directory" "$actual_basename" +} + assert_linked() { local from="$1" to="$2" - local resolved="$(readlink -f "$from")" + local resolved="$(resolved_path "$from")" assert "$from should be a symlink" -h "$from" assert "$from should resolve to $to, resolved to $resolved" "$resolved" = "$to" -- cgit v1.2.3