summaryrefslogtreecommitdiffstats
path: root/regress/man
Commit message (Collapse)AuthorAgeFilesLines
* If the body of a man(7) .MT or .UR block is empty, do not emit a warning.Ingo Schwarze2022-08-022-4/+0
| | | | | | | | | | | | | | | Leaving the body empty is legitimate in this case if the author only wants to display a mail address or URI without providing a link text. Output modules already handle this correctly: terminal output shows just the URI without an accompanying text, HTML output uses the URI for *both* the href= attribute and as the content of the <a> element. The documentation was also wrong and claimed that an .MT or .UR block with an empty body would produce no output. As explained above, this isn't true. Bogus warning reported by Alejandro Colomar <alx dot manpages at gmail dot com>.
* While the HTML standard allows multiple <h1> elements in the sameIngo Schwarze2022-07-064-11/+11
| | | | | | | | | | | | document, <h1> is intended for top level headers, and most of the sections in a manual page can hardly be considered top-level. It is more usual to use <h1> only for the main title of the document of for the site name. Consequently, move .Sh/.SH from <h1> to <h2> and .Ss/.SS from <h2> to <h3>, freeing <h1> for use by header.html in man.cgi(8). Discussed with Anna Vyalkova <cyber at sysrq dot in>.
* Element next-line scopes may nest, so man_breakscope() may have toIngo Schwarze2022-04-284-3/+41
| | | | | | | | break multiple element next-line scopes at the same time, similar to what man_descope() already does for unconditional rewinding. This fixes an assertion failure that tb@ found with afl(1), caused by .SH .I .I .BI and similar sequences of macros without arguments.
* The .AT, .DT, and .UC macros are allowed inside next-line scopeIngo Schwarze2022-04-2710-2/+98
| | | | | | and never produce output at the place of their invocation. Minibugs found while investigating unrelated afl(1) reports from tb@.
* Do not die on an assertion if an input file contains no sectionIngo Schwarze2022-04-133-3/+5
| | | | | | | | | whatsoever and ends with a broken next-line scope. Obviously, this cannot happen in a real manual page, but mandoc(1) should not die even when fed absurd input. This bug was independently reported by both jsg@ and tb@ who both found it with afl(1).
* delete the two pairs of extra blank lines from expected man(7) terminalIngo Schwarze2021-06-28104-416/+22
| | | | output that are no longer printed since man_term.c rev. 1.236
* In HTML output, avoid printing a newline right after <pre>Ingo Schwarze2020-10-165-75/+37
| | | | | | | | and right before </pre> because that resulted in vertical whitespace not requested by the manual page author. Formatting bug reported by Aman Verma <amanraoverma plus vim at gmail dot com> on discuss@.
* Element next-line scopes can nest. Consequently, even when closingIngo Schwarze2020-09-095-10/+34
| | | | | | | | one element next-line scope, the MAN_ELINE flag must not yet be cleared if the parent macro is another element macro having next-line scope, or an assertion failure is caused if all this is wrapped in another macro that has block next-line scope, for example .TP. Bug found in an afl run performed by Jan Schreiber <jes at posteo dot de>.
* trivial adjustment of the desired test resultsIngo Schwarze2020-07-215-22/+22
| | | | after getting rid of the "copyless" crutch
* In fragment identifiers, use ~%d for ordinal suffixes,Ingo Schwarze2020-04-203-5/+5
| | | | | | | | | and reserve the character '~' for that purpose. Bug found by validator.w3.org in openssl(1), which contains both a tag "tls1_2" and a second instance of a tag "tls1", which also resulted in "tls1_2", causing a clash. Now, the second instance of "tls1" is rendered as "tls1~2" instead, employing the newly reserved '~'.
* automatically tag .SH and .SS in man(7) terminal outputIngo Schwarze2020-04-047-2/+18
| | | | in the same way as it was done for .Sh and .Ss in mdoc(7)
* Split tagging into a validation part including prioritizationIngo Schwarze2020-03-1318-19/+176
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in tag.{h,c} and {mdoc,man}_validate.c and into a formatting part including command line argument checking in term_tag.{h,c}, html.c, and {mdoc|man}_{term|html}.c. Immediate functional benefits include: * Improved prioritization of automatic tags for .Em and .Sy. * Avoiding bogus automatic tags when .Em, .Fn, or .Sy are explicitly tagged. * Explicit tagging of .Er and .Fl now works in HTML output. * Automatic tagging of .IP and .TP now works in HTML output. But mainly, this patch provides clean earth to build further improvements on. Technical changes: * Main program: Write a tag file for ASCII and UTF-8 output only. * All formatters: There is no more need to delay writing the tags. * mdoc(7)+man(7) formatters: No more need for elaborate syntax tree inspection. * HTML formatter: If available, use the "string" attribute as the tag. * HTML formatter: New function to write permalinks, to reduce code duplication. Style cleanup in the vicinity while here: * mdoc(7) terminal formatter: To set up bold font for children, defer to termp_bold_pre() rather than calling term_fontpush() manually. * mdoc(7) terminal formatter: Garbage collect some duplicate functions. * mdoc(7) HTML formatter: Unify <code> handling, delete redundant functions. * Where possible, use switch statements rather than if cascades. * Get rid of some more Yoda notation. The necessity for such changes was first discussed with kn@, but i didn't bother him with a request to review the resulting -673/+782 line patch.
* Introduce the concept of nodes that are semantically transparent:Ingo Schwarze2020-02-2723-14/+291
| | | | | | | | | | | | | | they are skipped when looking for previous or following high-level macros. Examples include roff(7) .ft, .ll, and .ta, mdoc(7) .Sm and .Tg, and man(7) .DT and .PD. Use this concept for a variety of improved decisions in various validators and formatters. While here, * remove a few const qualifiers on struct arguments that caused trouble; * get rid of some more Yoda notation in the vicinity; * and apply some other stylistic improvements in the vicinity. I found this class of issues while considering .Tg patches from kn@.
* Align to the new, sane behaviour of the groff_mdoc(7) .Dd macro:Ingo Schwarze2020-01-197-7/+7
| | | | | | | | without an argument, use the empty string, and always concatenate all arguments, no matter their number. This allows reducing the number of arguments of mandoc_normdate() and some other simplifications, at the same time polishing some error messages by adding the name of the macro in question.
* Simplify maintainer targets in OpenBSD: EQN and TBL variablesIngo Schwarze2020-01-081-11/+2
| | | | | | no longer exist and NROFF/NOPTS were replaced with GROFF/GOPTS. This doesn't change how things work in the protable version of the test suite.
* adapt to new <p> output logic (html.c rev. 1.260)Ingo Schwarze2019-09-038-28/+12
|
* Wrap .Sh/.SH sections and .Ss/.SS subsections in HTML <section> elementsIngo Schwarze2019-03-013-0/+10
| | | | | | as recommended for accessibility by the HTML 5 standard. Triggered by a similar, but slightly different suggestion from Laura Morales <lauretas at mail dot com>.
* Remove the HTML title= attributes which harmed accessibility andIngo Schwarze2019-01-114-8/+8
| | | | | | | violated the principle of separation of content and presentation. Instead, implement the tooltips purely in CSS. Thanks to John Gardner <gardnerjohng at gmail dot com> for suggesting most of the styling in the new ::before rules.
* Finally, represent the man(7) .PP and .HP macros by the naturalIngo Schwarze2019-01-0624-42/+327
| | | | | | | | | | | choice, which is the <p> HTML element. On top of the previous fill-mode improvements, the key to making this possible is to automatically close the <p> when required: before headers, subsequent paragraphs, lists, indented blocks, synopsis blocks, tbl(7) blocks, and before blocks using no-fill mode. In man(7) documents, represent the .sp request by a blank line in no-fill mode and in the same way as .PP in fill mode.
* In no-fill mode, avoid bogus blank lines in two situations:Ingo Schwarze2019-01-052-1/+33
| | | | | 1. After the last child; the parent will take care of the line break. 2. At the .YS macro; the end of the preceding .SY already broke the line.
* In groff, when the .SY block macro occurs in no-fill mode,Ingo Schwarze2019-01-054-2/+66
| | | | the output line gets broken after the head. Do the same.
* Slowly start doing more HTML output tests, in this case for theIngo Schwarze2019-01-054-12/+44
| | | | | | | | | | | | | | | | | | | interaction of .nf and .RS, related to man_macro.c rev. 1.106. HTML regression testing is tricky because it is extremely prone to over-testing, i.e. unintentional testing for volatile formatting details which are irrelevant for deciding whether the HTML output is good or bad. Minor changes to the formatter - which is still heavily under development - might result in the necessity to repeatedly adjust many test cases. Then again, HTML syntax rules are so complicated that without regression testing, the risk is simply too high that later changes will re-introduce issues that were already fixed earlier. Let's just try to design the tests very carefully in such a way that the *.out_html files contain nothing that is likely to change, and defer testing in cases where the HTML output is not yet clean enough to allow designing tests in such a way.
* catch up with the changed order of warnings;Ingo Schwarze2018-12-312-2/+2
| | | | related to man_validate.c rev. 1.145
* Rename mandoc_getarg() to roff_getarg() and pass it the roff parserIngo Schwarze2018-12-213-13/+14
| | | | | | | | | | | | | | | | | | struct as an argument such that after copy-in, it can call roff_expand() once again, which used to be called roff_res() before this. This fixes a subtle low-level roff(7) parsing bug reported by Fabio Scotoni <fabio at esse dot ch> in the 4.4BSD-Lite2 mdoc.samples(7) manual page, because that page used an escaped escape sequence in a macro argument. To expand escaped escape sequences in quoted mdoc(7) arguments, too, stop bypassing the call to roff_getarg() in mdoc_argv.c, function args() for this case. This does not solve the case of escaped escape sequences in quoted .Bl -column phrases yet. Because roff_expand() can make the string longer, roff_getarg() can no longer operate in-place but needs to malloc(3) the returned string. In the high-level parsers, free(3) that string after processing it.
* Clean up the validation of .Pp, .PP, .sp, and .br. Make sure allIngo Schwarze2018-12-044-2/+12
| | | | | | | | | | | | | | combinations are handled, and are handled in a systematic manner. This resolves some erratic duplicate handling, handles a number of missing cases, and improves diagnostics in various respects. Move validation of .br and .sp to the roff validation module rather than doing that twice in the mdoc and man validation modules. Move the node relinking function to the roff library where it belongs. In validation functions, only look at the node itself, at previous nodes, and at descendants, not at following nodes or ancestors, such that only nodes are inspected which are already validated.
* In the validators, translate obsolete macro aliases (Lp, Ot, LP, P)Ingo Schwarze2018-12-031-2/+2
| | | | | | to the standard forms (Pp, Ft, PP) up front, such that later code does not need to look for the obsolete versions. This reduces the risk of incomplete handling.
* support tail arguments on the .ME and .UE macros,Ingo Schwarze2018-08-146-16/+33
| | | | used for example in the ditroff(7) manual of the groff package
* Now that we have the -Wstyle message level, downgrade six warningsIngo Schwarze2017-07-064-5/+5
| | | | | | that are not syntax mistakes and that do not cause wrong formatting or content to style suggestions. Also upgrade two warnings that may cause information loss to errors.
* Messages of the -Wbase level now print STYLE:. Since thisIngo Schwarze2017-07-04129-227/+279
| | | | | | | | causes horrible churn anyway, profit of the opportunity to stop excessive testing, such that this is hopefully the last instance of such churn. Consistently use OpenBSD RCS tags, blank .Os, blank fourth .TH argument, and Mdocdate like everywhere else. Use -Ios=OpenBSD for platform-independent predictable output.
* test new MT macroIngo Schwarze2017-06-258-1/+100
|
* cope with changes in BASE messagesIngo Schwarze2017-06-2532-32/+32
|
* style message about missing RCS ids; inspired by mdoclintIngo Schwarze2017-06-1734-2/+34
|
* if .in is used inside the .TP head, it's always relativeIngo Schwarze2017-06-173-1/+35
|
* improve rounding rules for scaling unitsIngo Schwarze2017-06-144-10/+10
| | | | in horizontal orientation in the terminal formatter
* Partial support for the \n[an-margin] number register.Ingo Schwarze2017-06-133-1/+42
| | | | | | | | | | | | | | | Manuals autogenerated from reStructuredText are reckless enough to peek at this non-portable, implementation-dependent, highly groff-specific internal register - for no good reason, because the man(7) language natively provides in a much simpler way what they are trying to emulate here with much fragility. A full implementation would be very hard because it would require access to output-device-specific formatting data at the roff(7) preprocessor stage, which mandoc doesn't support at all. So hardcode a few magic numbers as reStructuredText expects them for terminal output. For other output modes (like HTML), code using this register is utterly broken anyway.
* ignore blank lines in man(7) next line scope;Ingo Schwarze2017-06-0316-2/+55
| | | | strange groff edge case behaviour found in multimedia/mjpegtools
* Move .sp to the roff modules. Enough infrastructure is in placeIngo Schwarze2017-05-051-0/+4
| | | | now that this actually saves code: -70 LOC.
* Now that markdown output is tested for almost everything, test allIngo Schwarze2017-03-081-0/+1
| | | | | | input files in -T markdown output mode by default and only mark those files with SKIP_MARKDOWN that are not to be tested. Much easier to read, and almost minus 40 lines of Makefile code.
* more tests for .IP/.nf interaction that i forgot to commitIngo Schwarze2017-02-172-2/+69
|
* Finally port the OpenBSD regression suite.Ingo Schwarze2017-02-08218-0/+4254
| | | | | Both kristaps@ and wiz@ repeated asked for this, literally for years.
* Move the regression suite to the attic.Ingo Schwarze2014-03-0317-127/+0
| | | | | | | It has not been used or maintained for several years, and we won't start using it now. Devlopment regression testing is done in OpenBSD, and there is no value in maintaining two regression suites in parallel.
* Forgot to add regression tests.Kristaps Dzonsons2010-05-251-0/+15
|
* Test .SH with only empty paragraph. Don't test .IP without body.Joerg Sonnenberger2010-05-221-0/+3
|
* Multiple empty .PPs don't add a vspace eitherJoerg Sonnenberger2010-05-171-0/+3
|
* Add support for .AT. Properly implement .UC. Add regress tests.Joerg Sonnenberger2010-05-1713-0/+67
|
* Tests for sane and insane handling of lines before and after .SH/.SSJoerg Sonnenberger2010-05-172-0/+23
|
* Add a test case for nesting of .RS/.REJoerg Sonnenberger2010-05-161-0/+16