Fix format=flowed unfolding on quoted lines; added tests for rcube_mime::format_flowed() and rcube_mime::unfold_flowed()

pull/88/head
Thomas Bruederli 12 years ago
parent 2c195e0365
commit 8c293e2f28

@ -480,7 +480,8 @@ class rcube_mime
$q = strlen(str_replace(' ', '', $regs[0]));
$line = substr($line, strlen($regs[0]));
if ($q == $q_level && $line
if ($q == $q_level
&& strlen($line[$last]) > 1 // don't hit if line only consist of one single white space
&& isset($text[$last])
&& $text[$last][strlen($text[$last])-1] == ' '
) {

@ -120,4 +120,26 @@ class Framework_Mime extends PHPUnit_Framework_TestCase
$this->assertEquals($item['out'], $res, "Header decoding for: " . $idx);
}
}
/**
* Test format=flowed unfolding
*/
function test_format_flowed()
{
$raw = file_get_contents(TESTS_DIR . 'src/format-flowed-unfolded.txt');
$flowed = file_get_contents(TESTS_DIR . 'src/format-flowed.txt');
$this->assertEquals($flowed, rcube_mime::format_flowed($raw, 80), "Test correct folding and space-stuffing");
}
/**
* Test format=flowed unfolding
*/
function test_unfold_flowed()
{
$flowed = file_get_contents(TESTS_DIR . 'src/format-flowed.txt');
$unfolded = file_get_contents(TESTS_DIR . 'src/format-flowed-unfolded.txt');
$this->assertEquals($unfolded, rcube_mime::unfold_flowed($flowed), "Test correct unfolding of quoted lines");
}
}

@ -0,0 +1,14 @@
I'm replying on this with a very long line which is then wrapped and space-stuffed because the draft is saved as format=flowed.
From what's specified in RFC 2646 some lines need to be space-stuffed to avoid muning during transport.
X
On XX.YY.YYYY Y:YY, Somebody wrote:
> This part is a reply wihtout any flowing lines. rcube_mime::unfold_flowed()
> has to be careful with empty quoted lines because they might end with a
> space but still shouldn't be considered as flowed!
>
> The above empty line should persist after unfolding.
> xxxxxxxxxx. xxxx xxxxx xxxxx xxxx xx xx.xx. xxxxxx xxxxxxxxxxxx, xxxx xx
>
> ... and this one as well.

@ -0,0 +1,16 @@
I'm replying on this with a very long line which is then wrapped and
space-stuffed because the draft is saved as format=flowed.
From what's specified in RFC 2646 some lines need to be space-stuffed to
avoid muning during transport.
X
On XX.YY.YYYY Y:YY, Somebody wrote:
> This part is a reply wihtout any flowing lines. rcube_mime::unfold_flowed()
> has to be careful with empty quoted lines because they might end with a
> space but still shouldn't be considered as flowed!
>
> The above empty line should persist after unfolding.
> xxxxxxxxxx. xxxx xxxxx xxxxx xxxx xx xx.xx. xxxxxx xxxxxxxxxxxx, xxxx xx
>
> ... and this one as well.
Loading…
Cancel
Save