summaryrefslogtreecommitdiff
path: root/_test
diff options
context:
space:
mode:
Diffstat (limited to '_test')
-rw-r--r--_test/tests/inc/mailer.test.php63
-rw-r--r--_test/tests/inc/pageutils_clean_id.test.php3
-rw-r--r--_test/tests/inc/parser/parser_table.test.php58
3 files changed, 124 insertions, 0 deletions
diff --git a/_test/tests/inc/mailer.test.php b/_test/tests/inc/mailer.test.php
index ef78692b3..3a89413b4 100644
--- a/_test/tests/inc/mailer.test.php
+++ b/_test/tests/inc/mailer.test.php
@@ -156,5 +156,68 @@ class mailer_test extends DokuWikiTest {
$this->assertEquals(0, preg_match('/(^|\n)Bcc: (\n|$)/', $header), 'Bcc found in headers.');
$this->assertEquals(0, preg_match('/(^|\n)Cc: (\n|$)/', $header), 'Bcc found in headers.');
}
+
+ /**
+ * @group internet
+ */
+ function test_lint(){
+ // prepare a simple multipart message
+ $mail = new TestMailer();
+ $mail->to(array('Möp <moep@example.com> ',' foo <foo@example.com>'));
+ $mail->from('Me <test@example.com>');
+ $mail->subject('This is a töst');
+ $mail->setBody('Hello Wörld,
+
+ please don\'t burn, okay?
+ ');
+ $mail->attachContent('some test data', 'text/plain', 'a text.txt');
+ $msg = $mail->dump();
+ $msglines = explode("\n", $msg);
+
+ //echo $msg;
+
+ // ask message lint if it is okay
+ $html = new HTTPClient();
+ $results = $html->post('http://tools.ietf.org/tools/msglint/msglint', array('msg'=>$msg));
+ $this->assertTrue($results !== false);
+
+ // parse the result lines
+ $lines = explode("\n", $results);
+ $rows = count($lines);
+ $i=0;
+ while(trim($lines[$i]) != '-----------' && $i<$rows) $i++; //skip preamble
+ for($i=$i+1; $i<$rows; $i++){
+ $line = trim($lines[$i]);
+ if($line == '-----------') break; //skip appendix
+
+ // get possible continuation of the line
+ while($lines[$i+1][0] == ' '){
+ $line .= ' '.trim($lines[$i+1]);
+ $i++;
+ }
+
+ // check the line for errors
+ if(substr($line,0,5) == 'ERROR' || substr($line,0,7) == 'WARNING'){
+ // ignore some errors
+ if(strpos($line, "missing mandatory header 'return-path'")) continue; #set by MDA
+ if(strpos($line, "bare newline in text body decoded")) continue; #seems to be false positive
+
+ // get the context in which the error occured
+ $errorin = '';
+ if(preg_match('/line (\d+)$/', $line, $m)){
+ $errorin .= "\n".$msglines[$m[1] - 1];
+ }
+ if(preg_match('/lines (\d+)-(\d+)$/', $line, $m)){
+ for($x=$m[1]-1; $x<$m[2]; $x++){
+ $errorin .= "\n".$msglines[$x];
+ }
+ }
+
+ // raise the error
+ throw new Exception($line.$errorin);
+ }
+ }
+
+ }
}
//Setup VIM: ex: et ts=4 :
diff --git a/_test/tests/inc/pageutils_clean_id.test.php b/_test/tests/inc/pageutils_clean_id.test.php
index 478fd2bc4..f67109ba3 100644
--- a/_test/tests/inc/pageutils_clean_id.test.php
+++ b/_test/tests/inc/pageutils_clean_id.test.php
@@ -43,6 +43,9 @@ class init_clean_id_test extends DokuWikiTest {
$tests[] = array('ns._#!ns:page','false','ns._ns:page');
$tests[] = array('ns_:page',false,'ns:page');
$tests[] = array('page...page','false','page...page');
+ $tests[] = array('page---page','false','page---page');
+ $tests[] = array('page___page','false','page_page');
+ $tests[] = array('page_-.page','false','page_-.page');
$tests[] = array(':page',false,'page');
$tests[] = array(':ns:page',false,'ns:page');
$tests[] = array('page:',false,'page');
diff --git a/_test/tests/inc/parser/parser_table.test.php b/_test/tests/inc/parser/parser_table.test.php
index 96789c38c..542a307b8 100644
--- a/_test/tests/inc/parser/parser_table.test.php
+++ b/_test/tests/inc/parser/parser_table.test.php
@@ -270,6 +270,64 @@ def');
);
$this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
}
+
+ function testCellRowSpanFirstRow() {
+ $this->P->addMode('table',new Doku_Parser_Mode_Table());
+ $this->P->parse('
+abc
+|::: ^ d:::^:::| ::: |
+| b ^ e | | ::: |
+|c ^ ::: | |:::|
+def');
+
+ $calls = array (
+ array('document_start',array()),
+ array('p_open',array()),
+ array('cdata',array("\n\nabc")),
+ array('p_close',array()),
+ array('table_open',array(4, 3, 6)),
+ array('tablerow_open',array()),
+ array('tablecell_open',array(1,NULL,1)),
+ array('cdata',array('')),
+ array('tablecell_close',array()),
+ array('tableheader_open',array(1,'right',1)),
+ array('cdata',array(' d:::')),
+ array('tableheader_close',array()),
+ array('tableheader_open',array(1,NULL,1)),
+ array('cdata',array('')),
+ array('tableheader_close',array()),
+ array('tablecell_open',array(1,NULL,3)),
+ array('cdata',array('')),
+ array('tablecell_close',array()),
+ array('tablerow_close',array()),
+ array('tablerow_open',array()),
+ array('tablecell_open',array(1,NULL,1)),
+ array('cdata',array(' b ')),
+ array('tablecell_close',array()),
+ array('tableheader_open',array(1,'left',2)),
+ array('cdata',array(' e ')),
+ array('tableheader_close',array()),
+ array('tablecell_open',array(1,NULL,1)),
+ array('cdata',array(' ')),
+ array('tablecell_close',array()),
+ array('tablerow_close',array()),
+ array('tablerow_open',array()),
+ array('tablecell_open',array(1,'left',1)),
+ array('cdata',array('c ')),
+ array('tablecell_close',array()),
+ array('tablecell_open',array(1,NULL,1)),
+ array('cdata',array(' ')),
+ array('tablecell_close',array()),
+ array('tablerow_close',array()),
+
+ array('table_close',array(69)),
+ array('p_open',array()),
+ array('cdata',array('def')),
+ array('p_close',array()),
+ array('document_end',array()),
+ );
+ $this->assertEquals(array_map('stripbyteindex',$this->H->calls),$calls);
+ }
function testCellAlignmentFormatting() {
$this->P->addMode('table',new Doku_Parser_Mode_Table());