blob: 9ad695249e445e9ac6035a77e3ed9d223d33eec9 [file] [log] [blame]
use strict;
use lib '.';
use Texinfo::ModulePath (undef, undef, undef, 'updirs' => 2);
require 't/test_utils.pl';
my $XS_convert = Texinfo::XSLoader::XS_convert_enabled();
my $itemize_arguments_text = '
@itemize ---
@item item ---
@end itemize
@itemize a\'\'b\'c
@item item a\'\'b\'c
@end itemize
@itemize @code{a\'\'b\'c}
@item item code @code{a\'\'b\'c}
@end itemize
@itemize a``b`c
@item item a``b`c
@end itemize
@itemize a\'"
@item item a\'"
@end itemize
@itemize b\\<&
@item item b\\<&
@end itemize
@itemize @today
@item item today @today{}
@end itemize
@itemize @aa{} @sc{@aa{}}
@item item aa @aa{} @sc{@aa{}}
@end itemize
@itemize @tie{}
@item item tie @tie{}
@end itemize
@itemize @tie{} a
@item item tie @tie{} a
@end itemize
@itemize @atchar
@item item atchar
@end itemize
@itemize @atchar{} a
@item item atchar @atchar{} a
@end itemize
@itemize @*
@item item * @*
@end itemize
@itemize @{
@item item @{
@end itemize
@itemize @registeredsymbol{}
@item item registeredsymbol @registeredsymbol{}
@end itemize
@itemize @registeredsymbol{} a
@item item registeredsymbol @registeredsymbol{} a
@end itemize
@itemize @enddots{}
@item item dots @enddots{}
@end itemize
@itemize @enddots{} a
@item item dots @enddots{} a
@end itemize
@itemize @^e @sc{@^e}
@item item e @^e @sc{@^e}
@end itemize
@itemize @^E @sc{@^E}
@item item E @^E @sc{@^E}
@end itemize
@itemize @~{@dotless{i}} @dotless{i} @sc{@~{@dotless{i}} @dotless{i}}
@item item dotless @~{@dotless{i}} @dotless{i} @sc{@~{@dotless{i}} @dotless{i}}
@end itemize
@itemize @udotaccent{r} @v{@\'{r}} @sc{@udotaccent{r} @v{@\'{r}}}
@item item complex a @udotaccent{r} @v{@\'{r}} @sc{@udotaccent{r} @v{@\'{r}}}
@end itemize
@itemize @={@,{@~{n}}} @sc{ @={@,{@~{n}}}}
@item item complex n @={@,{@~{n}}} @sc{ @={@,{@~{n}}}}
@end itemize
@itemize @asis
@item item asis @asis{}
@end itemize
@itemize @click{}
@item item click @click{}
@end itemize
@itemize @click{} a
@item item click @click{} a
@end itemize
@clickstyle @result
@itemize @click{}
@item item result click @click{}
@end itemize
@itemize @click{} a
@item item result click @click{}
@end itemize
@itemize @error{}
@item item error @error{}
@end itemize
@itemize @error{} a
@item item error @error{} a
@end itemize
@documentlanguage fr
@itemize @error{}
@item item fr error @error{}
@end itemize
@itemize @error{} a
@item item fr error @error{} a
@end itemize
';
my $mathjax_with_texinfo = '@displaymath
a@sup{b - \frac{\xi}{phi @copyright{}}} @dotless{i}
@end displaymath
Some @math{a @minus{} b @geq{} @AA{} @^e}.
';
# nothing special, just a way to have the same for all the
# info_js_dir tests
my $info_js_dir_test = '@node top
@top top
@node chap
@chapter Chapter
';
my $check_htmlxref_text = '
@node Top, (../there/no_existing_no_manual_direction), first, (dir)
@top top
@ref{a, b, c, no_existing_no_manual.info}
@ref{a, b, c, no_existing_no_manual.info}
@menu
* first::
* (other_no_existing_no_manual)::
* chapter::
@end menu
@node first, (no_existing_no_manual.info)
@node chapter, (chap_not_existing), (dir)node in dir
@chapter Chapter
@xref{(some_name_inf.inf)aa}.
';
my $top_node_up_implicit_text = '@node Top
@top The top
Just a top node.
@menu
* Chap::
@end menu
@node Chap
@chapter A chapter
Without the chapter, no up node from top is generated.
';
my $top_node_up_explicit_text =
'@node Top, (dir), (weird), (dir)
@top The top
Just a top node.
@menu
* Chap::
@end menu
@node Chap
@chapter A chapter
Without the chapter, no up node from top is generated.
';
my @test_cases = (
['verbatim_in_multitable_in_example',
'@example
@multitable @columnfractions 0.5 0.5
@item in item
@tab in tab
@item
@verbatim
in first column, verbatim
@end verbatim
@tab
@verbatiminclude inc_file.texi
@end multitable
@end example
'],
['commands_in_alt',
'@image{f--ile,,,alt -- @b{in b}}
@example
@image{f--ile,,,alt -- @b{in b}}
@end example
'],
['image_link_prefix',
'@image{image}', {},{'IMAGE_LINK_PREFIX' => '../img'}
],
['commands_in_abbr',
'@abbr{A, @b{abbr} -- b}.
@example
@abbr{A, @b{abbr} -- b}.
@end example
'],
['acronym_in_node_and_section',
'@node top
@top top
@node chap
@chapter chap
@node sec define
@section define
@acronym{GHJ, Good Hypo Jolly}
@node sec here is @acronym{GHJ}
@section here is @acronym{GHJ}
In text @acronym{GHJ}.
'],
['raw_html',
'@html
<i>
@end html
'],
['xml_protected_in_verb',
'@verbatim
<a>
@end verbatim
@verb{. <i> .}.
@verbatiminclude file_with_xml_chars.texi
'],
['index_and_node_same_name',
'@top top
@node index node
@cindex node
@printindex cp
'],
['documentdescription',
'@documentdescription
in @code{documentdescri---ption} --- @bullet{} @enddots{} @verb{:"verb:} @aa{} @^{@dotless{i}} @email{@code{some}body}
@end documentdescription
@top top
'],
['menu_in_documentdescription',
'@node Top
@top top
@documentdescription
@menu
* (f)b::
@end menu
@end documentdescription
', {'FORMAT_MENU' => 'menu'},
{'FORMAT_MENU' => 'menu'}],
['index_below',
'@top top
@chapter chap
@section sec
@cindex entry
@printindex cp
', {'test_split' => 'section'}, {'USE_NODES', 0}],
['letter_command_in_index',
'@node Top
@top top
@node chap
@chapter Chapter
@cindex @TH{}
@cindex @l{}
@cindex @^e
@printindex cp
'],
['U_in_index',
'@node Top
@top top
@node chap
@chapter Chapter
@cindex @U{0131} dotless i
@cindex @U{0074} letter t
@cindex @U{00B5} greek letter mu
@printindex cp
'],
['menu',
'
@node Top
@top
@menu
* (ggg):: description
@itemize
@item idescr
@end itemize
@html
in html
@end html
AAA
CCC
@itemize
@item iaa
@end itemize
@html
in html title
@end html
BBB
@itemize
@item ibb
@end itemize
* (manual)::
comment
* (after_comment):: description
in description
* (after_description)::
@detailmenu
* (detailggg):: detaildescription
@itemize
@item idetaildescr
@end itemize
@html
detailin detailhtml
@end html
detailAAA
detailCCC
@itemize
@item detailiaa
@end itemize
@html
detailin html detailtitle
@end html
detailBBB
@itemize
@item detailibb
@end itemize
* (detailmanual)::
detailcomment
* (detailafter_comment):: detaildescription
in detaildescription
* (detailafter_description)::
@end detailmenu
@end menu
', {'FORMAT_MENU' => 'menu', 'test_formats' => ['info']},
{'FORMAT_MENU' => 'menu'}],
['menu_in_example',
'@node Top
@example
@menu
* (entry)::
@cartouche
in cartouche in description in menu in example
@end cartouche
@cartouche
in cartouche in menu comment in menu in example
@end cartouche
* (node) menu:: a node in menu
* a menu name:(other) node.
@end menu
@end example
', {'FORMAT_MENU' => 'menu', 'test_formats' => ['info']},
{'FORMAT_MENU' => 'menu'}],
# the following tests are somewhat redundant with tests in
# XXsectioning.t, but here there is a clearer comparison with
# and without 'USE_NODES' here. There is no test of TOP_NODE_UP, here, however.
['top_node_up_implicit',
$top_node_up_implicit_text,
{}, {'TOP_NODE_UP_URL' => 'http://itop.example.org'},
],
['top_node_up_implicit_no_nodes',
$top_node_up_implicit_text,
{}, {'TOP_NODE_UP_URL' => 'http://itop.example.org', 'USE_NODES' => 0},
],
['top_node_up_explicit',
$top_node_up_explicit_text,
{}, {'TOP_NODE_UP_URL' => 'http://etop.example.org'},
],
['top_node_up_explicit_no_nodes',
$top_node_up_explicit_text,
{}, {'TOP_NODE_UP_URL' => 'http://etop.example.org', 'USE_NODES' => 0},
],
['character_number_leading_toc_stoc',
'@top top
@chapter 0
@unnumbered _
@section ?
@contents
@shortcontents
'],
['shortcontents_no_top',
'@chapter chap
@chapter chap2
@section sec
@shortcontents
', {}, {'CONTENTS_OUTPUT_LOCATION' => 'inline'}],
['test_xrefautomaticsectiontitle',
'@node Top
@top top
@menu
* chap::
@end menu
@node chap
@chapter chapter
@xrefautomaticsectiontitle on
@xref{chap}.
@xrefautomaticsectiontitle off
@xref{chap}.
'],
['test_xrefautomaticsectiontitle_off_first',
'
@xrefautomaticsectiontitle off
@node Top
@top top
@menu
* chap::
@end menu
@node chap
@chapter chapter
@xref{chap}.
@xrefautomaticsectiontitle on
@xref{chap}.
'],
['deftypefnnewline_for_copying_after',
'@copying
@deftypefun TYPE NAME ARGUMENTS...
BODY-OF-DESCRIPTION
@end deftypefun
@end copying
@insertcopying
@deftypefnnewline on
@insertcopying
@node Top
@top top
@node chap
@chapter Chapter
@deftypefun void something input
do something with input
@end deftypefun
'],
['deftypefnnewline_for_copying_before',
'
@deftypefnnewline on
@copying
@deftypefun TYPE NAME ARGUMENTS...
BODY-OF-DESCRIPTION
@end deftypefun
@end copying
@node Top
@top top
@node chap
@chapter Chapter
@deftypefun void something input
do something with input
@end deftypefun
']
,['tex_expanded_in_copying',
'@copying
@tex
aa
@end tex
@end copying
', {'EXPANDED_FORMATS' => ['tex']},
{'EXPANDED_FORMATS' => ['tex']}
],
['tex_expanded_in_caption_multiple_time',
'@float A, B
My float.
@caption{
@tex
aa
@end tex
}
@end float
@listoffloats A
', {'EXPANDED_FORMATS' => ['tex']},
{'EXPANDED_FORMATS' => ['tex']}
],
['titles',
'
@settitle @@title @sc{html} @code{test}
@node Top
@top Top of @@title @sc{html} @code{test}
Top.
Second paragraph.
', {}, {'SHOW_TITLE' => 1}],
['shorttitlepage',
'
@shorttitlepage @@title @sc{html} @code{test}
@node Top
@top Top of @@title @sc{html} @code{test}
Top.
Second paragraph.
', {}, {'SHOW_TITLE' => 1}],
['html_in_copying',
'
@copying
Copying
@html
in <b>html</b> in copying ``
@end html
@end copying
@node Top
@top top
'],
# the output has nested <a> in @printindex formatting for @item
# with @anchor on the line, which is invalid HTML. However, it
# is probably better not to consider this output to be a bug as
# it corresponds to the Texinfo code intention.
['anchor_on_vtable_item',
'@node Top
@top top
@node chap
@chapter Chap
@vtable @code
@item @anchor{label1}label1
Text1
@item @anchor{label2} label2
Text2
@item lab3
@end vtable
@node Idx
@chapter Idx
@printindex vr
@xref{label1}.
'],
['headings_after_lone_nodes',
'@node Top
@top top
@node chap
@chapter Chap
@node Qt
@subheading heading Qt
Some text
@node Other
@anchor{toto}
@nodedescription Describe Other
@c comment
@contents
@frenchspacing on
@tex
tex format raw
@end tex
@ignore
in ignore
@end ignore
@iftex
in iftex
@end iftex
@subsubheading Finally!
@node Not associated
Some para
@heading should not be associated
@node 2 not
@quotation
in quotation
@end quotation
@heading should not be associated
@node 3 not
@html
in html
@end html
@heading should not be associated
@node 4 not
@sp 2
@heading should not be associated
@node 5 not
@menu
* subnode::
@end menu
@heading should not be associated
@node subnode
', {'FORMAT_MENU' => 'sectiontoc'},],
['automatic_menus',
'@node Top
@top top
@node chap
@chapter Chap
@nodedescription Here we begin
@node sec
@section A section
@nodedescription Here in section
@node sec after
@section Sec after
', {'FORMAT_MENU' => 'menu'}, {'FORMAT_MENU' => 'menu'},],
['mathjax_with_texinfo',
$mathjax_with_texinfo,
{},
{'HTML_MATH' => 'mathjax'}],
['mathjax_with_texinfo_enable_encoding',
$mathjax_with_texinfo, {'test_formats' => ['latex_text', 'file_latex'],
'full_document' => 1,
'test_input_file_name' => 'mathjax_with_texinfo_enable_encoding.texi',},
{'HTML_MATH' => 'mathjax', 'ENABLE_ENCODING' => 1, 'OUTPUT_CHARACTERS' => 1}],
['mathjax_with_texinfo_no_convert_to_latex',
$mathjax_with_texinfo, {}, {'HTML_MATH' => 'mathjax',
'CONVERT_TO_LATEX_IN_MATH' => 0}],
['info_js_dir_html',
$info_js_dir_test, {}, {'INFO_JS_DIR' => 'js'}],
['empty_lines_at_beginning_no_setfilename',
undef, {'test_file' => 'empty_lines_at_beginning_no_setfilename.texi'}
],
['empty_lines_at_beginning_no_setfilename_no_element',
undef, {'test_file' => 'empty_lines_at_beginning_no_setfilename_no_element.texi'}
],
['check_htmlxref',
$check_htmlxref_text,
{}, {'CHECK_HTMLXREF' => 1}],
['check_htmlxref_ignore_ref_top_up',
$check_htmlxref_text,
{}, {'CHECK_HTMLXREF' => 1, 'IGNORE_REF_TO_TOP_NODE_UP' => 1}],
['text_before_top_and_contents_after_title',
'
Some text before top
@node Top
@top top
In top.
@chapter the chap
@contents
', {}, {'SHOW_TITLE' => 1, 'CONTENTS_OUTPUT_LOCATION' => 'after_title'}],
['text_before_top_and_summarycontents_after_title',
'
Some text before top
@node Top
@top top
In top.
@chapter the chap
@summarycontents
', {}, {'SHOW_TITLE' => 1, 'CONTENTS_OUTPUT_LOCATION' => 'after_title'}],
['uref_accented_letter',
'@uref{http://example.com/acc_@"a@ogonek{a}}
'],
['uref_accented_letter_ascii',
'@documentencoding US-ASCII
@uref{http://example.com/acc_@"a@ogonek{a}}
'],
['uref_accented_letter_latin1',
'@documentencoding ISO-8859-1
@uref{http://example.com/acc_@"a@ogonek{a}}
'],
['empty_titlefont',
'
@titlefont{}
'],
['end_of_line_in_uref',
'See the @uref{https://gcc.gnu.org/codingconventions.html#Spelling
Spelling, terminology and markup} section.'],
['fractions_rounding',
'@multitable @columnfractions .19 .30 .29 .22
@item In contents @tab In contents @tab In contents @tab Not in contents
@item @code{@@chapter} @tab @code{@@unnumbered} @tab @code{@@appendix} @tab @code{@@chapheading}
@end multitable
'],
['spaces_in_line_break_in_verb_w',
'@w{aaa bb
ccc}
@verb{|aaa bb
ccc|}
', {'init_files' => ['spaces_in_line_breaks.init'],
'skip' => $XS_convert ? 'Direct perl data change test' : undef,},
],
);
my $test_accents_sc_no_brace_commands_quotes = '@u{--a}
@^{--a}
@aa{} @AA{} @^e @^E @~{@dotless{i}} @dotless{i} @udotaccent{r} @v{@\'{r}} @={@,{@~{n}}}.
@equiv{}
@sc{@aa{} @AA{} @^e @^E @~{@dotless{i}} @dotless{i} @udotaccent{r} @v{@\'{r}} @={@,{@~{n}}}}.
--- -- \'` \'\' ``
@exclamdown{} @comma{} @copyright{} @dots{} @enddots{} @quotedblleft{} @error{} @expansion{}
@minus{} @registeredsymbol{}
';
my @test_cases_text = (
['commands_in_email',
'@email{endots @enddots{} @code{in code}}'
],
['no_use_iso',
'AA @^e --- -- \'` \'\' ``', {}, {'USE_ISO' => 0}],
['utf8_default',
'@documentencoding utf-8
AA @^e --- -- \'` \'\' ``'],
['utf8_enable_encoding',
'@documentencoding utf-8
AA @^e --- -- \'` \'\' ``', {}, {'ENABLE_ENCODING' => 1, 'OUTPUT_CHARACTERS' => 1}],
['utf8_enable_encoding_no_use_iso',
'@documentencoding utf-8
AA @^e --- -- \'` \'\' ``', {}, {'ENABLE_ENCODING' => 1,
'OUTPUT_CHARACTERS' => 1, 'USE_ISO' => 0}],
['utf8_use_numeric_entity',
'@documentencoding utf-8
AA @^e --- -- \'` \'\' ``', {}, {'USE_NUMERIC_ENTITY' => 1}],
['utf8_enable_encoding_use_numeric_entity',
'@documentencoding utf-8
AA @^e --- -- \'` \'\' ``', {}, {'ENABLE_ENCODING' => 1,
'OUTPUT_CHARACTERS' => 1, 'USE_NUMERIC_ENTITY' => 1}],
['ref_in_preformatted',
'@node Top
@menu
* chap nnn the node name::
@end menu
@example
Now @ref{chap nnn the
node name}
@end example
@node chap nnn the node name
'],
['mathjax_with_texinfo_html_text',
$mathjax_with_texinfo, {}, {'HTML_MATH' => 'mathjax'}],
['info_js_dir_html_text',
$info_js_dir_test, {}, {'INFO_JS_DIR' => 'js'}],
['split_html_text',
'@node Top
@top top
In top
@node chap
@chapter Chap
', {'test_split' => 'node'}, {'SPLIT' => 'node'}],
['footnotestyle_separate_html_text_no_monolithic',
'@footnotestyle separate
@node Top
@top top
In top@footnote{Additional text}.
@node chap
@chapter Chap
',{}, {'MONOLITHIC' => 0},],
);
my $file_name_case_insensitive_conflict_node = '@node Top
@top top section
@node chap
@chapter Chapter
@anchor{fOO}
@node Foo
@section Foo
@node Bar
@section Bar
@node foo
@section foo
@xref{foo}
@xref{Foo}
';
my @test_cases_file_text = (
# already tested in 30sectioning.t, but we want tests with all the possible
# entry points
['contents_with_only_top_node',
'
@node Top
@contents
',],
['top_node_top_contents',
'@contents
@node Top
@top Texinfo modules documentation
',],
['test_accents_sc_default',
undef, {'test_file' => 'punctuation_small_case_accents_utf8.texi'}],
['test_accents_sc_enable_encoding',
undef, {'test_file' => 'punctuation_small_case_accents_utf8.texi',},
{'ENABLE_ENCODING' => 1, 'OUTPUT_CHARACTERS' => 1}],
['test_accents_sc_default_latin1',
undef, {'test_file' => 'punctuation_small_case_accents_latin1.texi'}],
['test_accents_sc_enable_encoding_latin1',
undef, {'test_file' => 'punctuation_small_case_accents_latin1.texi',},
{'ENABLE_ENCODING' => 1, 'OUTPUT_CHARACTERS' => 1}],
['test_accents_sc_default_usascii',
undef, {'test_file' => 'punctuation_small_case_accents_us_ascii.texi'}],
['test_accents_sc_enable_encoding_usascii',
undef, {'test_file' => 'punctuation_small_case_accents_us_ascii.texi',},
{'ENABLE_ENCODING' => 1, 'OUTPUT_CHARACTERS' => 1}],
['test_accents_sc_use_numeric_entity',
undef, {'test_file' => 'punctuation_small_case_accents_utf8.texi'},
{'USE_NUMERIC_ENTITY' => 1}],
# test conversion to utf-8
['test_accents_sc_to_utf8_latin1',
undef, {'test_file' => 'punctuation_small_case_accents_latin1.texi'},
{'OUTPUT_ENCODING_NAME' => 'utf-8'}],
['test_accents_sc_enable_encoding_to_utf8_latin1',
undef, {'test_file' => 'punctuation_small_case_accents_latin1.texi',},
{'ENABLE_ENCODING' => 1,
'OUTPUT_CHARACTERS' => 1, 'OUTPUT_ENCODING_NAME' => 'utf-8'}],
['test_accents_sc_enable_encoding_to_utf8_usascii',
undef, {'test_file' => 'punctuation_small_case_accents_us_ascii.texi',},
{'ENABLE_ENCODING' => 1,
'OUTPUT_CHARACTERS' => 1, 'OUTPUT_ENCODING_NAME' => 'utf-8'}],
);
my $css_init_file_texinfo = '@node Top
@top top
@sansserif{SSSSSSSSSSs ssss}.
@code{@r{in r in code}}
@titlefont{in a new heading}
';
my @file_tests = (
['empty_node_in_html_title_no_sec_name',
'@node Top
@top top
@node
@chapter chap
', {}, {'SECTION_NAME_IN_TITLE' => 0, 'SPLIT' => 'chapter'}],
['empty_chapter_in_html_title',
'@node Top
@top top
@node chap
@chapter
', {}, {'SPLIT' => 'chapter'}],
# A big rule would be between chapter and section if BIG_RULE was not undef
['undef_split_and_big_rule',
'node Top
@top top
@node chap
@chapter Chapter
@node sec
@section Sec
', {}, {'SPLIT' => undef, 'BIG_RULE' => undef}
],
# the chapter file is named '.html', which is ok, but no file may be better
['empty_chapter_in_html_title_no_node_no_use_nodes',
'@node Top
@top top
@chapter
', {}, {'SPLIT' => 'chapter', 'USE_NODES' => 0}],
# test that the node name that goes in the redirection file is reproducible.
['redirection_same_labels',
'@node Top
@top the top
@menu
@c * @"i::
@c * @~{@dotless{i}}::
@c * @^i::
* umlaut::
* circumflex::
@end menu
@node umlaut
@chapter umlaut
@menu
* @"i::
* @~{@dotless{i}}::
@end menu
@node @"i
@node @~{@dotless{i}}
@node circumflex
@chapter circumflex
@menu
* @^i::
@end menu
@node @^i
', {'test_split' => 'section'}, {'SPLIT' => 'chapter'}],
['transliterated_names_conflicts',
undef,
{'test_file' => 'transliterated_names_conflicts.texi',
'test_split' => 'node'},
{'SPLIT' => 'node'},
],
['file_name_conflict_with_section',
'@node Top
@top top
@anchor{Chap}
@chapter Chap
', {},{'USE_NODES' => 0, 'SPLIT' => 'node'},
],
# this shows that a conflict cannot happen as the anchor with the
# same name as the file is in the file
['filenameconflictwithnonsplit',
'@node Top
@top top
@anchor{filenameconflictwithnonsplit}
', {}, {'SPLIT' => '', 'NODE_FILES' => 1}],
['file_name_conflict_with_Top',
'@node Top
@top top
@node Chapter
@chapter Chap
@anchor{index}
', {}, {'SPLIT' => 'node'},
],
# Note that a test with nodes and output files that differ only in case can
# only be tested with CASE_INSENSITIVE_FILENAMES set, otherwise on case
# insensitive file systems the tests results would be different from the
# results on case sensitive file systems. Also the files with names differing
# by case only would conflict and lead to errors if the reference file results
# are setup from an archive, or from source version control.
['file_name_case_insensitive_conflict_node',
$file_name_case_insensitive_conflict_node,
{}, {'SPLIT' => 'node', 'CASE_INSENSITIVE_FILENAMES' => 1},
],
['file_name_case_insensitive_conflict_node_no_redirections',
$file_name_case_insensitive_conflict_node,
{}, {'SPLIT' => 'node', 'NODE_FILES' => 0, 'CASE_INSENSITIVE_FILENAMES' => 1},
],
['file_name_case_insensitive_conflict_redirections',
'@node Top
@top top section
@chapter Chapter
@table @samp
@item foo
@anchor{foo}
Some text about @samp{foo}
@item Foo
@anchor{Foo}
Some text about @samp{Foo}
@end table
@xref{foo}
@xref{Foo}
', {}, {'SPLIT' => 'node', 'CASE_INSENSITIVE_FILENAMES' => 1},
],
['file_name_conflict_with_user_defined',
'@node Top
@top top
@node Chapter 1
@chapter Chap 1
@anchor{myanchor}
@node Chapter 2
@chapter Chap 2
', {'init_files' => ['redirection_file_collision_with_user_def.init']},
{'SPLIT' => 'chapter'},
],
['filenameconflictwithspecialelement',
'@node Top
@top top
@footnote{a footnote}
@node chap
@chapter chap
Need 2 elements for separate footnotes.
@anchor{filenameconflictwithspecialelement fot}
', {'init_files' => ['redirection_file_collision_with_special.init']},
{'SPLIT' => 'node', 'footnotestyle' => 'separate'},
],
['top_file_name_and_node_name_collision',
'@node my node
@chapter chap my node
@node other node
@chapter chapter
@top top
', {}, {'TOP_FILE' => 'my-node.html', 'USE_NODES', 0}],
['command_in_node_redirection',
'@node Top
@top t @r{in r}
@anchor{yyyy}
'],
['command_in_node_redirection_other_command',
'@node Top
@top t @r{in r}
@anchor{@sansserif{gg}}
'],
['command_in_node_redirection_same_command',
'@node Top
@top t @r{in r}
@anchor{@r{ancher}}
'],
['command_in_node_redirection_two_commands',
'@node Top
@top t @r{in r}
@anchor{@sansserif{ll} @r{jj}}
'],
# this tests more what happens for the subsequent redirections,
# in particular shows that what is in anchor is in global CSS context.
['command_in_node_redirection_multiple',
'@node Top
@top t @r{in r}
@anchor{yyyy}
@anchor{@sansserif{gg}}
@anchor{@r{ancher}}
@anchor{@sansserif{ll} @r{jj}}
',],
['set_unit_file_name_filepath',
'@node Top
@top top
@node chap
@chapter Chap
', {'init_files' => ['set_unit_file_name_filepath.pm']},
{'SPLIT' => 'node'},
],
# NOTE the result is incorrect, the first footnote text is at the
# end of the file but the link is towards the separate file.
# The manual states that the footnotestyle should be in the preamble,
# so it needs not to be fixed.
['footnotestyle_separate_late',
'@node Top
@top top
@node chap f
@chapter Chapter f
@footnote{in fchap 1}
@node chap s
@chapter Chapter s
@footnote{in fchap 2}
@footnotestyle separate
', {'test_split' => 'node'}, {'SPLIT' => 'node'}],
['itemize_arguments',
$itemize_arguments_text
],
['itemize_arguments_enable_encoding',
$itemize_arguments_text
, {}, {'ENABLE_ENCODING' => 1, 'OUTPUT_CHARACTERS' => 1}
],
['itemize_tieaccent',
'@itemize @tieaccent{ab}
@item item @tieaccent{ab}
@end itemize
@itemize @tieaccent{@aa{}@^e}
@item item @tieaccent{@aa{}@^e}
@end itemize
@itemize @tieaccent{@aa{}d}
@item item @tieaccent{@aa{}d}
@end itemize
@itemize @tieaccent{x@^e}
@item item @tieaccent{x@^e}
@end itemize
@itemize @tieaccent{g}
@item item @tieaccent{g}
@end itemize
@itemize @tieaccent{@^e}
@item item @tieaccent{@^e}
@end itemize
',
],
['check_htmlxref_no_use_nodes',
$check_htmlxref_text
, {}, {'CHECK_HTMLXREF' => 1, 'USE_NODES', 0}],
['check_htmlxref_menu',
$check_htmlxref_text
, {'FORMAT_MENU' => 'menu',}, {'FORMAT_MENU' => 'menu', 'CHECK_HTMLXREF' => 1}],
# in this test, there are three nodes with the same transliterations
# that end up in the same file even when split at node
['node_footnote_use_node',
undef,
# also tests for node without section command nor directions after
# a section, and Top without @top and chapter in menu
{'test_file' => 'node_footnote.texi', 'CHECK_NORMAL_MENU_STRUCTURE' => 0,},
{'FORMAT_MENU' => 'menu'}
],
['node_footnote_end',
undef,
# test with CHECK_NORMAL_MENU_STRUCTURE for node_footnote.texi
# only done here, to keep even though it is the default.
{'test_file' => 'node_footnote.texi', 'CHECK_NORMAL_MENU_STRUCTURE' => 1},
{'SPLIT' => '', 'USE_NODES' => 0}
],
# actually the same output as node_footnote_end.
['node_footnote_separated',
undef,
{'test_file' => 'node_footnote.texi', 'CHECK_NORMAL_MENU_STRUCTURE' => 0},
{'SPLIT' => '', 'USE_NODES' => 0,
'footnotestyle' => 'separate',}
],
['node_footnote_use_node_separate',
undef,
{'test_file' => 'node_footnote.texi', 'CHECK_NORMAL_MENU_STRUCTURE' => 0},
{'footnotestyle' => 'separate', 'FORMAT_MENU' => 'menu'}
],
['simplest_test_date_in_header',
undef,
{'test_file' => 'simplest.texi',},
{'SPLIT' => '', 'DATE_IN_HEADER' => 1}
],
['float_copying',
undef,
{'test_file' => 'float_copying.texi',},
{'SPLIT' => 'chapter', 'footnotestyle' => 'separate'}
],
# FIXME which TEXI2HTML options are really interesting for the test?
# The CHECK_NORMAL_MENU_STRUCTURE setting is relevant and to keep,
# even though it is set by default, to mark that it is on purpose.
['sectioning_check_menu_structure',
undef,
# tests for node with directions after section
{'test_file' => '../../tests/customization/sectioning.texi',
'CHECK_NORMAL_MENU_STRUCTURE' => 1},
{'TEXI2HTML' => 1, 'SPLIT' => 'chapter'}
],
['test_separated_contents_shortcontents',
'@contents
@node Top
@top top
@node chap
@chapter chapter
@node app
@appendix appendix
@shortcontents
',{},{'SPLIT' => 'node', 'CONTENTS_OUTPUT_LOCATION' => 'inline',}],
# There are some similar tests in *sectioning.t, but we use completly
# different input as input files as we want, here, independently,
# test all possibility regarding HTML output.
# the test of contents at the beginning of the file is in
# t/converters_tests.t to test more output formats.
# the big rule is set to be different from the normal rule to check the type
# of rule output
['contents_at_end',
undef, {'test_file' => 'contents_at_end.texi'},
{'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['contents_at_end_inline',
undef, {'test_file' => 'contents_at_end.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['contents_at_end_separate_element',
undef, {'test_file' => 'contents_at_end.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['contents_in_middle_chapter',
undef, {'test_file' => 'contents_in_middle_chapter.texi'},
{'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['contents_in_middle_chapter_inline',
undef, {'test_file' => 'contents_in_middle_chapter.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['contents_in_middle_chapter_separate_element',
undef, {'test_file' => 'contents_in_middle_chapter.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['contents_in_middle_section',
undef, {'test_file' => 'contents_in_middle_section.texi'},
{'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['contents_in_middle_section_inline',
undef, {'test_file' => 'contents_in_middle_section.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['contents_in_middle_section_separate_element',
undef, {'test_file' => 'contents_in_middle_section.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
# actually triple contents
['double_contents',
undef, {'test_file' => 'double_contents.texi'},
{'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_inline',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_separate_element',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_chapter',
undef, {'test_file' => 'double_contents.texi'},
{'SPLIT' => 'chapter', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_inline_chapter',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => 'chapter', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_separate_element_chapter',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => 'chapter', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_nodes',
undef, {'test_file' => 'double_contents.texi'},
{'SPLIT' => 'node', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_inline_nodes',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => 'node', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_separate_element_nodes',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => 'node', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_section',
undef, {'test_file' => 'double_contents.texi'},
{'SPLIT' => 'section', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_inline_section',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => 'section', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_separate_element_section',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => 'section', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_after_title',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'after_title',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_after_title_show_title',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'after_title', 'SHOW_TITLE' => 1,
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['double_contents_after_title_show_title_nodes',
undef, {'test_file' => 'double_contents.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'after_title', 'SHOW_TITLE' => 1,
'SPLIT' => 'not a reference split spec, use node',
'BIG_RULE' => '<hr style="height: 6px;">'}
],
# there is also a test in tests/ as texinfo_set_from_init_file
# has no effect in the test suite, such that the following does not
# really test what it should
['double_contents_book',
undef, {'test_file' => 'double_contents.texi',
'init_files' => ['book.pm']},
{'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">',
'FORMAT_MENU' => 'nomenu'}
],
# there are the same tests in tests/contents to test the command line
['no_content',
undef, {'test_file' => '../../tests/formatting/no_content.texi'},
{'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['no_content_inline',
undef, {'test_file' => '../../tests/formatting/no_content.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['no_content_separate_element',
undef, {'test_file' => '../../tests/formatting/no_content.texi'},
{'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['no_content_do_contents',
undef, {'test_file' => '../../tests/formatting/no_content.texi'},
{'contents' => 1,
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['no_content_do_contents_inline',
undef, {'test_file' => '../../tests/formatting/no_content.texi'},
{'contents' => 1, 'CONTENTS_OUTPUT_LOCATION' => 'inline',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['no_content_do_contents_separate_element',
undef, {'test_file' => '../../tests/formatting/no_content.texi'},
{'contents' => 1, 'CONTENTS_OUTPUT_LOCATION' => 'separate_element',
'SPLIT' => '', 'BIG_RULE' => '<hr style="height: 6px;">'}
],
['mathjax_with_texinfo_html_file',
$mathjax_with_texinfo,
{},
{'HTML_MATH' => 'mathjax'}],
['info_js_dir_html_file',
$info_js_dir_test, {}, {'INFO_JS_DIR' => 'js'}],
['info_js_dir_html_file_js_weblabels_file_undef',
$info_js_dir_test, {}, {'INFO_JS_DIR' => 'js', 'JS_WEBLABELS_FILE' => undef}],
['css_in_node_redirection_page',
'@node Top
@top top
@sansserif{SANS}.
@anchor{spot}
', {'init_files' => ['css_in_node_redirection_page.pm']}],
['base_for_css_info_in_init_test',
$css_init_file_texinfo,],
['text_css_info_in_init',
$css_init_file_texinfo, {'init_files' => ['test_css_info_functions.pm']}],
);
foreach my $test (@test_cases) {
push @{$test->[2]->{'test_formats'}}, 'html';
}
foreach my $test (@test_cases_text) {
push @{$test->[2]->{'test_formats'}}, 'html_text';
}
foreach my $test (@file_tests) {
push @{$test->[2]->{'test_formats'}}, 'file_html';
$test->[2]->{'test_input_file_name'} = $test->[0] . '.texi';
$test->[2]->{'full_document'} = 1 unless (exists($test->[2]->{'full_document'}));
}
foreach my $test (@test_cases_file_text) {
if (defined($test->[1])) {
$test->[2]->{'test_input_file_name'} = $test->[0] . '.texi';
$test->[2]->{'full_document'} = 1
unless (exists($test->[2]->{'full_document'}));
}
push @{$test->[2]->{'test_formats'}}, ('html_text', 'file_html');
}
run_all('html_tests', [@test_cases, @test_cases_text,
@test_cases_file_text, @file_tests]);