The following commit has been merged in the master branch: commit 37433b1e6396c57afb1e6dcbf467fec92a11d38e Author: Russ Allbery <r...@debian.org> Date: Fri Feb 6 23:10:06 2009 -0800
Add check for #!/bin/sh -e instead of set -e * checks/scripts{,.desc}: + [RA] Add pedantic check for maintainer scripts using #!/bin/sh -e instead of set -e in the script body. (Closes: #119045) diff --git a/checks/scripts b/checks/scripts index c0f9e85..692ae95 100644 --- a/checks/scripts +++ b/checks/scripts @@ -530,13 +530,13 @@ while (<SCRIPTS>) { or fail("cannot open maintainer script $filename for reading: $!"); my %warned; - my ($saw_init, $saw_invoke, $saw_debconf, $saw_sete, $has_code); + my ($saw_init, $saw_invoke, $saw_debconf, $saw_bange, $saw_sete, $has_code); my $cat_string = ""; my $previous_line = ""; while (<C>) { if ($. == 1 && $shellscript && m,/$base\s*.*\s-\w*e\w*\b,) { - $saw_sete = 1; + $saw_bange = 1; } next if m,^\s*$,; # skip empty lines @@ -882,7 +882,11 @@ while (<SCRIPTS>) { tag "maintainer-script-empty", $file; } if ($shellscript && !$saw_sete) { - tag 'maintainer-script-ignores-errors', $file; + if ($saw_bange) { + tag 'maintainer-script-without-set-e', $file; + } else { + tag 'maintainer-script-ignores-errors', $file; + } } close C; diff --git a/checks/scripts.desc b/checks/scripts.desc index 7b2fb3b..96a5bfe 100644 --- a/checks/scripts.desc +++ b/checks/scripts.desc @@ -498,11 +498,22 @@ Info: The maintainer script doesn't seem to contain any code other than Tag: maintainer-script-ignores-errors Severity: normal Certainty: certain -Ref: policy 3.9 +Ref: policy 10.4 Info: The maintainer script doesn't seem to set the <tt>-e</tt> flag which ensures that the script's execution is aborted when any executed command fails. +Tag: maintainer-script-without-set-e +Severity: pedantic +Certainty: certain +Ref: policy 10.4 +Info: The maintainer script passes <tt>-e</tt> to the shell on the + <tt>#!</tt> line rather than using <tt>set -e</tt> in the body of the + script. This is fine for normal operation, but if the script is run by + hand with <tt>sh /path/to/script</tt> (common in debugging), <tt>-e</tt> + will not be in effect. It's therefore better to use <tt>set -e</tt> in + the body of the script. + Tag: command-with-path-in-maintainer-script Severity: normal Certainty: certain diff --git a/debian/changelog b/debian/changelog index 5bb7958..5d32301 100644 --- a/debian/changelog +++ b/debian/changelog @@ -8,6 +8,7 @@ lintian (2.2.3) UNRELEASED; urgency=low - dfsg-version-misspelled - experimental-to-unstable-without-comment (pedantic) - homepage-for-cpan-package-contains-version + - maintainer-script-without-set-e (pedantic) - using-first-person-in-description + Removed - non-us-spelling @@ -48,6 +49,9 @@ lintian (2.2.3) UNRELEASED; urgency=low * checks/files: + [ADB] Don't report duplicate-font-file for udebs. Patch by Raphael Geissert. (Closes: #514095) + * checks/scripts{,.desc}: + + [RA] Add pedantic check for maintainer scripts using #!/bin/sh -e + instead of set -e in the script body. (Closes: #119045) * lib/Spelling.pm: + [RA] Add some additional typo and case corrections. Patch from diff --git a/t/tests/scripts-maintainer-script-set-e/debian/debian/postinst b/t/tests/scripts-maintainer-script-set-e/debian/debian/postinst new file mode 100644 index 0000000..dc11a43 --- /dev/null +++ b/t/tests/scripts-maintainer-script-set-e/debian/debian/postinst @@ -0,0 +1,9 @@ +#!/bin/sh -e + +if [ "$1" = configure ] ; then + frobnicate something +fi + +#DEBHELPER# + +exit 0 diff --git a/t/tests/scripts-maintainer-script-set-e/desc b/t/tests/scripts-maintainer-script-set-e/desc new file mode 100644 index 0000000..c652e3a --- /dev/null +++ b/t/tests/scripts-maintainer-script-set-e/desc @@ -0,0 +1,7 @@ +Testname: scripts-maintainer-script-set-e +Sequence: 6000 +Version: 1.0 +Description: Test for using set -e in script body +Skeleton: pedantic +Options: --pedantic -I -E +Test-For: maintainer-script-without-set-e diff --git a/t/tests/scripts-maintainer-script-set-e/tags b/t/tests/scripts-maintainer-script-set-e/tags new file mode 100644 index 0000000..337ad65 --- /dev/null +++ b/t/tests/scripts-maintainer-script-set-e/tags @@ -0,0 +1 @@ +P: scripts-maintainer-script-set-e: maintainer-script-without-set-e postinst -- Debian package checker -- To UNSUBSCRIBE, email to debian-lint-maint-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org