From 55997f200aa0471662c0b2dfec5bd4523f42dbe7 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 13 Oct 2018 11:15:57 +0100 Subject: dgit: Implement clean_tree_check for mode -wc This part of the fix for #910705. This makes -wc actually work with build_source. But per the discussion in #910705 we want to implement some checking in dpkg-source[-d] mode too. We need to teach the test suite about this notion of checking cleanlines rather than cleaning. For now we wildcard C*. Signed-off-by: Ian Jackson --- dgit | 17 ++++++++++------- tests/lib-build-modes | 13 +++++++------ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/dgit b/dgit index b4943a2..7f58bc5 100755 --- a/dgit +++ b/dgit @@ -6200,7 +6200,15 @@ sub maybe_unapply_patches_again () { #----- other building ----- sub clean_tree_check () { - # Not yet implemented. The lack of this is part of #910705. + # Not yet fully implemented. + if ($cleanmode eq 'check') { + my $leftovers = cmdoutput @git, qw(clean -xdn); + if (length $leftovers) { + print STDERR $leftovers, "\n" or confess $!; + fail __ + "tree contains uncommitted files and --clean=check specified"; + } + } } sub clean_tree () { @@ -6217,12 +6225,7 @@ sub clean_tree () { } elsif ($cleanmode eq 'git-ff') { runcmd_ordryrun_local @git, qw(clean -xdff); } elsif ($cleanmode eq 'check') { - my $leftovers = cmdoutput @git, qw(clean -xdn); - if (length $leftovers) { - print STDERR $leftovers, "\n" or confess $!; - fail __ - "tree contains uncommitted files and --clean=check specified"; - } + clean_tree_check(); } elsif ($cleanmode eq 'none') { } else { die "$cleanmode ?"; diff --git a/tests/lib-build-modes b/tests/lib-build-modes index dbceb42..5e186b2 100644 --- a/tests/lib-build-modes +++ b/tests/lib-build-modes @@ -127,17 +127,17 @@ bm-compute-expected () { *[^\ ]*) ;; *) - # dgit won't bother cleaning the tree - # if no build is going to be run - eff_cleanmode=none + # if no build is going to be run, dgit will only check + # cleanliness rather than actually cleaning + eff_cleanmode=C$cleanmode ;; esac case "$act" in sbuild*) - # dgit sbuild won't bother cleaning the tree + # dgit sbuild will only check cleanliness # because it doesn't need to to make a .dsc for sbuild - eff_cleanmode=none + eff_cleanmode=C$cleanmode ;; esac @@ -148,12 +148,13 @@ bm-compute-expected () { case $eff_cleanmode in git) echo >&4 'BUILD-MODES PROGRAM git clean -xdf' ;; git-ff) echo >&4 'BUILD-MODES PROGRAM git clean -xdff' ;; - check) echo >&4 'BUILD-MODES PROGRAM git clean -xdn' ;; + check|Ccheck) echo >&4 'BUILD-MODES PROGRAM git clean -xdn' ;; dpkg-source-d) echo >&4 "EXAMPLE RULES TARGET clean" ;; dpkg-source) bm-build-deps-ok || tolerate_fail=tolerate echo >&4 "EXAMPLE RULES TARGET clean" ;; none) ;; + C*) echo "TODO bm eff_cleanmode=$eff_cleanmode" ;; *) fail "t-compute-expected-run $cleanmode ??" ;; esac -- cgit v1.2.3