From 5241c54c358da841a6f96ab8099f787186f34521 Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Mon, 24 Feb 2014 15:51:11 +0000 Subject: Add test case for vu == v2 in 'baserock-system-config-sync' 'baserock-system-config-sync' is doing reverse patching when that happens. This test is to check the expected behaviour. --- tests/bscs-merge.pass/upgrades.in/systems/factory/orig/etc/file8 | 2 ++ tests/bscs-merge.pass/upgrades.in/systems/factory/run/etc/file8 | 2 ++ tests/bscs-merge.pass/upgrades.in/systems/version2/orig/etc/file8 | 2 ++ tests/bscs-merge.pass/upgrades.in/systems/version2/run/etc/file8 | 2 ++ tests/bscs-merge.pass/upgrades.out/systems/factory/orig/etc/file8 | 2 ++ tests/bscs-merge.pass/upgrades.out/systems/factory/run/etc/file8 | 2 ++ tests/bscs-merge.pass/upgrades.out/systems/version2/orig/etc/file8 | 2 ++ tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file8 | 2 ++ 8 files changed, 16 insertions(+) create mode 100644 tests/bscs-merge.pass/upgrades.in/systems/factory/orig/etc/file8 create mode 100644 tests/bscs-merge.pass/upgrades.in/systems/factory/run/etc/file8 create mode 100644 tests/bscs-merge.pass/upgrades.in/systems/version2/orig/etc/file8 create mode 100644 tests/bscs-merge.pass/upgrades.in/systems/version2/run/etc/file8 create mode 100644 tests/bscs-merge.pass/upgrades.out/systems/factory/orig/etc/file8 create mode 100644 tests/bscs-merge.pass/upgrades.out/systems/factory/run/etc/file8 create mode 100644 tests/bscs-merge.pass/upgrades.out/systems/version2/orig/etc/file8 create mode 100644 tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file8 diff --git a/tests/bscs-merge.pass/upgrades.in/systems/factory/orig/etc/file8 b/tests/bscs-merge.pass/upgrades.in/systems/factory/orig/etc/file8 new file mode 100644 index 0000000..7c1f4fb --- /dev/null +++ b/tests/bscs-merge.pass/upgrades.in/systems/factory/orig/etc/file8 @@ -0,0 +1,2 @@ +whereami=v1,vu,v2 +version=v1 diff --git a/tests/bscs-merge.pass/upgrades.in/systems/factory/run/etc/file8 b/tests/bscs-merge.pass/upgrades.in/systems/factory/run/etc/file8 new file mode 100644 index 0000000..24553ad --- /dev/null +++ b/tests/bscs-merge.pass/upgrades.in/systems/factory/run/etc/file8 @@ -0,0 +1,2 @@ +whereami=v1,vu,v2 +version=vu diff --git a/tests/bscs-merge.pass/upgrades.in/systems/version2/orig/etc/file8 b/tests/bscs-merge.pass/upgrades.in/systems/version2/orig/etc/file8 new file mode 100644 index 0000000..24553ad --- /dev/null +++ b/tests/bscs-merge.pass/upgrades.in/systems/version2/orig/etc/file8 @@ -0,0 +1,2 @@ +whereami=v1,vu,v2 +version=vu diff --git a/tests/bscs-merge.pass/upgrades.in/systems/version2/run/etc/file8 b/tests/bscs-merge.pass/upgrades.in/systems/version2/run/etc/file8 new file mode 100644 index 0000000..24553ad --- /dev/null +++ b/tests/bscs-merge.pass/upgrades.in/systems/version2/run/etc/file8 @@ -0,0 +1,2 @@ +whereami=v1,vu,v2 +version=vu diff --git a/tests/bscs-merge.pass/upgrades.out/systems/factory/orig/etc/file8 b/tests/bscs-merge.pass/upgrades.out/systems/factory/orig/etc/file8 new file mode 100644 index 0000000..7c1f4fb --- /dev/null +++ b/tests/bscs-merge.pass/upgrades.out/systems/factory/orig/etc/file8 @@ -0,0 +1,2 @@ +whereami=v1,vu,v2 +version=v1 diff --git a/tests/bscs-merge.pass/upgrades.out/systems/factory/run/etc/file8 b/tests/bscs-merge.pass/upgrades.out/systems/factory/run/etc/file8 new file mode 100644 index 0000000..24553ad --- /dev/null +++ b/tests/bscs-merge.pass/upgrades.out/systems/factory/run/etc/file8 @@ -0,0 +1,2 @@ +whereami=v1,vu,v2 +version=vu diff --git a/tests/bscs-merge.pass/upgrades.out/systems/version2/orig/etc/file8 b/tests/bscs-merge.pass/upgrades.out/systems/version2/orig/etc/file8 new file mode 100644 index 0000000..24553ad --- /dev/null +++ b/tests/bscs-merge.pass/upgrades.out/systems/version2/orig/etc/file8 @@ -0,0 +1,2 @@ +whereami=v1,vu,v2 +version=vu diff --git a/tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file8 b/tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file8 new file mode 100644 index 0000000..24553ad --- /dev/null +++ b/tests/bscs-merge.pass/upgrades.out/systems/version2/run/etc/file8 @@ -0,0 +1,2 @@ +whereami=v1,vu,v2 +version=vu -- cgit v1.2.1 From b758575226de75e210bd9385c748732ca62bb877 Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Mon, 24 Feb 2014 15:51:49 +0000 Subject: Fix baserock-system-config-sync tests. Wasn't working as expected. --- tests/run_tests.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 36dff01..102aea6 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -25,11 +25,8 @@ compare_dirs() { (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" + # Compare file contents then permissions + diff -r "$1" "$2" && diff "$file1" "$file2" ) local ret="$?" -- cgit v1.2.1 From 087ad206db4ef25eff2c21c3d6e06194f0e217ee Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Mon, 24 Feb 2014 15:52:53 +0000 Subject: Prevent patching when 'vu == v2' in 'baserock-system-config-sync'. When vu == v2, the script tried to reverse the patch. Now this won't happen again. Also added '-f' flag calling 'patch' to prevent also reverse patching. --- .../baserock-system-config-sync | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/baserock-system-config-sync/baserock-system-config-sync b/baserock-system-config-sync/baserock-system-config-sync index a093b15..e297197 100755 --- a/baserock-system-config-sync/baserock-system-config-sync +++ b/baserock-system-config-sync/baserock-system-config-sync @@ -134,6 +134,7 @@ merge_regular_file() { v1_exists=$(test -f "$v1" && echo exists || echo none) vu_exists=$(test -f "$vu" && echo exists || echo none) v2_exists=$(test -f "$v2" && echo exists || echo none) + case "$v1_exists $vu_exists $v2_exists" in 'exists none none') cp -a "$v1" "$vt" @@ -152,16 +153,24 @@ merge_regular_file() { ;; 'none exists exists') 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 + + # If v2 == vu, then use v2 + if ! cmp -s "$v2" "$vu"; then + if ! (diff -u "$v2" --label="$v2" "$vu" --label="$vu" | patch "$vt" -f); then + cp -a "$v2" "$vt" # merge failed, use v2 + # 'patch' creates a file '.rej' with the diff that did not apply + fi fi ;; 'exists exists exists') 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 + + # If v2 == vu, then use v2 + if ! cmp -s "$v2" "$vu"; then + if ! (diff -u "$v1" --label="$v1" "$vu" --label="$vu" | patch "$vt" -f); then + cp -a "$v2" "$vt" # merge failed, use v2 + # 'patch' creates a file '.rej' with the diff that did not apply + fi fi ;; *) -- cgit v1.2.1