use strict; use lib '.'; use Texinfo::ModulePath (undef, undef, undef, 'updirs' => 2); require 't/test_utils.pl'; my @test_cases = ( ['simple', '@defindex idx'], ['many_lines', 'pagesizes @pagesizes 200mm,150mm following @@pagesizes arg afourpaper @afourpaper on line following afourpaper smallbook @smallbook on line following smallbook headings @headings on line following headings oddfooting @oddfooting on line following oddfooting everyheading @everyheading on line following everyheading everyfooting @everyfooting on line following everyfooting evenheading @evenheading on line following evenheading evenfooting @evenfooting on line following evenfooting oddheading @oddheading on line following need @need 0.1 on line following need @need 0.1 setchapternewpage @setchapternewpage on line following setchapternewpage raisesections @raisesections on line following raisesections lowersections @lowersections on line following lowersections kbdinputstyle code @kbdinputstyle code something afourpaper @afourpaper on line following afourpaper afourlatex @afourlatex on line following afourlatex afourwide @afourwide on line following afourwide paragraphindent asis @paragraphindent asis paragraphindent 0 @paragraphindent 0 paragraphindent none @paragraphindent none paragraphindent 4 @paragraphindent 4 firstparagraphindent insert @firstparagraphindent insert firstparagraphindent 3 @firstparagraphindent 3 exampleindent 6 @exampleindent 6 on line following exampleindent exampleindent 6 @exampleindent 6 footnotestyle @footnotestyle end footnotestyle @footnotestyle separate documentencoding @documentencoding US-ascii encoding name @documentencoding ISO-8859-1 frenchspacing @frenchspacing on frenchspacing @frenchspacing off fonttextsize @fonttextsize 10 everyheadingmarks @everyheadingmarks bottom on line following everyheadingmarks @allowcodebreaks false @allowcodebreaks true Text line followed by finalout on the same line and another below @finalout @finalout Text line after the finalout followed by a fianlout @finalout Text line after the text line followed by the finalout. Test text after finalout @finalout a word after finalout Line after finalout '], ['documentencoding_zero', '@documentencoding 0 '], ['also_not_line', ' page @page noindent @noindent refill @refill something @noindent noindent at beginning of line @noindent noindent on the preceding line @noindent noindent after space at beginning of line @page page at beginning of line @page After page on its own line. page @page noindent @noindent refill @refill novalidate @novalidate something @subheading special Only valid between iftex: vskip @vskip exdent @exdent line after exdent '], ['sp', ' Text line followed on the same line and another below @sp 1 @sp 2 Text line after the sp followed by a sp @sp 1 Text line after the text line followed by the sp. @ifnottex @sp 2 a number after sp @end ifnottex '], ['clickstyle', '@clickstyle @result A @click{} (result). @clickstyle@equiv A @click{} (equiv no space) '], ['clickstyle_no_end_of_line', '@clickstyle @result', ], ['bye', '@bye '], ['text_before_and_after_bye', 'Before bye @bye on bye line after bye '], ['invalid_clickstyle', ' @clickstyle @result on the same line A @click{} (result on the same line). @clickstyle @nocmd A @click{} (nocmd). @clickstyle something A @click{} (something). '], ['clickstyle_and_comments', '@clickstyle@comment a @clickstyle @comment b @clickstyle nocmd@comment c @clickstyle more than one word @comment d @clickstyle @result@comment e @clickstyle @result @comment f @clickstyle @result on the same line @comment g '], ['contents',' first @@contents @contents line following first content second @@contents @contents line following second content Third content on the following line on his own @contents Line following contents shortcontents @shortcontents eol shortcontents @shortcontents eol summarycontents @summarycontents line following summarycontents '], ['invalid_kbdinputstyle', 'kbdinputstyle @kbdinputstyle wrong arg on line following kbdinputstyle '], ['index_entries', '@cindex cindex entry @defindex truc @trucindex index truc '], ['command_line_in_paragraph', 'documentlanguage on its line @documentlanguage en line following documentlanguage '], ['bad_documentlanguage', ' documentlanguage @documentlanguage en @documentlanguage en @documentlanguage en @documentlanguage en after documentlanguage '], ['empty_documentencoding', '@documentencoding '], ['invalid_documentencoding', '@c this one is valid @documentencoding us-ascii@asis{} @documentencoding latin1@asis{a} @documentencoding YS-ASCII @@documentencoding @documentencoding bad encoding name @documentencoding 1 @documentencoding % @documentencoding @@ @documentencoding AAA@TeX{} @documentencoding BBB@\'e '], ['defindex_too_much_args', '@defindex chose machin' ], ['synindex_too_much_args', '@syncodeindex cp fn truc '], ['command_not_closed_in_documentencoding', '@documentencoding @strong{'], ['text_before_line_command', 'before title @title the title i@node LD Version Scripts --- @chapter LD Version Scripts ddd @contents @quotation aaa @author quotation author quotation @end quotation '], ['author_outside_titlepage_quotation', '@author Some One '], ['double_exdent', '@example Example Hoho. @example Nested Other line @exdent @exdent double exdented nested other line @end example @end example '], ); my @converted_test_cases = ( ['setfilename', '@setfilename file_comment@c comment @setfilename file_and_spaces @setfilename file_space_comment @c comment @setfilename @ @verb{: name :}@ ', {'full_document' => 1}], # this tests seems somewhat pointless, but it is not, as in perl # utf8 may mean a lax handling of UTF-8. We want to avoid using # that lax handling of UTF-8, better get errors early. ['documentencoding_utf8', '@documentencoding utf8 '], ['definfoenclose', ' definfoenclose phoo,//,\\ @definfoenclose phoo,//,\\ @phoo{bar} definfoenclose phi,:,: @definfoenclose phi,:,: @phi{bar} @strong{very strong} @definfoenclose strong,(strong:,:) @strong{ is it really strong? } '], ['definfoenclose_with_empty_arg', ' @definfoenclose headword, , : My @headword{something}. '], ['definfoenclose_nestings', '@definfoenclose phoo,//,\\ @code{@phoo{in phoo in code}}. @phoo{@code{in code in phoo}}. @phoo{ @center in center in phoo } '], ['no_empty_line_between_headings', '@top Top @subheading Subheading @chapter Chapter @section Section '], ['comments_in_text', ' @c lone comment Text line followed by a comment on the same line and another below @c comment @c comment Text line after the comment followed by a comment @comment c Text line after the text line followed by the comment. Comment at the end of the line @c comment '], ['noindent_indent', ' @indent First para @noindent qsddsqkdsqkkmljsqjsqodmmdsqdsmqj dqs sdq sqd sdq dsq sdq sqd sqd sdq sdq qsd dsq sdq dsq dssdq sdq sdq sdq dsq sdq dsq dsq sdq dsq sdqsd q @noindent noindent in para. @indent unneeded indent '], ['indent_in_quotation', '@quotation @indent indent in quotation @end quotation '], ['noindent_after_smallexample', 'To obtain. @smallexample $ wget \'http://savannah.gnu.org/cgi-bin/viewcvs/config/config/config.guess?rev=HEAD&content-type=text/plain\' $ wget \'http://savannah.gnu.org/cgi-bin/viewcvs/config/config/config.sub?rev=HEAD&content-type=text/plain\' @end smallexample @noindent Less recent versions are also present. '], ['noindent_in_paragraph', 'Begin para @noindent after noindent. Begin para2 @noindent after noindent2. '], ['noindent_empty_para', '@noindent aaa '], ['indent_in_command_in_paragraph', 'In para @code{@indent}. @asis{@b{in double command@noindent}}. '], ['empty_center', '@center '], ['empty_center_with_arg', '@center @w{} '], ['ref_in_center', '@node Top @top top @node chap @chapter Chapter @center @ref{Top} @center @ref{Top, ,title very long} ', {'full_document' => 1}], ['nodedescription', '@nodedescription out of any node @node Top @top top @node chap @chapter Chapter @nodedescription @emph{first description} of chapter @nodedescription second description @ of chapter '], ['footnote_in_center', '@center Centered text with a footnote@footnote{This footnote shows an important feature of the centered text. @example @table @asis @item item line @end table @end example } and text after the footnote. '], ['test_allowcodebreaks', '@node Top @node chap @macro testallowcodebreakspara {nr} Out of code --- out-of-code. @code{1aaa} @code{2aaa-} @code{-3bbb} @code{4aaa-bbb} @code{ 5aaa-bb} @code{6aaa-bb } @code{ccc 7aaa-bbb} @code{ccc 8aaa-bbb ddd} @code{9aaa-bbb rrr_vv} @samp{fff-- --- minus@minus{}b aa-tt@\'eff_gg aa@r{r-oman} anc-hor@anchor{A node\nr\}} @end macro @macro testallowcodebreaksexample{} @example @code{in-example} @end example @end macro Before first allowcodebreaks @testallowcodebreakspara{0} @testallowcodebreaksexample{} @allowcodebreaks false After false @testallowcodebreakspara{1} @testallowcodebreaksexample{} In w: @w{@testallowcodebreakspara{w} } @example @w{@code{in-example}} @end example @allowcodebreaks true After true @testallowcodebreakspara{2} @testallowcodebreaksexample{} ', {'full_document' => 1}], ['incorrect_allowcodebreaks_argument', '@allowcodebreaks _arg @code{b a} '], ['codequoteundirected_codequotebacktick', '@macro quotes ``simple-double--three---four----\'\' `simple\' quotedblleft: @quotedblleft{} @* code: @code{``simple-double--three---four----\'\' `simple\' quotedblleft: @quotedblleft{}} @* asis: @asis{``simple-double--three---four----\'\' `simple\' quotedblleft: @quotedblleft{}} @* strong: @strong{``simple-double--three---four----\'\' `simple\' quotedblleft: @quotedblleft{}} @* kbd: @kbd{``simple-double--three---four----\'\' `simple\' quotedblleft: @quotedblleft{}} @* samp: @samp{``simple-double--three---four----\'\' `simple\' quotedblleft: @quotedblleft{}} @* @end macro @macro allquotes @quotes{} @example @@codequoteundirected on @@codequotebacktick on @end example @codequoteundirected @codequotebacktick @quotes{} @example @@codequoteundirected off @@codequotebacktick off @end example @codequoteundirected off @codequotebacktick off @quotes{} @end macro @copying @allquotes{} @end copying @titlepage Titlepage @insertcopying @end titlepage @node Top @top test quotes @node chap @chapter Chapter @allquotes{} @example @allquotes{} @end example ', {'full_document' => 1}], ['comment_space_command_on_line', '@settitle Settitle @ @c settittle @node Top @comment @node Top @top top element@ @comment @top @node chap @comment @node chap @chapter Chapter@ @comment @chapter @frenchspacing on @c comment frenchspacing @microtype off@c comment microtype @cindex index entry @ @c index entry @heading Heading @ @c heading @printindex cp @c printindex @float Text, label float @end float @c end @listoffloats Text @ @c listoffloats @bye @c bye '], ['command_in_heading_footing', '@everyheading something @thispage @thischapternum In text @thispage @thischapternum text. In code @code{@thissection}. '], # got LaTeX formatting errors when in @example ['heading_command_in_commands', ' @code{ @everyheading in code } @example @everyheading in example @end example @quotation @everyheading in quotation @end quotation '], ['vskip', '@vskip 0pt plus 1filll '], ['kbdinputstyle', '@macro codekbdmacro @code{in code out of example @code{in nested code}}. @kbd{kbd out of example}. @code{kbd @kbd{in code}}. @code{for nesting @r{r in code @kbd{in r in code}}} in example @example @code{in code in example @code{in nested code}}. @kbd{kbd in example}. @code{kbd @kbd{in code} in example}. @code{for nesting in example @r{r in code in example @kbd{in r in code in example}}} @end example @end macro @@kbdinputstyle code @kbdinputstyle code @codekbdmacro{} @@kbdinputstyle example @kbdinputstyle example @codekbdmacro{} @@kbdinputstyle distinct @kbdinputstyle distinct @codekbdmacro{} '], ['kbdinputstyle_in_table', '@macro codekbdmacro @table @kbd @item i--tem out of example @end table @table @kbd{} @item braced i--tem out of example @end table in example @example @table @kbd @item i--tem in example @end table @table @kbd{} @item braced i--tem in example @end table @end example @end macro @@kbdinputstyle code @kbdinputstyle code @codekbdmacro{} @@kbdinputstyle example @kbdinputstyle example @codekbdmacro{} @@kbdinputstyle distinct @kbdinputstyle distinct @codekbdmacro{} '], ); # info and xml my %info_tests = ( 'comment_space_command_on_line' => 1, 'setfilename' => 1, 'documentencoding_utf8' => 1, ); my %xml_tests = ( 'codequoteundirected_codequotebacktick' => 1, 'definfoenclose_with_empty_arg' => 1, 'vskip' => 1, ); my %docbook_tests = ( 'setfilename' => 1, 'definfoenclose' => 1, 'no_empty_line_between_headings' => 1, 'comments_in_text' => 1, 'noindent_indent' => 1, 'empty_center' => 1, 'ref_in_center' => 1, 'footnote_in_center' => 1, 'command_in_heading_footing' => 1, ); my %docbooc_doc_tests = ( 'codequoteundirected_codequotebacktick' => 1, 'comment_space_command_on_line' => 1, ); my %latex_tests = ( 'noindent_indent' => 1, 'kbdinputstyle' => 1, 'kbdinputstyle_in_table' => 1, 'definfoenclose' => 1, ); foreach my $test (@converted_test_cases) { push @{$test->[2]->{'test_formats'}}, 'plaintext'; push @{$test->[2]->{'test_formats'}}, 'html_text'; push @{$test->[2]->{'test_formats'}}, 'latex'; if ($docbook_tests{$test->[0]}) { push @{$test->[2]->{'test_formats'}}, 'docbook'; } elsif ($docbooc_doc_tests{$test->[0]}) { push @{$test->[2]->{'test_formats'}}, 'docbook_doc'; } if ($info_tests{$test->[0]}) { push @{$test->[2]->{'test_formats'}}, 'info'; push @{$test->[2]->{'test_formats'}}, 'xml'; } if ($xml_tests{$test->[0]}) { push @{$test->[2]->{'test_formats'}}, 'xml'; } } run_all('misc_commands', [@test_cases, @converted_test_cases]);