user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [PATCH 13/11] edit: drop unwanted headers before noop check
  @ 2019-06-10 18:17  7% ` Eric Wong (Contractor, The Linux Foundation)
  0 siblings, 0 replies; 1+ results
From: Eric Wong (Contractor, The Linux Foundation) @ 2019-06-10 18:17 UTC (permalink / raw)
  To: meta

mutt will set Content-Length, Lines, and Status headers
unconditionally, so we need to account for that before
doing header comparisons to avoid making expensive changes
when noop edits are made.
---
 script/public-inbox-edit |  6 ++++++
 t/edit.t                 | 18 ++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/script/public-inbox-edit b/script/public-inbox-edit
index 7a534cc..16d7852 100755
--- a/script/public-inbox-edit
+++ b/script/public-inbox-edit
@@ -14,6 +14,7 @@ use PublicInbox::MID qw(mid_clean mids);
 PublicInbox::Admin::check_require('-index');
 require PublicInbox::MIME;
 require PublicInbox::InboxWritable;
+require PublicInbox::Import;
 
 my $usage = "$0 -m MESSAGE_ID [--all] [INBOX_DIRS]";
 my $opt = { verbose => 1, all => 0, -min_inbox_version => 2, raw => 0 };
@@ -197,6 +198,11 @@ W: possible message boundary splitting error
 	my $new_mime = PublicInbox::MIME->new(\$new_raw);
 	my $old_mime = PublicInbox::MIME->new($old_raw);
 
+	# make sure we don't compare unwanted headers, since mutt adds
+	# Content-Length, Status, and Lines headers:
+	PublicInbox::Import::drop_unwanted_headers($new_mime);
+	PublicInbox::Import::drop_unwanted_headers($old_mime);
+
 	# allow changing Received: and maybe other headers which can
 	# contain sensitive info.
 	my $nhdr = $new_mime->header_obj;
diff --git a/t/edit.t b/t/edit.t
index 61e90f2..6b4e35c 100644
--- a/t/edit.t
+++ b/t/edit.t
@@ -79,6 +79,24 @@ $t = 'no-op -m MESSAGE_ID'; {
 	is($after, $before, 'git head unchanged');
 }
 
+$t = 'no-op -m MESSAGE_ID w/Status: header'; { # because mutt does it
+	$in = $out = $err = '';
+	my $before = `git $__git_dir rev-parse HEAD`;
+	local $ENV{MAIL_EDITOR} =
+			"$^X -i -p -e 's/^Subject:.*/Status: RO\\n\$&/'";
+	$cmd = [ "$cmd_pfx-edit", "-m$mid", $mainrepo ];
+	ok(run($cmd, \$in, \$out, \$err), "$t succeeds");
+	my $prev = $cur;
+	$cur = PublicInbox::MIME->new($ibx->msg_by_mid($mid));
+	is_deeply($cur, $prev, "$t makes no change");
+	like($cur->header('Subject'), qr/boolean prefix/,
+		"$t does not change message");
+	is($cur->header('Status'), undef, 'Status header not added');
+	like($out, qr/NONE/, 'noop shows NONE');
+	my $after = `git $__git_dir rev-parse HEAD`;
+	is($after, $before, 'git head unchanged');
+}
+
 $t = '-m MESSAGE_ID can change Received: headers'; {
 	$in = $out = $err = '';
 	my $before = `git $__git_dir rev-parse HEAD`;
-- 
EW


^ permalink raw reply related	[relevance 7%]

Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2019-06-09  2:51     [PATCH 00/11] v2: implement message editing Eric Wong (Contractor, The Linux Foundation)
2019-06-10 18:17  7% ` [PATCH 13/11] edit: drop unwanted headers before noop check Eric Wong (Contractor, The Linux Foundation)

Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).