diff options
author | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2014-02-20 15:48:01 +0000 |
---|---|---|
committer | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2014-02-20 15:48:01 +0000 |
commit | bcfb17b890e74538655695c4f76962b16565f664 (patch) | |
tree | 0d89f7495dd2704d28d9d090f261c352a2675e02 | |
parent | 20e5304f40148d43c6ab57dea0abe400475e7e9f (diff) | |
parent | d71ff3eaa4a55b32659e165efe4b78149ef240cb (diff) | |
download | tbdiff-bcfb17b890e74538655695c4f76962b16565f664.tar.gz |
Merge branch 'baserock/pedroalvarez/bscs-upgrade-tests3'
Reviewed-by: Richard Maw
Reviewed-by: Sam Thursfield
-rwxr-xr-x | baserock-system-config-sync/baserock-system-config-sync | 8 | ||||
-rw-r--r-- | tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file7.orig | 2 | ||||
-rwxr-xr-x | tests/run_tests.sh | 32 |
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 |