diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-10-13 11:15:57 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2018-10-13 12:20:45 +0100 |
commit | 55997f200aa0471662c0b2dfec5bd4523f42dbe7 (patch) | |
tree | fa930fe125a1eb190c4907d8b4c98d35e56b9a8f | |
parent | f4c0fe2181b75d62827ddf71ae1c8fbfc14874d0 (diff) |
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 <ijackson@chiark.greenend.org.uk>
-rwxr-xr-x | dgit | 17 | ||||
-rw-r--r-- | tests/lib-build-modes | 13 |
2 files changed, 17 insertions, 13 deletions
@@ -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 |