summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alvarez <pedro.alvarez@codethink.co.uk>2014-02-20 15:48:01 +0000
committerPedro Alvarez <pedro.alvarez@codethink.co.uk>2014-02-20 15:48:01 +0000
commitbcfb17b890e74538655695c4f76962b16565f664 (patch)
tree0d89f7495dd2704d28d9d090f261c352a2675e02
parent20e5304f40148d43c6ab57dea0abe400475e7e9f (diff)
parentd71ff3eaa4a55b32659e165efe4b78149ef240cb (diff)
downloadtbdiff-bcfb17b890e74538655695c4f76962b16565f664.tar.gz
Merge branch 'baserock/pedroalvarez/bscs-upgrade-tests3'
Reviewed-by: Richard Maw Reviewed-by: Sam Thursfield
-rwxr-xr-xbaserock-system-config-sync/baserock-system-config-sync8
-rw-r--r--tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file7.orig2
-rwxr-xr-xtests/run_tests.sh32
3 files changed, 38 insertions, 4 deletions
diff --git a/baserock-system-config-sync/baserock-system-config-sync b/baserock-system-config-sync/baserock-system-config-sync
index cb5984d..a093b15 100755
--- a/baserock-system-config-sync/baserock-system-config-sync
+++ b/baserock-system-config-sync/baserock-system-config-sync
@@ -151,13 +151,17 @@ merge_regular_file() {
cp -a "$vu" "$vt"
;;
'none exists exists')
- if ! (diff -u "$v2" --label="$v2" "$vu" --label="$vu" | patch "$v2" -t -o "$vt"); then
+ cp -a "$v2" "$vt"
+ if ! (diff -u "$v2" --label="$v2" "$vu" --label="$vu" | patch "$vt" -t); then
cp -a "$v2" "$vt" # merge failed, use v2
+ # 'patch' creates a file '.rej' with the diff that did not apply
fi
;;
'exists exists exists')
- if ! (diff -u "$v1" --label="$v1" "$vu" --label="$vu" | patch "$v2" -t -o "$vt"); then
+ cp -a "$v2" "$vt"
+ if ! (diff -u "$v1" --label="$v1" "$vu" --label="$vu" | patch "$vt" -t); then
cp -a "$v2" "$vt" # merge failed, use v2
+ # 'patch' creates a file '.rej' with the diff that did not apply
fi
;;
*)
diff --git a/tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file7.orig b/tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file7.orig
new file mode 100644
index 0000000..93c46eb
--- /dev/null
+++ b/tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file7.orig
@@ -0,0 +1,2 @@
+whereami=v1,vu,v2
+version=v2
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index ea92924..36dff01 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -12,6 +12,34 @@ then
exit 1
fi
+compare_dirs() {
+
+ # Temporary files used to compare the file permissions
+ file1=$(mktemp)
+ file2=$(mktemp)
+
+ set +e
+ (
+ set -e
+ # Getting the file permissions
+ (cd "$1" && busybox find * -exec busybox stat -c '%n %a' {} + | sort) > "$file1"
+ (cd "$2" && busybox find * -exec busybox stat -c '%n %a' {} + | sort) > "$file2"
+
+ # Compare file contents
+ diff -r "$1" "$2"
+
+ # Compare permissions
+ diff "$file1" "$file2"
+ )
+ local ret="$?"
+
+ # Clean temporary files
+ rm "$file1"
+ rm "$file2"
+
+ return $ret
+}
+
echo "Starting baserock-system-config-sync tests"
merge_pass_folder="bscs-merge.pass"
merge_fail_folder="bscs-merge.fail"
@@ -33,7 +61,7 @@ for folder in "$merge_pass_folder/"*.in; do
if [ "$exit_code" -ne 0 ]; then
echo ": FAILED (exit code "$exit_code")" 1>&2
exit 1
- elif ! diff -r "$TMPDIR/"*/ "$out_folder/" &>> "$bscs_log"; then
+ elif ! compare_dirs "$TMPDIR/"*/ "$out_folder/" &>> "$bscs_log"; then
echo ": FAILED (different diff)" 1>&2
exit 1
else
@@ -73,7 +101,7 @@ exit_code="$?"
if [ "$exit_code" -ne 0 ]; then
echo ": FAILED (exit code "$exit_code")" 1>&2
exit 1
-elif ! diff -r "$TMPDIR/"*/ "$out_folder/" &>> "$bscs_log"; then
+elif ! compare_dirs "$TMPDIR/"*/ "$out_folder/" &>> "$bscs_log"; then
echo ": FAILED (different diff)" 1>&2a
exit 1
else