--- oslo-series-final/0007-Added-test-cases-for-guilt-fold.patch +++ oslo-series-v2/v2-0007-Added-test-cases-for-guilt-fold.patch @@ -1,7 +1,7 @@ -From 6a1cc76f93998ff3cb1cc71ec0dc01293d68fdfe Mon Sep 17 00:00:00 2001 +From e3934de64d64d95680417444e95e0323e93691c7 Mon Sep 17 00:00:00 2001 From: Per Cederqvist -Date: Wed, 19 Mar 2014 20:24:54 +0100 -Subject: [GUILT 07/28] Added test cases for "guilt fold". +Date: Tue, 13 May 2014 21:03:42 +0200 +Subject: [GUILT v2 07/29] Added test cases for "guilt fold". To: Jeff Sipek Cc: git@vger.kernel.org @@ -11,9 +11,9 @@ Signed-off-by: Per Cederqvist --- - regression/t-035.out | 659 +++++++++++++++++++++++++++++++++++++++++++++++++++ - regression/t-035.sh | 88 +++++++ - 2 files changed, 747 insertions(+) + regression/t-035.out | 467 +++++++++++++++++++++++++++++++++++++++++++++++++++ + regression/t-035.sh | 62 +++++++ + 2 files changed, 529 insertions(+) create mode 100644 regression/t-035.out create mode 100755 regression/t-035.sh diff --git a/regression/t-035.out b/regression/t-035.out new file mode 100644 index 0000000..04af146 --- /dev/null +++ b/regression/t-035.out - @@ -0,0 +1,659 @@ + @@ -0,0 +1,467 @@ +% setup_repo +% git config guilt.diffstat true +%% empty + empty (diffstat=true) [...] +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ +r bde3d337af70f36836ad606c800d194006f883b3 .git/refs/patches/master/empty-1 - +% git log -p - +commit bde3d337af70f36836ad606c800d194006f883b3 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + patch empty-1 - + - +commit d4850419ccc1146c7169f500725ce504b9774ed0 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + initial - + - + Signed-off-by: Commiter Name - + - +diff --git a/def b/def - +new file mode 100644 - +index 0000000..8baef1b - +--- /dev/null - ++++ b/def - +@@ -0,0 +1 @@ - ++abc +% guilt pop +All patches popped. +% guilt delete -f empty-1 [...] +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status - +%% empty + non-empty (diffstat=true) + +%% empty + nonempty (diffstat=true) +% guilt new empty +% guilt pop +All patches popped. +% guilt push +Applying patch..empty +Patch applied. - +% guilt new -f -s -m A commit message. non-empty + +% guilt new -f -s -m A commit message. nonempty +% guilt pop +Now at empty. +% guilt push - +Applying patch..non-empty + +Applying patch..nonempty +Patch applied. +% guilt pop +Now at empty. - +% guilt fold non-empty + +% guilt fold nonempty +% guilt pop +All patches popped. +% guilt push [...] +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty~ - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ +f 683678040eef9334d6329e00d5b9babda3e65b57 .git/patches/master/empty +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add +f a26a22287b500a2a372e42c2bab03599bbe37cdf .git/patches/master/series [...] +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ +r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/empty - +% git log -p - +commit 4eedaa32894fc07af3298d8c1178052942a3ca6a - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + A commit message. - + - + Signed-off-by: Commiter Name - + - +commit d4850419ccc1146c7169f500725ce504b9774ed0 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + initial - + - + Signed-off-by: Commiter Name - + - +diff --git a/def b/def - +new file mode 100644 - +index 0000000..8baef1b - +--- /dev/null - ++++ b/def - +@@ -0,0 +1 @@ - ++abc +% guilt pop +All patches popped. +% guilt delete -f empty [...] +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty~ - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status - +%% non-empty + empty (diffstat=true) - +% guilt new -f -s -m A commit message. non-empty - +% guilt pop - +All patches popped. - +% guilt push - +Applying patch..non-empty + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status + +%% nonempty + empty (diffstat=true) + +% guilt new -f -s -m A commit message. nonempty + +% guilt pop + +All patches popped. + +% guilt push + +Applying patch..nonempty +Patch applied. +% guilt new empty +% guilt pop - +Now at non-empty. + +Now at nonempty. + +% guilt push + +Applying patch..empty + +Patch applied. + +% guilt pop + +Now at nonempty. +% guilt fold empty +% guilt pop +All patches popped. +% guilt push - +Applying patch..non-empty - +Patch applied. - +% list_files - +d .git/patches - +d .git/patches/master - +d .git/refs/patches - +d .git/refs/patches/master - +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode - +f 3be33467b8bcaa0b423634f9fb0d56e7963b512c .git/patches/master/status - +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5b7e155be4d6d4ae570eb6a0ec3422bbe4089665 .git/patches/master/series - +f 683678040eef9334d6329e00d5b9babda3e65b57 .git/patches/master/non-empty - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ - +r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/non-empty - +% git log -p - +commit 4eedaa32894fc07af3298d8c1178052942a3ca6a - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + A commit message. - + - + Signed-off-by: Commiter Name - + - +commit d4850419ccc1146c7169f500725ce504b9774ed0 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + initial - + - + Signed-off-by: Commiter Name - + - +diff --git a/def b/def - +new file mode 100644 - +index 0000000..8baef1b - +--- /dev/null - ++++ b/def - +@@ -0,0 +1 @@ - ++abc - +% guilt pop - +All patches popped. - +% guilt delete -f non-empty - +% list_files - +d .git/patches - +d .git/patches/master - +d .git/refs/patches - +d .git/refs/patches/master - +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode - +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status - +%% non-empty + non-empty (diffstat=true) - +% guilt new -f -s -m A commit message. non-empty-1 - +% guilt pop - +All patches popped. - +% guilt push - +Applying patch..non-empty-1 - +Patch applied. - +% guilt new -f -s -m Another commit message. non-empty-2 - +% guilt pop - +Now at non-empty-1. - +% guilt push - +Applying patch..non-empty-2 - +Patch applied. - +% guilt pop - +Now at non-empty-1. - +% guilt fold non-empty-2 - +% guilt pop - +All patches popped. - +% guilt push - +Applying patch..non-empty-1 - +Patch applied. - +% list_files - +d .git/patches - +d .git/patches/master - +d .git/refs/patches - +d .git/refs/patches/master - +f 0c6b7357ea1ccc9cbf872bc3abf53cf059c55152 .git/patches/master/series - +f 2267d12f90557b360ac5a5ce8b39e17b4a2b91c3 .git/patches/master/status - +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode - +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 8884157b59a3a1d90c0192dba642c9db047bb39d .git/patches/master/non-empty-1 - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ - +r 871e6754840a705017381948d77225c8de7b24dd .git/refs/patches/master/non-empty-1 - +% git log -p - +commit 871e6754840a705017381948d77225c8de7b24dd - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + A commit message. - + - + Signed-off-by: Commiter Name - + - + - + Header from folded patch 'non-empty-2': - + - + Another commit message. - + - + Signed-off-by: Commiter Name - + - +commit d4850419ccc1146c7169f500725ce504b9774ed0 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + initial - + - + Signed-off-by: Commiter Name - + - +diff --git a/def b/def - +new file mode 100644 - +index 0000000..8baef1b - +--- /dev/null - ++++ b/def - +@@ -0,0 +1 @@ - ++abc - +% guilt pop - +All patches popped. - +% guilt delete -f non-empty-1 - +% list_files - +d .git/patches - +d .git/patches/master - +d .git/refs/patches - +d .git/refs/patches/master - +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode - +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ + +Applying patch..nonempty + +Patch applied. + +% list_files + +d .git/patches + +d .git/patches/master + +d .git/refs/patches + +d .git/refs/patches/master + +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode + +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 683678040eef9334d6329e00d5b9babda3e65b57 .git/patches/master/nonempty + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f c47ddc01337e3bb67a9968a8823a5ba12be67f77 .git/patches/master/series + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ + +f f7f068d44bf796d0f7cd14d27d1f48d6e659816a .git/patches/master/status + +r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/nonempty + +% guilt pop + +All patches popped. + +% guilt delete -f nonempty + +% list_files + +d .git/patches + +d .git/patches/master + +d .git/refs/patches + +d .git/refs/patches/master + +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode + +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status + +%% nonempty + nonempty (diffstat=true) + +% guilt new -f -s -m A commit message. nonempty-1 + +% guilt pop + +All patches popped. + +% guilt push + +Applying patch..nonempty-1 + +Patch applied. + +% guilt new -f -s -m Another commit message. nonempty-2 + +% guilt pop + +Now at nonempty-1. + +% guilt push + +Applying patch..nonempty-2 + +Patch applied. + +% guilt pop + +Now at nonempty-1. + +% guilt fold nonempty-2 + +% guilt pop + +All patches popped. + +% guilt push + +Applying patch..nonempty-1 + +Patch applied. + +% list_files + +d .git/patches + +d .git/patches/master + +d .git/refs/patches + +d .git/refs/patches/master + +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode + +f 3b526c794741fb2d6b463f3245ab2f260fa74b7b .git/patches/master/status + +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 669c9685ce791098bb3573f80af6d720a3689f80 .git/patches/master/nonempty-1 + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f a88f2625f128cfa307a52c8c2e84ed6c32a78d2b .git/patches/master/series + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ + +r 895dfbc21bde85fcc666a353a6bd32eaec939082 .git/refs/patches/master/nonempty-1 + +% guilt pop + +All patches popped. + +% guilt delete -f nonempty-1 + +% list_files + +d .git/patches + +d .git/patches/master + +d .git/refs/patches + +d .git/refs/patches/master + +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode + +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ [...] +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 4ea806e306f0228a8ef41f186035e7b04097f1f2 .git/patches/master/status - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f d28d87b88c1e24d637e390dc3603cfa7c1715711 .git/patches/master/series +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1 [...] +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ +r bde3d337af70f36836ad606c800d194006f883b3 .git/refs/patches/master/empty-1 - +% git log -p - +commit bde3d337af70f36836ad606c800d194006f883b3 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + patch empty-1 - + - +commit d4850419ccc1146c7169f500725ce504b9774ed0 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + initial - + - + Signed-off-by: Commiter Name - + - +diff --git a/def b/def - +new file mode 100644 - +index 0000000..8baef1b - +--- /dev/null - ++++ b/def - +@@ -0,0 +1 @@ - ++abc +% guilt pop +All patches popped. +% guilt delete -f empty-1 [...] +d .git/refs/patches/master +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status - +%% empty + non-empty (diffstat=false) + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status + +%% empty + nonempty (diffstat=false) +% guilt new empty +% guilt pop +All patches popped. +% guilt push +Applying patch..empty +Patch applied. - +% guilt new -f -s -m A commit message. non-empty + +% guilt new -f -s -m A commit message. nonempty +% guilt pop +Now at empty. +% guilt push - +Applying patch..non-empty + +Applying patch..nonempty +Patch applied. +% guilt pop +Now at empty. - +% guilt fold non-empty + +% guilt fold nonempty +% guilt pop +All patches popped. +% guilt push [...] +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty~ - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add +f a26a22287b500a2a372e42c2bab03599bbe37cdf .git/patches/master/series - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ +r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/empty - +% git log -p - +commit 4eedaa32894fc07af3298d8c1178052942a3ca6a - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + A commit message. - + - + Signed-off-by: Commiter Name - + - +commit d4850419ccc1146c7169f500725ce504b9774ed0 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + initial - + - + Signed-off-by: Commiter Name - + - +diff --git a/def b/def - +new file mode 100644 - +index 0000000..8baef1b - +--- /dev/null - ++++ b/def - +@@ -0,0 +1 @@ - ++abc +% guilt pop +All patches popped. +% guilt delete -f empty [...] +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/empty~ - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status - +%% non-empty + empty (diffstat=false) - +% guilt new -f -s -m A commit message. non-empty - +% guilt pop - +All patches popped. - +% guilt push - +Applying patch..non-empty + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status + +%% nonempty + empty (diffstat=false) + +% guilt new -f -s -m A commit message. nonempty + +% guilt pop + +All patches popped. + +% guilt push + +Applying patch..nonempty +Patch applied. +% guilt new empty +% guilt pop - +Now at non-empty. + +Now at nonempty. + +% guilt push + +Applying patch..empty + +Patch applied. + +% guilt pop + +Now at nonempty. +% guilt fold empty +% guilt pop +All patches popped. +% guilt push - +Applying patch..non-empty - +Patch applied. - +% list_files - +d .git/patches - +d .git/patches/master - +d .git/refs/patches - +d .git/refs/patches/master - +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode - +f 3be33467b8bcaa0b423634f9fb0d56e7963b512c .git/patches/master/status - +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5b7e155be4d6d4ae570eb6a0ec3422bbe4089665 .git/patches/master/series - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ - +r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/non-empty - +% git log -p - +commit 4eedaa32894fc07af3298d8c1178052942a3ca6a - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + A commit message. - + - + Signed-off-by: Commiter Name - + - +commit d4850419ccc1146c7169f500725ce504b9774ed0 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + initial - + - + Signed-off-by: Commiter Name - + - +diff --git a/def b/def - +new file mode 100644 - +index 0000000..8baef1b - +--- /dev/null - ++++ b/def - +@@ -0,0 +1 @@ - ++abc - +% guilt pop - +All patches popped. - +% guilt delete -f non-empty - +% list_files - +d .git/patches - +d .git/patches/master - +d .git/refs/patches - +d .git/refs/patches/master - +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode - +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status - +%% non-empty + non-empty (diffstat=false) - +% guilt new -f -s -m A commit message. non-empty-1 - +% guilt pop - +All patches popped. - +% guilt push - +Applying patch..non-empty-1 - +Patch applied. - +% guilt new -f -s -m Another commit message. non-empty-2 - +% guilt pop - +Now at non-empty-1. - +% guilt push - +Applying patch..non-empty-2 - +Patch applied. - +% guilt pop - +Now at non-empty-1. - +% guilt fold non-empty-2 - +% guilt pop - +All patches popped. - +% guilt push - +Applying patch..non-empty-1 - +Patch applied. - +% list_files - +d .git/patches - +d .git/patches/master - +d .git/refs/patches - +d .git/refs/patches/master - +f 0c6b7357ea1ccc9cbf872bc3abf53cf059c55152 .git/patches/master/series - +f 2267d12f90557b360ac5a5ce8b39e17b4a2b91c3 .git/patches/master/status - +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode - +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1 - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ - +r 871e6754840a705017381948d77225c8de7b24dd .git/refs/patches/master/non-empty-1 - +% git log -p - +commit 871e6754840a705017381948d77225c8de7b24dd - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + A commit message. - + - + Signed-off-by: Commiter Name - + - + - + Header from folded patch 'non-empty-2': - + - + Another commit message. - + - + Signed-off-by: Commiter Name - + - +commit d4850419ccc1146c7169f500725ce504b9774ed0 - +Author: Author Name - +Date: Mon Jan 1 00:00:00 2007 +0000 - + - + initial - + - + Signed-off-by: Commiter Name - + - +diff --git a/def b/def - +new file mode 100644 - +index 0000000..8baef1b - +--- /dev/null - ++++ b/def - +@@ -0,0 +1 @@ - ++abc - +% guilt pop - +All patches popped. - +% guilt delete -f non-empty-1 - +% list_files - +d .git/patches - +d .git/patches/master - +d .git/refs/patches - +d .git/refs/patches/master - +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode - +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove - +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/non-empty~ - +f 5f0c43c5c062b1d9615fcd41a84ed6c1bc040e69 .git/patches/master/non-empty-1~ - +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add - +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series - +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/non-empty-2~ - +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ - +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status + +Applying patch..nonempty + +Patch applied. + +% list_files + +d .git/patches + +d .git/patches/master + +d .git/refs/patches + +d .git/refs/patches/master + +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode + +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f c47ddc01337e3bb67a9968a8823a5ba12be67f77 .git/patches/master/series + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ + +f f7f068d44bf796d0f7cd14d27d1f48d6e659816a .git/patches/master/status + +r 4eedaa32894fc07af3298d8c1178052942a3ca6a .git/refs/patches/master/nonempty + +% guilt pop + +All patches popped. + +% guilt delete -f nonempty + +% list_files + +d .git/patches + +d .git/patches/master + +d .git/refs/patches + +d .git/refs/patches/master + +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode + +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status + +%% nonempty + nonempty (diffstat=false) + +% guilt new -f -s -m A commit message. nonempty-1 + +% guilt pop + +All patches popped. + +% guilt push + +Applying patch..nonempty-1 + +Patch applied. + +% guilt new -f -s -m Another commit message. nonempty-2 + +% guilt pop + +Now at nonempty-1. + +% guilt push + +Applying patch..nonempty-2 + +Patch applied. + +% guilt pop + +Now at nonempty-1. + +% guilt fold nonempty-2 + +% guilt pop + +All patches popped. + +% guilt push + +Applying patch..nonempty-1 + +Patch applied. + +% list_files + +d .git/patches + +d .git/patches/master + +d .git/refs/patches + +d .git/refs/patches/master + +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode + +f 3b526c794741fb2d6b463f3245ab2f260fa74b7b .git/patches/master/status + +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1 + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f a88f2625f128cfa307a52c8c2e84ed6c32a78d2b .git/patches/master/series + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ + +r 895dfbc21bde85fcc666a353a6bd32eaec939082 .git/refs/patches/master/nonempty-1 + +% guilt pop + +All patches popped. + +% guilt delete -f nonempty-1 + +% list_files + +d .git/patches + +d .git/patches/master + +d .git/refs/patches + +d .git/refs/patches/master + +f 22930c6d1f1938f298a4fca51c57e4b47171db21 .git/patches/master/mode + +f 413390f3906f16f30b054a4fb86c1e014b964504 .git/patches/master/remove + +f 51fcfcf16db2903f19ab4a4a3caacd297ea9f6cd .git/patches/master/nonempty~ + +f 75c672c7dbec8e8275d26d720f499899d04912a4 .git/patches/master/nonempty-1~ + +f 9c18cc7abe6b87f18503714a80a677b4094eb457 .git/patches/master/add + +f bacb4aad8a55fe4e7aa58a9ae169990bb764069f .git/patches/master/series + +f bbdc17918ad7ba268ea90ebf0fb71e32e0f09a02 .git/patches/master/nonempty-2~ + +f bc9ab2e0f5db99d483961e956e814d963f0309f8 .git/patches/master/modify + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-1~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty-2~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/empty~ + +f da39a3ee5e6b4b0d3255bfef95601890afd80709 .git/patches/master/status diff --git a/regression/t-035.sh b/regression/t-035.sh new file mode 100755 index 0000000..aed3ef2 --- /dev/null +++ b/regression/t-035.sh - @@ -0,0 +1,88 @@ + @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Test the fold code [...] + cmd guilt push +} + - +function test_fold + +function empty_patch +{ - + using_diffstat=$1 - + - + cmd git config guilt.diffstat $using_diffstat - + - + # Empty message + empty message = empty message. - + echo "%% empty + empty (diffstat=$using_diffstat)" - + cmd guilt new empty-1 - + fixup_time_info empty-1 - + cmd guilt new empty-2 - + fixup_time_info empty-2 - + cmd guilt pop - + cmd guilt fold empty-2 - + fixup_time_info empty-1 - + cmd list_files - + cmd git log -p - + cmd guilt pop - + cmd guilt delete -f empty-1 - + cmd list_files - + - + # Empty message + non-empty message - + echo "%% empty + non-empty (diffstat=$using_diffstat)" - + cmd guilt new empty - + fixup_time_info empty - + cmd echo test > a - + cmd guilt new -f -s -m "A commit message." non-empty - + fixup_time_info non-empty - + cmd guilt pop - + cmd guilt fold non-empty - + fixup_time_info empty - + cmd list_files - + cmd git log -p - + cmd guilt pop - + cmd guilt delete -f empty - + cmd list_files - + - + # Non-empty message + empty message - + echo "%% non-empty + empty (diffstat=$using_diffstat)" - + cmd echo test > a - + cmd guilt new -f -s -m "A commit message." non-empty - + fixup_time_info non-empty - + cmd guilt new empty - + cmd guilt pop - + cmd guilt fold empty - + fixup_time_info non-empty - + cmd list_files - + cmd git log -p - + cmd guilt pop - + cmd guilt delete -f non-empty - + cmd list_files - + - + # Non-empty message + non-empty message - + echo "%% non-empty + non-empty (diffstat=$using_diffstat)" - + cmd echo test > a - + cmd guilt new -f -s -m "A commit message." non-empty-1 - + fixup_time_info non-empty-1 - + cmd echo test > b - + cmd guilt new -f -s -m "Another commit message." non-empty-2 - + fixup_time_info non-empty-2 - + cmd guilt pop - + cmd guilt fold non-empty-2 - + fixup_time_info non-empty-1 - + cmd list_files - + cmd git log -p - + cmd guilt pop - + cmd guilt delete -f non-empty-1 - + cmd list_files + + cmd guilt new "empty$1" + + fixup_time_info "empty$1" +} + - +test_fold true - +test_fold false + +function nonempty_patch + +{ + + if [ "$1" = -2 ]; then + + msg="Another commit message." + + else + + msg="A commit message." + + fi + + + + cmd guilt new -f -s -m "$msg" "nonempty$1" + + fixup_time_info "nonempty$1" + +} + + + +for using_diffstat in true false; do + + cmd git config guilt.diffstat $using_diffstat + + for patcha in empty nonempty; do + + for patchb in empty nonempty; do + + + + if [ $patcha = $patchb ] + + then + + suffixa=-1 + + suffixb=-2 + + else + + suffixa= + + suffixb= + + fi + + + + echo "%% $patcha + $patchb (diffstat=$using_diffstat)" + + ${patcha}_patch $suffixa + + ${patchb}_patch $suffixb + + cmd guilt pop + + cmd guilt fold $patchb$suffixb + + fixup_time_info $patcha$suffixa + + cmd list_files + + cmd guilt pop + + cmd guilt delete -f $patcha$suffixa + + cmd list_files + + + + done + + done + +done --