summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarkko Kniivilä <jkniiv@gmail.com>2015-09-07 23:43:02 +0300
committerGravatar Mike Burns <mike@mike-burns.com>2015-11-01 16:54:34 +0100
commit5f592878eed79dd28f9f93418f9456185fd21ac9 (patch)
tree1e79fe49cbac3485bb0d25df3e9aca1f814d1e6e
parent39a32b9295c10176eeca3f21534caa0209cb1172 (diff)
Do not depend on readlink(1) or -q
Solaris 10 lacks readlink(1). Additionally, its different grep(1) and diff(1) do not take a `-q` flag. Use a Perl one-liner instead of readlink(1) which is missing on Solaris 10. Also because /usr/bin/grep and diff(1) don't understand the `-q` option, make them go quiet by redirecting stdout to `/dev/null` instead. The Perl dependency only exists in the test suite, so it does not incur a runtime penalty for end users. This is to work around the fact that readlink(1) is missing on Solaris. The tradeoff is: on Solaris, installing third-party software (readlink) is a pain, whereas on e.g. FreeBSD installing third-party software (Perl) is simple and common.
-rw-r--r--CONTRIBUTING.md3
-rwxr-xr-xbin/lsrc.in4
-rwxr-xr-xbin/rcup.in4
-rw-r--r--share/rcm.sh.in2
-rw-r--r--test/helper.sh17
5 files changed, 10 insertions, 20 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 59d240d..31eb49b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -57,6 +57,9 @@ The test suite uses [cram][]. It is an integration suite, meaning the
programs are exercised from the outside and assertions are made only on
their output or effects.
+The test suite requires Perl with the `Cwd` module. It expects to find Perl as
+`perl` in `$PATH`.
+
All tests can be run like so:
$ make check
diff --git a/bin/lsrc.in b/bin/lsrc.in
index 47ae889..fcf5fbe 100755
--- a/bin/lsrc.in
+++ b/bin/lsrc.in
@@ -118,7 +118,7 @@ show_file() {
output="$output:$sigil"
fi
- if echo "$DEST_STACK:" | grep -vq ":$dest_file:"; then
+ if echo "$DEST_STACK:" | grep -v ":$dest_file:" >/dev/null; then
DEST_STACK="$DEST_STACK:$dest_file"
$PRINT "$output"
else
@@ -167,7 +167,7 @@ dotfiles_dir_excludes() {
$DEBUG " with excludes: $excludes"
for exclude in $excludes; do
- if echo "$exclude" | grep -q ':'; then
+ if echo "$exclude" | grep ':' >/dev/null; then
dotfiles_dir_pat="$(echo "$exclude" | sed 's/:.*//')"
file_glob="$(echo "$exclude" | sed 's/.*://')"
diff --git a/bin/rcup.in b/bin/rcup.in
index f818258..bdae664 100755
--- a/bin/rcup.in
+++ b/bin/rcup.in
@@ -123,11 +123,11 @@ replace_file() {
}
is_nested() {
- echo "$1" | sed "s:$DEST_DIR/::" | grep -q '/'
+ echo "$1" | sed "s:$DEST_DIR/::" | grep '/' >/dev/null
}
is_identical() {
- diff -q -s "$1" "$2" > /dev/null
+ diff -c "$1" "$2" > /dev/null 2>&1
}
handle_dir() {
diff --git a/share/rcm.sh.in b/share/rcm.sh.in
index 2ce68d4..d8fc19e 100644
--- a/share/rcm.sh.in
+++ b/share/rcm.sh.in
@@ -51,7 +51,7 @@ echo_stderr() {
}
is_relative() {
- echo "$1" | grep -vq '^/'
+ echo "$1" | grep -v '^/' >/dev/null
}
version() {
diff --git a/test/helper.sh b/test/helper.sh
index d26749c..5016cf8 100644
--- a/test/helper.sh
+++ b/test/helper.sh
@@ -35,21 +35,8 @@ refute() {
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"
+ perl -e \
+ "use Cwd realpath; print realpath(\"$original_path\") . \"\\n\";"
}
assert_linked() {