From 7fed52f609285e52adfb0365c0fdc3ce5fd496c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Thu, 13 Jul 2017 11:42:59 +0200 Subject: [PATCH 001/117] perl dependency renamed to perl-interpreter --- doxygen.spec | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index 6987a1d..a051e84 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -2,7 +2,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.13 -Release: 9%{?dist} +Release: 10%{?dist} # No version is specified. License: GPL+ @@ -20,7 +20,7 @@ Patch103: doxygen-1.8.13-verticl_bar_latex.patch Patch104: doxygen-1.8.13-C#-property-initializer-parsing.patch Patch105: doxygen-1.8.13-non-reachable-links.patch -BuildRequires: perl +BuildRequires: perl-interpreter %if ! 0%{?_module_build} BuildRequires: tex(dvips) BuildRequires: tex(latex) @@ -45,7 +45,7 @@ BuildRequires: bison BuildRequires: cmake BuildRequires: xapian-core-devel -Requires: perl +Requires: perl-interpreter %description Doxygen can generate an online class browser (in HTML) and/or a @@ -172,6 +172,10 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Thu Jul 13 2017 Petr Pisar - 1:1.8.13-10 +- perl dependency renamed to perl-interpreter + + * Tue Jul 04 2017 Than Ngo - 1:1.8.13-9 - backport to fix C# property initializer parsing - backport to fix non reachable links and redirected links in documentation From 26a05e8a1ad89660df19e0570a185c12c8a18d7c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 26 Jul 2017 06:30:57 +0000 Subject: [PATCH 002/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index a051e84..ec6e19b 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -2,7 +2,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.13 -Release: 10%{?dist} +Release: 11%{?dist} # No version is specified. License: GPL+ @@ -172,6 +172,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Wed Jul 26 2017 Fedora Release Engineering - 1:1.8.13-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Thu Jul 13 2017 Petr Pisar - 1:1.8.13-10 - perl dependency renamed to perl-interpreter From 1114a5c118ed50d2984f218c9b8ff363dd9d1743 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 2 Aug 2017 19:44:55 +0000 Subject: [PATCH 003/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index ec6e19b..ed5df63 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -2,7 +2,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.13 -Release: 11%{?dist} +Release: 12%{?dist} # No version is specified. License: GPL+ @@ -172,6 +172,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Wed Aug 02 2017 Fedora Release Engineering - 1:1.8.13-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + * Wed Jul 26 2017 Fedora Release Engineering - 1:1.8.13-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild From 42ab4a4b1e68b29814ab25aed36565cd0194a477 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 29 Dec 2017 17:13:22 +0100 Subject: [PATCH 004/117] update to 1.8.14 --- .gitignore | 1 + doxygen-1.8.13-#775493.patch | 93 --- doxygen-1.8.13-#776988.patch | 38 -- ...8.13-C#-property-initializer-parsing.patch | 38 -- doxygen-1.8.13-non-reachable-links.patch | 568 ------------------ doxygen-1.8.13-verticl_bar_latex.patch | 14 - doxygen-xmlgen-regression.patch | 24 - doxygen.spec | 13 +- sources | 2 +- 9 files changed, 7 insertions(+), 784 deletions(-) delete mode 100644 doxygen-1.8.13-#775493.patch delete mode 100644 doxygen-1.8.13-#776988.patch delete mode 100644 doxygen-1.8.13-C#-property-initializer-parsing.patch delete mode 100644 doxygen-1.8.13-non-reachable-links.patch delete mode 100644 doxygen-1.8.13-verticl_bar_latex.patch delete mode 100644 doxygen-xmlgen-regression.patch diff --git a/.gitignore b/.gitignore index 3469b7e..91d2359 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.11.src.tar.gz /doxygen-1.8.12.src.tar.gz /doxygen-1.8.13.src.tar.gz +/doxygen-1.8.14.src.tar.gz diff --git a/doxygen-1.8.13-#775493.patch b/doxygen-1.8.13-#775493.patch deleted file mode 100644 index 0a20583..0000000 --- a/doxygen-1.8.13-#775493.patch +++ /dev/null @@ -1,93 +0,0 @@ -diff --git a/src/commentscan.l b/src/commentscan.l -index fad09d9..f26cabd 100644 ---- a/src/commentscan.l -+++ b/src/commentscan.l -@@ -125,6 +125,8 @@ static bool handleCopyBrief(const QCString &); - static bool handleCopyDetails(const QCString &); - static bool handleParBlock(const QCString &); - static bool handleEndParBlock(const QCString &); -+static bool handleParam(const QCString &); -+static bool handleRetval(const QCString &); - - typedef bool (*DocCmdFunc)(const QCString &name); - -@@ -247,7 +249,7 @@ static DocCmdMap docCmdMap[] = - { "line", 0, TRUE }, - { "note", 0, TRUE }, - { "par", 0, TRUE }, -- { "param", 0, TRUE }, -+ { "param", &handleParam, TRUE }, - { "tparam", 0, TRUE }, - { "post", 0, TRUE }, - { "pre", 0, TRUE }, -@@ -257,7 +259,7 @@ static DocCmdMap docCmdMap[] = - { "return", 0, TRUE }, - { "returns", 0, TRUE }, - { "exception", 0, TRUE }, -- { "retval", 0, TRUE }, -+ { "retval", &handleRetval, TRUE }, - { "sa", 0, TRUE }, - { "see", 0, TRUE }, - { "since", 0, TRUE }, -@@ -971,6 +973,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" - %x XRefItemParam2 - %x XRefItemParam3 - %x FileDocArg1 -+%x ParamArg1 - %x EnumDocArg1 - %x NameSpaceDocArg1 - %x PackageDocArg1 -@@ -1564,6 +1567,30 @@ RCSTAG "$"{ID}":"[^\n$]+"$" - BEGIN( Comment ); - } - -+ /* --------- handle arguments of the param command ------------ */ -+{ID}/{B}*"," { -+ if (yytext[0]=='_' && Config_getBool(MARKDOWN_SUPPORT)) -+ { -+ addOutput('\\'); -+ } -+ addOutput(yytext); -+ } -+"," { -+ addOutput(" , "); -+ } -+{ID} { -+ if (yytext[0]=='_' && Config_getBool(MARKDOWN_SUPPORT)) -+ { -+ addOutput('\\'); -+ } -+ addOutput(yytext); -+ BEGIN( Comment ); -+ } -+. { -+ unput(yytext[0]); -+ BEGIN( Comment ); -+ } -+ - /* --------- handle arguments of the file/dir/example command ------------ */ - - {DOCNL} { // no file name specfied -@@ -2400,6 +2427,22 @@ static bool handleFile(const QCString &) - return stop; - } - -+static bool handleParam(const QCString &) -+{ -+ // we need process param and retval arguments to escape leading underscores in case of -+ // markdown processing, see bug775493 -+ addOutput("@param "); -+ BEGIN( ParamArg1 ); -+ return FALSE; -+} -+ -+static bool handleRetval(const QCString &) -+{ -+ addOutput("@retval "); -+ BEGIN( ParamArg1 ); -+ return FALSE; -+} -+ - static bool handleDir(const QCString &) - { - bool stop=makeStructuralIndicator(Entry::DIRDOC_SEC); diff --git a/doxygen-1.8.13-#776988.patch b/doxygen-1.8.13-#776988.patch deleted file mode 100644 index f02cc8f..0000000 --- a/doxygen-1.8.13-#776988.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff --git a/src/doctokenizer.l b/src/doctokenizer.l -index a89570e..7545cba 100644 ---- a/src/doctokenizer.l -+++ b/src/doctokenizer.l -@@ -395,10 +395,14 @@ HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*{WS}*(("/")?)">" - HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p" - HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P" - HTMLKEYW {HTMLKEYL}|{HTMLKEYU} --REFWORD2 ("#"|"::")?((({ID}{TEMPLPART}?)|{ANONNS})("."|"#"|"::"|"-"|"/"))*({ID}{TEMPLPART}?(":")?){FUNCARG2}? --REFWORD3 ({ID}":")*{ID}":"? --REFWORD4 (({SCOPEPRE}*"operator"{OPMASKOP2})|(("::"|"#"){SCOPEPRE}*"operator"{OPMASKOP2})){CVSPEC}? --REFWORD {LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4} -+REFWORD2_PRE ("#"|"::")?((({ID}{TEMPLPART}?)|{ANONNS})("."|"#"|"::"|"-"|"/"))*({ID}{TEMPLPART}?(":")?) -+REFWORD2 {REFWORD2_PRE}{FUNCARG2}? -+REFWORD2_NOCV {REFWORD2_PRE}("("{FUNCPART}")")? -+REFWORD3 ({ID}":")*{ID}":"? -+REFWORD4_NOCV (({SCOPEPRE}*"operator"{OPMASKOP2})|(("::"|"#"){SCOPEPRE}*"operator"{OPMASKOP2})) -+REFWORD4 {REFWORD4_NOCV}{CVSPEC}? -+REFWORD {LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4} -+REFWORD_NOCV {LABELID}|{REFWORD2_NOCV}|{REFWORD3}|{REFWORD4_NOCV} - - %option noyywrap - %option yylineno -@@ -1011,6 +1015,14 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4} - unput(*yytext); - return 0; - } -+{REFWORD_NOCV}/{BLANK}("const")[a-z_A-Z0-9] { // see bug776988 -+ g_token->name=yytext; -+ return TK_WORD; -+ } -+{REFWORD_NOCV}/{BLANK}("volatile")[a-z_A-Z0-9] { // see bug776988 -+ g_token->name=yytext; -+ return TK_WORD; -+ } - {REFWORD} { // label to refer to - g_token->name=yytext; - return TK_WORD; diff --git a/doxygen-1.8.13-C#-property-initializer-parsing.patch b/doxygen-1.8.13-C#-property-initializer-parsing.patch deleted file mode 100644 index ea7e736..0000000 --- a/doxygen-1.8.13-C#-property-initializer-parsing.patch +++ /dev/null @@ -1,38 +0,0 @@ -commit 14a0bcc74a121525917aefc8c9034e283e94884b -Author: Piotr Szydełko -Date: Sat May 20 08:14:27 2017 +0200 - - Fix C# property initializer parsing - - int Property {get; set;} = 23; - The parser was ending the property at the closing bracket, - which resulted in the initializer being assigned to the following property. - -diff --git a/src/scanner.l b/src/scanner.l -index 9ff082d4..632c8a51 100644 ---- a/src/scanner.l -+++ b/src/scanner.l -@@ -6198,6 +6198,14 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - } - } - "{" { curlyCount++; } -+"}"{B}*"=" { -+ // fall back to next rule if it's not the right bracket -+ if (curlyCount != 0) REJECT; -+ current->initializer = "="; -+ current->endBodyLine=yyLineNr; -+ lastInitializerContext = FindMembers; -+ BEGIN(ReadInitializer); -+ } - "}" { - if (curlyCount) - { -@@ -6207,6 +6215,8 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - { - mtype = Method; - virt = Normal; -+ // not really important, but while we are at it -+ current->endBodyLine=yyLineNr; - unput(';'); - BEGIN(FindMembers); - } diff --git a/doxygen-1.8.13-non-reachable-links.patch b/doxygen-1.8.13-non-reachable-links.patch deleted file mode 100644 index ba34252..0000000 --- a/doxygen-1.8.13-non-reachable-links.patch +++ /dev/null @@ -1,568 +0,0 @@ -commit 31cf78d223e52fe078ad9b0651672aeb73926065 -Author: albert-github -Date: Sun Jun 4 12:52:50 2017 +0200 - - Correction of non reachable links and redirected links in documentation. - - The W3C link checker reported a number of problems regarding non reachable links and permanent redirects. - Most of these problems have been fixed with this patch - -diff --git a/doc/commands.doc b/doc/commands.doc -index 70b89c60..4357fba1 100644 ---- a/doc/commands.doc -+++ b/doc/commands.doc -@@ -433,7 +433,7 @@ Structural indicators - \par Example: - \include enum.h - \htmlonly -- Click here -+ Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - \latexonly -@@ -565,7 +565,7 @@ Structural indicators - \par Example: - \include func.h - \htmlonly -- Click here -+ Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - \latexonly -@@ -823,7 +823,7 @@ Structural indicators - \par Example: - \include overload.cpp - \htmlonly -- Click here -+ Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - \latexonly -@@ -1121,7 +1121,7 @@ Structural indicators - -
- \section cmdweakgroup \\weakgroup [(title)] -- \addindex \\addtogroup -+ \addindex \\weakgroup - Can be used exactly like \ref cmdaddtogroup "\\addtogroup", but has - a lower priority when it comes to resolving conflicting grouping - definitions. -@@ -1513,7 +1513,7 @@ ALIASES = "english=\if english" \ - \par Example: - \include par.cpp - \htmlonly -- Click here -+ Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - \latexonly -@@ -2704,7 +2704,7 @@ class Receiver - - \addindex \\startuml - Starts a text fragment which should contain a valid description of a -- PlantUML diagram. See http://plantuml.sourceforge.net/ for examples. -+ PlantUML diagram. See http://plantuml.com/ for examples. - The text fragment ends with \ref cmdenduml "\\enduml". - \note You need to install Java and the PlantUML's jar file, - if you want to use this command. The location of the jar file should be specified -diff --git a/doc/customize.doc b/doc/customize.doc -index f98ce0b4..9ef38919 100644 ---- a/doc/customize.doc -+++ b/doc/customize.doc -@@ -90,7 +90,7 @@ that are disabled by default: - - To tweak things like fonts or colors, margins, or other look \& feel - aspects of the HTML output in detail, you can create a different --cascading style sheet. -+cascading style sheet. - You can also let doxygen use a custom header and footer for each HTML - page it generates, for instance to make the output conform to the style - used on the rest of your web site. -@@ -390,7 +390,7 @@ files as one big DOM tree would not fit into memory. - - See the Breathe project for - an example that uses doxygen XML output from Python to bridge it with the --Sphinx document generator. -+Sphinx document generator. - - - \htmlonly -diff --git a/doc/docblocks.doc b/doc/docblocks.doc -index f0499c6f..81cfdd08 100644 ---- a/doc/docblocks.doc -+++ b/doc/docblocks.doc -@@ -260,7 +260,7 @@ Here is an example of the use of these comment blocks: - \include afterdoc.h - \htmlonly -

-- Click here -+ Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - \latexonly -@@ -281,7 +281,7 @@ Here is an example of a documented piece of C++ code using the Qt style: - \include qtstyle.cpp - \htmlonly -

-- Click here -+ Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - \latexonly -@@ -316,7 +316,7 @@ JavaDoc style and \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" set to YES: - \include jdstyle.cpp - \htmlonly -

-- Click here -+ Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - \latexonly -@@ -634,7 +634,7 @@ need for some more structure, like a block of verbatim text, a list, or a - simple table. For this doxygen supports the - Markdown - syntax, including parts of the --Markdown Extra -+Markdown Extra - extension. - - Markdown is designed to be very easy to read and write. -@@ -646,13 +646,13 @@ directly. For more details see chapter \ref markdown. - For programming language specific formatting doxygen has two - forms of additional markup on top of Markdown formatting. - --1. Javadoc like markup. -+1. Javadoc like markup. - See \ref commands for a complete overview of all commands supported by doxygen. --2. XML markup -+2. XML markup - as specified in the C# standard. See \ref xmlcmds for the XML commands supported by doxygen. - - If this is still not enough doxygen also supports a \ref htmlcmds "subset" of --the HTML markup language. -+the HTML markup language. - - \htmlonly - Go to the next section or return to the -diff --git a/doc/extsearch.doc b/doc/extsearch.doc -index cead851c..99a72195 100644 ---- a/doc/extsearch.doc -+++ b/doc/extsearch.doc -@@ -52,7 +52,7 @@ The data flow is shown in the following diagram: - - The first step is to make the search engine available via a web server. - If you use `doxysearch.cgi` this means making the --CGI binary -+CGI binary - available from the web server (i.e. be able to run it from a - browser via an URL starting with http:) - -@@ -187,7 +187,7 @@ The next subsections describe these interfaces in more detail. - \subsection extsearch_api_index Indexer input format - - The search data produced by doxygen follows the --Solr XML index message -+Solr XML index message - format. - - The input for the indexer is an XML file, which consists of one `` tag containing -@@ -224,12 +224,12 @@ Each field has a name. The following field names are supported: - - *text*: the documentation associated with the item. Note that only words are present, no markup. - - @note Due to the potentially large size of the XML file, it is recommended to use a --SAX based parser to process it. -+SAX based parser to process it. - - \subsection extsearch_api_search_in Search URL format - - When the search engine is invoked from a doxygen generated HTML page, a number of parameters are --passed to via the query string. -+passed to via the query string. - - The following fields are passed: - - *q*: the query text as entered by the user -@@ -247,14 +247,14 @@ It represents a query for the word 'list' (`q=list`) requesting 20 search result - starting with the result number 20 (`p=1`) and using callback 'dummy' (`cb=dummy`): - - --@note The values are URL encoded so they -+@note The values are URL encoded so they - have to be decoded before they can be used. - - \subsection extsearch_api_search_out Search results format - - When invoking the search engine as shown in the previous subsection, it should reply with - the results. The format of the reply is --JSON with padding, which is basically -+JSON with padding, which is basically - a javascript struct wrapped in a function call. The name of function should be the name of - the callback (as passed with the *cb* field in the query). - -diff --git a/doc/faq.doc b/doc/faq.doc -index 5af3db83..bbad8c0f 100644 ---- a/doc/faq.doc -+++ b/doc/faq.doc -@@ -285,7 +285,7 @@ At the time I was looking into \c lex and \c yacc, where a lot of things start w - \section faq_why What was the reason to develop doxygen? - - I once wrote a GUI widget based on the Qt library (it is still available at --http://sourceforge.net/projects/qdbttabular/ but hasn't been updated since 2002). -+https://sourceforge.net/projects/qdbttabular/ but hasn't been updated since 2002). - Qt had nicely generated documentation (using an internal tool which - they didn't want to release) - and I wrote similar docs by hand. -diff --git a/doc/formulas.doc b/doc/formulas.doc -index 650751e8..1649c197 100644 ---- a/doc/formulas.doc -+++ b/doc/formulas.doc -@@ -30,7 +30,7 @@ have the following tools installed - to bitmaps. I have used Aladdin GhostScript 8.0 for testing. - - For the HTML output there is also an alternative solution using --MathJax which does not -+MathJax which does not - require the above tools. If you enable \ref cfg_use_mathjax "USE_MATHJAX" in - the config then the latex formulas will be copied to the HTML "as is" and a - client side javascript will parse them and turn them into (interactive) images. -diff --git a/doc/grouping.doc b/doc/grouping.doc -index bbb577cf..2c4ebe19 100644 ---- a/doc/grouping.doc -+++ b/doc/grouping.doc -@@ -197,7 +197,7 @@ documentation of the class. - - \htmlonly -

--Click here -+Click here - for the corresponding HTML documentation that is generated by doxygen. - \endhtmlonly - \latexonly -diff --git a/doc/index.doc b/doc/index.doc -index c8950c4c..14f03961 100644 ---- a/doc/index.doc -+++ b/doc/index.doc -@@ -180,7 +180,7 @@ Thanks go to: -
  • Talin for adding support for C# style comments with XML markup. -
  • Petr Prikryl for coordinating the internationalization support. - All language maintainers for providing translations into many languages. --
  • The band Porcupine Tree for -+
  • The band Porcupine Tree for - providing hours of great music to listen to while coding. -
  • many, many others for suggestions, patches and bug reports. - -diff --git a/doc/install.doc b/doc/install.doc -index fd4f28d1..22d6e7cc 100644 ---- a/doc/install.doc -+++ b/doc/install.doc -@@ -37,7 +37,7 @@ following to build the executable: - \addindex strip - \addindex python -
  • In order to generate a \c Makefile for your platform, you need -- cmake version 2.8.12 or later. -+ cmake version 2.8.12 or later. - \addindex cmake - - -@@ -63,7 +63,7 @@ tools should be installed. -
  • For formulas in the HTML output (when MathJax is not used) - or in case you do not wish to use `pdflatex, - the ghostscript interpreter is needed. You can find it at -- www.ghostscript.com. -+ www.ghostscript.com. - - - Compilation is now done by performing the following steps: -@@ -150,20 +150,20 @@ standard installation procedure that is required for these packages. - \section install_src_windows Compiling from source on Windows - - From version 1.8.10 onwards, build files need to be generated by cmake. --cmake can be downloaded from http://www.cmake.org/download/ -+cmake can be downloaded from https://cmake.org/download/ - - At the moment only the express version of Visual Studio 2013 is tested, - but other version might also work. - - Alternatively, you can compile doxygen - \ref install_src_unix "the UNIX way" using --Cygwin -+Cygwin - or MinGW. - - The next step is to install modern versions of \c bison and \c flex --(see http://sourceforge.net/projects/winflexbison. After installation and adding them to -+(see https://sourceforge.net/projects/winflexbison/. After installation and adding them to - your `path` rename `win_flex.exe` to `flex.exe` and `win_bison.exe` to `bison.exe`) --Furthermore you have to install \c python (version 2.6 or higher, see http://www.python.org). -+Furthermore you have to install \c python (version 2.6 or higher, see https://www.python.org). - These packages are needed during the compilation process. - - Download doxygen's source tarball and put it somewhere (e.g. use c:\\tools) -@@ -214,19 +214,19 @@ you need qhelpgenerator which is part of Qt. - You can download Qt from Qt Software Downloads. - - In order to generate PDF output or use scientific formulas you will also need to --install LaTeX and --Ghostscript. -+install LaTeX and -+Ghostscript. - - For \LaTeX a number of distributions exists. Popular ones that should work with --doxygen are MikTex -+doxygen are MikTex - and proTeXt. - --Ghostscript can be downloaded -+Ghostscript can be downloaded - from Sourceforge. - - After installing \LaTeX and Ghostscript you'll need to make sure the tools - latex.exe, pdflatex.exe, and gswin32c.exe are present in the search path of a --command box. Follow these -+command box. Follow these - instructions if you are unsure and run the commands from a command box to verify it works. - - \htmlonly -diff --git a/doc/markdown.doc b/doc/markdown.doc -index 300d7fc7..737df71a 100644 ---- a/doc/markdown.doc -+++ b/doc/markdown.doc -@@ -41,9 +41,9 @@ the extensions that doxygen supports. - Finally section \ref markdown_dox discusses some specifics for doxygen's - implementation of the Markdown standard. - --[markdown]: http://daringfireball.net/projects/markdown --[mdextra]: http://michelf.com/projects/php-markdown/extra/ --[github]: http://github.github.com/github-flavored-markdown/ -+[markdown]: http://daringfireball.net/projects/markdown/ -+[mdextra]: https://michelf.ca/projects/php-markdown/extra/ -+[github]: https://github.github.com/github-flavored-markdown/ - - \section markdown_std Standard Markdown - -@@ -303,7 +303,7 @@ Note that using `[TOC]` is the same as using a - \subsection md_tables Tables - - Of the features defined by "Markdown Extra" is support for --simple tables: -+simple tables: - - A table consists of a header line, a separator line, and at least one - row line. Table columns are separated by the pipe (|) character. -@@ -376,7 +376,7 @@ For more complex tables in doxygen please have a look at: \ref tables - \subsection md_fenced Fenced Code Blocks - - Another feature defined by "Markdown Extra" is support for -- -+ - fenced code blocks: - - A fenced code block does not require indentation, and is -diff --git a/doc/searching.doc b/doc/searching.doc -index dcf858fa..00c61414 100644 ---- a/doc/searching.doc -+++ b/doc/searching.doc -@@ -72,7 +72,7 @@ has its own advantages and disadvantages: - searching, meaning that you could use your own indexer and search engine - of choice. To make life easier doxygen ships with an example indexer - (doxyindexer) and search engine (doxysearch.cgi) based on -- the Xapian open source search engine -+ the Xapian open source search engine - library. - - To enable this search method set -@@ -147,7 +147,7 @@ has its own advantages and disadvantages: - \ref cfg_qhp_namespace "QHP_NAMESPACE", - \ref cfg_qhg_location "QHG_LOCATION", - \ref cfg_qhp_virtual_folder "QHP_VIRTUAL_FOLDER". -- See this article -+ See this article - for more info. - - Feature wise the Qt compressed help feature is comparable with the CHM -diff --git a/doc/starting.doc b/doc/starting.doc -index bfb8e8f7..c869867b 100644 ---- a/doc/starting.doc -+++ b/doc/starting.doc -@@ -263,7 +263,7 @@ capabilities of the man page format, so some information - \subsection docbook_out DocBook output - \addindex docbook - Doxygen can also generate output in the --DocBook format. How to process the -+DocBook format. How to process the - DocBook output is beyond the scope of this manual. - - \section step3 Step 3: Documenting the sources -diff --git a/src/config.xml b/src/config.xml -index 0fdf3efc..8bb6addb 100644 ---- a/src/config.xml -+++ b/src/config.xml -@@ -215,7 +215,7 @@ Go to the next section or return to the - This tag specifies the encoding used for all characters in the config file that - follow. The default is UTF-8 which is also the encoding used for all text before - the first occurrence of this tag. Doxygen uses \c libiconv (or the iconv built into -- \c libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -+ \c libc) for the transcoding. See https://www.gnu.org/software/libiconv/ for the list of - possible encodings. - ]]> - -@@ -661,7 +661,7 @@ Go to the next section or return to the - - sip sources only. -+ of sip sources only. - Doxygen will parse them like normal C++ but will assume all classes use public - instead of private inheritance when no explicit protection keyword is present. - ]]> -@@ -1172,7 +1172,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn" - The \c CITE_BIB_FILES tag can be used to specify one or more \c bib files - containing the reference definitions. This must be a list of .bib files. The - .bib extension is automatically appended if omitted. This requires the -- \c bibtex tool to be installed. See also http://en.wikipedia.org/wiki/BibTeX for -+ \c bibtex tool to be installed. See also https://en.wikipedia.org/wiki/BibTeX for - more info. For \f$\mbox{\LaTeX}\f$ the style of the bibliography can be controlled - using \ref cfg_latex_bib_style "LATEX_BIB_STYLE". - To use this feature you need \c bibtex and \c perl available in the search path. -@@ -1285,7 +1285,7 @@ FILE_VERSION_INFO = "cleartool desc -fmt \%Vn" - This tag can be used to specify the character encoding of the source files that - doxygen parses. Internally doxygen uses the UTF-8 encoding. - Doxygen uses `libiconv` (or the `iconv` built into `libc`) for the transcoding. -- See the libiconv documentation for -+ See the libiconv documentation for - the list of possible encodings. - ]]> - -@@ -1585,7 +1585,7 @@ to disable this feature. - If the \c USE_HTAGS tag is set to \c YES then the references to source code - will point to the HTML generated by the \c htags(1) tool instead of doxygen - built-in source browser. The \c htags tool is part of GNU's global source -- tagging system (see http://www.gnu.org/software/global/global.html). You -+ tagging system (see https://www.gnu.org/software/global/global.html). You - will need version 4.8.6 or higher. -
    - To use it do the following: -@@ -1904,7 +1904,7 @@ hr.footer { - The \c HTML_COLORSTYLE_HUE tag controls the color of the HTML output. - Doxygen will adjust the colors in the style sheet and background images - according to this color. Hue is specified as an angle on a colorwheel, -- see http://en.wikipedia.org/wiki/Hue for more information. -+ see https://en.wikipedia.org/wiki/Hue for more information. - For instance the value 0 represents red, 60 is yellow, 120 is green, - 180 is cyan, 240 is blue, 300 purple, and 360 is red again. - ]]> -@@ -1981,14 +1981,14 @@ hr.footer { - Apple's Xcode 3 -+ Apple's Xcode 3 - integrated development environment, introduced with OSX 10.5 (Leopard). - To create a documentation set, doxygen will generate a Makefile in the - HTML output directory. Running \c make will produce the docset in that - directory and running make install will install the docset in - ~/Library/Developer/Shared/Documentation/DocSets - so that Xcode will find it at startup. See -- http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for -+ https://developer.apple.com/tools/creatingdocsetswithdoxygen.html for - more information. - ]]> - -@@ -2133,7 +2133,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. - Qt Help Project / Namespace. -+ Qt Help Project / Namespace. - ]]> - - -@@ -2142,7 +2142,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. - Qt Help Project / Virtual Folders. -+ Qt Help Project / Virtual Folders. - ]]> - - -@@ -2150,7 +2150,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. - - Qt Help Project / Custom Filters. -+ Qt Help Project / Custom Filters. - ]]> - - -@@ -2159,7 +2159,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. - Qt Help Project / Custom Filters. -+ Qt Help Project / Custom Filters. - ]]> - - -@@ -2167,7 +2167,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. - - Qt Help Project / Filter Attributes. -+ Qt Help Project / Filter Attributes. - ]]> - - -@@ -2295,7 +2295,7 @@ The \c DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. - - ../mathjax. The default value points to - the MathJax Content Delivery Network so you can quickly see the result without - installing MathJax. However, it is strongly recommended to install a local -- copy of MathJax from http://www.mathjax.org before deployment. -+ copy of MathJax from https://www.mathjax.org before deployment. - ]]> - - -@@ -2427,7 +2427,7 @@ See the section \ref extsearch for details. - the search results. -
    Doxygen ships with an example indexer (\c doxyindexer) and - search engine (doxysearch.cgi) which are based on the open source search -- engine library Xapian. -+ engine library Xapian. -
    See the section \ref extsearch for details. - ]]> - -@@ -2440,7 +2440,7 @@ See the section \ref extsearch for details. - is enabled. -
    Doxygen ships with an example indexer (\c doxyindexer) and - search engine (doxysearch.cgi) which are based on the open source search -- engine library Xapian. -+ engine library Xapian. - See the section \ref extsearch for details. - ]]> - -@@ -2681,7 +2681,7 @@ or - - -@@ -2886,7 +2886,7 @@ front of it. - - -Date: Wed, 4 Jan 2017 12:24:55 +0100 -Subject: [PATCH] Bug 776791 - [1.8.13 Regression] Segfault building the - breathe docs - -Protected against NULL pointer of variable al ---- - src/xmlgen.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp -index fe95c7a..70e198a 100644 ---- a/src/xmlgen.cpp -+++ b/src/xmlgen.cpp -@@ -620,7 +620,7 @@ static void generateXMLForMember(MemberDef *md,FTextStream &ti,FTextStream &t,De - if (md->isInline()) t << "yes"; else t << "no"; - t << "\""; - -- if (al->refQualifier!=RefQualifierNone) -+ if (al!=0 && al->refQualifier!=RefQualifierNone) - { - t << " refqual=\""; - if (al->refQualifier==RefQualifierLValue) t << "lvalue"; else t << "rvalue"; diff --git a/doxygen.spec b/doxygen.spec index ed5df63..25f5c4d 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -1,8 +1,8 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.8.13 -Release: 12%{?dist} +Version: 1.8.14 +Release: 1%{?dist} # No version is specified. License: GPL+ @@ -13,12 +13,6 @@ Source1: doxywizard.png Source2: doxywizard.desktop # upstream patches -Patch100: https://github.com/doxygen/doxygen/pull/555.patch#/doxygen-xmlgen-regression.patch -Patch101: doxygen-1.8.13-#775493.patch -Patch102: doxygen-1.8.13-#776988.patch -Patch103: doxygen-1.8.13-verticl_bar_latex.patch -Patch104: doxygen-1.8.13-C#-property-initializer-parsing.patch -Patch105: doxygen-1.8.13-non-reachable-links.patch BuildRequires: perl-interpreter %if ! 0%{?_module_build} @@ -172,6 +166,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Fri Dec 29 2017 Than Ngo - 1:1.8.14-1 +- update to 1.8.14 + * Wed Aug 02 2017 Fedora Release Engineering - 1:1.8.13-12 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild diff --git a/sources b/sources index 68d1ef2..f60d31f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (doxygen-1.8.13.src.tar.gz) = 85da5bd28ad9f33a8e50fa92796817d31e59c024127cb647cb967e4321dd51378feaacdf099d578b7e6020fd646a3c63e99c77420e49e3894fc18ca89ba3e0a2 SHA512 (doxywizard.png) = 42a7e5903bf27463d3b072cf043aef071b519b53054bbe647c522d5e499e02f554867ab5e9971b06493769cc17b9d1588462aeade284de1f9d579cf9f99e8851 +SHA512 (doxygen-1.8.14.src.tar.gz) = 5fac7e457a51b1f8e39fb65de5e0c07633e573f74e876580e7bcad5693540d6970fde1b2cb799a4df6ab9dfca951ece15b76b3010134d7658db3500183bea85c From a2541207e7cb09dca678e2f8b5efede112a07437 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 7 Feb 2018 07:14:49 +0000 Subject: [PATCH 005/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 25f5c4d..232a42a 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -2,7 +2,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.14 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -166,6 +166,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Wed Feb 07 2018 Fedora Release Engineering - 1:1.8.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Fri Dec 29 2017 Than Ngo - 1:1.8.14-1 - update to 1.8.14 From 43c245dc6c916fcb3fd358c3ea4a54d3dc4efbfe Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 30 Apr 2018 22:49:39 +0200 Subject: [PATCH 006/117] added missing adjustbox.sty for refman --- doxygen.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 232a42a..80de1a7 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -2,7 +2,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.14 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -25,6 +25,7 @@ BuildRequires: tex(xtab.sty) BuildRequires: tex(import.sty) BuildRequires: tex(tabu.sty) BuildRequires: tex(appendix.sty) +BuildRequires: tex(adjustbox.sty) BuildRequires: /usr/bin/epstopdf BuildRequires: texlive-epstopdf BuildRequires: ghostscript @@ -166,6 +167,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Mon Apr 30 2018 Than Ngo - 1.8.14-3 +- added missing BR on adjustbox.sty for refman + * Wed Feb 07 2018 Fedora Release Engineering - 1:1.8.14-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild From 4cffc7e87399fe822199602f3bf2f3f5a9ad143b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 20 Jun 2018 16:19:58 +0200 Subject: [PATCH 007/117] enble search addon on fedora --- doxygen.spec | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index 80de1a7..d1292ac 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -1,8 +1,13 @@ +%if 0%{?fedora} +%global xapian_core_support OFF +%else +%global xapian_core_support OFF +%endif Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.14 -Release: 3%{?dist} +Release: 4%{?dist} # No version is specified. License: GPL+ @@ -38,7 +43,9 @@ BuildRequires: zlib-devel BuildRequires: flex BuildRequires: bison BuildRequires: cmake +%if %{xapian_core_support} == "ON" BuildRequires: xapian-core-devel +%endif Requires: perl-interpreter @@ -95,7 +102,7 @@ pushd %{_target_platform} -Dbuild_doc=ON \ -Dbuild_wizard=ON \ -Dbuild_xmlparser=ON \ - -Dbuild_search=ON \ + -Dbuild_search=%{xapian_core_support} \ -DMAN_INSTALL_DIR=%{_mandir}/man1 \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DBUILD_SHARED_LIBS=OFF \ @@ -132,6 +139,9 @@ cp doc/*.1 %{buildroot}/%{_mandir}/man1/ %if 0%{?_module_build} rm -f %{buildroot}/%{_mandir}/man1/doxywizard.1* %endif +%if %{xapian_core_support} == "OFF" +rm -f %{buildroot}/%{_mandir}/man1/doxyindexer.1* %{buildroot}/%{_mandir}/man1/doxysearch.1* +%endif # remove duplicate rm -rf %{buildroot}/%{_docdir}/packages @@ -145,13 +155,17 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %if ! 0%{?_module_build} %doc %{_target_platform}/latex/doxygen_manual.pdf %doc %{_target_platform}/html +%if %{xapian_core_support} == "ON" %{_bindir}/doxyindexer %{_bindir}/doxysearch* %endif +%endif %{_bindir}/doxygen %{_mandir}/man1/doxygen.1* +%if %{xapian_core_support} == "ON" %{_mandir}/man1/doxyindexer.1* %{_mandir}/man1/doxysearch.1* +%endif %if ! 0%{?_module_build} %files doxywizard @@ -167,6 +181,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Wed Jun 20 2018 Than Ngo - 1.8.14-4 +- enble search addon on fedora + * Mon Apr 30 2018 Than Ngo - 1.8.14-3 - added missing BR on adjustbox.sty for refman From 0dbbc6466d952c06d7115611af845c228b1f1c2b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 27 Jun 2018 12:30:49 +0200 Subject: [PATCH 008/117] support Qt5 --- doxygen.spec | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index d1292ac..9a8f264 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -1,13 +1,14 @@ %if 0%{?fedora} -%global xapian_core_support OFF +%global xapian_core_support ON %else %global xapian_core_support OFF %endif + Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.14 -Release: 4%{?dist} +Release: 5%{?dist} # No version is specified. License: GPL+ @@ -46,7 +47,6 @@ BuildRequires: cmake %if %{xapian_core_support} == "ON" BuildRequires: xapian-core-devel %endif - Requires: perl-interpreter %description @@ -60,7 +60,8 @@ source files. %package doxywizard Summary: A GUI for creating and editing configuration files Requires: %{name} = %{epoch}:%{version}-%{release} -BuildRequires: qt4-devel +BuildRequires: qt5-qtbase-devel + %description doxywizard Doxywizard is a GUI for creating and editing configuration files that are used by doxygen. @@ -79,6 +80,7 @@ Requires: tex(tabu.sty) Requires: tex(appendix.sty) Requires: texlive-epstopdf-bin %endif + %description latex %{summary}. %endif @@ -139,6 +141,7 @@ cp doc/*.1 %{buildroot}/%{_mandir}/man1/ %if 0%{?_module_build} rm -f %{buildroot}/%{_mandir}/man1/doxywizard.1* %endif + %if %{xapian_core_support} == "OFF" rm -f %{buildroot}/%{_mandir}/man1/doxyindexer.1* %{buildroot}/%{_mandir}/man1/doxysearch.1* %endif @@ -166,7 +169,6 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %{_mandir}/man1/doxyindexer.1* %{_mandir}/man1/doxysearch.1* %endif - %if ! 0%{?_module_build} %files doxywizard %{_bindir}/doxywizard @@ -181,6 +183,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Wed Jun 27 2018 Than Ngo - 1:1.8.14-5 +- support Qt5 + * Wed Jun 20 2018 Than Ngo - 1.8.14-4 - enble search addon on fedora From e06306446f74f1d6b7438ebae8d3b2a868a497f7 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 27 Jun 2018 13:43:40 +0200 Subject: [PATCH 009/117] - add BR on zlib-devel - build with python3 --- doxygen.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doxygen.spec b/doxygen.spec index 9a8f264..42e09f1 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -46,6 +46,7 @@ BuildRequires: bison BuildRequires: cmake %if %{xapian_core_support} == "ON" BuildRequires: xapian-core-devel +BuildRequires: zlib-devel %endif Requires: perl-interpreter @@ -101,6 +102,7 @@ mkdir -p %{_target_platform} pushd %{_target_platform} %if ! 0%{?_module_build} %cmake \ + -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ -Dbuild_doc=ON \ -Dbuild_wizard=ON \ -Dbuild_xmlparser=ON \ @@ -111,6 +113,7 @@ pushd %{_target_platform} .. %else %cmake \ + -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ -Dbuild_doc=OFF \ -Dbuild_wizard=OFF \ -Dbuild_xmlparser=ON \ From eadb2df3437892ad0f360b04fee8b3a9529b716c Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 12 Jul 2018 23:06:19 +0000 Subject: [PATCH 010/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 42e09f1..9e16100 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.14 -Release: 5%{?dist} +Release: 6%{?dist} # No version is specified. License: GPL+ @@ -186,6 +186,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Thu Jul 12 2018 Fedora Release Engineering - 1:1.8.14-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Wed Jun 27 2018 Than Ngo - 1:1.8.14-5 - support Qt5 From 69dc56e4e26385ee6a2f9e3a8b31862ba7ea4459 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 23 Jul 2018 13:35:01 +0200 Subject: [PATCH 011/117] add BR: gcc-c++ gcc --- doxygen.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 9e16100..aeed9dd 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.14 -Release: 6%{?dist} +Release: 7%{?dist} # No version is specified. License: GPL+ @@ -20,6 +20,7 @@ Source2: doxywizard.desktop # upstream patches +BuildRequires: gcc-c++ gcc BuildRequires: perl-interpreter %if ! 0%{?_module_build} BuildRequires: tex(dvips) @@ -186,6 +187,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Mon Jul 23 2018 Than Ngo - 1:1.8.14-7 +- add BR: gcc-c++ gcc + * Thu Jul 12 2018 Fedora Release Engineering - 1:1.8.14-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild From c63dd6e3d7125bf9766bd9e80d11e7ba24f4c281 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Thu, 6 Dec 2018 16:11:55 +0100 Subject: [PATCH 012/117] enable testing --- doxygen.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index aeed9dd..d569b72 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.14 -Release: 7%{?dist} +Release: 8%{?dist} # No version is specified. License: GPL+ @@ -157,6 +157,9 @@ rm -rf %{buildroot}/%{_docdir}/packages desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif +%check +make tests -C %{_target_platform} + %files %doc LANGUAGE.HOWTO README.md %if ! 0%{?_module_build} @@ -187,6 +190,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} %endif %changelog +* Thu Dec 06 2018 Than Ngo - 1:1.8.14-8 +- enable testing + * Mon Jul 23 2018 Than Ngo - 1:1.8.14-7 - add BR: gcc-c++ gcc From 70024853b1b7970cafb8c167c358e96635fb491a Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 28 Jan 2019 16:24:02 +0100 Subject: [PATCH 013/117] update to 1.8.15 --- .gitignore | 1 + doxygen.spec | 21 ++++++++------------- sources | 2 +- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 91d2359..62f8f34 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.12.src.tar.gz /doxygen-1.8.13.src.tar.gz /doxygen-1.8.14.src.tar.gz +/doxygen-1.8.15.src.tar.gz diff --git a/doxygen.spec b/doxygen.spec index d569b72..6300b8b 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -7,13 +7,13 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.8.14 -Release: 8%{?dist} +Version: 1.8.15 +Release: 1%{?dist} # No version is specified. License: GPL+ -Url: http://www.stack.nl/~dimitri/doxygen/index.html -Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz +Url: http://www.doxygen.nl +Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.png Source2: doxywizard.desktop @@ -104,7 +104,7 @@ pushd %{_target_platform} %if ! 0%{?_module_build} %cmake \ -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ - -Dbuild_doc=ON \ + -Dbuild_doc=OFF \ -Dbuild_wizard=ON \ -Dbuild_xmlparser=ON \ -Dbuild_search=%{xapian_core_support} \ @@ -126,12 +126,6 @@ pushd %{_target_platform} %endif popd -%if ! 0%{?_module_build} -make docs %{?_smp_mflags} -C %{_target_platform} -%else -mkdir -p *-redhat-linux-gnu/latex -touch *-redhat-linux-gnu/latex/doxygen_manual.pdf -%endif make %{?_smp_mflags} -C %{_target_platform} %install @@ -163,8 +157,6 @@ make tests -C %{_target_platform} %files %doc LANGUAGE.HOWTO README.md %if ! 0%{?_module_build} -%doc %{_target_platform}/latex/doxygen_manual.pdf -%doc %{_target_platform}/html %if %{xapian_core_support} == "ON" %{_bindir}/doxyindexer %{_bindir}/doxysearch* @@ -190,6 +182,9 @@ make tests -C %{_target_platform} %endif %changelog +* Mon Jan 28 2019 Than Ngo - 1:1.8.15-1 +- update to 1.8.15 + * Thu Dec 06 2018 Than Ngo - 1:1.8.14-8 - enable testing diff --git a/sources b/sources index f60d31f..0c7f9ec 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard.png) = 42a7e5903bf27463d3b072cf043aef071b519b53054bbe647c522d5e499e02f554867ab5e9971b06493769cc17b9d1588462aeade284de1f9d579cf9f99e8851 -SHA512 (doxygen-1.8.14.src.tar.gz) = 5fac7e457a51b1f8e39fb65de5e0c07633e573f74e876580e7bcad5693540d6970fde1b2cb799a4df6ab9dfca951ece15b76b3010134d7658db3500183bea85c +SHA512 (doxygen-1.8.15.src.tar.gz) = a5512e78be66c1591d8ec7e284d5d25c92a97218c79e6fed3c538c723a8dfef4ff7085970bf271a6b639e907157cd4df9fb55d3c975f8d3302fb1012a4d92079 From 7448e7ae78767936ae8a7671cef7a16f625f3d86 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 31 Jan 2019 17:32:40 +0000 Subject: [PATCH 014/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 6300b8b..d3f3e93 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -182,6 +182,9 @@ make tests -C %{_target_platform} %endif %changelog +* Thu Jan 31 2019 Fedora Release Engineering - 1:1.8.15-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Mon Jan 28 2019 Than Ngo - 1:1.8.15-1 - update to 1.8.15 From 73e6d66a71c4534587fab81b0e48044887561f13 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 5 Feb 2019 15:52:59 +0100 Subject: [PATCH 015/117] fixed bz#1671999, backported from upstream added test for XML output with an empty TOC --- ....8.15-handle_empty_TOC_in_XML_output.patch | 27 ++++++++++++ ...est_for_XML_output_with_an_empty_TOC.patch | 42 +++++++++++++++++++ doxygen.spec | 8 +++- 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch create mode 100644 doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch diff --git a/doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch b/doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch new file mode 100644 index 0000000..dd90cdd --- /dev/null +++ b/doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch @@ -0,0 +1,27 @@ +commit cfe381e3ee55b8291faeea55fe3b67bb9e545d60 +Author: Vladimír Vondruš +Date: Sat Dec 29 21:52:39 2018 +0100 + + Properly handle empty TOC in XML output. + + Caused the test (079) to fail with a SIGSEGV, but larger projects exit + with a success return code and the generated XML is either truncated or + empty. Weird. + +diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp +index bacf4d41..033e611f 100644 +--- a/src/xmlgen.cpp ++++ b/src/xmlgen.cpp +@@ -1818,10 +1818,10 @@ static void generateXMLForPage(PageDef *pd,FTextStream &ti,bool isExample) + } + } + writeInnerPages(pd->getSubPages(),t); +- if (pd->localToc().isXmlEnabled()) ++ SectionDict *sectionDict = pd->getSectionDict(); ++ if (pd->localToc().isXmlEnabled() && sectionDict) + { + t << " " << endl; +- SectionDict *sectionDict = pd->getSectionDict(); + SDict::Iterator li(*sectionDict); + SectionInfo *si; + int level=1,l; diff --git a/doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch b/doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch new file mode 100644 index 0000000..afa039d --- /dev/null +++ b/doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch @@ -0,0 +1,42 @@ +commit e26a5b8eed8a012e6a400f1ed6baf27980668b53 +Author: Vladimír Vondruš +Date: Sat Dec 29 21:30:51 2018 +0100 + + testing: add a test for XML output with an empty TOC. + + Fails, in particular causes Doxygen to produce an empty (or truncated) + XML file but returning with a success error code. + +diff --git a/testing/079/empty.xml b/testing/079/empty.xml +new file mode 100644 +index 00000000..3e1d6915 +--- /dev/null ++++ b/testing/079/empty.xml +@@ -0,0 +1,12 @@ ++ ++ ++ ++ empty ++ An empty page ++ ++ ++ ++With an empty TOC. ++ ++ ++ +diff --git a/testing/079_tableofcontents.dox b/testing/079_tableofcontents.dox +new file mode 100644 +index 00000000..499771d7 +--- /dev/null ++++ b/testing/079_tableofcontents.dox +@@ -0,0 +1,9 @@ ++// objective: test TOC generation for an empty page ++// check: empty.xml ++/** ++@page empty An empty page ++ ++@tableofcontents ++ ++With an empty TOC. ++*/ diff --git a/doxygen.spec b/doxygen.spec index d3f3e93..6ac914a 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -19,6 +19,8 @@ Source1: doxywizard.png Source2: doxywizard.desktop # upstream patches +Patch0: doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch +Patch1: doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch BuildRequires: gcc-c++ gcc BuildRequires: perl-interpreter @@ -182,6 +184,10 @@ make tests -C %{_target_platform} %endif %changelog +* Tue Feb 05 2019 Than Ngo - 1:1.8.15-3 +- fixed bz#1671999, backported from upstream +- added test for XML output with an empty TOC + * Thu Jan 31 2019 Fedora Release Engineering - 1:1.8.15-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From 3453b33b8f2f0232a847fda6e65880e85f9f18fb Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 8 Feb 2019 13:37:32 +0100 Subject: [PATCH 016/117] fix bz#673228 - doxgen 1.8.15 operator whitespace changes cause wxpython FTBFS --- doxygen.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 6ac914a..17c4419 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 3%{?dist} +Release: 4%{?dist} # No version is specified. License: GPL+ @@ -21,6 +21,7 @@ Source2: doxywizard.desktop # upstream patches Patch0: doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch Patch1: doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch +Patch2: doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch BuildRequires: gcc-c++ gcc BuildRequires: perl-interpreter @@ -184,6 +185,9 @@ make tests -C %{_target_platform} %endif %changelog +* Fri Feb 08 2019 Than Ngo - 1:1.8.15-4 +- fix bz#673228 - doxgen 1.8.15 operator whitespace changes cause wxpython FTBFS + * Tue Feb 05 2019 Than Ngo - 1:1.8.15-3 - fixed bz#1671999, backported from upstream - added test for XML output with an empty TOC From 135737fac1f0b27a588a1ef444b85630c589dab2 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 8 Feb 2019 14:09:09 +0100 Subject: [PATCH 017/117] fixed bz#1673230 - BR on tex(newunicodechar.sty) in doxygen-latex --- ...ent_whitespace_removal_for_operators.patch | 48 +++++++++++++++++++ doxygen.spec | 4 +- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch diff --git a/doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch b/doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch new file mode 100644 index 0000000..01c3df7 --- /dev/null +++ b/doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch @@ -0,0 +1,48 @@ +commit e54ccc0e6eb12a0720860d863a89cb3f1a83f2a2 +Author: Dimitri van Heesch +Date: Sun Feb 3 14:33:35 2019 +0100 + + Issue 6814: Inconsistent whitespace removal for operators in 1.8.15 + +diff --git a/src/util.cpp b/src/util.cpp +index 9a0e513b..3a3bfd38 100644 +--- a/src/util.cpp ++++ b/src/util.cpp +@@ -1895,7 +1895,7 @@ QCString removeRedundantWhiteSpace(const QCString &s) + if (g_charAroundSpace.charMap[(uchar)pc].before && + g_charAroundSpace.charMap[(uchar)nc].after && + !(pc==',' && nc=='.') && +- (osp<8 || (osp>=8 && pc!='"' && isId(nc)) || (osp>=8 && pc!='"' && nc!='"')) ++ (osp<8 || (osp>=8 && isId(pc) && isId(nc))) + // e.g. 'operator >>' -> 'operator>>', + // 'operator "" _x' -> 'operator""_x', + // but not 'operator int' -> 'operatorint' +commit 2802e2b4ee8158dba3f3584037e99907c6db7ec4 +Author: Dimitri van Heesch +Date: Mon Feb 4 22:19:56 2019 +0100 + + Issue 6814: Further finetuning for inconsistent whitespace removal for operators in 1.8.15 + +diff --git a/src/util.cpp b/src/util.cpp +index 3a3bfd38..53b176d4 100644 +--- a/src/util.cpp ++++ b/src/util.cpp +@@ -1847,7 +1847,8 @@ QCString removeRedundantWhiteSpace(const QCString &s) + case '*': + if (i>0 && pc!=' ' && pc!='\t' && pc!=':' && + pc!='*' && pc!='&' && pc!='(' && pc!='/' && +- pc!='.' && (osp<9 || !(pc=='>' && osp==11))) ++ pc!='.' && osp<9 ++ ) + // avoid splitting &&, **, .*, operator*, operator->* + { + *dst++=' '; +@@ -1855,7 +1856,7 @@ QCString removeRedundantWhiteSpace(const QCString &s) + *dst++=c; + break; + case '&': +- if (i>0 && isId(pc)) ++ if (i>0 && isId(pc) && osp<9) + { + if (nc != '=') + // avoid splitting operator&= diff --git a/doxygen.spec b/doxygen.spec index 17c4419..fe286f4 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -83,6 +83,7 @@ Requires: tex(xtab.sty) Requires: tex(import.sty) Requires: tex(tabu.sty) Requires: tex(appendix.sty) +Requires: tex(newunicodechar.sty) Requires: texlive-epstopdf-bin %endif @@ -186,7 +187,8 @@ make tests -C %{_target_platform} %changelog * Fri Feb 08 2019 Than Ngo - 1:1.8.15-4 -- fix bz#673228 - doxgen 1.8.15 operator whitespace changes cause wxpython FTBFS +- fixed bz#673228 - operator whitespace changes cause wxpython FTBFS +- fixed bz#1673230 - BR on tex(newunicodechar.sty) in doxygen-latex * Tue Feb 05 2019 Than Ngo - 1:1.8.15-3 - fixed bz#1671999, backported from upstream From 32e3f8ab66d7ca3e2cc4d79fcac408ecf1963dcc Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 12 Feb 2019 14:10:11 +0100 Subject: [PATCH 018/117] fixed doxygen 1.8.15 segfault --- doxygen-1.8.15-crash.patch | 52 ++++++++++++++++++++++++++++++++++++++ doxygen.spec | 6 ++++- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.8.15-crash.patch diff --git a/doxygen-1.8.15-crash.patch b/doxygen-1.8.15-crash.patch new file mode 100644 index 0000000..24c3467 --- /dev/null +++ b/doxygen-1.8.15-crash.patch @@ -0,0 +1,52 @@ +commit c26c5fc4fb852098c7188e7762778c87a50771cb +Author: albert-github +Date: Mon Jan 7 18:48:13 2019 +0100 + + issue #6749 doxygen 1.8.15 segfault + + An empty string was defined in a `` resulting in a null pointer access. + +diff --git a/src/util.cpp b/src/util.cpp +index f9c2492f..9a0e513b 100644 +--- a/src/util.cpp ++++ b/src/util.cpp +@@ -5444,6 +5444,7 @@ QCString escapeCharsInString(const char *name,bool allowDots,bool allowUnderscor + static bool allowUnicodeNames = Config_getBool(ALLOW_UNICODE_NAMES); + static GrowBuf growBuf; + growBuf.clear(); ++ if (name==0) return ""; + char c; + const char *p=name; + while ((c=*p++)!=0) +@@ -6962,6 +6963,7 @@ void filterLatexString(FTextStream &t,const char *str, + + QCString latexEscapeLabelName(const char *s) + { ++ if (s==0) return ""; + QGString result; + QCString tmp(qstrlen(s)+1); + FTextStream t(&result); +@@ -6999,6 +7001,7 @@ QCString latexEscapeLabelName(const char *s) + + QCString latexEscapeIndexChars(const char *s) + { ++ if (s==0) return ""; + QGString result; + QCString tmp(qstrlen(s)+1); + FTextStream t(&result); +@@ -7037,6 +7040,7 @@ QCString latexEscapeIndexChars(const char *s) + + QCString latexEscapePDFString(const char *s) + { ++ if (s==0) return ""; + QGString result; + FTextStream t(&result); + const char *p=s; +@@ -7061,6 +7065,7 @@ QCString latexEscapePDFString(const char *s) + + QCString latexFilterURL(const char *s) + { ++ if (s==0) return ""; + QGString result; + FTextStream t(&result); + const char *p=s; diff --git a/doxygen.spec b/doxygen.spec index fe286f4..dee7630 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 4%{?dist} +Release: 5%{?dist} # No version is specified. License: GPL+ @@ -22,6 +22,7 @@ Source2: doxywizard.desktop Patch0: doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch Patch1: doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch Patch2: doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch +Patch3: doxygen-1.8.15-crash.patch BuildRequires: gcc-c++ gcc BuildRequires: perl-interpreter @@ -186,6 +187,9 @@ make tests -C %{_target_platform} %endif %changelog +* Tue Feb 12 2019 Than Ngo - 1:1.8.15-5 +- fixed bz#1675288, doxygen 1.8.15 segfault + * Fri Feb 08 2019 Than Ngo - 1:1.8.15-4 - fixed bz#673228 - operator whitespace changes cause wxpython FTBFS - fixed bz#1673230 - BR on tex(newunicodechar.sty) in doxygen-latex From 16df64000eab426508cde97d15b1d79f39df9f2b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Thu, 14 Feb 2019 23:15:00 +0100 Subject: [PATCH 019/117] fixed bz#1677000, fixed multilib issue --- doxygen-1.8.15-multilib.patch | 20 ++++++++++++++++++++ doxygen.spec | 6 +++++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.8.15-multilib.patch diff --git a/doxygen-1.8.15-multilib.patch b/doxygen-1.8.15-multilib.patch new file mode 100644 index 0000000..329ce72 --- /dev/null +++ b/doxygen-1.8.15-multilib.patch @@ -0,0 +1,20 @@ +diff -up doxygen-1.8.15/src/dirdef.cpp.me doxygen-1.8.15/src/dirdef.cpp +--- doxygen-1.8.15/src/dirdef.cpp.me 2019-02-14 22:57:29.709491363 +0100 ++++ doxygen-1.8.15/src/dirdef.cpp 2019-02-14 22:59:10.922169840 +0100 +@@ -936,14 +936,14 @@ void buildDirectories() + for (;(fd=fni.current());++fni) + { + //printf("buildDirectories %s\n",fd->name().data()); +- if (fd->getReference().isEmpty()) ++ if (fd->getReference().isEmpty() && !fd->isDocumentationFile()) + { + DirDef *dir; + if ((dir=Doxygen::directories->find(fd->getPath()))==0) // new directory + { + dir = DirDef::mergeDirectoryInTree(fd->getPath()); + } +- if (dir && !fd->isDocumentationFile()) dir->addFile(fd); ++ if (dir) dir->addFile(fd); + } + else + { diff --git a/doxygen.spec b/doxygen.spec index dee7630..bdf6716 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 5%{?dist} +Release: 6%{?dist} # No version is specified. License: GPL+ @@ -23,6 +23,7 @@ Patch0: doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch Patch1: doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch Patch2: doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch Patch3: doxygen-1.8.15-crash.patch +Patch4: doxygen-1.8.15-multilib.patch BuildRequires: gcc-c++ gcc BuildRequires: perl-interpreter @@ -187,6 +188,9 @@ make tests -C %{_target_platform} %endif %changelog +* Thu Feb 14 2019 Than Ngo - 1:1.8.15-6 +- fixed bz#1677000, fixed multilib issue + * Tue Feb 12 2019 Than Ngo - 1:1.8.15-5 - fixed bz#1675288, doxygen 1.8.15 segfault From 32d440d4b13d5d47dab7b26a1aadd8ab02cc6b73 Mon Sep 17 00:00:00 2001 From: "Jeroen van Meeuwen (Kolab Systems)" Date: Mon, 18 Feb 2019 19:46:14 +0100 Subject: [PATCH 020/117] When %{_bindir}/python3 is required for the build, BuildRequire %{_bindir}/python3 --- doxygen.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doxygen.spec b/doxygen.spec index bdf6716..6ec03ef 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -25,6 +25,8 @@ Patch2: doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch Patch3: doxygen-1.8.15-crash.patch Patch4: doxygen-1.8.15-multilib.patch +BuildRequires: %{_bindir}/python3 + BuildRequires: gcc-c++ gcc BuildRequires: perl-interpreter %if ! 0%{?_module_build} From b7bcaa3708b5283f934ccf20746701fd69c90b3c Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 6 Mar 2019 18:39:53 +0100 Subject: [PATCH 021/117] Add gating on tests --- gating.yaml | 7 + tests/tests.yml | 12 + tests/upstream-test-suite/001/indexpage.xml | 12 + tests/upstream-test-suite/001_a.dox | 5 + tests/upstream-test-suite/002/indexpage.xml | 17 + tests/upstream-test-suite/002_addindex.dox | 5 + tests/upstream-test-suite/003/indexpage.xml | 12 + tests/upstream-test-suite/003_anchor.dox | 8 + tests/upstream-test-suite/004/indexpage.xml | 15 + tests/upstream-test-suite/004_arg.dox | 15 + tests/upstream-test-suite/005/indexpage.xml | 37 + tests/upstream-test-suite/005_attention.dox | 14 + tests/upstream-test-suite/006/indexpage.xml | 28 + tests/upstream-test-suite/006_author.dox | 9 + tests/upstream-test-suite/007/indexpage.xml | 12 + tests/upstream-test-suite/007_b.dox | 5 + .../upstream-test-suite/008/008__brief_8c.xml | 13 + tests/upstream-test-suite/008_brief.c | 7 + tests/upstream-test-suite/009/bug.xml | 27 + tests/upstream-test-suite/009/class_bug.xml | 43 + .../009/class_deprecated.xml | 41 + .../009/class_reminder.xml | 48 + tests/upstream-test-suite/009/class_test.xml | 48 + tests/upstream-test-suite/009/class_todo.xml | 48 + tests/upstream-test-suite/009/deprecated.xml | 27 + tests/upstream-test-suite/009/reminders.xml | 27 + tests/upstream-test-suite/009/test.xml | 27 + tests/upstream-test-suite/009/todo.xml | 27 + tests/upstream-test-suite/009_bug.cpp | 62 + tests/upstream-test-suite/010/indexpage.xml | 13 + tests/upstream-test-suite/010_c.dox | 7 + .../011/category_integer_07_arithmetic_08.xml | 60 + .../011/interface_integer.xml | 99 ++ tests/upstream-test-suite/011_category.m | 30 + tests/upstream-test-suite/012/citelist.xml | 22 + tests/upstream-test-suite/012/indexpage.xml | 12 + tests/upstream-test-suite/012_cite.dox | 7 + tests/upstream-test-suite/013/class_t1.xml | 15 + tests/upstream-test-suite/013/class_t2.xml | 15 + tests/upstream-test-suite/013/class_t3.xml | 15 + tests/upstream-test-suite/013/class_t4.xml | 15 + tests/upstream-test-suite/013_class.h | 37 + tests/upstream-test-suite/014/indexpage.xml | 51 + tests/upstream-test-suite/014_code.dox | 18 + .../upstream-test-suite/015/015__cond_8c.xml | 28 + tests/upstream-test-suite/015_cond.c | 32 + .../016/016__copydoc_8c.xml | 76 + tests/upstream-test-suite/016_copydoc.c | 23 + tests/upstream-test-suite/017/indexpage.xml | 19 + tests/upstream-test-suite/017_copyright.dox | 6 + tests/upstream-test-suite/018/018__def_8c.xml | 126 ++ tests/upstream-test-suite/018_def.c | 37 + tests/upstream-test-suite/019/group__g1.xml | 28 + tests/upstream-test-suite/019/group__g2.xml | 29 + tests/upstream-test-suite/019/group__g3.xml | 42 + tests/upstream-test-suite/019_defgroup.c | 48 + tests/upstream-test-suite/020/indexpage.xml | 14 + tests/upstream-test-suite/020_only.dox | 27 + tests/upstream-test-suite/021/indexpage.xml | 12 + tests/upstream-test-suite/021_dontinclude.cpp | 23 + tests/upstream-test-suite/022/indexpage.xml | 20 + tests/upstream-test-suite/022_dot.cpp | 22 + tests/upstream-test-suite/023/indexpage.xml | 12 + tests/upstream-test-suite/023_e.dox | 5 + tests/upstream-test-suite/024/indexpage.xml | 12 + tests/upstream-test-suite/024_if.dox | 21 + tests/upstream-test-suite/025/class_test.xml | 36 + .../025/example_test_8cpp-example.xml | 12 + tests/upstream-test-suite/025_example.cpp | 26 + tests/upstream-test-suite/026/class_test.xml | 52 + tests/upstream-test-suite/026_exception.cpp | 21 + tests/upstream-test-suite/027/struct_car.xml | 95 ++ .../upstream-test-suite/027/struct_object.xml | 105 ++ .../upstream-test-suite/027/struct_truck.xml | 95 ++ .../027/struct_vehicle.xml | 132 ++ tests/upstream-test-suite/027_extends.c | 93 + tests/upstream-test-suite/028/indexpage.xml | 13 + tests/upstream-test-suite/028_formula.c | 17 + .../029/029__hideinit_8c.xml | 42 + tests/upstream-test-suite/029_hideinit.c | 12 + tests/upstream-test-suite/030/indexpage.xml | 13 + tests/upstream-test-suite/030_htmlinclude.dox | 7 + tests/upstream-test-suite/031/indexpage.xml | 15 + tests/upstream-test-suite/031_image.dox | 10 + tests/upstream-test-suite/032/indexpage.xml | 12 + tests/upstream-test-suite/032_include.cpp | 10 + tests/upstream-test-suite/033/indexpage.xml | 13 + tests/upstream-test-suite/033_internal.dox | 12 + tests/upstream-test-suite/034/indexpage.xml | 31 + tests/upstream-test-suite/034_internal.dox | 21 + .../035/035__invariant_8c.xml | 45 + tests/upstream-test-suite/035_invariant.c | 15 + .../upstream-test-suite/036/036__link_8c.xml | 33 + tests/upstream-test-suite/036_link.c | 16 + .../037/class_receiver.xml | 43 + .../upstream-test-suite/037/class_sender.xml | 43 + tests/upstream-test-suite/037_msc.cpp | 33 + tests/upstream-test-suite/038/indexpage.xml | 14 + tests/upstream-test-suite/038_n.dox | 7 + tests/upstream-test-suite/039/class_test.xml | 74 + tests/upstream-test-suite/039_name.cpp | 25 + .../upstream-test-suite/040/namespace_n_s.xml | 12 + tests/upstream-test-suite/040_namespace.cpp | 10 + tests/upstream-test-suite/041/class_test.xml | 100 ++ tests/upstream-test-suite/041_overload.cpp | 33 + .../042/namespaceorg_1_1doxygen_1_1_test.xml | 12 + tests/upstream-test-suite/042_package.java | 8 + tests/upstream-test-suite/043/another.xml | 12 + tests/upstream-test-suite/043/mypage.xml | 66 + tests/upstream-test-suite/043_page.dox | 26 + tests/upstream-test-suite/044/struct_s.xml | 129 ++ tests/upstream-test-suite/044_section.h | 28 + tests/upstream-test-suite/045/indexpage.xml | 23 + tests/upstream-test-suite/045_refitem.dox | 20 + .../046/046__related_8cpp.xml | 28 + tests/upstream-test-suite/046/class_test.xml | 80 + tests/upstream-test-suite/046_related.cpp | 28 + .../047/047__return_8cpp.xml | 58 + tests/upstream-test-suite/047_return.cpp | 20 + .../048/048__showinit_8c.xml | 42 + tests/upstream-test-suite/048_showinit.c | 13 + tests/upstream-test-suite/049/indexpage.xml | 12 + tests/upstream-test-suite/049_snippet.cpp | 12 + tests/upstream-test-suite/050/indexpage.xml | 20 + tests/upstream-test-suite/050_verbatim.dox | 13 + tests/upstream-test-suite/051/indexpage.xml | 12 + tests/upstream-test-suite/051_escape.dox | 20 + tests/upstream-test-suite/052/indexpage.xml | 12 + tests/upstream-test-suite/052_tilde.dox | 9 + tests/upstream-test-suite/053/indexpage.xml | 12 + tests/upstream-test-suite/053_tilde.dox | 10 + .../054/054__parblock_8cpp.xml | 193 +++ tests/upstream-test-suite/054_parblock.cpp | 60 + .../055/md_055_markdown.xml | 31 + tests/upstream-test-suite/055_markdown.md | 24 + tests/upstream-test-suite/056/indexpage.xml | 13 + .../upstream-test-suite/056_latexinclude.dox | 7 + .../057/057__caller__graphs_8tcl.xml | 92 + .../057/__057__caller__graphs_8tcl.xml | 28 + tests/upstream-test-suite/057/namespace1.xml | 113 ++ .../057/namespace1_1_11.xml | 28 + .../057/namespace1_1_11_1_11.xml | 26 + tests/upstream-test-suite/057/namespace2.xml | 30 + .../057/namespace2_1_12.xml | 29 + .../057/namespace2_1_12_1_12.xml | 29 + .../057/namespace2_1_12_1_12_1_12.xml | 29 + .../057/namespace2_1_12_1_12_1_12_1_12.xml | 28 + .../upstream-test-suite/057/namespacebar.xml | 57 + .../upstream-test-suite/057/namespacefoo.xml | 27 + .../upstream-test-suite/057_caller_graphs.tcl | 155 ++ .../058/058__bracket__recursion_8tcl.xml | 384 +++++ .../058_bracket_recursion.tcl | 157 ++ .../059/059__command__catch_8tcl.xml | 191 +++ .../upstream-test-suite/059_command_catch.tcl | 87 + .../060/060__command__switch_8tcl.xml | 326 ++++ .../060_command_switch.tcl | 238 +++ tests/upstream-test-suite/061/class_test.xml | 70 + tests/upstream-test-suite/061_bug_705503.tcl | 19 + tests/upstream-test-suite/062/namespacen1.xml | 42 + tests/upstream-test-suite/062/namespacen2.xml | 42 + tests/upstream-test-suite/062/namespacen3.xml | 42 + .../062_namespace_resolution.tcl | 68 + tests/upstream-test-suite/063/namespaceoo.xml | 13 + .../063/namespaceoo_1_1_helpers.xml | 27 + .../063/namespaceoo_1_1define.xml | 27 + tests/upstream-test-suite/063_bug_729092.tcl | 43 + tests/upstream-test-suite/064/struct_foo.xml | 112 ++ .../upstream-test-suite/064_castoperator.cpp | 25 + tests/upstream-test-suite/065/indexpage.xml | 12 + tests/upstream-test-suite/065_tilde.dox | 12 + .../upstream-test-suite/066/class_class1.xml | 50 + .../066_property_initializer.cs | 7 + .../067/067__link__varargs_8cpp.xml | 54 + .../upstream-test-suite/067_link_varargs.cpp | 20 + .../068/068__ref__varargs_8cpp.xml | 54 + tests/upstream-test-suite/068_ref_varargs.cpp | 20 + .../069__link__variadic__template_8cpp.xml | 309 ++++ .../069_link_variadic_template.cpp | 95 ++ .../070/070__ref__variadic__template_8cpp.xml | 309 ++++ .../070_ref_variadic_template.cpp | 95 ++ .../071/namespace_a_namespace_1_1_0D0.xml | 45 + .../071_enum_in_anon_ns.cpp | 12 + .../072/072__using_8cpp.xml | 32 + tests/upstream-test-suite/072_using.cpp | 7 + .../073/073__typed__enum_8cpp.xml | 25 + tests/upstream-test-suite/073_typed_enum.cpp | 7 + tests/upstream-test-suite/074/struct_foo.xml | 287 ++++ tests/upstream-test-suite/074_ref.cpp | 49 + tests/upstream-test-suite/075/struct_foo.xml | 148 ++ tests/upstream-test-suite/075_argmatch.cpp | 30 + tests/upstream-test-suite/076/indexpage.xml | 1500 +++++++++++++++++ tests/upstream-test-suite/076_emojis.cpp | 1493 ++++++++++++++++ ...namespace__members__in__file__scope_8h.xml | 12 + ...7_no_xml_namespace_members_in_file_scope.h | 16 + ...namespace__members__in__file__scope_8h.xml | 43 + .../078_xml_namespace_members_in_file_scope.h | 17 + tests/upstream-test-suite/Doxyfile | 7 + tests/upstream-test-suite/Makefile | 64 + tests/upstream-test-suite/PURPOSE | 8 + tests/upstream-test-suite/README.txt | 66 + .../_057_caller_graphs.tcl | 4 + tests/upstream-test-suite/dtd/xhtml-lat1.ent | 196 +++ .../upstream-test-suite/dtd/xhtml-special.ent | 80 + .../upstream-test-suite/dtd/xhtml-symbol.ent | 237 +++ .../upstream-test-suite/dtd/xhtml1-strict.dtd | 978 +++++++++++ .../dtd/xhtml1-transitional.dtd | 1220 ++++++++++++++ tests/upstream-test-suite/example_test.cpp | 8 + tests/upstream-test-suite/runtest.sh | 61 + tests/upstream-test-suite/runtests.py | 424 +++++ tests/upstream-test-suite/sample.bib | 7 + tests/upstream-test-suite/sample.html | 1 + tests/upstream-test-suite/sample.png | Bin 0 -> 2560 bytes tests/upstream-test-suite/sample.tex | 1 + tests/upstream-test-suite/snippet_test.cpp | 41 + 214 files changed, 14934 insertions(+) create mode 100644 gating.yaml create mode 100644 tests/tests.yml create mode 100644 tests/upstream-test-suite/001/indexpage.xml create mode 100644 tests/upstream-test-suite/001_a.dox create mode 100644 tests/upstream-test-suite/002/indexpage.xml create mode 100644 tests/upstream-test-suite/002_addindex.dox create mode 100644 tests/upstream-test-suite/003/indexpage.xml create mode 100644 tests/upstream-test-suite/003_anchor.dox create mode 100644 tests/upstream-test-suite/004/indexpage.xml create mode 100644 tests/upstream-test-suite/004_arg.dox create mode 100644 tests/upstream-test-suite/005/indexpage.xml create mode 100644 tests/upstream-test-suite/005_attention.dox create mode 100644 tests/upstream-test-suite/006/indexpage.xml create mode 100644 tests/upstream-test-suite/006_author.dox create mode 100644 tests/upstream-test-suite/007/indexpage.xml create mode 100644 tests/upstream-test-suite/007_b.dox create mode 100644 tests/upstream-test-suite/008/008__brief_8c.xml create mode 100644 tests/upstream-test-suite/008_brief.c create mode 100644 tests/upstream-test-suite/009/bug.xml create mode 100644 tests/upstream-test-suite/009/class_bug.xml create mode 100644 tests/upstream-test-suite/009/class_deprecated.xml create mode 100644 tests/upstream-test-suite/009/class_reminder.xml create mode 100644 tests/upstream-test-suite/009/class_test.xml create mode 100644 tests/upstream-test-suite/009/class_todo.xml create mode 100644 tests/upstream-test-suite/009/deprecated.xml create mode 100644 tests/upstream-test-suite/009/reminders.xml create mode 100644 tests/upstream-test-suite/009/test.xml create mode 100644 tests/upstream-test-suite/009/todo.xml create mode 100644 tests/upstream-test-suite/009_bug.cpp create mode 100644 tests/upstream-test-suite/010/indexpage.xml create mode 100644 tests/upstream-test-suite/010_c.dox create mode 100644 tests/upstream-test-suite/011/category_integer_07_arithmetic_08.xml create mode 100644 tests/upstream-test-suite/011/interface_integer.xml create mode 100644 tests/upstream-test-suite/011_category.m create mode 100644 tests/upstream-test-suite/012/citelist.xml create mode 100644 tests/upstream-test-suite/012/indexpage.xml create mode 100644 tests/upstream-test-suite/012_cite.dox create mode 100644 tests/upstream-test-suite/013/class_t1.xml create mode 100644 tests/upstream-test-suite/013/class_t2.xml create mode 100644 tests/upstream-test-suite/013/class_t3.xml create mode 100644 tests/upstream-test-suite/013/class_t4.xml create mode 100644 tests/upstream-test-suite/013_class.h create mode 100644 tests/upstream-test-suite/014/indexpage.xml create mode 100644 tests/upstream-test-suite/014_code.dox create mode 100644 tests/upstream-test-suite/015/015__cond_8c.xml create mode 100644 tests/upstream-test-suite/015_cond.c create mode 100644 tests/upstream-test-suite/016/016__copydoc_8c.xml create mode 100644 tests/upstream-test-suite/016_copydoc.c create mode 100644 tests/upstream-test-suite/017/indexpage.xml create mode 100644 tests/upstream-test-suite/017_copyright.dox create mode 100644 tests/upstream-test-suite/018/018__def_8c.xml create mode 100644 tests/upstream-test-suite/018_def.c create mode 100644 tests/upstream-test-suite/019/group__g1.xml create mode 100644 tests/upstream-test-suite/019/group__g2.xml create mode 100644 tests/upstream-test-suite/019/group__g3.xml create mode 100644 tests/upstream-test-suite/019_defgroup.c create mode 100644 tests/upstream-test-suite/020/indexpage.xml create mode 100644 tests/upstream-test-suite/020_only.dox create mode 100644 tests/upstream-test-suite/021/indexpage.xml create mode 100644 tests/upstream-test-suite/021_dontinclude.cpp create mode 100644 tests/upstream-test-suite/022/indexpage.xml create mode 100644 tests/upstream-test-suite/022_dot.cpp create mode 100644 tests/upstream-test-suite/023/indexpage.xml create mode 100644 tests/upstream-test-suite/023_e.dox create mode 100644 tests/upstream-test-suite/024/indexpage.xml create mode 100644 tests/upstream-test-suite/024_if.dox create mode 100644 tests/upstream-test-suite/025/class_test.xml create mode 100644 tests/upstream-test-suite/025/example_test_8cpp-example.xml create mode 100644 tests/upstream-test-suite/025_example.cpp create mode 100644 tests/upstream-test-suite/026/class_test.xml create mode 100644 tests/upstream-test-suite/026_exception.cpp create mode 100644 tests/upstream-test-suite/027/struct_car.xml create mode 100644 tests/upstream-test-suite/027/struct_object.xml create mode 100644 tests/upstream-test-suite/027/struct_truck.xml create mode 100644 tests/upstream-test-suite/027/struct_vehicle.xml create mode 100644 tests/upstream-test-suite/027_extends.c create mode 100644 tests/upstream-test-suite/028/indexpage.xml create mode 100644 tests/upstream-test-suite/028_formula.c create mode 100644 tests/upstream-test-suite/029/029__hideinit_8c.xml create mode 100644 tests/upstream-test-suite/029_hideinit.c create mode 100644 tests/upstream-test-suite/030/indexpage.xml create mode 100644 tests/upstream-test-suite/030_htmlinclude.dox create mode 100644 tests/upstream-test-suite/031/indexpage.xml create mode 100644 tests/upstream-test-suite/031_image.dox create mode 100644 tests/upstream-test-suite/032/indexpage.xml create mode 100644 tests/upstream-test-suite/032_include.cpp create mode 100644 tests/upstream-test-suite/033/indexpage.xml create mode 100644 tests/upstream-test-suite/033_internal.dox create mode 100644 tests/upstream-test-suite/034/indexpage.xml create mode 100644 tests/upstream-test-suite/034_internal.dox create mode 100644 tests/upstream-test-suite/035/035__invariant_8c.xml create mode 100644 tests/upstream-test-suite/035_invariant.c create mode 100644 tests/upstream-test-suite/036/036__link_8c.xml create mode 100644 tests/upstream-test-suite/036_link.c create mode 100644 tests/upstream-test-suite/037/class_receiver.xml create mode 100644 tests/upstream-test-suite/037/class_sender.xml create mode 100644 tests/upstream-test-suite/037_msc.cpp create mode 100644 tests/upstream-test-suite/038/indexpage.xml create mode 100644 tests/upstream-test-suite/038_n.dox create mode 100644 tests/upstream-test-suite/039/class_test.xml create mode 100644 tests/upstream-test-suite/039_name.cpp create mode 100644 tests/upstream-test-suite/040/namespace_n_s.xml create mode 100644 tests/upstream-test-suite/040_namespace.cpp create mode 100644 tests/upstream-test-suite/041/class_test.xml create mode 100644 tests/upstream-test-suite/041_overload.cpp create mode 100644 tests/upstream-test-suite/042/namespaceorg_1_1doxygen_1_1_test.xml create mode 100644 tests/upstream-test-suite/042_package.java create mode 100644 tests/upstream-test-suite/043/another.xml create mode 100644 tests/upstream-test-suite/043/mypage.xml create mode 100644 tests/upstream-test-suite/043_page.dox create mode 100644 tests/upstream-test-suite/044/struct_s.xml create mode 100644 tests/upstream-test-suite/044_section.h create mode 100644 tests/upstream-test-suite/045/indexpage.xml create mode 100644 tests/upstream-test-suite/045_refitem.dox create mode 100644 tests/upstream-test-suite/046/046__related_8cpp.xml create mode 100644 tests/upstream-test-suite/046/class_test.xml create mode 100644 tests/upstream-test-suite/046_related.cpp create mode 100644 tests/upstream-test-suite/047/047__return_8cpp.xml create mode 100644 tests/upstream-test-suite/047_return.cpp create mode 100644 tests/upstream-test-suite/048/048__showinit_8c.xml create mode 100644 tests/upstream-test-suite/048_showinit.c create mode 100644 tests/upstream-test-suite/049/indexpage.xml create mode 100644 tests/upstream-test-suite/049_snippet.cpp create mode 100644 tests/upstream-test-suite/050/indexpage.xml create mode 100644 tests/upstream-test-suite/050_verbatim.dox create mode 100644 tests/upstream-test-suite/051/indexpage.xml create mode 100644 tests/upstream-test-suite/051_escape.dox create mode 100644 tests/upstream-test-suite/052/indexpage.xml create mode 100644 tests/upstream-test-suite/052_tilde.dox create mode 100644 tests/upstream-test-suite/053/indexpage.xml create mode 100644 tests/upstream-test-suite/053_tilde.dox create mode 100644 tests/upstream-test-suite/054/054__parblock_8cpp.xml create mode 100644 tests/upstream-test-suite/054_parblock.cpp create mode 100644 tests/upstream-test-suite/055/md_055_markdown.xml create mode 100644 tests/upstream-test-suite/055_markdown.md create mode 100644 tests/upstream-test-suite/056/indexpage.xml create mode 100644 tests/upstream-test-suite/056_latexinclude.dox create mode 100644 tests/upstream-test-suite/057/057__caller__graphs_8tcl.xml create mode 100644 tests/upstream-test-suite/057/__057__caller__graphs_8tcl.xml create mode 100644 tests/upstream-test-suite/057/namespace1.xml create mode 100644 tests/upstream-test-suite/057/namespace1_1_11.xml create mode 100644 tests/upstream-test-suite/057/namespace1_1_11_1_11.xml create mode 100644 tests/upstream-test-suite/057/namespace2.xml create mode 100644 tests/upstream-test-suite/057/namespace2_1_12.xml create mode 100644 tests/upstream-test-suite/057/namespace2_1_12_1_12.xml create mode 100644 tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12.xml create mode 100644 tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12_1_12.xml create mode 100644 tests/upstream-test-suite/057/namespacebar.xml create mode 100644 tests/upstream-test-suite/057/namespacefoo.xml create mode 100644 tests/upstream-test-suite/057_caller_graphs.tcl create mode 100644 tests/upstream-test-suite/058/058__bracket__recursion_8tcl.xml create mode 100644 tests/upstream-test-suite/058_bracket_recursion.tcl create mode 100644 tests/upstream-test-suite/059/059__command__catch_8tcl.xml create mode 100644 tests/upstream-test-suite/059_command_catch.tcl create mode 100644 tests/upstream-test-suite/060/060__command__switch_8tcl.xml create mode 100644 tests/upstream-test-suite/060_command_switch.tcl create mode 100644 tests/upstream-test-suite/061/class_test.xml create mode 100644 tests/upstream-test-suite/061_bug_705503.tcl create mode 100644 tests/upstream-test-suite/062/namespacen1.xml create mode 100644 tests/upstream-test-suite/062/namespacen2.xml create mode 100644 tests/upstream-test-suite/062/namespacen3.xml create mode 100644 tests/upstream-test-suite/062_namespace_resolution.tcl create mode 100644 tests/upstream-test-suite/063/namespaceoo.xml create mode 100644 tests/upstream-test-suite/063/namespaceoo_1_1_helpers.xml create mode 100644 tests/upstream-test-suite/063/namespaceoo_1_1define.xml create mode 100644 tests/upstream-test-suite/063_bug_729092.tcl create mode 100644 tests/upstream-test-suite/064/struct_foo.xml create mode 100644 tests/upstream-test-suite/064_castoperator.cpp create mode 100644 tests/upstream-test-suite/065/indexpage.xml create mode 100644 tests/upstream-test-suite/065_tilde.dox create mode 100644 tests/upstream-test-suite/066/class_class1.xml create mode 100644 tests/upstream-test-suite/066_property_initializer.cs create mode 100644 tests/upstream-test-suite/067/067__link__varargs_8cpp.xml create mode 100644 tests/upstream-test-suite/067_link_varargs.cpp create mode 100644 tests/upstream-test-suite/068/068__ref__varargs_8cpp.xml create mode 100644 tests/upstream-test-suite/068_ref_varargs.cpp create mode 100644 tests/upstream-test-suite/069/069__link__variadic__template_8cpp.xml create mode 100644 tests/upstream-test-suite/069_link_variadic_template.cpp create mode 100644 tests/upstream-test-suite/070/070__ref__variadic__template_8cpp.xml create mode 100644 tests/upstream-test-suite/070_ref_variadic_template.cpp create mode 100644 tests/upstream-test-suite/071/namespace_a_namespace_1_1_0D0.xml create mode 100644 tests/upstream-test-suite/071_enum_in_anon_ns.cpp create mode 100644 tests/upstream-test-suite/072/072__using_8cpp.xml create mode 100644 tests/upstream-test-suite/072_using.cpp create mode 100644 tests/upstream-test-suite/073/073__typed__enum_8cpp.xml create mode 100644 tests/upstream-test-suite/073_typed_enum.cpp create mode 100644 tests/upstream-test-suite/074/struct_foo.xml create mode 100644 tests/upstream-test-suite/074_ref.cpp create mode 100644 tests/upstream-test-suite/075/struct_foo.xml create mode 100644 tests/upstream-test-suite/075_argmatch.cpp create mode 100644 tests/upstream-test-suite/076/indexpage.xml create mode 100644 tests/upstream-test-suite/076_emojis.cpp create mode 100644 tests/upstream-test-suite/077/077__no__xml__namespace__members__in__file__scope_8h.xml create mode 100644 tests/upstream-test-suite/077_no_xml_namespace_members_in_file_scope.h create mode 100644 tests/upstream-test-suite/078/078__xml__namespace__members__in__file__scope_8h.xml create mode 100644 tests/upstream-test-suite/078_xml_namespace_members_in_file_scope.h create mode 100644 tests/upstream-test-suite/Doxyfile create mode 100644 tests/upstream-test-suite/Makefile create mode 100644 tests/upstream-test-suite/PURPOSE create mode 100644 tests/upstream-test-suite/README.txt create mode 100644 tests/upstream-test-suite/_057_caller_graphs.tcl create mode 100755 tests/upstream-test-suite/dtd/xhtml-lat1.ent create mode 100755 tests/upstream-test-suite/dtd/xhtml-special.ent create mode 100755 tests/upstream-test-suite/dtd/xhtml-symbol.ent create mode 100755 tests/upstream-test-suite/dtd/xhtml1-strict.dtd create mode 100755 tests/upstream-test-suite/dtd/xhtml1-transitional.dtd create mode 100644 tests/upstream-test-suite/example_test.cpp create mode 100755 tests/upstream-test-suite/runtest.sh create mode 100644 tests/upstream-test-suite/runtests.py create mode 100644 tests/upstream-test-suite/sample.bib create mode 100644 tests/upstream-test-suite/sample.html create mode 100644 tests/upstream-test-suite/sample.png create mode 100644 tests/upstream-test-suite/sample.tex create mode 100644 tests/upstream-test-suite/snippet_test.cpp diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..4a1c38a --- /dev/null +++ b/gating.yaml @@ -0,0 +1,7 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_testing +rules: + - !PassingTestCaseRule {test_case_name: dist.depcheck} + - !PassingTestCaseRule {test_case_name: dist.abicheck} diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..5826238 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,12 @@ +--- +# Run tests in all contexts +- hosts: localhost + tags: + - classic + roles: + - role: standard-test-beakerlib + tests: + - upstream-test-suite + required_packages: + - doxygen + - python3 diff --git a/tests/upstream-test-suite/001/indexpage.xml b/tests/upstream-test-suite/001/indexpage.xml new file mode 100644 index 0000000..0d567f5 --- /dev/null +++ b/tests/upstream-test-suite/001/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + Text argument more text. + + + diff --git a/tests/upstream-test-suite/001_a.dox b/tests/upstream-test-suite/001_a.dox new file mode 100644 index 0000000..c37136b --- /dev/null +++ b/tests/upstream-test-suite/001_a.dox @@ -0,0 +1,5 @@ +// objective: test the \a and \mainpage commands +// check: indexpage.xml +/** \mainpage + * Text \a argument more text. + */ diff --git a/tests/upstream-test-suite/002/indexpage.xml b/tests/upstream-test-suite/002/indexpage.xml new file mode 100644 index 0000000..25a731b --- /dev/null +++ b/tests/upstream-test-suite/002/indexpage.xml @@ -0,0 +1,17 @@ + + + + index + My Project + + + + + + keyword + + + + + + diff --git a/tests/upstream-test-suite/002_addindex.dox b/tests/upstream-test-suite/002_addindex.dox new file mode 100644 index 0000000..b1c941f --- /dev/null +++ b/tests/upstream-test-suite/002_addindex.dox @@ -0,0 +1,5 @@ +// objective: test \addindex command +// check: indexpage.xml +/** \mainpage + * \addindex keyword + */ diff --git a/tests/upstream-test-suite/003/indexpage.xml b/tests/upstream-test-suite/003/indexpage.xml new file mode 100644 index 0000000..dbd1559 --- /dev/null +++ b/tests/upstream-test-suite/003/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + See Anchor Some text. More text. + + + diff --git a/tests/upstream-test-suite/003_anchor.dox b/tests/upstream-test-suite/003_anchor.dox new file mode 100644 index 0000000..b28fc5e --- /dev/null +++ b/tests/upstream-test-suite/003_anchor.dox @@ -0,0 +1,8 @@ +// objective: test \anchor command +// check: indexpage.xml +/** \mainpage + * \ref myanchor "See Anchor" + * Some text. + * \anchor myanchor + * More text. + */ diff --git a/tests/upstream-test-suite/004/indexpage.xml b/tests/upstream-test-suite/004/indexpage.xml new file mode 100644 index 0000000..fdaea0d --- /dev/null +++ b/tests/upstream-test-suite/004/indexpage.xml @@ -0,0 +1,15 @@ + + + + index + My Project + + + + AlignLeft left alignment. AlignCenter center alignment. AlignRight right alignment +No other types of alignment are supported. + AlignLeft left alignment. AlignCenter center alignment. AlignRight right alignment +No other types of alignment are supported. + + + diff --git a/tests/upstream-test-suite/004_arg.dox b/tests/upstream-test-suite/004_arg.dox new file mode 100644 index 0000000..c6ea8e5 --- /dev/null +++ b/tests/upstream-test-suite/004_arg.dox @@ -0,0 +1,15 @@ +// objective: test \arg and \li commands +// check: indexpage.xml +/** \mainpage + \arg \c AlignLeft left alignment. + \arg \c AlignCenter center alignment. + \arg \c AlignRight right alignment + + No other types of alignment are supported. + + \li \c AlignLeft left alignment. + \li \c AlignCenter center alignment. + \li \c AlignRight right alignment + + No other types of alignment are supported. +*/ diff --git a/tests/upstream-test-suite/005/indexpage.xml b/tests/upstream-test-suite/005/indexpage.xml new file mode 100644 index 0000000..4a12dfd --- /dev/null +++ b/tests/upstream-test-suite/005/indexpage.xml @@ -0,0 +1,37 @@ + + + + index + My Project + + + + + + Attention message. + + + Something to note. + + + A remark. + + + A warning message. + + + + <para>Second paragraph </para> + </simplesect> + <simplesect kind="par"> + <title>User defined paragraph. + Contents of paragraph. + + + + <para>More text in a new paragraph. </para> + </simplesect> + </para> + </detaileddescription> + </compounddef> +</doxygen> diff --git a/tests/upstream-test-suite/005_attention.dox b/tests/upstream-test-suite/005_attention.dox new file mode 100644 index 0000000..90f67f5 --- /dev/null +++ b/tests/upstream-test-suite/005_attention.dox @@ -0,0 +1,14 @@ +// objective: test \attention, \note, \remark, \warning, and \par commands +// check: indexpage.xml +/** \mainpage + * \attention Attention message. + * \note Something to note. + * \remark A remark. + * \warning A warning message. + * \par + * Second paragraph + * \par User defined paragraph. + * Contents of paragraph. + * \par + * More text in a new paragraph. + */ diff --git a/tests/upstream-test-suite/006/indexpage.xml b/tests/upstream-test-suite/006/indexpage.xml new file mode 100644 index 0000000..162aac0 --- /dev/null +++ b/tests/upstream-test-suite/006/indexpage.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version=""> + <compounddef id="indexpage" kind="page"> + <compoundname>index</compoundname> + <title>My Project + + + + + + John Doe + + + Jane Doe + + + David, Steven + + + version 1.2 + + + 1.8-beta2 + + + + + diff --git a/tests/upstream-test-suite/006_author.dox b/tests/upstream-test-suite/006_author.dox new file mode 100644 index 0000000..ba07c1e --- /dev/null +++ b/tests/upstream-test-suite/006_author.dox @@ -0,0 +1,9 @@ +// objective: test the \author, \since, and \version command +// check: indexpage.xml +/** \mainpage + * \author John Doe + * \author Jane Doe + * \authors David, Steven + * \since version 1.2 + * \version 1.8-beta2 + */ diff --git a/tests/upstream-test-suite/007/indexpage.xml b/tests/upstream-test-suite/007/indexpage.xml new file mode 100644 index 0000000..8e85063 --- /dev/null +++ b/tests/upstream-test-suite/007/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + Text bold normal text. + + + diff --git a/tests/upstream-test-suite/007_b.dox b/tests/upstream-test-suite/007_b.dox new file mode 100644 index 0000000..887c19f --- /dev/null +++ b/tests/upstream-test-suite/007_b.dox @@ -0,0 +1,5 @@ +// objective: test the \b command +// check: indexpage.xml +/** \mainpage + * Text \b bold normal text. + */ diff --git a/tests/upstream-test-suite/008/008__brief_8c.xml b/tests/upstream-test-suite/008/008__brief_8c.xml new file mode 100644 index 0000000..4fcf6a6 --- /dev/null +++ b/tests/upstream-test-suite/008/008__brief_8c.xml @@ -0,0 +1,13 @@ + + + + 008_brief.c + + A brief description. + + + More details. + + + + diff --git a/tests/upstream-test-suite/008_brief.c b/tests/upstream-test-suite/008_brief.c new file mode 100644 index 0000000..773eaf1 --- /dev/null +++ b/tests/upstream-test-suite/008_brief.c @@ -0,0 +1,7 @@ +// objective: test \brief and \file command +// check: 008__brief_8c.xml +/** \file + * \brief A brief description. + * + * More details. + */ diff --git a/tests/upstream-test-suite/009/bug.xml b/tests/upstream-test-suite/009/bug.xml new file mode 100644 index 0000000..34a411b --- /dev/null +++ b/tests/upstream-test-suite/009/bug.xml @@ -0,0 +1,27 @@ + + + + bug + Bug List + + + + + + + Class Bug + + + Class bug. + + + Member Bug::foo () + + + Function buglist item 1 in buglist item 2 in bug + + + + + + diff --git a/tests/upstream-test-suite/009/class_bug.xml b/tests/upstream-test-suite/009/class_bug.xml new file mode 100644 index 0000000..5a770bb --- /dev/null +++ b/tests/upstream-test-suite/009/class_bug.xml @@ -0,0 +1,43 @@ + + + + Bug + + + void + void Bug::foo + () + foo + + + + Description BugFunction buglist item 1 in buglist item 2 in bug + + More text. + + + + + + + + + + + + Bug + + Class bug. + + + + + + + + Bug + foo + + + + diff --git a/tests/upstream-test-suite/009/class_deprecated.xml b/tests/upstream-test-suite/009/class_deprecated.xml new file mode 100644 index 0000000..5d44aaf --- /dev/null +++ b/tests/upstream-test-suite/009/class_deprecated.xml @@ -0,0 +1,41 @@ + + + + Deprecated + + + void + void Deprecated::deprecated + () + deprecated + + + + Do deprecated things. DeprecatedNo not use this function anymore. + + + + + + + + + + + + Deprecated + + This class is deprecated + + + + + + + + Deprecated + deprecated + + + + diff --git a/tests/upstream-test-suite/009/class_reminder.xml b/tests/upstream-test-suite/009/class_reminder.xml new file mode 100644 index 0000000..379b3e7 --- /dev/null +++ b/tests/upstream-test-suite/009/class_reminder.xml @@ -0,0 +1,48 @@ + + + + Reminder + + + void + void Reminder::reminder + () + reminder + + + + + + Reminder + + Need to rework this before the next release. + + + + + + + + + + + + + + + Reminder + + A reminder + + + + + + + + Reminder + reminder + + + + diff --git a/tests/upstream-test-suite/009/class_test.xml b/tests/upstream-test-suite/009/class_test.xml new file mode 100644 index 0000000..9f1b126 --- /dev/null +++ b/tests/upstream-test-suite/009/class_test.xml @@ -0,0 +1,48 @@ + + + + Test + + + void + void Test::test + () + test + + + + + + Test + + more things to test. + + + + + + + + + + + + + + + Test + + This is part of testing + + + + + + + + Test + test + + + + diff --git a/tests/upstream-test-suite/009/class_todo.xml b/tests/upstream-test-suite/009/class_todo.xml new file mode 100644 index 0000000..8657d60 --- /dev/null +++ b/tests/upstream-test-suite/009/class_todo.xml @@ -0,0 +1,48 @@ + + + + Todo + + + void + void Todo::todo + () + todo + + + + + + Todo + + more things to do here + + + + + + + + + + + + + + + Todo + + This still needs to be done. + + + + + + + + Todo + todo + + + + diff --git a/tests/upstream-test-suite/009/deprecated.xml b/tests/upstream-test-suite/009/deprecated.xml new file mode 100644 index 0000000..a787015 --- /dev/null +++ b/tests/upstream-test-suite/009/deprecated.xml @@ -0,0 +1,27 @@ + + + + deprecated + Deprecated List + + + + + + + Class Deprecated + + + This class is deprecated + + + Member Deprecated::deprecated () + + + No not use this function anymore. + + + + + + diff --git a/tests/upstream-test-suite/009/reminders.xml b/tests/upstream-test-suite/009/reminders.xml new file mode 100644 index 0000000..f848e3c --- /dev/null +++ b/tests/upstream-test-suite/009/reminders.xml @@ -0,0 +1,27 @@ + + + + reminders + Reminders + + + + + + + Class Reminder + + + A reminder + + + Member Reminder::reminder () + + + Need to rework this before the next release. + + + + + + diff --git a/tests/upstream-test-suite/009/test.xml b/tests/upstream-test-suite/009/test.xml new file mode 100644 index 0000000..828316d --- /dev/null +++ b/tests/upstream-test-suite/009/test.xml @@ -0,0 +1,27 @@ + + + + test + Test List + + + + + + + Class Test + + + This is part of testing + + + Member Test::test () + + + more things to test. + + + + + + diff --git a/tests/upstream-test-suite/009/todo.xml b/tests/upstream-test-suite/009/todo.xml new file mode 100644 index 0000000..394f07d --- /dev/null +++ b/tests/upstream-test-suite/009/todo.xml @@ -0,0 +1,27 @@ + + + + todo + Todo List + + + + + + + Class Todo + + + This still needs to be done. + + + Member Todo::todo () + + + more things to do here + + + + + + diff --git a/tests/upstream-test-suite/009_bug.cpp b/tests/upstream-test-suite/009_bug.cpp new file mode 100644 index 0000000..285c77e --- /dev/null +++ b/tests/upstream-test-suite/009_bug.cpp @@ -0,0 +1,62 @@ +// objective: test the \bug, \deprecated, \todo, \test, and \xrefitem commands +// check: class_bug.xml +// check: class_deprecated.xml +// check: class_todo.xml +// check: class_test.xml +// check: class_reminder.xml +// check: bug.xml +// check: deprecated.xml +// check: todo.xml +// check: test.xml +// check: reminders.xml +// config: ALIASES = "reminder=\xrefitem reminders \"Reminder\" \"Reminders\"" + +/** \bug Class bug. */ +class Bug +{ + public: + /** Description + * \bug Function bug + * - list item 1 in bug + * - list item 2 in bug + * + * More text. + */ + void foo(); +}; + +/** \deprecated This class is deprecated */ +class Deprecated +{ + public: + /** Do deprecated things. + * \deprecated No not use this function anymore. + */ + void deprecated(); +}; + +/** \todo This still needs to be done. */ +class Todo +{ + public: + /** \todo more things to do here */ + void todo(); +}; + +/** \test This is part of testing */ +class Test +{ + public: + /** \test more things to test. */ + void test(); +}; + +/** \reminder A reminder */ +class Reminder +{ + public: + /** \reminder Need to rework this before the next release. */ + void reminder(); +}; + + diff --git a/tests/upstream-test-suite/010/indexpage.xml b/tests/upstream-test-suite/010/indexpage.xml new file mode 100644 index 0000000..05c297e --- /dev/null +++ b/tests/upstream-test-suite/010/indexpage.xml @@ -0,0 +1,13 @@ + + + + index + My Project + + + + Text code normal text. + Text code normal text. + + + diff --git a/tests/upstream-test-suite/010_c.dox b/tests/upstream-test-suite/010_c.dox new file mode 100644 index 0000000..a26b5fd --- /dev/null +++ b/tests/upstream-test-suite/010_c.dox @@ -0,0 +1,7 @@ +// objective: test the \c and \p commands +// check: indexpage.xml +/** \mainpage + * Text \c code normal text. + * + * Text \p code normal text. + */ diff --git a/tests/upstream-test-suite/011/category_integer_07_arithmetic_08.xml b/tests/upstream-test-suite/011/category_integer_07_arithmetic_08.xml new file mode 100644 index 0000000..78a8c0e --- /dev/null +++ b/tests/upstream-test-suite/011/category_integer_07_arithmetic_08.xml @@ -0,0 +1,60 @@ + + + + Integer(Arithmetic) + + + id + id Integer(Arithmetic)::add: + (Integer *addend) + add: + + Integer * + addend + + + + + add operation + + + + + + + id + id Integer(Arithmetic)::sub: + (Integer *subtrahend) + sub: + + Integer * + subtrahend + + + + + subtract operation + + + + + + + + + + A category + + + + + Integer(Arithmetic) + add: + + + Integer(Arithmetic) + sub: + + + + diff --git a/tests/upstream-test-suite/011/interface_integer.xml b/tests/upstream-test-suite/011/interface_integer.xml new file mode 100644 index 0000000..429c6a0 --- /dev/null +++ b/tests/upstream-test-suite/011/interface_integer.xml @@ -0,0 +1,99 @@ + + + + Integer + Object + + + int + int Integer::integer + + integer + + + + data member + + + + + + + + + int + int Integer::integer + () + integer + + + + getter + + + + + + + id + id Integer::integer: + (int _integer) + integer: + + int + _integer + + + + + setter + + + + + + + + + + An interface + + + + + + + + + + + + + + + + + + + + + + + + + + + Integer + integer + + + Integer + integer + + + Integer + integer: + + + + diff --git a/tests/upstream-test-suite/011_category.m b/tests/upstream-test-suite/011_category.m new file mode 100644 index 0000000..f57c1d1 --- /dev/null +++ b/tests/upstream-test-suite/011_category.m @@ -0,0 +1,30 @@ +// objective: test the \interface and \category command +// check: category_integer_07_arithmetic_08.xml +// check: interface_integer.xml +# import + +@interface Integer : Object { + /** data member */ + int integer; +} + +/** getter */ +- (int) integer; +/** setter */ +- (id) integer: (int) _integer; +@end + +@interface Integer (Arithmetic) +/** add operation */ +- (id) add: (Integer *) addend; +/** subtract operation */ +- (id) sub: (Integer *) subtrahend; +@end + +/** \interface Integer + * An interface + */ + +/** \category Integer(Arithmetic) + * A category + */ diff --git a/tests/upstream-test-suite/012/citelist.xml b/tests/upstream-test-suite/012/citelist.xml new file mode 100644 index 0000000..f415968 --- /dev/null +++ b/tests/upstream-test-suite/012/citelist.xml @@ -0,0 +1,22 @@ + + + + citelist + Bibliography + + + + + + + [1] + + + DonaldE. Knuth. Tex and Metafont, New Directions in Typesetting. American Mathematical Society and Digital Press, Stanford, 1979. + + + + + + + diff --git a/tests/upstream-test-suite/012/indexpage.xml b/tests/upstream-test-suite/012/indexpage.xml new file mode 100644 index 0000000..73fb669 --- /dev/null +++ b/tests/upstream-test-suite/012/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + See [1] for more info. + + + diff --git a/tests/upstream-test-suite/012_cite.dox b/tests/upstream-test-suite/012_cite.dox new file mode 100644 index 0000000..94be5e7 --- /dev/null +++ b/tests/upstream-test-suite/012_cite.dox @@ -0,0 +1,7 @@ +// objective: test the \cite command +// check: indexpage.xml +// check: citelist.xml +// config: CITE_BIB_FILES = $INPUTDIR/sample.bib +/** \mainpage + * See \cite knuth79 for more info. + */ diff --git a/tests/upstream-test-suite/013/class_t1.xml b/tests/upstream-test-suite/013/class_t1.xml new file mode 100644 index 0000000..ba91621 --- /dev/null +++ b/tests/upstream-test-suite/013/class_t1.xml @@ -0,0 +1,15 @@ + + + + T1 + inc/013_class.h + + + + A class + + + + + + diff --git a/tests/upstream-test-suite/013/class_t2.xml b/tests/upstream-test-suite/013/class_t2.xml new file mode 100644 index 0000000..9df47e2 --- /dev/null +++ b/tests/upstream-test-suite/013/class_t2.xml @@ -0,0 +1,15 @@ + + + + T2 + 013_class.h + + + + class T2 + + + + + + diff --git a/tests/upstream-test-suite/013/class_t3.xml b/tests/upstream-test-suite/013/class_t3.xml new file mode 100644 index 0000000..dc0cd3f --- /dev/null +++ b/tests/upstream-test-suite/013/class_t3.xml @@ -0,0 +1,15 @@ + + + + T3 + 013_class.h + + + + class T3 + + + + + + diff --git a/tests/upstream-test-suite/013/class_t4.xml b/tests/upstream-test-suite/013/class_t4.xml new file mode 100644 index 0000000..52955d2 --- /dev/null +++ b/tests/upstream-test-suite/013/class_t4.xml @@ -0,0 +1,15 @@ + + + + T4 + inc/013_class.h + + + + class T4 + + + + + + diff --git a/tests/upstream-test-suite/013_class.h b/tests/upstream-test-suite/013_class.h new file mode 100644 index 0000000..346250b --- /dev/null +++ b/tests/upstream-test-suite/013_class.h @@ -0,0 +1,37 @@ +// objective: test the \class and \headerfile commands +// check: class_t1.xml +// check: class_t2.xml +// check: class_t3.xml +// check: class_t4.xml + +/** A class + * \headerfile 013_class.h "inc/013_class.h" + */ +class T1 +{ +}; + +class T2 +{ +}; + +class T3 +{ +}; + +class T4 +{ +}; + +/** \class T2 + * \headerfile <> + * class T2 + */ + +/** \class T3 013_class.h + * class T3 + */ + +/** \class T4 013_class.h "inc/013_class.h" + * class T4 + */ diff --git a/tests/upstream-test-suite/014/indexpage.xml b/tests/upstream-test-suite/014/indexpage.xml new file mode 100644 index 0000000..7cbc82f --- /dev/null +++ b/tests/upstream-test-suite/014/indexpage.xml @@ -0,0 +1,51 @@ + + + + index + My Project + + + + + + + #commentinPython + + + + + class + Python: + + + + + + + pass + + + + + + + //commentinacodeblock + + + + + class + Cpp{}; + + + + + + + //implicitcodelanguage + + + + + + diff --git a/tests/upstream-test-suite/014_code.dox b/tests/upstream-test-suite/014_code.dox new file mode 100644 index 0000000..56597cc --- /dev/null +++ b/tests/upstream-test-suite/014_code.dox @@ -0,0 +1,18 @@ +// objective: test the \code command +// check: indexpage.xml +/** \mainpage + * \code{.py} + * # comment in Python + * class Python: + * pass + * \endcode + * + * \code{.cpp} + * // comment in a code block + * class Cpp {}; + * \endcode + * + * \code + * // implicit code language + * \endcode + */ diff --git a/tests/upstream-test-suite/015/015__cond_8c.xml b/tests/upstream-test-suite/015/015__cond_8c.xml new file mode 100644 index 0000000..bcc18b5 --- /dev/null +++ b/tests/upstream-test-suite/015/015__cond_8c.xml @@ -0,0 +1,28 @@ + + + + 015_cond.c + + + void + void cond_enabled + () + cond_enabled + + + + Function to be shown. + + + + + + + + + + Text argument more text. + + + + diff --git a/tests/upstream-test-suite/015_cond.c b/tests/upstream-test-suite/015_cond.c new file mode 100644 index 0000000..0ac209d --- /dev/null +++ b/tests/upstream-test-suite/015_cond.c @@ -0,0 +1,32 @@ +// objective: test the `cond` command +// check: 015__cond_8c.xml +// config: ENABLED_SECTIONS = COND_ENABLED + +/** \file + * Text \a argument more text. + */ + +/// \cond + +/** A function */ +void func(); + +/** A macro */ +#define MACRO 42 + +/// \endcond + +/// \cond COND_ENABLED +/// Function to be shown. +void cond_enabled() +{ +} +/// \endcond + +/** \cond COND_DISABLED */ + Function not to be shown. +void cond_disabled() +{ +} +/** \endcond */ + diff --git a/tests/upstream-test-suite/016/016__copydoc_8c.xml b/tests/upstream-test-suite/016/016__copydoc_8c.xml new file mode 100644 index 0000000..992122d --- /dev/null +++ b/tests/upstream-test-suite/016/016__copydoc_8c.xml @@ -0,0 +1,76 @@ + + + + 016_copydoc.c + + + void + void func + (int i) + func + + int + i + + + Brief description. + + + Detailed description. + + + + + + + void + void func_brief + () + func_brief + + Brief description. + + + + + + + + + void + void func_details + () + func_details + + + + Detailed description. + + + + + + + void + void func_doc + () + func_doc + + Brief description. + + + Detailed description. More text. + + + + + + + + + + Text argument more text. + + + + diff --git a/tests/upstream-test-suite/016_copydoc.c b/tests/upstream-test-suite/016_copydoc.c new file mode 100644 index 0000000..bb8b1bb --- /dev/null +++ b/tests/upstream-test-suite/016_copydoc.c @@ -0,0 +1,23 @@ +// objective: test the \copydoc, \copybrief, \copydetails, and \details commands +// check: 016__copydoc_8c.xml + +/** \file + * Text \a argument more text. + */ + +/** \brief Brief description. + * \details Detailed description. + */ +void func(int i); + +/** \copybrief func(int) */ +void func_brief(); + +/** \copydetails func(int) */ +void func_details(); + +/** \copydoc func(int) + * More text. + */ +void func_doc(); + diff --git a/tests/upstream-test-suite/017/indexpage.xml b/tests/upstream-test-suite/017/indexpage.xml new file mode 100644 index 0000000..3326ee8 --- /dev/null +++ b/tests/upstream-test-suite/017/indexpage.xml @@ -0,0 +1,19 @@ + + + + index + My Project + + + + + + Dimitri van Heesch + + + July 13 2013 + + + + + diff --git a/tests/upstream-test-suite/017_copyright.dox b/tests/upstream-test-suite/017_copyright.dox new file mode 100644 index 0000000..2351180 --- /dev/null +++ b/tests/upstream-test-suite/017_copyright.dox @@ -0,0 +1,6 @@ +// objective: test \copyright and \date commands +// check: indexpage.xml +/** \mainpage + * \copyright Dimitri van Heesch + * \date July 13 2013 + */ diff --git a/tests/upstream-test-suite/018/018__def_8c.xml b/tests/upstream-test-suite/018/018__def_8c.xml new file mode 100644 index 0000000..5f42767 --- /dev/null +++ b/tests/upstream-test-suite/018/018__def_8c.xml @@ -0,0 +1,126 @@ + + + + 018_def.c + + + MACRO + 42 + + + + A macro definition + + + + + + + + + + E + + E1 + + + + + + + E2 + + + + + + + + + An enum + + + + + + + + + int + Type + + Type + + + + A type definition. + + + + + + + + + int + var + + var + = 10 + + + + A variable + + + + + + + + + void + func + (int) + func + + int + + + + + A function with one parameter. + + + + + + + void + func + (int, const char *) + func + + int + + + const char * + + + + + A function with two parameters + + + + + + + + + + Text argument more text. + + + + diff --git a/tests/upstream-test-suite/018_def.c b/tests/upstream-test-suite/018_def.c new file mode 100644 index 0000000..dadc71c --- /dev/null +++ b/tests/upstream-test-suite/018_def.c @@ -0,0 +1,37 @@ +// objective: test the \def, \var, \fn, and \typedef commands +// check: 018__def_8c.xml + +/** \file + * Text \a argument more text. + */ + +#define MACRO 42 +int var = 10; +void func(int) {} +void func(int,const char *) {} +typedef int Type; +enum E { E1, E2 }; + +/** \def MACRO + * A macro definition + */ + +/** \var var + * A variable + */ + +/** \fn func(int) + * A function with one parameter. + */ + +/** \fn func(int,const char *) + * A function with two parameters + */ + +/** \typedef Type + * A type definition. + */ + +/** \enum E + * An enum + */ diff --git a/tests/upstream-test-suite/019/group__g1.xml b/tests/upstream-test-suite/019/group__g1.xml new file mode 100644 index 0000000..23d9c31 --- /dev/null +++ b/tests/upstream-test-suite/019/group__g1.xml @@ -0,0 +1,28 @@ + + + + g1 + First Group + + + void + void func_g1 + () + func_g1 + + + + A function in the first group. + + + + + + + + + + Text for first group. + + + diff --git a/tests/upstream-test-suite/019/group__g2.xml b/tests/upstream-test-suite/019/group__g2.xml new file mode 100644 index 0000000..51df509 --- /dev/null +++ b/tests/upstream-test-suite/019/group__g2.xml @@ -0,0 +1,29 @@ + + + + g2 + Second Group + Third Group + + + void + void func_g2 + () + func_g2 + + + + A function in the second group + + + + + + + + + + Text for second group. + + + diff --git a/tests/upstream-test-suite/019/group__g3.xml b/tests/upstream-test-suite/019/group__g3.xml new file mode 100644 index 0000000..1c2b33b --- /dev/null +++ b/tests/upstream-test-suite/019/group__g3.xml @@ -0,0 +1,42 @@ + + + + g3 + Third Group + + + void + void func_g3 + () + func_g3 + + + + A function in the third group + + + + + + + void + void func_g3_add + () + func_g3_add + + + + Another function added to the third group + + + + + + + + + + Text for third group. + + + diff --git a/tests/upstream-test-suite/019_defgroup.c b/tests/upstream-test-suite/019_defgroup.c new file mode 100644 index 0000000..d42d63e --- /dev/null +++ b/tests/upstream-test-suite/019_defgroup.c @@ -0,0 +1,48 @@ +// objective: test the \defgroup, \addtogroup, and \ingroup command. +// check: group__g1.xml +// check: group__g2.xml +// check: group__g3.xml + +/** \defgroup g1 First Group + * Text for first group. + */ + +/** A function in the first group. + * \ingroup g1 + */ +void func_g1(); + +//-------------------------------- + +/** \defgroup g2 Second Group + * Text for second group. + */ +/// \{ + +/** A function in the second group */ +void func_g2(); + +/// \} + +/** \defgroup g3 Third Group + * Text for third group. + * \ingroup g2 + * \{ + */ + +//-------------------------------- + +/** A function in the third group */ +void func_g3(); + +/** \} */ + +/** \addtogroup g3 + * \{ + */ + +/** Another function added to the third group */ +void func_g3_add(); + +/** \} */ + diff --git a/tests/upstream-test-suite/020/indexpage.xml b/tests/upstream-test-suite/020/indexpage.xml new file mode 100644 index 0000000..3171e13 --- /dev/null +++ b/tests/upstream-test-suite/020/indexpage.xml @@ -0,0 +1,14 @@ + + + + index + My Project + + + + Text. +XML +More text. + + + diff --git a/tests/upstream-test-suite/020_only.dox b/tests/upstream-test-suite/020_only.dox new file mode 100644 index 0000000..f8e2ce1 --- /dev/null +++ b/tests/upstream-test-suite/020_only.dox @@ -0,0 +1,27 @@ +// objective: test the \*only and \*endonly commands +// check: indexpage.xml +/** \mainpage + * Text. + * \htmlonly + * HTML + * \endhtmlonly + * \htmlonly[block] + * HTML with block + * \endhtmlonly + * \rtfonly + * RTF + * \endrtfonly + * \manonly + * Man + * \endmanonly + * \latexonly + * LaTeX + * \endlatexonly + * \xmlonly + * XML + * \endxmlonly + * \docbookonly + * DocBook + * \enddocbookonly + * More text. + */ diff --git a/tests/upstream-test-suite/021/indexpage.xml b/tests/upstream-test-suite/021/indexpage.xml new file mode 100644 index 0000000..7c93a78 --- /dev/null +++ b/tests/upstream-test-suite/021/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + Our main function starts like this: voidmain(){ First we create a object t of the Test class. Testt; Then we call the example member function t.example(); After that our little test routine ends. } + + + diff --git a/tests/upstream-test-suite/021_dontinclude.cpp b/tests/upstream-test-suite/021_dontinclude.cpp new file mode 100644 index 0000000..eeb95c5 --- /dev/null +++ b/tests/upstream-test-suite/021_dontinclude.cpp @@ -0,0 +1,23 @@ +// objective: test the \dontinclude, \skip, \until, \skipline, \line commands +// check: indexpage.xml +/*! A test class. */ + +class Test +{ + public: + /// a member function + void example(); +}; + +/*! \mainpage + * \dontinclude example_test.cpp + * Our main function starts like this: + * \skip main + * \until { + * First we create a object \c t of the Test class. + * \skipline Test + * Then we call the example member function + * \line example + * After that our little test routine ends. + * \line } + */ diff --git a/tests/upstream-test-suite/022/indexpage.xml b/tests/upstream-test-suite/022/indexpage.xml new file mode 100644 index 0000000..0fcee9c --- /dev/null +++ b/tests/upstream-test-suite/022/indexpage.xml @@ -0,0 +1,20 @@ + + + + index + My Project + + + + Class relations expressed via an inline dot graph: +digraph example { + node [shape=record, fontname=Helvetica, fontsize=10]; + b [ label="class B" URL="\ref B"]; + c [ label="class C" URL="\ref C"]; + b -> c [ arrowhead="open", style="dashed" ]; +} + + + + + diff --git a/tests/upstream-test-suite/022_dot.cpp b/tests/upstream-test-suite/022_dot.cpp new file mode 100644 index 0000000..74d3f7a --- /dev/null +++ b/tests/upstream-test-suite/022_dot.cpp @@ -0,0 +1,22 @@ +// objective: test the \dot and \enddot commands +// check: indexpage.xml +// config: HAVE_DOT = YES +// config: DOTFILE_DIRS = $INPUTDIR + +/*! class B */ +class B {}; +/*! class C */ +class C {}; + +/*! \mainpage +Class relations expressed via an inline dot graph: +\dot +digraph example { + node [shape=record, fontname=Helvetica, fontsize=10]; + b [ label="class B" URL="\ref B"]; + c [ label="class C" URL="\ref C"]; + b -> c [ arrowhead="open", style="dashed" ]; +} +\enddot +*/ + diff --git a/tests/upstream-test-suite/023/indexpage.xml b/tests/upstream-test-suite/023/indexpage.xml new file mode 100644 index 0000000..c87860c --- /dev/null +++ b/tests/upstream-test-suite/023/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + Normal emphasis and more emphasis back to normal. + + + diff --git a/tests/upstream-test-suite/023_e.dox b/tests/upstream-test-suite/023_e.dox new file mode 100644 index 0000000..5f787b7 --- /dev/null +++ b/tests/upstream-test-suite/023_e.dox @@ -0,0 +1,5 @@ +// objective: test the \e, \em commands +// check: indexpage.xml +/** \mainpage + * Normal \e emphasis and more \em emphasis back to normal. + */ diff --git a/tests/upstream-test-suite/024/indexpage.xml b/tests/upstream-test-suite/024/indexpage.xml new file mode 100644 index 0000000..7396177 --- /dev/null +++ b/tests/upstream-test-suite/024/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + Unconditional (start) Enabled (if). Enabled (else). Unconditional (middle) Enabled (else). Unconditional (end) + + + diff --git a/tests/upstream-test-suite/024_if.dox b/tests/upstream-test-suite/024_if.dox new file mode 100644 index 0000000..f24be43 --- /dev/null +++ b/tests/upstream-test-suite/024_if.dox @@ -0,0 +1,21 @@ +// objective: test the \if, \ifnot, \elsif, \else, and \endif commands +// check: indexpage.xml +// config: ENABLED_SECTIONS = GUARD_ENABLED +/** \mainpage + * Unconditional (start) + * \if GUARD_ENABLED + * Enabled (if). + * \if (!GUARD_ENABLED) Disabled (if).\else Enabled (else). \endif + * \else + * Disabled. + * \endif + * Unconditional (middle) + * \ifnot GUARD_ENABLED + * Disabled (ifnot). + * \elseif GUARD_DISABLED + * Disabled (elseif). + * \else + * Enabled (else). + * \endif + * Unconditional (end) + */ diff --git a/tests/upstream-test-suite/025/class_test.xml b/tests/upstream-test-suite/025/class_test.xml new file mode 100644 index 0000000..c19341a --- /dev/null +++ b/tests/upstream-test-suite/025/class_test.xml @@ -0,0 +1,36 @@ + + + + Test + + + void + void Test::example + () + example + + An example member function. + + + More details about this function. + + + + + + + + A Test class. + + + More details about this class. + + + + + Test + example + + + + diff --git a/tests/upstream-test-suite/025/example_test_8cpp-example.xml b/tests/upstream-test-suite/025/example_test_8cpp-example.xml new file mode 100644 index 0000000..6bcee68 --- /dev/null +++ b/tests/upstream-test-suite/025/example_test_8cpp-example.xml @@ -0,0 +1,12 @@ + + + + example_test.cpp + + + + This is an example of how to use the Test class. + More details about this example. voidmain(){constchar*a="Somespecialcharacterhere:";Testt;t.example();} + + + diff --git a/tests/upstream-test-suite/025_example.cpp b/tests/upstream-test-suite/025_example.cpp new file mode 100644 index 0000000..817a47f --- /dev/null +++ b/tests/upstream-test-suite/025_example.cpp @@ -0,0 +1,26 @@ +// objective: test the \example command +// check: example_test_8cpp-example.xml +// check: class_test.xml + + +/** \brief A Test class. + * + * More details about this class. + */ +class Test +{ + public: + /** \brief An example member function. + * + * More details about this function. + */ + void example(); +}; + +void Test::example() {} + +/** \example example_test.cpp + * This is an example of how to use the Test class. + * + * More details about this example. + */ diff --git a/tests/upstream-test-suite/026/class_test.xml b/tests/upstream-test-suite/026/class_test.xml new file mode 100644 index 0000000..582d509 --- /dev/null +++ b/tests/upstream-test-suite/026/class_test.xml @@ -0,0 +1,52 @@ + + + + Test + + + class T + + + + + int + int Test< T >::example + (int p1, int p2) + example + + int + p1 + + + int + p2 + + throw (std::out_of_range) + + + + An example member function. p1First parameter. p2Second parameter. +std::out_of_rangeparameter is out of range. +0if p1 and p2 are equal -1if p1 is smaller than p2 1if p1 is bigger than p2 + + + + + + + + + + + A Test class. More details about this class. TA template parameter. + + + + + + Test + example + + + + diff --git a/tests/upstream-test-suite/026_exception.cpp b/tests/upstream-test-suite/026_exception.cpp new file mode 100644 index 0000000..cabb128 --- /dev/null +++ b/tests/upstream-test-suite/026_exception.cpp @@ -0,0 +1,21 @@ +// objective: test the \exception, \param, and \tparam commands +// check: class_test.xml + +/** A Test class. + * More details about this class. + * @tparam T A template parameter. + */ +template class Test +{ + public: + /** An example member function. + * \param p1 First parameter. + * \param p2 Second parameter. + * \exception std::out_of_range parameter is out of range. + * \retval 0 if p1 and p2 are equal + * \retval -1 if p1 is smaller than p2 + * \retval 1 if p1 is bigger than p2 + */ + int example(int p1,int p2) throw(std::out_of_range); +}; + diff --git a/tests/upstream-test-suite/027/struct_car.xml b/tests/upstream-test-suite/027/struct_car.xml new file mode 100644 index 0000000..9027597 --- /dev/null +++ b/tests/upstream-test-suite/027/struct_car.xml @@ -0,0 +1,95 @@ + + + + Car + Vehicle + + + + Vehicle + + Vehicle Car::base + + base + + Base class. + + + + + + + + + + + + Car class. + + + + + + + + + + + + + + + + + + + + + + + + + + + base + + + + + + + + + + + + + base + + + + + + + Car + base + + + Car + objRef + + + Car + objUnref + + + Car + vehicleStart + + + Car + vehicleStop + + + + diff --git a/tests/upstream-test-suite/027/struct_object.xml b/tests/upstream-test-suite/027/struct_object.xml new file mode 100644 index 0000000..e14caa5 --- /dev/null +++ b/tests/upstream-test-suite/027/struct_object.xml @@ -0,0 +1,105 @@ + + + + Object + Vehicle + + + int + int Object::ref + + ref + + Reference count. + + + + + + + + + + + Object * + static Object * objRef + (Object *obj) + objRef + + Object * + obj + + + + + Increments object reference count by one. + + + + + + + Object * + static Object * objUnref + (Object *obj) + objUnref + + Object * + obj + + + + + Decrements object reference count by one. + + + + + + + + + + Base object class. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Object + objRef + + + Object + objUnref + + + Object + ref + + + + diff --git a/tests/upstream-test-suite/027/struct_truck.xml b/tests/upstream-test-suite/027/struct_truck.xml new file mode 100644 index 0000000..c5009d4 --- /dev/null +++ b/tests/upstream-test-suite/027/struct_truck.xml @@ -0,0 +1,95 @@ + + + + Truck + Vehicle + + + + Vehicle + + Vehicle Truck::base + + base + + Base class. + + + + + + + + + + + + Truck class. + + + + + + + + + + + + + + + + + + + + + + + + + + + base + + + + + + + + + base + + + + + + + + + + + Truck + base + + + Truck + objRef + + + Truck + objUnref + + + Truck + vehicleStart + + + Truck + vehicleStop + + + + diff --git a/tests/upstream-test-suite/027/struct_vehicle.xml b/tests/upstream-test-suite/027/struct_vehicle.xml new file mode 100644 index 0000000..acf10a0 --- /dev/null +++ b/tests/upstream-test-suite/027/struct_vehicle.xml @@ -0,0 +1,132 @@ + + + + Vehicle + Object + Car + Truck + + + + Object + + Object Vehicle::base + + base + + Base class. + + + + + + + + + + + void + void vehicleStart + (Vehicle *obj) + vehicleStart + + Vehicle * + obj + + + + + Starts the vehicle. + + + + + + + void + void vehicleStop + (Vehicle *obj) + vehicleStop + + Vehicle * + obj + + + + + Stops the vehicle. + + + + + + + + + + Vehicle class. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + base + + + + + + + + + + + Vehicle + base + + + Vehicle + objRef + + + Vehicle + objUnref + + + Vehicle + vehicleStart + + + Vehicle + vehicleStop + + + + diff --git a/tests/upstream-test-suite/027_extends.c b/tests/upstream-test-suite/027_extends.c new file mode 100644 index 0000000..7860abd --- /dev/null +++ b/tests/upstream-test-suite/027_extends.c @@ -0,0 +1,93 @@ +// objective: test the \extends, \implements, \memberof, \private, and \public commands +// check: struct_object.xml +// check: struct_vehicle.xml +// check: struct_car.xml +// check: struct_truck.xml + +/** + * \file + */ + +typedef struct Object Object; //!< Object type +typedef struct Vehicle Vehicle; //!< Vehicle type +typedef struct Car Car; //!< Car type +typedef struct Truck Truck; //!< Truck type + +/*! + * Base object class. + */ +struct Object +{ + int ref; //!< \private Reference count. +}; + + +/*! + * Increments object reference count by one. + * \public \memberof Object + */ +static Object * objRef(Object *obj); + + +/*! + * Decrements object reference count by one. + * \public \memberof Object + */ +static Object * objUnref(Object *obj); + + +/*! + * Vehicle class. + * \extends Object + */ +struct Vehicle +{ + Object base; //!< \protected Base class. +}; + + +/*! + * Starts the vehicle. + * \public \memberof Vehicle + */ +void vehicleStart(Vehicle *obj); + + +/*! + * Stops the vehicle. + * \public \memberof Vehicle + */ +void vehicleStop(Vehicle *obj); + + +/*! + * Car class. + * \implements Vehicle + */ +struct Car +{ + Vehicle base; //!< \protected Base class. +}; + + +/*! + * Truck class. + * \implements Vehicle + */ +struct Truck +{ + Vehicle base; //!< \protected Base class. +}; + + +/*! + * Main function. + * + * Ref vehicleStart(), objRef(), objUnref(). + */ +int main(void) +{ + Car c; + vehicleStart((Vehicle*) &c); +} + diff --git a/tests/upstream-test-suite/028/indexpage.xml b/tests/upstream-test-suite/028/indexpage.xml new file mode 100644 index 0000000..c13e1b2 --- /dev/null +++ b/tests/upstream-test-suite/028/indexpage.xml @@ -0,0 +1,13 @@ + + + + index + My Project + + + + Here are some formulas:The distance between $(x_1,y_1)$ and $(x_2,y_2)$ is $\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}$.Unnumbered formula: \[ |I_2|=\left| \int_{0}^T \psi(t) \left\{ u(a,t)- \int_{\gamma(t)}^a \frac{d\theta}{k(\theta,t)} \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi \right\} dt \right| \]Formula in different environment \begin{eqnarray*} g &=& \frac{Gm_2}{r^2} \\ &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\, \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ &=& 9.82066032\,\mbox{m/s}^2 \end{eqnarray*} + + + + diff --git a/tests/upstream-test-suite/028_formula.c b/tests/upstream-test-suite/028_formula.c new file mode 100644 index 0000000..2a4c5cb --- /dev/null +++ b/tests/upstream-test-suite/028_formula.c @@ -0,0 +1,17 @@ +// objective: test the \f$, \f[, \f], \f{, and \f} commands +// check: indexpage.xml + +/** @mainpage +Here are some formulas: +-# The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is + \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$. +-# Unnumbered formula: + \f[ |I_2|=\left| \int_{0}^T \psi(t) \left\{ u(a,t)- \int_{\gamma(t)}^a + \frac{d\theta}{k(\theta,t)} \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi \right\} dt \right| \f] +-# Formula in different environment + \f{eqnarray*}{ g &=& \frac{Gm_2}{r^2} \\ + &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\, + \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ + &=& 9.82066032\,\mbox{m/s}^2 + \f} +*/ diff --git a/tests/upstream-test-suite/029/029__hideinit_8c.xml b/tests/upstream-test-suite/029/029__hideinit_8c.xml new file mode 100644 index 0000000..4caf092 --- /dev/null +++ b/tests/upstream-test-suite/029/029__hideinit_8c.xml @@ -0,0 +1,42 @@ + + + + 029_hideinit.c + + + int + int var1 + + var1 + = 10 + + + + a variable with initializer visible + + + + + + + int + int var2 + + var2 + + + + a variable without initializer visible + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/029_hideinit.c b/tests/upstream-test-suite/029_hideinit.c new file mode 100644 index 0000000..da3f4a5 --- /dev/null +++ b/tests/upstream-test-suite/029_hideinit.c @@ -0,0 +1,12 @@ +// objective: test the \hideinitializer command +// check: 029__hideinit_8c.xml + +/** \file */ + +/** a variable with initializer visible */ +int var1 = 10; + +/** a variable without initializer visible + * \hideinitializer + */ +int var2 = 20; diff --git a/tests/upstream-test-suite/030/indexpage.xml b/tests/upstream-test-suite/030/indexpage.xml new file mode 100644 index 0000000..a45eb8d --- /dev/null +++ b/tests/upstream-test-suite/030/indexpage.xml @@ -0,0 +1,13 @@ + + + + index + My Project + + + + Some text. <h1>Hello world</h1> + More text. + + + diff --git a/tests/upstream-test-suite/030_htmlinclude.dox b/tests/upstream-test-suite/030_htmlinclude.dox new file mode 100644 index 0000000..17d934d --- /dev/null +++ b/tests/upstream-test-suite/030_htmlinclude.dox @@ -0,0 +1,7 @@ +// objective: test the \htmlinclude command +// check: indexpage.xml +/** \mainpage + * Some text. + * \htmlinclude[block] sample.html + * More text. + */ diff --git a/tests/upstream-test-suite/031/indexpage.xml b/tests/upstream-test-suite/031/indexpage.xml new file mode 100644 index 0000000..2c1dfd7 --- /dev/null +++ b/tests/upstream-test-suite/031/indexpage.xml @@ -0,0 +1,15 @@ + + + + index + My Project + + + + Some text. + Doxygen logo + + More text. + + + diff --git a/tests/upstream-test-suite/031_image.dox b/tests/upstream-test-suite/031_image.dox new file mode 100644 index 0000000..8ba47b7 --- /dev/null +++ b/tests/upstream-test-suite/031_image.dox @@ -0,0 +1,10 @@ +// objective: test the \image command +// check: indexpage.xml +// config: IMAGE_PATH = $INPUTDIR +/** \mainpage + * Some text. + * \image html sample.png + * \image latex sample.png "Doxygen logo" width=5cm + * \image docbook sample.png + * More text. + */ diff --git a/tests/upstream-test-suite/032/indexpage.xml b/tests/upstream-test-suite/032/indexpage.xml new file mode 100644 index 0000000..89d8c1f --- /dev/null +++ b/tests/upstream-test-suite/032/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + Some text. voidmain(){constchar*a="Somespecialcharacterhere:";Testt;t.example();} More text. voidmain(){constchar*a="Somespecialcharacterhere:";Testt;t.example();} End. + + + diff --git a/tests/upstream-test-suite/032_include.cpp b/tests/upstream-test-suite/032_include.cpp new file mode 100644 index 0000000..2eddc57 --- /dev/null +++ b/tests/upstream-test-suite/032_include.cpp @@ -0,0 +1,10 @@ +// objective: test the \include and \includelineno commands +// check: indexpage.xml + +/** \mainpage + * Some text. + * \include example_test.cpp + * More text. + * \includelineno example_test.cpp + * End. + */ diff --git a/tests/upstream-test-suite/033/indexpage.xml b/tests/upstream-test-suite/033/indexpage.xml new file mode 100644 index 0000000..652e5de --- /dev/null +++ b/tests/upstream-test-suite/033/indexpage.xml @@ -0,0 +1,13 @@ + + + + index + My Project + + + + Some text. + More visible text. + + + diff --git a/tests/upstream-test-suite/033_internal.dox b/tests/upstream-test-suite/033_internal.dox new file mode 100644 index 0000000..6e28f22 --- /dev/null +++ b/tests/upstream-test-suite/033_internal.dox @@ -0,0 +1,12 @@ +// objective: test the \internal and \endinternal commands (1) +// check: indexpage.xml + +/** \mainpage + * Some text. + * \internal + * Internal text. + * \endinternal + * More visible text. + * \internal + * More internal text. + */ diff --git a/tests/upstream-test-suite/034/indexpage.xml b/tests/upstream-test-suite/034/indexpage.xml new file mode 100644 index 0000000..0252b3c --- /dev/null +++ b/tests/upstream-test-suite/034/indexpage.xml @@ -0,0 +1,31 @@ + + + + index + My Project + + + + Some text. + + Internal text. + + + A Section + Some text in the section 1. + + Internal text. + + A Subsection + Some text in the subsection. + + + Visible text in section 1. + + + Another Section + Visible text. + + + + diff --git a/tests/upstream-test-suite/034_internal.dox b/tests/upstream-test-suite/034_internal.dox new file mode 100644 index 0000000..01587a9 --- /dev/null +++ b/tests/upstream-test-suite/034_internal.dox @@ -0,0 +1,21 @@ +// objective: test the \internal and \endinternal commands (2) +// check: indexpage.xml +// config: INTERNAL_DOCS = YES + +/** \mainpage + * Some text. + * \internal + * Internal text. + * \endinternal + * \section s1 A Section + * Some text in the section 1. + * \internal + * Internal text. + * \subsection ss1 A Subsection + * Some text in the subsection. + * \endinternal + * Visible text in section 1. + * \section s2 Another Section + * Visible text. + */ + diff --git a/tests/upstream-test-suite/035/035__invariant_8c.xml b/tests/upstream-test-suite/035/035__invariant_8c.xml new file mode 100644 index 0000000..b3d74bc --- /dev/null +++ b/tests/upstream-test-suite/035/035__invariant_8c.xml @@ -0,0 +1,45 @@ + + + + 035_invariant.c + + + void + void func + (int p, int *q) + func + + int + p + + + int * + q + + + + + + + i+j=p + + + p>=0 + + + *q=2^(p+1) + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/035_invariant.c b/tests/upstream-test-suite/035_invariant.c new file mode 100644 index 0000000..28c08f8 --- /dev/null +++ b/tests/upstream-test-suite/035_invariant.c @@ -0,0 +1,15 @@ +// objective: test \invariant, \pre and \post commands +// check: 035__invariant_8c.xml + +/** \file */ + +/** \invariant i+j=p + * \pre p\>=0 + * \post *q=2^(p+1) + */ +void func(int p,int *q) +{ + int j = p, k=1, i; + for (i=0; i<=p; i++) j--,k=k*2; + *q = k; +} diff --git a/tests/upstream-test-suite/036/036__link_8c.xml b/tests/upstream-test-suite/036/036__link_8c.xml new file mode 100644 index 0000000..c0dea58 --- /dev/null +++ b/tests/upstream-test-suite/036/036__link_8c.xml @@ -0,0 +1,33 @@ + + + + 036_link.c + Test + + + void + void func + (int p) + func + + int + p + + + + + A function + + + + + + + + + + See the function for more info. See the test class. + + + + diff --git a/tests/upstream-test-suite/036_link.c b/tests/upstream-test-suite/036_link.c new file mode 100644 index 0000000..901f660 --- /dev/null +++ b/tests/upstream-test-suite/036_link.c @@ -0,0 +1,16 @@ +// objective: test \link command +// check: 036__link_8c.xml + +/** \file + * See \link func() the function\endlink for more info. + * See the \link Test test\endlink class. + */ + +/** A function + */ +void func(int p); + +/** A test */ +class Test +{ +}; diff --git a/tests/upstream-test-suite/037/class_receiver.xml b/tests/upstream-test-suite/037/class_receiver.xml new file mode 100644 index 0000000..edb688a --- /dev/null +++ b/tests/upstream-test-suite/037/class_receiver.xml @@ -0,0 +1,43 @@ + + + + Receiver + + + void + void Receiver::Command + (int commandId) + Command + + int + commandId + + + + + Executable a command on the server + + + + + + + + + + Receiver class. Can be used to receive and execute commands. After execution of a command, the receiver will send an acknowledgement + Receiver,Sender; + Receiver<-Sender [label="Command()", URL="\ref Command()"]; + Receiver->Sender [label="Ack()", URL="\ref Sender::Ack()", ID="1"]; + + + + + + + Receiver + Command + + + + diff --git a/tests/upstream-test-suite/037/class_sender.xml b/tests/upstream-test-suite/037/class_sender.xml new file mode 100644 index 0000000..0f1996d --- /dev/null +++ b/tests/upstream-test-suite/037/class_sender.xml @@ -0,0 +1,43 @@ + + + + Sender + + + void + void Sender::Ack + (bool ok) + Ack + + bool + ok + + + + + Acknowledgement from server + + + + + + + + + + Sender class. Can be used to send a command to the server. The receiver will acknowledge the command by calling Ack(). + Sender,Receiver; + Sender->Receiver [label="Command()", URL="\ref Receiver::Command()"]; + Sender<-Receiver [label="Ack()", URL="\ref Ack()", ID="1"]; + + + + + + + Sender + Ack + + + + diff --git a/tests/upstream-test-suite/037_msc.cpp b/tests/upstream-test-suite/037_msc.cpp new file mode 100644 index 0000000..84ffc55 --- /dev/null +++ b/tests/upstream-test-suite/037_msc.cpp @@ -0,0 +1,33 @@ +// objective: test the \msc and \endmsc commands +// check: class_sender.xml +// check: class_receiver.xml + +/** Sender class. Can be used to send a command to the server. + * The receiver will acknowledge the command by calling Ack(). + * \msc + * Sender,Receiver; + * Sender->Receiver [label="Command()", URL="\ref Receiver::Command()"]; + * Sender<-Receiver [label="Ack()", URL="\ref Ack()", ID="1"]; + * \endmsc + */ +class Sender +{ + public: + /** Acknowledgement from server */ + void Ack(bool ok); +}; + +/** Receiver class. Can be used to receive and execute commands. + * After execution of a command, the receiver will send an acknowledgement + * \msc + * Receiver,Sender; + * Receiver<-Sender [label="Command()", URL="\ref Command()"]; + * Receiver->Sender [label="Ack()", URL="\ref Sender::Ack()", ID="1"]; + * \endmsc + */ +class Receiver +{ + public: + /** Executable a command on the server */ + void Command(int commandId); +}; diff --git a/tests/upstream-test-suite/038/indexpage.xml b/tests/upstream-test-suite/038/indexpage.xml new file mode 100644 index 0000000..2258113 --- /dev/null +++ b/tests/upstream-test-suite/038/indexpage.xml @@ -0,0 +1,14 @@ + + + + index + My Project + + + + Text +New line +Another line + + + diff --git a/tests/upstream-test-suite/038_n.dox b/tests/upstream-test-suite/038_n.dox new file mode 100644 index 0000000..617743c --- /dev/null +++ b/tests/upstream-test-suite/038_n.dox @@ -0,0 +1,7 @@ +// objective: test the \n command +// check: indexpage.xml +/** \mainpage +Text\n +New line\n +Another line +*/ diff --git a/tests/upstream-test-suite/039/class_test.xml b/tests/upstream-test-suite/039/class_test.xml new file mode 100644 index 0000000..2a4796a --- /dev/null +++ b/tests/upstream-test-suite/039/class_test.xml @@ -0,0 +1,74 @@ + + + + Test + +
    A group of functions.
    + + void + void Test::foo + () + foo + + + + foo function + + + + + + + void + void Test::bar + () + bar + + + + bar function + + + + + +
    + + + void + void Test::ungrouped + () + ungrouped + + + + ungrouped function + + + + + + + + A Test class. + + + More details about this class. + + + + + Test + bar + + + Test + foo + + + Test + ungrouped + + +
    +
    diff --git a/tests/upstream-test-suite/039_name.cpp b/tests/upstream-test-suite/039_name.cpp new file mode 100644 index 0000000..f07b45c --- /dev/null +++ b/tests/upstream-test-suite/039_name.cpp @@ -0,0 +1,25 @@ +// objective: test the \name and \short commands +// check: class_test.xml + +/** \short A Test class. + * + * More details about this class. + */ +class Test +{ + public: + /** \name A group of functions. + * \{ + */ + + /** foo function */ + void foo(); + /** bar function */ + void bar(); + + /** \} */ + + /** ungrouped function */ + void ungrouped(); +}; + diff --git a/tests/upstream-test-suite/040/namespace_n_s.xml b/tests/upstream-test-suite/040/namespace_n_s.xml new file mode 100644 index 0000000..64beb23 --- /dev/null +++ b/tests/upstream-test-suite/040/namespace_n_s.xml @@ -0,0 +1,12 @@ + + + + NS + + + + A namespace + + + + diff --git a/tests/upstream-test-suite/040_namespace.cpp b/tests/upstream-test-suite/040_namespace.cpp new file mode 100644 index 0000000..a90f377 --- /dev/null +++ b/tests/upstream-test-suite/040_namespace.cpp @@ -0,0 +1,10 @@ +// objective: test the \namespace command +// check: namespace_n_s.xml + +namespace NS +{ +} + +/** @namespace NS + * A namespace + */ diff --git a/tests/upstream-test-suite/041/class_test.xml b/tests/upstream-test-suite/041/class_test.xml new file mode 100644 index 0000000..57dbe37 --- /dev/null +++ b/tests/upstream-test-suite/041/class_test.xml @@ -0,0 +1,100 @@ + + + + Test + + + void + void Test::drawRect + (int, int, int, int) + drawRect + + int + x + + + int + y + + + int + w + + + int + h + + + + + This command draws a rectangle with a left upper corner at ( x , y ), width w and height h. + + + + + + + void + void Test::drawRect + (const Rect &r) + drawRect + + const Rect & + r + + + + + This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. + + + + + + + void + void Test::drawRect + (const Point &topLeft, const Point &bottomRight) + drawRect + + const Point & + topLeft + + + const Point & + bottomRight + + + + + This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. + More text. + + + + + + + + A short description. + + + More text. + + + + + Test + drawRect + + + Test + drawRect + + + Test + drawRect + + + + diff --git a/tests/upstream-test-suite/041_overload.cpp b/tests/upstream-test-suite/041_overload.cpp new file mode 100644 index 0000000..e206acf --- /dev/null +++ b/tests/upstream-test-suite/041_overload.cpp @@ -0,0 +1,33 @@ +// objective: test the \overload command +// check: class_test.xml + +class Test +{ + public: + void drawRect(int,int,int,int); + void drawRect(const Rect &r); + void drawRect(const Point &topLeft,const Point &bottomRight); +}; + +void Test::drawRect(int x,int y,int w,int h) {} +void Test::drawRect(const Rect &r) {} +/*! \overload + * + * More text. + */ +void Test::drawRect(const Point &topLeft,const Point &bottomRight) {} + +/*! \class Test + * \brief A short description. + * + * More text. + */ + +/*! \fn void Test::drawRect(int x,int y,int w,int h) + * This command draws a rectangle with a left upper corner at ( \a x , \a y ), + * width \a w and height \a h. + */ + +/*! + * \overload void Test::drawRect(const Rect &r) + */ diff --git a/tests/upstream-test-suite/042/namespaceorg_1_1doxygen_1_1_test.xml b/tests/upstream-test-suite/042/namespaceorg_1_1doxygen_1_1_test.xml new file mode 100644 index 0000000..7ed33d5 --- /dev/null +++ b/tests/upstream-test-suite/042/namespaceorg_1_1doxygen_1_1_test.xml @@ -0,0 +1,12 @@ + + + + org::doxygen::Test + + + + A test package. + + + + diff --git a/tests/upstream-test-suite/042_package.java b/tests/upstream-test-suite/042_package.java new file mode 100644 index 0000000..f46d55c --- /dev/null +++ b/tests/upstream-test-suite/042_package.java @@ -0,0 +1,8 @@ +// objective: test the \package command +// check: namespaceorg_1_1doxygen_1_1_test.xml + +package org.doxygen.Test; + +/** @package org.doxygen.Test + * A test package. + */ diff --git a/tests/upstream-test-suite/043/another.xml b/tests/upstream-test-suite/043/another.xml new file mode 100644 index 0000000..2c2e61b --- /dev/null +++ b/tests/upstream-test-suite/043/another.xml @@ -0,0 +1,12 @@ + + + + another + Another Page + + + + Another page's text. + + + diff --git a/tests/upstream-test-suite/043/mypage.xml b/tests/upstream-test-suite/043/mypage.xml new file mode 100644 index 0000000..c9bd6d0 --- /dev/null +++ b/tests/upstream-test-suite/043/mypage.xml @@ -0,0 +1,66 @@ + + + + mypage + Page Title + Another Page + + + Section Title. + mypage_1mysect + + + Subsection Title. + mypage_1mysubsect + + + Subsubsection Title. + mypage_1mysubsubsect + + + Paragraph Title. + mypage_1mypara + + + + + + + + + Another Section Title. + mypage_1mysect2 + + + + Page brief description. + + + Page brief description. + Text at page level. See Section Title. for more. + + Section Title. + Text at section level. See Subsection Title. for more. + + Subsection Title. + Text at subsection level. see Subsubsection Title. for more. + + Subsubsection Title. + Text at subsubsection level. Paragraph Title. for more. + + Paragraph Title. + Text at paragraph level. Another Section Title. for more. + + + + + + Another Section Title. + Text at section level. + + Another Page + + + + + diff --git a/tests/upstream-test-suite/043_page.dox b/tests/upstream-test-suite/043_page.dox new file mode 100644 index 0000000..9ac5c0e --- /dev/null +++ b/tests/upstream-test-suite/043_page.dox @@ -0,0 +1,26 @@ +// objective: test \page, \subpage, \*section, \paragraph, and \ref commands +// check: mypage.xml +// check: another.xml +/** \page mypage Page Title + * \brief Page brief description. + * + * @tableofcontents{xml,html,latex,docbook} + * + * Text at page level. See \ref mysect for more. + * \section mysect Section Title. + * Text at section level. See \ref mysubsect for more. + * \subsection mysubsect Subsection Title. + * Text at subsection level. see \ref mysubsubsect for more. + * \subsubsection mysubsubsect Subsubsection Title. + * Text at subsubsection level. \ref mypara for more. + * \paragraph mypara Paragraph Title. + * Text at paragraph level. \ref mysect2 for more. + * \section mysect2 Another Section Title. + * Text at section level. + * + * \subpage another + */ + +/** \page another Another Page + * Another page's text. + */ diff --git a/tests/upstream-test-suite/044/struct_s.xml b/tests/upstream-test-suite/044/struct_s.xml new file mode 100644 index 0000000..aefd50d --- /dev/null +++ b/tests/upstream-test-suite/044/struct_s.xml @@ -0,0 +1,129 @@ + + + + S + 044_section.h + + + int + int S::pub1 + + pub1 + + + + public field + + + + + + + int + int S::pub2 + + pub2 + + + + another public field + + + + + + + + + int + int S::pro1 + + pro1 + + + + protected field + + + + + + + int + int S::pro2 + + pro2 + + + + another protected field + + + + + + + + + int + int S::pri1 + + pri1 + + + + private field + + + + + + + int + int S::pri2 + + pri2 + + + + another private field + + + + + + + + + + A struct + + + + + S + pri1 + + + S + pri2 + + + S + pro1 + + + S + pro2 + + + S + pub1 + + + S + pub2 + + + + diff --git a/tests/upstream-test-suite/044_section.h b/tests/upstream-test-suite/044_section.h new file mode 100644 index 0000000..ef48051 --- /dev/null +++ b/tests/upstream-test-suite/044_section.h @@ -0,0 +1,28 @@ +// objective: test the \(public|protected|private)section commands +// check: struct_s.xml + +/** A struct */ +struct S +{ + /** \publicsection */ + + /** public field */ + int pub1; + /** another public field */ + int pub2; + + /** \protectedsection */ + + /** protected field */ + int pro1; + /** another protected field */ + int pro2; + + /** \privatesection */ + + /** private field */ + int pri1; + /** another private field */ + int pri2; +}; + diff --git a/tests/upstream-test-suite/045/indexpage.xml b/tests/upstream-test-suite/045/indexpage.xml new file mode 100644 index 0000000..294ceb8 --- /dev/null +++ b/tests/upstream-test-suite/045/indexpage.xml @@ -0,0 +1,23 @@ + + + + index + My Project + + + + + + First Item + Second Item + Third Item + + + Some filler text. + + First Section + Section 1 text. + + + + diff --git a/tests/upstream-test-suite/045_refitem.dox b/tests/upstream-test-suite/045_refitem.dox new file mode 100644 index 0000000..a6ba13b --- /dev/null +++ b/tests/upstream-test-suite/045_refitem.dox @@ -0,0 +1,20 @@ +// objective: test \refitem, \secreflist, \endsecreflist +// check: indexpage.xml +/** \mainpage + * \secreflist + * \refitem item1 First Item + * \refitem item2 Second Item + * \refitem item3 Third Item + * \endsecreflist + * + * Some filler text. + * + * \section item1 First Section + * Section 1 text. + */ + +/** \page item2 A page + * Some text. + * \section item3 Another Section. + * Section 2 text. + */ diff --git a/tests/upstream-test-suite/046/046__related_8cpp.xml b/tests/upstream-test-suite/046/046__related_8cpp.xml new file mode 100644 index 0000000..9f5eab6 --- /dev/null +++ b/tests/upstream-test-suite/046/046__related_8cpp.xml @@ -0,0 +1,28 @@ + + + + 046_related.cpp + Test + + + void + void another + () + another + + + + Another function + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/046/class_test.xml b/tests/upstream-test-suite/046/class_test.xml new file mode 100644 index 0000000..9a1bd9c --- /dev/null +++ b/tests/upstream-test-suite/046/class_test.xml @@ -0,0 +1,80 @@ + + + + Test + + + void + void Test::method + () + method + + + + A method + + + + + + + + + void + void function + () + function + + + + A function. + + + + another() + + + + + + + + + + void + void another + () + another + + + + Another function + + + + + + + + + + A test class Test::method() + + + + + + Test + another + + + Test + function + + + Test + method + + + + diff --git a/tests/upstream-test-suite/046_related.cpp b/tests/upstream-test-suite/046_related.cpp new file mode 100644 index 0000000..a8deb5a --- /dev/null +++ b/tests/upstream-test-suite/046_related.cpp @@ -0,0 +1,28 @@ +// objective: test the \related, \relatedalso, \see, and \sa commands +// check: class_test.xml +// check: 046__related_8cpp.xml + +/** @file */ + +/** A test class + * @see Test::method() + */ +class Test +{ + public: + /** A method */ + void method(); +}; + +/*! + * A function. + * \related Test + * \sa another() + */ +void function(); + +/*! + * Another function + * \relatedalso Test + */ +void another(); diff --git a/tests/upstream-test-suite/047/047__return_8cpp.xml b/tests/upstream-test-suite/047/047__return_8cpp.xml new file mode 100644 index 0000000..b57a0c3 --- /dev/null +++ b/tests/upstream-test-suite/047/047__return_8cpp.xml @@ -0,0 +1,58 @@ + + + + 047_return.cpp + + + int + int func1 + () + func1 + + + + Test function 1. A integer. + + + + + + + + int + int func2 + () + func2 + + + + Test function 2. A integer. + + + + + + + + int + int func3 + () + func3 + + + + Test function 3. A integer. + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/047_return.cpp b/tests/upstream-test-suite/047_return.cpp new file mode 100644 index 0000000..7585986 --- /dev/null +++ b/tests/upstream-test-suite/047_return.cpp @@ -0,0 +1,20 @@ +// objective: test the \result, \return, and \returns commands +// check: 047__return_8cpp.xml + +/** \file */ + +/** Test function 1. + * \result A integer. + */ +int func1(); + +/** Test function 2. + * \return A integer. + */ +int func2(); + +/** Test function 3. + * \returns A integer. + */ +int func3(); + diff --git a/tests/upstream-test-suite/048/048__showinit_8c.xml b/tests/upstream-test-suite/048/048__showinit_8c.xml new file mode 100644 index 0000000..4cc5717 --- /dev/null +++ b/tests/upstream-test-suite/048/048__showinit_8c.xml @@ -0,0 +1,42 @@ + + + + 048_showinit.c + + + int + int var1 + + var1 + + + + a variable with initializer hidden due to MAX_INITIALIZER_LINES + + + + + + + int + int var2 + + var2 + = 20 + + + + a variable with initializer visible + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/048_showinit.c b/tests/upstream-test-suite/048_showinit.c new file mode 100644 index 0000000..a37865d --- /dev/null +++ b/tests/upstream-test-suite/048_showinit.c @@ -0,0 +1,13 @@ +// objective: test the \showinit command +// check: 048__showinit_8c.xml +// config: MAX_INITIALIZER_LINES = 0 + +/** \file */ + +/** a variable with initializer hidden due to MAX_INITIALIZER_LINES */ +int var1 = 10; + +/** a variable with initializer visible + * \showinitializer + */ +int var2 = 20; diff --git a/tests/upstream-test-suite/049/indexpage.xml b/tests/upstream-test-suite/049/indexpage.xml new file mode 100644 index 0000000..f7cb48c --- /dev/null +++ b/tests/upstream-test-suite/049/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + A bubble sort algorithm First get the inputs for(i=0;i<n;i++){printf("Array[%d]=",i);scanf("%d",&arr[i]);}Then do the bubbling for(i=0;i<n;i++){for(j=0;j<n-i-1;j++){if(arr[j]>arr[j+1])//SwappingConditionisChecked{temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}Then write the result for(i=0;i<n;i++){printf("%4d",arr[i]);} + + + diff --git a/tests/upstream-test-suite/049_snippet.cpp b/tests/upstream-test-suite/049_snippet.cpp new file mode 100644 index 0000000..9c5f18b --- /dev/null +++ b/tests/upstream-test-suite/049_snippet.cpp @@ -0,0 +1,12 @@ +// objective: test the \snippet command +// check: indexpage.xml + +/** \mainpage + * A bubble sort algorithm + * First get the inputs + * \snippet snippet_test.cpp input + * Then do the bubbling + * \snippet snippet_test.cpp bubble + * Then write the result + * \snippet snippet_test.cpp output + */ diff --git a/tests/upstream-test-suite/050/indexpage.xml b/tests/upstream-test-suite/050/indexpage.xml new file mode 100644 index 0000000..2f183fe --- /dev/null +++ b/tests/upstream-test-suite/050/indexpage.xml @@ -0,0 +1,20 @@ + + + + index + My Project + + + + Some normal text. A verbatim section with a /* C comment */ in it + Showing a file as verbatim @book{knuth79, + author = "Donald E. Knuth", + title = "Tex and Metafont, New Directions in Typesetting", + year = "1979", + publisher = "American Mathematical Society and Digital Press", + address = "Stanford" +} + More text after the verbatim section. + + + diff --git a/tests/upstream-test-suite/050_verbatim.dox b/tests/upstream-test-suite/050_verbatim.dox new file mode 100644 index 0000000..40c75a5 --- /dev/null +++ b/tests/upstream-test-suite/050_verbatim.dox @@ -0,0 +1,13 @@ +// objective: test \verbatim and \verbinclude commands +// check: indexpage.xml +/** +\mainpage +Some normal text. +\verbatim +A verbatim section with a /* C comment */ in it +\endverbatim +Showing a file as verbatim +\verbinclude sample.bib +More text after the verbatim section. + +*/ diff --git a/tests/upstream-test-suite/051/indexpage.xml b/tests/upstream-test-suite/051/indexpage.xml new file mode 100644 index 0000000..50a6ff8 --- /dev/null +++ b/tests/upstream-test-suite/051/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + Dollar $ At @ Backslash \ Ampersand & Less < Greater > Hash # Percent % Quote " Dot . Double colon :: Pipe | Plus + Minus - + + + diff --git a/tests/upstream-test-suite/051_escape.dox b/tests/upstream-test-suite/051_escape.dox new file mode 100644 index 0000000..2165564 --- /dev/null +++ b/tests/upstream-test-suite/051_escape.dox @@ -0,0 +1,20 @@ +// objective: test various characters that should be escaped +// check: indexpage.xml +/** +\mainpage +Dollar \$ +At \@ +Backslash \\ +Ampersand \& +Less \< +Greater \> +Hash \# +Percent \% +Quote \" +Dot \. +Double colon \:: +Pipe \| +Plus \+ +Minus \- + +*/ diff --git a/tests/upstream-test-suite/052/indexpage.xml b/tests/upstream-test-suite/052/indexpage.xml new file mode 100644 index 0000000..d952781 --- /dev/null +++ b/tests/upstream-test-suite/052/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + This is English. Output for all languages. + + + diff --git a/tests/upstream-test-suite/052_tilde.dox b/tests/upstream-test-suite/052_tilde.dox new file mode 100644 index 0000000..81a8c9b --- /dev/null +++ b/tests/upstream-test-suite/052_tilde.dox @@ -0,0 +1,9 @@ +// objective: test \~ command +// check: indexpage.xml +/** +\mainpage +\~english This is English. +\~dutch Dit is Nederlands. +\~german Dies ist Deutsch. +\~ Output for all languages. +*/ diff --git a/tests/upstream-test-suite/053/indexpage.xml b/tests/upstream-test-suite/053/indexpage.xml new file mode 100644 index 0000000..211bb9a --- /dev/null +++ b/tests/upstream-test-suite/053/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + Dit is Nederlands. Output for all languages. + + + diff --git a/tests/upstream-test-suite/053_tilde.dox b/tests/upstream-test-suite/053_tilde.dox new file mode 100644 index 0000000..73cafa3 --- /dev/null +++ b/tests/upstream-test-suite/053_tilde.dox @@ -0,0 +1,10 @@ +// objective: test \~ command with non default OUTPUT_LANGUAGE +// check: indexpage.xml +// config: OUTPUT_LANGUAGE = Dutch +/** +\mainpage +\~english This is English. +\~dutch Dit is Nederlands. +\~german Dies ist Deutsch. +\~ Output for all languages. +*/ diff --git a/tests/upstream-test-suite/054/054__parblock_8cpp.xml b/tests/upstream-test-suite/054/054__parblock_8cpp.xml new file mode 100644 index 0000000..5567908 --- /dev/null +++ b/tests/upstream-test-suite/054/054__parblock_8cpp.xml @@ -0,0 +1,193 @@ + + + + 054_parblock.cpp + + + void + void function + (int client, int *resource, int parblock, int *test, int p) + function + + int + client + + + int * + resource + + + int + parblock + + + int * + test + + + int + p + + + + + call by target-specific code to manage resources required by the client. + + + + + client + + + ID of client requesting resource. + + + + + resource + + + Requested resource + + + + + parblock + + + + + This is a test for the @parblock command. + A list if values for the parblock param:Item 1. This is short one-line description.Item 2. This is a long bullet item; sometimes they wrap on multiple lines like this one. + + This is the second paragraph description for the @parblock parameter. Always end the text inside the @parblock command with an @endparblock command. + + + + + + + test + + + This is a test parameter for this function to see if it is included in the parameter table + + + + + p + + + + + First paragraph of the param description. + Second paragraph of the param description. + + + + + + + + + + + + + void + void function_2 + (int client, int *resource, int parblock, int *test, int p) + function_2 + + int + client + + + int * + resource + + + int + parblock + + + int * + test + + + int + p + + + + + call by target-specific code to manage resources required by the client. + + + + + client + + + ID of client requesting resource. + + + + + resource + + + Requested resource + + + + + parblock + + + + + This is a test for the @parblock command. + A list if values for the parblock param:Item 1. This is short one-line description.Item 2. This is a long bullet item; sometimes they wrap on multiple lines like this one. + + This is the second paragraph description for the @parblock parameter. Always end the text inside the @parblock command with an @endparblock command. + + + + + + + test + + + This is a test parameter for this function to see if it is included in the parameter table + + + + + p + + + + + First paragraph of the param description. Second paragraph of the param description. + + + + + + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/054_parblock.cpp b/tests/upstream-test-suite/054_parblock.cpp new file mode 100644 index 0000000..4f303c6 --- /dev/null +++ b/tests/upstream-test-suite/054_parblock.cpp @@ -0,0 +1,60 @@ +// objective: test the \parblock command +// check: 054__parblock_8cpp.xml + +/** @file */ + +/** + call by target-specific code to manage resources required by the client. + + @param[in] client ID of client requesting resource. + @param[out] resource Requested resource + @param[in] parblock @parblock This is a test for the \@parblock + command. + + A list if values for the parblock param: + - Item 1. This is short one-line description. + - Item 2. This is a long bullet item; + sometimes they wrap on multiple lines like this + one. + + This is the second paragraph description for the + \@parblock parameter. Always end the text inside + the \@parblock command with an \@endparblock + command. + @endparblock + @param[out] test This is a test parameter for this function to see if + it is included in the parameter table + @param[in] p + @parblock First paragraph of the param description. + + Second paragraph of the param description. + @endparblock + */ +void function(int client,int *resource,int parblock,int *test,int p); +/** + call by target-specific code to manage resources required by the client. + + @param[in] client ID of client requesting resource. + @param[out] resource Requested resource + @param[in] parblock @parblock This is a test for the \@parblock + command. + + A list if values for the parblock param: + - Item 1. This is short one-line description. + - Item 2. This is a long bullet item; + sometimes they wrap on multiple lines like this + one. + + This is the second paragraph description for the + \@parblock parameter. Always end the text inside + the \@parblock command with an \@endparblock + command. + @endparblock + @param[out] test This is a test parameter for this function to see if + it is included in the parameter table + @param[in] p @parblock First paragraph of the param description. + + Second paragraph of the param description. + @endparblock + */ +void function_2(int client,int *resource,int parblock,int *test,int p); diff --git a/tests/upstream-test-suite/055/md_055_markdown.xml b/tests/upstream-test-suite/055/md_055_markdown.xml new file mode 100644 index 0000000..4bdd2e2 --- /dev/null +++ b/tests/upstream-test-suite/055/md_055_markdown.xml @@ -0,0 +1,31 @@ + + + + md_055_markdown + 055_markdown + + + + + Foo + + + Bar + + + Inline link + + + Reference link + + + Baz + + More text + + Upper-cased reference link on last line + + Dash - NDash MDash EDash - ENDash -- EMDash --- E3Dash --- + + + diff --git a/tests/upstream-test-suite/055_markdown.md b/tests/upstream-test-suite/055_markdown.md new file mode 100644 index 0000000..375040e --- /dev/null +++ b/tests/upstream-test-suite/055_markdown.md @@ -0,0 +1,24 @@ + + +# Foo + +## Bar + +[Inline link](http://example.com/inline) + +[Reference link][1] + +[1]: http://example.com/reference + +## Baz + +More text + +[Upper-cased reference link on last line][U] + +[U]: http://example.com/last-line + +Dash - NDash -- MDash --- EDash \- ENDash \-- EMDash \--- E3Dash \-\-\- diff --git a/tests/upstream-test-suite/056/indexpage.xml b/tests/upstream-test-suite/056/indexpage.xml new file mode 100644 index 0000000..55240e9 --- /dev/null +++ b/tests/upstream-test-suite/056/indexpage.xml @@ -0,0 +1,13 @@ + + + + index + My Project + + + + Some text. \section{Hello world} + More text. + + + diff --git a/tests/upstream-test-suite/056_latexinclude.dox b/tests/upstream-test-suite/056_latexinclude.dox new file mode 100644 index 0000000..021b2f7 --- /dev/null +++ b/tests/upstream-test-suite/056_latexinclude.dox @@ -0,0 +1,7 @@ +// objective: test the \latexinclude command +// check: indexpage.xml +/** \mainpage + * Some text. + * \latexinclude sample.tex + * More text. + */ diff --git a/tests/upstream-test-suite/057/057__caller__graphs_8tcl.xml b/tests/upstream-test-suite/057/057__caller__graphs_8tcl.xml new file mode 100644 index 0000000..1046e30 --- /dev/null +++ b/tests/upstream-test-suite/057/057__caller__graphs_8tcl.xml @@ -0,0 +1,92 @@ + + + + 057_caller_graphs.tcl + bar + foo + 1::1::1 + 1 + 1::1 + 2::2::2::2::2 + 2 + 2::2 + 2::2::2 + 2::2::2::2 + + + + baz + args + baz + + + + + + + + + + + bar + args + bar + + + + + + + + 1::test3 + + + + next + args + next + + + + + + + + 2::next + + + + master + args + master + + + + + + + + inFileB + + + + inFileA + args + inFileA + + + + + + + + inFileB + + + + + + + + + diff --git a/tests/upstream-test-suite/057/__057__caller__graphs_8tcl.xml b/tests/upstream-test-suite/057/__057__caller__graphs_8tcl.xml new file mode 100644 index 0000000..a71e7b5 --- /dev/null +++ b/tests/upstream-test-suite/057/__057__caller__graphs_8tcl.xml @@ -0,0 +1,28 @@ + + + + _057_caller_graphs.tcl + + + + inFileB + args + inFileB + + + + + + + + inFileA + master + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespace1.xml b/tests/upstream-test-suite/057/namespace1.xml new file mode 100644 index 0000000..33d073d --- /dev/null +++ b/tests/upstream-test-suite/057/namespace1.xml @@ -0,0 +1,113 @@ + + + + 1 + 1::1 + + + + 1::baz + args + baz + + + + + + + + test1 + test5 + + + + 1::bar + args + bar + + + + + + + + test2 + + + + 1::test1 + args + test1 + + + + + + + + baz + + + + 1::test2 + args + test2 + + + + + + + + bar + + + + 1::test3 + args + test3 + + + + + + + + bar + + + + 1::test4 + args + test4 + + + + + + + + 1::1::bar + + + + 1::test5 + args + test5 + + + + + + + + baz + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespace1_1_11.xml b/tests/upstream-test-suite/057/namespace1_1_11.xml new file mode 100644 index 0000000..e13e261 --- /dev/null +++ b/tests/upstream-test-suite/057/namespace1_1_11.xml @@ -0,0 +1,28 @@ + + + + 1::1 + 1::1::1 + + + + 1::1::bar + args + bar + + + + + + + + 1::test4 + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespace1_1_11_1_11.xml b/tests/upstream-test-suite/057/namespace1_1_11_1_11.xml new file mode 100644 index 0000000..55b7838 --- /dev/null +++ b/tests/upstream-test-suite/057/namespace1_1_11_1_11.xml @@ -0,0 +1,26 @@ + + + + 1::1::1 + + + + 1::1::1::bar + args + bar + + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespace2.xml b/tests/upstream-test-suite/057/namespace2.xml new file mode 100644 index 0000000..a8a9bc6 --- /dev/null +++ b/tests/upstream-test-suite/057/namespace2.xml @@ -0,0 +1,30 @@ + + + + 2 + 2::2 + + + + 2::next + args + next + + + + + + + + 2::2::next + next + 2::2::2::2::2::next + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespace2_1_12.xml b/tests/upstream-test-suite/057/namespace2_1_12.xml new file mode 100644 index 0000000..a188f00 --- /dev/null +++ b/tests/upstream-test-suite/057/namespace2_1_12.xml @@ -0,0 +1,29 @@ + + + + 2::2 + 2::2::2 + + + + 2::2::next + args + next + + + + + + + + 2::2::2::next + 2::next + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespace2_1_12_1_12.xml b/tests/upstream-test-suite/057/namespace2_1_12_1_12.xml new file mode 100644 index 0000000..e83b3fd --- /dev/null +++ b/tests/upstream-test-suite/057/namespace2_1_12_1_12.xml @@ -0,0 +1,29 @@ + + + + 2::2::2 + 2::2::2::2 + + + + 2::2::2::next + args + next + + + + + + + + 2::2::2::2::next + 2::2::next + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12.xml b/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12.xml new file mode 100644 index 0000000..83c2a73 --- /dev/null +++ b/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12.xml @@ -0,0 +1,29 @@ + + + + 2::2::2::2 + 2::2::2::2::2 + + + + 2::2::2::2::next + args + next + + + + + + + + 2::2::2::2::2::next + 2::2::2::next + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12_1_12.xml b/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12_1_12.xml new file mode 100644 index 0000000..9222625 --- /dev/null +++ b/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12_1_12.xml @@ -0,0 +1,28 @@ + + + + 2::2::2::2::2 + + + + 2::2::2::2::2::next + args + next + + + + + + + + 2::next + 2::2::2::2::next + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespacebar.xml b/tests/upstream-test-suite/057/namespacebar.xml new file mode 100644 index 0000000..e16966e --- /dev/null +++ b/tests/upstream-test-suite/057/namespacebar.xml @@ -0,0 +1,57 @@ + + + + bar + + + + bar::slave + + slave + + + + + + + + baz + foo::master + + + + bar::baz + + baz + + + + + + + + bazbaz + slave + + + + bar::bazbaz + + bazbaz + + + + + + + + baz + + + + + + + + + diff --git a/tests/upstream-test-suite/057/namespacefoo.xml b/tests/upstream-test-suite/057/namespacefoo.xml new file mode 100644 index 0000000..8d0ac75 --- /dev/null +++ b/tests/upstream-test-suite/057/namespacefoo.xml @@ -0,0 +1,27 @@ + + + + foo + + + + foo::master + + master + + + + + + + + bar::slave + + + + + + + + + diff --git a/tests/upstream-test-suite/057_caller_graphs.tcl b/tests/upstream-test-suite/057_caller_graphs.tcl new file mode 100644 index 0000000..464d8aa --- /dev/null +++ b/tests/upstream-test-suite/057_caller_graphs.tcl @@ -0,0 +1,155 @@ +#// objective: test for completeness and correctness of references/referencedby relations +#// check: 057__caller__graphs_8tcl.xml +#// check: __057__caller__graphs_8tcl.xml +#// check: namespacebar.xml +#// check: namespacefoo.xml +#// check: namespace1.xml +#// check: namespace1_1_11.xml +#// check: namespace1_1_11_1_11.xml +#// check: namespace2.xml +#// check: namespace2_1_12.xml +#// check: namespace2_1_12_1_12.xml +#// check: namespace2_1_12_1_12_1_12.xml +#// check: namespace2_1_12_1_12_1_12_1_12.xml +#// config: EXTRACT_ALL = yes +#// config: INLINE_SOURCES = no +#// config: REFERENCED_BY_RELATION = yes +#// config: REFERENCES_RELATION = yes +#// config: INPUT = $INPUTDIR/057_caller_graphs.tcl $INPUTDIR/_057_caller_graphs.tcl +# config: HAVE_DOT = yes +# config: CALLER_GRAPH = yes +# config: CALL_GRAPH = yes +# config: GENERATE_HTML = yes + +# This is a stripped down example from my code. +# Doxygen 1.8.7 generates the correct relations (xml) +# but caller graphs will be incomplete. +# It does not generate any relations at all if INLINE_SOURCES = no. +namespace eval bar {} +proc bar::slave { } { + array set info [info frame 0]; puts -nonewline ->$info(proc) + if {1} then { + bar::baz + } + return +} +proc bar::baz {} { + array set info [info frame 0]; puts -nonewline ->$info(proc) + bar::bazbaz +} +proc bar::bazbaz {} { + array set info [info frame 0]; puts -nonewline ->$info(proc) +} +namespace eval foo {} +proc foo::master { } { + array set info [info frame 0]; puts -nonewline $info(proc) + bar::slave + return +} +# +# now we check tcl's rules: from the help +# NAME RESOLUTION +#... Command names are also always resolved by looking in the current +#namespace first. If not found there, they are searched for in every namespace on +#the current namespace's command path (which is empty by default). If not found +#there, command names are looked up in the global namespace (or, failing that, +#are processed by the unknown command.) ... +# +namespace eval ::1::1::1 {} +proc ::baz args { + array set info [info frame 0]; puts -nonewline ->$info(proc) +} +proc ::1::baz args { + array set info [info frame 0]; puts -nonewline ->$info(proc) +} +proc ::bar args { + array set info [info frame 0]; puts -nonewline ->$info(proc) +} +proc ::1::bar args { + array set info [info frame 0]; puts -nonewline ->$info(proc) +} +proc ::1::1::bar args { + array set info [info frame 0]; puts -nonewline ->$info(proc) +} +proc ::1::1::1::bar args { + array set info [info frame 0]; puts -nonewline ->$info(proc) +} +proc ::1::test1 args { + array set info [info frame 0]; puts -nonewline $info(proc) + baz +} +proc ::1::test2 args { + array set info [info frame 0]; puts -nonewline $info(proc) + bar +} +proc ::1::test3 args { + array set info [info frame 0]; puts -nonewline $info(proc) + ::bar +} +proc ::1::test4 args { + array set info [info frame 0]; puts -nonewline $info(proc) + 1::bar +} +proc ::1::test5 args { + array set info [info frame 0]; puts -nonewline $info(proc) + 1::baz +} +# +# funny example, do you see the infinite loop? +# we stop before the interpreter crashes +set ::countdown 10 +namespace eval ::2::2::2::2::2 {} +proc ::next args { + array set info [info frame 0]; puts $info(proc) + 2::next +} +proc ::2::next args { + array set info [info frame 0]; puts $info(proc) + incr ::countdown -1 + if {$::countdown>0} then { + 2::next + } else { + puts "stop after 10 rounds." + } +} +proc ::2::2::next args { + array set info [info frame 0]; puts $info(proc) + 2::next +} +proc ::2::2::2::next args { + array set info [info frame 0]; puts $info(proc) + 2::next +} +proc ::2::2::2::2::next args { + array set info [info frame 0]; puts $info(proc) + 2::next +} +proc ::2::2::2::2::2::next args { + array set info [info frame 0]; puts $info(proc) + 2::next +} +# +# cross check with two files +# If doxygen did not do two passes, then xrefs would depend on file order +# and would be incomplete. +source _057_caller_graphs.tcl +proc master args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + inFileB + return +} +proc inFileA args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + return +} +# now, check with tcl what is called +foo::master +puts "" +foreach proc [lsort [info procs ::1::test?]] { + $proc + puts "" +} +::next +master +exit + diff --git a/tests/upstream-test-suite/058/058__bracket__recursion_8tcl.xml b/tests/upstream-test-suite/058/058__bracket__recursion_8tcl.xml new file mode 100644 index 0000000..0381b83 --- /dev/null +++ b/tests/upstream-test-suite/058/058__bracket__recursion_8tcl.xml @@ -0,0 +1,384 @@ + + + + 058_bracket_recursion.tcl + + + + Invoked + args + Invoked + + should be reference by every proc below + + + + + + + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + y + z + + + + NotInvoked + args + NotInvoked + + must not be reference by every proc below + + + + + + + + + + a + args + a + + + + + + + + Invoked + + + + b + args + b + + + + + + + + Invoked + + + + c + args + c + + + + + + + + Invoked + + + + d + args + d + + + + + + + + Invoked + + + + e + args + e + + + + + + + + Invoked + + + + f + args + f + + + + + + + + Invoked + + + + g + args + g + + + + + + + + Invoked + + + + h + args + h + + + + + + + + Invoked + + + + i + args + i + + + + + + + + Invoked + + + + j + args + j + + + + + + + + Invoked + + + + k + args + k + + + + + + + + Invoked + + + + l + args + l + + + + + + + + Invoked + + + + m + args + m + + + + + + + + Invoked + + + + n + args + n + + + + + + + + Invoked + + + + o + args + o + + + + + + + + Invoked + + + + $NotInvoked + args + $NotInvoked + + + + + + + + + + + p + args + p + + + + + + + + Invoked + + + + q + args + q + + + + + + + + Invoked + + + + r + args + r + + + + + + + + Invoked + + + + s + args + s + + + + + + + + Invoked + + + + t + args + t + + + + + + + + Invoked + + + + y + + y + + + + + + + + Invoked + + + + z + + z + + + + + + + + Invoked + + + + + + + + + diff --git a/tests/upstream-test-suite/058_bracket_recursion.tcl b/tests/upstream-test-suite/058_bracket_recursion.tcl new file mode 100644 index 0000000..2ecd673 --- /dev/null +++ b/tests/upstream-test-suite/058_bracket_recursion.tcl @@ -0,0 +1,157 @@ +#// objective: tests processing of commands inside brackets [], only references/referencedby relations are relevant +#// check: 058__bracket__recursion_8tcl.xml +#// config: REFERENCED_BY_RELATION = yes +#// config: REFERENCES_RELATION = yes +#// config: EXTRACT_ALL = yes +#// config: INLINE_SOURCES = yes + +## +# \brief should be reference by every proc below +proc Invoked args { + puts "Procedure \"Invoked\" is invoked indeed. Ok." + return $args +} +## +# \brief must not be reference by every proc below +proc NotInvoked args { + puts "Procedure \"NotInvoked\" is invoked. Not Ok!" + return $args +} +# +# check if call references work at all +proc a args { + Invoked NotInvoked + return +} +# +# check brackets with various quoting, bracing +proc b args { + set r [Invoked] + set r [list \[NotInvoked \]] + return +} +proc c args { + set r \{[Invoked]\} + set r {[NotInvoked]} + return +} +proc d args { + set r "[Invoked]" + set r "\[NotInvoked \]" + return +} +proc e args { + set r [list \[NotInvoked [Invoked]\]] + return +} +proc f args { + set r [list [Invoked \[NotInvoked \]]] + return +} +proc g args { + set r "{[Invoked]}" + set r "{\[NotInvoked \]}" + return +} +proc h args { + [Invoked set] r {[NotInvoked]} + return +} +# check brackets in tcl commands containing script arguments +# +# example generated according to +# https://groups.google.com/d/msg/comp.lang.tcl/G5-mc3GiIyY/e-AVD9t7xMkJ +proc i args { + foreach item [Invoked] { + return + } +} +proc j args { + foreach [Invoked item] [list one two three] { + } + return +} +proc k args { + while {[Invoked 0]} { + } +} +proc l args { + for {} {[Invoked 0]} {} { + } +} +proc m args { + if {[Invoked 1]} { + } +} +proc n args { + if [Invoked 1] { + } +} +proc o args { + if {0} { + } elseif {[Invoked 0]} { + } +} +# these are really nasty examples +# they shows, that the condition argument may not be parsed as a script +set NotInvoked \$NotInvoked +proc $NotInvoked args { + puts "Procedure \"\$NotInvoked\" is invoked. Not Ok!" + return $args +} +proc p args { + set NotInvoked \$NotInvoked + if {$NotInvoked eq [Invoked 1]} { + } + return +} +proc q args { + set NotInvoked \$NotInvoked + if {0} { + } elseif {$NotInvoked eq [Invoked 1]} { + } + return +} +proc r args { + set NotInvoked \$NotInvoked + while {$NotInvoked eq [Invoked 1]} { + } + return +} +proc s args { + set NotInvoked \$NotInvoked + for {} {$NotInvoked eq [Invoked 1]} {} { + } + return +} +# dangling open brackets should not confuse the scanner +proc t args { + set foo ]]]][Invoked] + return +} +# Example according to +# https://bugzilla.gnome.org/show_bug.cgi?id=729135 +# | +# Note the subtle difference in this | whitespace +# V +proc y {} { + set classifier_state {{bphy} } + if { ($classifier_state == {{bphy} }) } { + Invoked + } +} +proc z {} { + set classifier_state {{bphy} } + if { ($classifier_state == {{bphy} } ) } { + Invoked + } +} +# +# call all single letter procs +# let tcl check what is called and what is not called +foreach p [info procs ?] { + puts "Check procedure \"$p\"" + $p +} +exit + diff --git a/tests/upstream-test-suite/059/059__command__catch_8tcl.xml b/tests/upstream-test-suite/059/059__command__catch_8tcl.xml new file mode 100644 index 0000000..b5e5c96 --- /dev/null +++ b/tests/upstream-test-suite/059/059__command__catch_8tcl.xml @@ -0,0 +1,191 @@ + + + + 059_command_catch.tcl + + + + Invoked + args + Invoked + + should be reference by every proc below + + + + + + + a + b + c + d + e + f + g + h + i + j + + + + NotInvoked + args + NotInvoked + + must not be reference by every proc below + + + + + + + + + + a + args + a + + + + + + + + Invoked + + + + b + args + b + + + + + + + + Invoked + + + + c + args + c + + + + + + + + Invoked + + + + d + args + d + + + + + + + + Invoked + + + + e + args + e + + + + + + + + Invoked + + + + f + args + f + + + + + + + + Invoked + + + + g + args + g + + + + + + + + Invoked + + + + h + args + h + + + + + + + + Invoked + + + + i + args + i + + + + + + + + Invoked + + + + j + args + j + + + + + + + + Invoked + + + + + + + + + diff --git a/tests/upstream-test-suite/059_command_catch.tcl b/tests/upstream-test-suite/059_command_catch.tcl new file mode 100644 index 0000000..4227da7 --- /dev/null +++ b/tests/upstream-test-suite/059_command_catch.tcl @@ -0,0 +1,87 @@ +#// objective: tests processing of catch/eval, only references/referencedby relations are relevant +#// check: 059__command__catch_8tcl.xml +#// config: REFERENCED_BY_RELATION = yes +#// config: REFERENCES_RELATION = yes +#// config: EXTRACT_ALL = yes +#// config: INLINE_SOURCES = no + +## +# \brief should be reference by every proc below +proc Invoked args { + puts "Procedure \"Invoked\" is invoked indeed. Ok." + return $args +} +## +# \brief must not be reference by every proc below +proc NotInvoked args { + puts "Procedure \"NotInvoked\" is invoked. Not Ok!" + return $args +} +# +# check if call references work at all +proc a args { + Invoked NotInvoked + return +} +# +# catch command +# Tcl8.5: catch script ?resultVarName? ?optionsVarName? +proc b args { + catch Invoked + return +} +proc c args { + catch Invoked NotInvoked + return +} +proc d args { + catch Invoked NotInvoked NotInvoked + return +} +proc e args { + set r [catch Invoked NotInvoked NotInvoked] + return +} +proc f args { + set r [catch {Invoked} NotInvoked NotInvoked] + return +} +proc g args { + set r [catch { + set x [Invoked] + } NotInvoked NotInvoked] + return +} +# eval arg ?arg ...? +proc h args { + eval Invoked NotInvoked + return +} +proc i args { + eval set NotInvoked [Invoked NotInvoked] + return +} +# This is a striped down example. Original: +# +# jpeg.tcl -- +# +# Querying and modifying JPEG image files. +# +# Copyright (c) 2004 Aaron Faupell +# +# ... +# eval [list addComment $file] [lreplace $com 0 0 $comment] +# ... +proc j args { + eval [list set] [list NotInvoked] [Invoked NotInvoked] + return +} +# +# call all single letter procs +# let tcl check what is called and what is not called +foreach p [info procs ?] { + puts "Check procedure \"$p\"" + $p +} +exit + diff --git a/tests/upstream-test-suite/060/060__command__switch_8tcl.xml b/tests/upstream-test-suite/060/060__command__switch_8tcl.xml new file mode 100644 index 0000000..2def3fc --- /dev/null +++ b/tests/upstream-test-suite/060/060__command__switch_8tcl.xml @@ -0,0 +1,326 @@ + + + + 060_command_switch.tcl + + + + Invoked + args + Invoked + + should be reference by every proc below + + + + + + + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + + + + NotInvoked + args + NotInvoked + + must not be reference by every proc below + + + + + + + + + + a + args + a + + + + + + + + Invoked + + + + b + args + b + + + + + + + + Invoked + + + + c + args + c + + + + + + + + Invoked + + + + d + args + d + + + + + + + + Invoked + + + + e + args + e + + + + + + + + Invoked + + + + f + args + f + + + + + + + + Invoked + + + + g + args + g + + + + + + + + Invoked + + + + h + args + h + + + + + + + + Invoked + + + + i + args + i + + + + + + + + Invoked + + + + j + args + j + + + + + + + + Invoked + + + + k + args + k + + + + + + + + Invoked + + + + l + args + l + + + + + + + + Invoked + + + + m + args + m + + + + + + + + Invoked + + + + n + args + n + + + + + + + + Invoked + + + + o + args + o + + + + + + + + Invoked + + + + p + args + p + + + + + + + + Invoked + + + + q + args + q + + + + + + + + Invoked + + + + r + args + r + + + + + + + + Invoked + + + + s + args + s + + + + + + + + Invoked + + + + + + + + + diff --git a/tests/upstream-test-suite/060_command_switch.tcl b/tests/upstream-test-suite/060_command_switch.tcl new file mode 100644 index 0000000..407f2e9 --- /dev/null +++ b/tests/upstream-test-suite/060_command_switch.tcl @@ -0,0 +1,238 @@ +#// objective: tests processing of switch, only references/referencedby relations are relevant +#// check: 060__command__switch_8tcl.xml +#// config: REFERENCED_BY_RELATION = yes +#// config: REFERENCES_RELATION = yes +#// config: EXTRACT_ALL = yes +#// config: INLINE_SOURCES = no + +## +# \brief should be reference by every proc below +proc Invoked args { + puts "Procedure \"Invoked\" is invoked indeed. Ok." + return $args +} +## +# \brief must not be reference by every proc below +proc NotInvoked args { + puts "Procedure \"NotInvoked\" is invoked. Not Ok!" + return $args +} +# +# check if call references work at all +proc a args { + Invoked NotInvoked + return +} +# +# switch command +# switch ?options? string pattern body ?pattern body ...? +proc b args { + switch value NotInvoked { + } NotInvoked { + } default { + Invoked + } + return +} +proc c args { + switch value NotInvoked { + } [Invoked] { + } default { + } + return +} +proc d args { + switch NotInvoked pattern { + } [Invoked] { + } default { + } + return +} +proc e args { + switch [Invoked] pattern { + } NotInvoked { + } default { + } + return +} +proc f args { + switch -exact value pattern { + } NotInvoked { + } default { + Invoked + } + return +} +proc g args { + switch -exact -- value pattern { + } NotInvoked { + } default { + Invoked + } + return +} +proc h args { + switch -exact -- -value pattern { + } NotInvoked { + } default { + Invoked + } + return +} +# switch ?options? string {pattern body ?pattern body ...?} +proc i args { + switch value { + NotInvoked { + } + NotInvoked { + } + default { + Invoked + } + } + return +} +proc j args { + switch vale { + NotInvoked { + } + [NotInvoked] { + } + default { + Invoked + } + } + return +} +proc k args { + switch NotInvoked { + [NotInvoked] { + } + NotInvoked { + Invoked + } + default { + } + } + return +} +proc l args { + switch [Invoked] { + pattern { + } + NotInvoked { + } + default { + } + } + return +} +proc m args { + switch -exact value { + pattern { + } + NotInvoked { + } + default { + Invoked + } + } + return +} +proc n args { + switch -exact -- value { + pattern { + } + NotInvoked { + } + default { + Invoked + } + } + return +} +proc o args { + switch -exact -- -value { + pattern { + } + NotInvoked { + } + default { + Invoked + } + } + return +} +proc p args { + switch -exact -- inquotes { + "inquotes" { + Invoked + } + default { + } + } + return +} +proc q args { + switch -exact -- "in quotes" { + "in quotes" { + Invoked + } + default { + } + } + return +} +proc r args { + switch -exact -- inbraces { + {inbraces} { + Invoked + } + default { + } + } + return +} +proc s args { + switch -exact -- {in braces} { + {in braces} { + Invoked + } + default { + } + } + return +} +# wrong syntax +#proc x args { +# catch {switch -exact -- [Invoked] pattern1 NotInvoked pattern2} +# return +#} +# The current version does not check the last argument beforehand. +# Therefore, all script elements are evaluated as scripts before +# the parser detects the dangling pattern. It throws a warning, at the very least. +# Anyway, for working code the documentation will be correct. +#proc y args { +# catch {switch -exact -- [Invoked] { +# pattern { +# NotInvoked +# } +# NotInvoked { +# NotInvoked +# } +# default { +# NotInvoked +# } +# pattern +# }} +# return +#} +# +# call all single letter procs +# let tcl check what is called and what is not called +foreach p [info procs ?] { + puts "Check procedure \"$p\"" + $p +} +exit + diff --git a/tests/upstream-test-suite/061/class_test.xml b/tests/upstream-test-suite/061/class_test.xml new file mode 100644 index 0000000..47e70ac --- /dev/null +++ b/tests/upstream-test-suite/061/class_test.xml @@ -0,0 +1,70 @@ + + + + Test + + + + Test::testmethod_one + args + testmethod_one + + Test method 1. + + + + + + + + + + Test::constructor + args + constructor + + Construction of class. + + + + + + + + + + Test::testmethod_two + args + testmethod_two + + Test method 2. + + + + + + + + + + Testclass. + + + + + + + Test + constructor + + + Test + testmethod_one + + + Test + testmethod_two + + + + diff --git a/tests/upstream-test-suite/061_bug_705503.tcl b/tests/upstream-test-suite/061_bug_705503.tcl new file mode 100644 index 0000000..ce25d6e --- /dev/null +++ b/tests/upstream-test-suite/061_bug_705503.tcl @@ -0,0 +1,19 @@ +#// objective: test for bug 705503 - TCL: Documentation of oo::define is not working +#// check: class_test.xml +#// config: EXTRACT_ALL = yes + +# taken from +# https://bugzilla.gnome.org/show_bug.cgi?id=705503 + +## @class Test +# @brief Testclass +oo::class create Test { + ## @brief Test method 1. + method testmethod_one args {} +} + +## @brief Construction of class +oo::define Test constructor args {} + +## @brief Test method 2 +oo::define Test method testmethod_two args {} diff --git a/tests/upstream-test-suite/062/namespacen1.xml b/tests/upstream-test-suite/062/namespacen1.xml new file mode 100644 index 0000000..408ef87 --- /dev/null +++ b/tests/upstream-test-suite/062/namespacen1.xml @@ -0,0 +1,42 @@ + + + + n1 + n1::n1 + + + + n1::p1 + args + p1 + + + + + + + + p2 + + + + n1::p2 + args + p2 + + + + + + + + p1 + + + + + + + + + diff --git a/tests/upstream-test-suite/062/namespacen2.xml b/tests/upstream-test-suite/062/namespacen2.xml new file mode 100644 index 0000000..f545576 --- /dev/null +++ b/tests/upstream-test-suite/062/namespacen2.xml @@ -0,0 +1,42 @@ + + + + n2 + n2::n2 + + + + n2::p1 + args + p1 + + + + + + + + p2 + + + + n2::p2 + args + p2 + + + + + + + + p1 + + + + + + + + + diff --git a/tests/upstream-test-suite/062/namespacen3.xml b/tests/upstream-test-suite/062/namespacen3.xml new file mode 100644 index 0000000..f8c2fb5 --- /dev/null +++ b/tests/upstream-test-suite/062/namespacen3.xml @@ -0,0 +1,42 @@ + + + + n3 + n3::n3 + + + + n3::p1 + args + p1 + + + + + + + + p2 + + + + n3::p2 + args + p2 + + + + + + + + p1 + + + + + + + + + diff --git a/tests/upstream-test-suite/062_namespace_resolution.tcl b/tests/upstream-test-suite/062_namespace_resolution.tcl new file mode 100644 index 0000000..dcc6701 --- /dev/null +++ b/tests/upstream-test-suite/062_namespace_resolution.tcl @@ -0,0 +1,68 @@ +#// objective: tests correct namespace resolution, only references/referencedby relations are relevant +#// check: namespacen1.xml +#// check: namespacen2.xml +#// check: namespacen3.xml +#// config: REFERENCED_BY_RELATION = yes +#// config: REFERENCES_RELATION = yes +#// config: EXTRACT_ALL = yes +#// config: INLINE_SOURCES = yes + +# now: combine namespace eval and qualified names +namespace eval n1 { + proc p1 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + p2 + return + } + proc p2 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + return + } + namespace eval n1 { + proc p1 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + return + } + } +} +# same thing, but fully qualified proc names +namespace eval ::n2 {} +namespace eval ::n2::n2 {} +proc ::n2::p1 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + p2 + return +} +proc ::n2::p2 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + return +} +proc ::n2::n2::p2 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + return +} +# same thing, without leading :: +namespace eval n3 {} +namespace eval n3::n3 {} +proc n3::p1 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + p2 + return +} +proc n3::p2 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + return +} +proc n3::n3::p2 args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + return +} +# now, check with tcl what is called +n1::p1 +puts "" +n2::p1 +puts "" +n3::p1 +puts "" +exit + diff --git a/tests/upstream-test-suite/063/namespaceoo.xml b/tests/upstream-test-suite/063/namespaceoo.xml new file mode 100644 index 0000000..044c364 --- /dev/null +++ b/tests/upstream-test-suite/063/namespaceoo.xml @@ -0,0 +1,13 @@ + + + + oo + oo::define + oo::Helpers + + + + + + + diff --git a/tests/upstream-test-suite/063/namespaceoo_1_1_helpers.xml b/tests/upstream-test-suite/063/namespaceoo_1_1_helpers.xml new file mode 100644 index 0000000..e9083dc --- /dev/null +++ b/tests/upstream-test-suite/063/namespaceoo_1_1_helpers.xml @@ -0,0 +1,27 @@ + + + + oo::Helpers + + + + oo::Helpers::classvar + args + classvar + + + + Extension to TclOO to add static variables. Defines variables on the class instead of on the object. Can be used to enforce a limited number of instantiations. + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/063/namespaceoo_1_1define.xml b/tests/upstream-test-suite/063/namespaceoo_1_1define.xml new file mode 100644 index 0000000..c8c8e85 --- /dev/null +++ b/tests/upstream-test-suite/063/namespaceoo_1_1define.xml @@ -0,0 +1,27 @@ + + + + oo::define + + + + oo::define::classmethod + name ?args? ?body? + classmethod + + + + Extension to TclOO to add static methods. Defines the method on the class instead of on the object. Can be used for the creation of megawidgets using TclOO by overriding the unknown method to detect if the user is trying to instantiate a widget (because the method will be unknown and start with a dot). + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/063_bug_729092.tcl b/tests/upstream-test-suite/063_bug_729092.tcl new file mode 100644 index 0000000..a6d3341 --- /dev/null +++ b/tests/upstream-test-suite/063_bug_729092.tcl @@ -0,0 +1,43 @@ +#// objective: test for bug 729092 - TCL: Full documentation not shown for procs in namespaces. +#// check: namespaceoo.xml +#// check: namespaceoo_1_1_helpers.xml +#// check: namespaceoo_1_1define.xml +#// config: EXTRACT_ALL = yes +#// config: GENERATE_HTML = yes + +# taken from +# https://bugzilla.gnome.org/show_bug.cgi?id=729092 + +## +# Extension to TclOO to add static methods. +# Defines the method on the class instead of on the object. Can be used for +# the creation of megawidgets using TclOO by overriding the unknown method to +# detect if the user is trying to instantiate a widget (because the method +# will be unknown and start with a dot). +# +proc ::oo::define::classmethod {name {args ""} {body ""}} { + # Create the method on the class if the caller gave arguments and body. + if {[llength [info level 0]] == 4} { + uplevel 1 [list self method $name $args $body] + } + # Get the name of the class being defined. + set cls [lindex [info level -1] 1] + # Make connection to private class "my" command by forwarding. + uplevel forward $name [info object namespace $cls]::my $name +} + +## +# Extension to TclOO to add static variables. +# Defines variables on the class instead of on the object. Can be used to +# enforce a limited number of instantiations. +# +proc ::oo::Helpers::classvar {args} { + # Get reference to class's namespace. + set nsCl [info object namespace [uplevel 1 {self class}]] + set nsObj [uplevel 1 {namespace current}] + # Link variables into local (caller's) scope. + foreach v $args { + uplevel "my variable $v" + upvar #0 ${nsCl}::$v ${nsObj}::$v + } +} diff --git a/tests/upstream-test-suite/064/struct_foo.xml b/tests/upstream-test-suite/064/struct_foo.xml new file mode 100644 index 0000000..e228f92 --- /dev/null +++ b/tests/upstream-test-suite/064/struct_foo.xml @@ -0,0 +1,112 @@ + + + + Foo + + + + Foo::operator int + () + operator int + + Conversion to int. + + + + + + + + + + Foo::operator int + () const + operator int + + Conversion to int const. + + + + + + + + + + Foo. + + + + + + No autolink for operator int() + + + + operator int() + + + + + title + + + + + Foo::operator int() + + + + + Foo::operator int() + + + + + title + + + + No autolink for operator int() const + + + + operator int() const + + + + + title + + + + + Foo::operator int() const + + + + + Foo::operator int() const + + + + + title + + + + + + + + + Foo + operator int + + + Foo + operator int + + + + diff --git a/tests/upstream-test-suite/064_castoperator.cpp b/tests/upstream-test-suite/064_castoperator.cpp new file mode 100644 index 0000000..d6f8006 --- /dev/null +++ b/tests/upstream-test-suite/064_castoperator.cpp @@ -0,0 +1,25 @@ +// objective: test linking to the cast operator with and without const +// check: struct_foo.xml +/** + * @brief Foo + * + * - No autolink for operator int() + * - @ref operator int() + * - @ref operator int() "title" + * - Foo::operator int() + * - @ref Foo::operator int() + * - @ref Foo::operator int() "title" + * + * - No autolink for operator int() const + * - @ref operator int() const + * - @ref operator int() const "title" + * - Foo::operator int() const + * - @ref Foo::operator int() const + * - @ref Foo::operator int() const "title" + */ +struct Foo { + /** @brief Conversion to int */ + operator int(); + /** @brief Conversion to int const */ + operator int() const; +}; diff --git a/tests/upstream-test-suite/065/indexpage.xml b/tests/upstream-test-suite/065/indexpage.xml new file mode 100644 index 0000000..09c7f8c --- /dev/null +++ b/tests/upstream-test-suite/065/indexpage.xml @@ -0,0 +1,12 @@ + + + + index + My Project + + + + これは日本語(en)です. Output for all languages. + + + diff --git a/tests/upstream-test-suite/065_tilde.dox b/tests/upstream-test-suite/065_tilde.dox new file mode 100644 index 0000000..0b4986f --- /dev/null +++ b/tests/upstream-test-suite/065_tilde.dox @@ -0,0 +1,12 @@ +// objective: test \~ command with non default OUTPUT_LANGUAGE which contains '-' letter +// check: indexpage.xml +// config: OUTPUT_LANGUAGE = Japanese-en +/** +\mainpage +\~english This is English. +\~dutch Dit is Nederlands. +\~japanese これは日本語です. +\~japanese-en これは日本語(en)です. +\~german Dies ist Deutsch. +\~ Output for all languages. +*/ diff --git a/tests/upstream-test-suite/066/class_class1.xml b/tests/upstream-test-suite/066/class_class1.xml new file mode 100644 index 0000000..008bcc6 --- /dev/null +++ b/tests/upstream-test-suite/066/class_class1.xml @@ -0,0 +1,50 @@ + + + + Class1 + + + int + int Class1.Property1 + + Property1 + = 1 + + + + + + + + + + string + string Class1.Property2 + + Property2 + + + + + + + + + + + + + + + + + Class1 + Property1 + + + Class1 + Property2 + + + + diff --git a/tests/upstream-test-suite/066_property_initializer.cs b/tests/upstream-test-suite/066_property_initializer.cs new file mode 100644 index 0000000..d5b5c59 --- /dev/null +++ b/tests/upstream-test-suite/066_property_initializer.cs @@ -0,0 +1,7 @@ +// objective: C# property initializer +// check: class_class1.xml +class Class1 +{ + public int Property1 { get; } = 1; + public string Property2 { get; set; } +} diff --git a/tests/upstream-test-suite/067/067__link__varargs_8cpp.xml b/tests/upstream-test-suite/067/067__link__varargs_8cpp.xml new file mode 100644 index 0000000..76eb543 --- /dev/null +++ b/tests/upstream-test-suite/067/067__link__varargs_8cpp.xml @@ -0,0 +1,54 @@ + + + + 067_link_varargs.cpp + Test + + + void + void func + (int p) + func + + int + p + + + + + A function + + + + + + + void + void func + (int p,...) + func + + int + p + + + ... + + + + + Overloaded function taking variadic arguments + + + + + + + + + + See the function for more info. See the test class. + + + + diff --git a/tests/upstream-test-suite/067_link_varargs.cpp b/tests/upstream-test-suite/067_link_varargs.cpp new file mode 100644 index 0000000..8cf25a2 --- /dev/null +++ b/tests/upstream-test-suite/067_link_varargs.cpp @@ -0,0 +1,20 @@ +// objective: test \link command with function variadic arguments '...' +// check: 067__link__varargs_8cpp.xml + +/** \file + * See \link func(int,...) the function\endlink for more info. + * See the \link Test test\endlink class. + */ + +/** A function + */ +void func(int p); + +/** Overloaded function taking variadic arguments + */ +void func(int p, ...); + +/** A test */ +class Test +{ +}; diff --git a/tests/upstream-test-suite/068/068__ref__varargs_8cpp.xml b/tests/upstream-test-suite/068/068__ref__varargs_8cpp.xml new file mode 100644 index 0000000..8e0dc00 --- /dev/null +++ b/tests/upstream-test-suite/068/068__ref__varargs_8cpp.xml @@ -0,0 +1,54 @@ + + + + 068_ref_varargs.cpp + Test + + + void + void func + (int p) + func + + int + p + + + + + A function + + + + + + + void + void func + (int p,...) + func + + int + p + + + ... + + + + + Overloaded function taking variadic arguments + + + + + + + + + + See the function for more info. See the test class. + + + + diff --git a/tests/upstream-test-suite/068_ref_varargs.cpp b/tests/upstream-test-suite/068_ref_varargs.cpp new file mode 100644 index 0000000..c85daa2 --- /dev/null +++ b/tests/upstream-test-suite/068_ref_varargs.cpp @@ -0,0 +1,20 @@ +// objective: test \ref command with function variadic arguments '...' +// check: 068__ref__varargs_8cpp.xml + +/** \file + * See \ref func(int,...) "the function" for more info. + * See the \ref Test "test" class. + */ + +/** A function + */ +void func(int p); + +/** Overloaded function taking variadic arguments + */ +void func(int p, ...); + +/** A test */ +class Test +{ +}; diff --git a/tests/upstream-test-suite/069/069__link__variadic__template_8cpp.xml b/tests/upstream-test-suite/069/069__link__variadic__template_8cpp.xml new file mode 100644 index 0000000..c93a732 --- /dev/null +++ b/tests/upstream-test-suite/069/069__link__variadic__template_8cpp.xml @@ -0,0 +1,309 @@ + + + + 069_link_variadic_template.cpp + Test + + + void + void func + (int p) + func + + int + p + + + + + A function + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args &... args) + func + + int + p + + + Args &... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args &&... args) + func + + int + p + + + Args &&... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, const Args &... args) + func + + int + p + + + const Args &... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, const Args &&... args) + func + + int + p + + + const Args &&... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args *... args) + func + + int + p + + + Args *... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args **... args) + func + + int + p + + + Args **... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, const Args *... args) + func + + int + p + + + const Args *... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, const Args **... args) + func + + int + p + + + const Args **... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args... args) + func + + int + p + + + Args... + args + + + + + A variadic template function overload + + + + + + + + + + + + + + At the time of writing, the part between <> is totally ignored: func<Args...>(Args... args) is interpreted as func(Args... args). + Beware that a function parameter with either a & or * operator, e.g. 'const Args&... args', requires \link and \ref to specify such parameter as verbatim, i.e. 'const Args&... args'. At the time of writing, the form func(const Args&...) will fail, unless the function parameter was declared just as 'const Args&...'. + + + + + + variadic template method + + Links to the variadic template function overloads: First overloadSecond overloadThird overloadFourth overloadFifth overloadSixth overloadSeventh overloadEighth overloadNinth overload +The followings are interpreted the same: without template argumentwith template argument +See the test class. + + + + diff --git a/tests/upstream-test-suite/069_link_variadic_template.cpp b/tests/upstream-test-suite/069_link_variadic_template.cpp new file mode 100644 index 0000000..89ab57c --- /dev/null +++ b/tests/upstream-test-suite/069_link_variadic_template.cpp @@ -0,0 +1,95 @@ +// objective: test \link command with a variadic template function +// check: 069__link__variadic__template_8cpp.xml + +/** \file + * + * @attention + * @parblock + * At the time of writing, the part between \<\> is totally ignored: + * %func(Args... args) is interpreted as %func(Args... args). + * + * Beware that a function parameter with either a \& or \* operator, + * e.g. 'const Args&... args', requires \\link and \\ref to specify + * such parameter as verbatim, i.e. 'const Args&... args'. At the + * time of writing, the form %func(const Args&...) will fail, unless + * the function parameter was declared just as 'const Args&...'. + * @endparblock + * + * \link Test::func(int,Args...)const variadic template method\endlink + * + * Links to the variadic template function overloads: + * @li \link func(int,Args&... args) First overload\endlink + * @li \link func(int,Args&&... args) Second overload\endlink + * @li \link func(int,const Args&... args) Third overload\endlink + * @li \link func(int,const Args&&... args) Fourth overload\endlink + * @li \link func(int,Args*... args) Fifth overload\endlink + * @li \link func(int,Args**... args) Sixth overload\endlink + * @li \link func(int,const Args*... args) Seventh overload\endlink + * @li \link func(int,const Args**... args) Eighth overload\endlink + * @li \link func(int,Args...) Ninth overload\endlink + * + * The followings are interpreted the same: + * @li \link func(int,const Args&... args) without template argument\endlink + * @li \link func(int,const Args&... args) with template argument\endlink + * + * See the \link Test test\endlink class. + */ + +/** A function + */ +void func(int p); + +/** A variadic template function overload + */ +template +void func(int p, Args&... args); + +/** A variadic template function overload + */ +template +void func(int p, Args&&... args); + +/** A variadic template function overload + */ +template +void func(int p, const Args&... args); + +/** A variadic template function overload + */ +template +void func(int p, const Args&&... args); + +/** A variadic template function overload + */ +template +void func(int p, Args*... args); + +/** A variadic template function overload + */ +template +void func(int p, Args**... args); + +/** A variadic template function overload + */ +template +void func(int p, const Args*... args); + +/** A variadic template function overload + */ +template +void func(int p, const Args**... args); + +/** A variadic template function overload + */ +template +void func(int p, Args... args); + +/** A test */ +class Test +{ + public: + /** A variadic template method + */ + template + void func(int p, Args... args) const; +}; diff --git a/tests/upstream-test-suite/070/070__ref__variadic__template_8cpp.xml b/tests/upstream-test-suite/070/070__ref__variadic__template_8cpp.xml new file mode 100644 index 0000000..0f581e5 --- /dev/null +++ b/tests/upstream-test-suite/070/070__ref__variadic__template_8cpp.xml @@ -0,0 +1,309 @@ + + + + 070_ref_variadic_template.cpp + Test + + + void + void func + (int p) + func + + int + p + + + + + A function + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args &... args) + func + + int + p + + + Args &... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args &&... args) + func + + int + p + + + Args &&... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, const Args &... args) + func + + int + p + + + const Args &... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, const Args &&... args) + func + + int + p + + + const Args &&... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args *... args) + func + + int + p + + + Args *... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args **... args) + func + + int + p + + + Args **... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, const Args *... args) + func + + int + p + + + const Args *... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, const Args **... args) + func + + int + p + + + const Args **... + args + + + + + A variadic template function overload + + + + + + + + + typename... + Args + Args + + + void + void func + (int p, Args... args) + func + + int + p + + + Args... + args + + + + + A variadic template function overload + + + + + + + + + + + + + + At the time of writing, the part between <> is totally ignored: func<Args...>(Args... args) is interpreted as func(Args... args). + Beware that a function parameter with either a & or * operator, e.g. 'const Args&... args', requires \link and \ref to specify such parameter as verbatim, i.e. 'const Args&... args'. At the time of writing, the form func(const Args&...) will fail, unless the function parameter was declared just as 'const Args&...'. + + + + + + variadic template method + + References to the variadic template function overloads: First overloadSecond overloadThird overloadFourth overloadFifth overloadSixth overloadSeventh overloadEighth overloadNinth overload +The followings are interpreted the same: without template argumentwith template argument +See the test class. + + + + diff --git a/tests/upstream-test-suite/070_ref_variadic_template.cpp b/tests/upstream-test-suite/070_ref_variadic_template.cpp new file mode 100644 index 0000000..376cebe --- /dev/null +++ b/tests/upstream-test-suite/070_ref_variadic_template.cpp @@ -0,0 +1,95 @@ +// objective: test \ref command with a variadic template function +// check: 070__ref__variadic__template_8cpp.xml + +/** \file + * + * @attention + * @parblock + * At the time of writing, the part between \<\> is totally ignored: + * %func(Args... args) is interpreted as %func(Args... args). + * + * Beware that a function parameter with either a \& or \* operator, + * e.g. 'const Args&... args', requires \\link and \\ref to specify + * such parameter as verbatim, i.e. 'const Args&... args'. At the + * time of writing, the form %func(const Args&...) will fail, unless + * the function parameter was declared just as 'const Args&...'. + * @endparblock + * + * \ref Test::func(int,Args...)const "variadic template method" + * + * References to the variadic template function overloads: + * @li \ref func(int,Args&... args) "First overload" + * @li \ref func(int,Args&&... args) "Second overload" + * @li \ref func(int,const Args&... args) "Third overload" + * @li \ref func(int,const Args&&... args) "Fourth overload" + * @li \ref func(int,Args*... args) "Fifth overload" + * @li \ref func(int,Args**... args) "Sixth overload" + * @li \ref func(int,const Args*... args) "Seventh overload" + * @li \ref func(int,const Args**... args) "Eighth overload" + * @li \ref func(int,Args...) "Ninth overload" + * + * The followings are interpreted the same: + * @li \ref func(int,const Args&... args) "without template argument" + * @li \ref func(int,const Args&... args) "with template argument" + * + * See the \ref Test "test" class. + */ + +/** A function + */ +void func(int p); + +/** A variadic template function overload + */ +template +void func(int p, Args&... args); + +/** A variadic template function overload + */ +template +void func(int p, Args&&... args); + +/** A variadic template function overload + */ +template +void func(int p, const Args&... args); + +/** A variadic template function overload + */ +template +void func(int p, const Args&&... args); + +/** A variadic template function overload + */ +template +void func(int p, Args*... args); + +/** A variadic template function overload + */ +template +void func(int p, Args**... args); + +/** A variadic template function overload + */ +template +void func(int p, const Args*... args); + +/** A variadic template function overload + */ +template +void func(int p, const Args**... args); + +/** A variadic template function overload + */ +template +void func(int p, Args... args); + +/** A test */ +class Test +{ + public: + /** A variadic template method + */ + template + void func(int p, Args... args) const; +}; diff --git a/tests/upstream-test-suite/071/namespace_a_namespace_1_1_0D0.xml b/tests/upstream-test-suite/071/namespace_a_namespace_1_1_0D0.xml new file mode 100644 index 0000000..76483ca --- /dev/null +++ b/tests/upstream-test-suite/071/namespace_a_namespace_1_1_0D0.xml @@ -0,0 +1,45 @@ + + + + ANamespace::@0 + + + + Boolean + + False + + + + + + + True + + + + + + + FileNotFound + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/071_enum_in_anon_ns.cpp b/tests/upstream-test-suite/071_enum_in_anon_ns.cpp new file mode 100644 index 0000000..a5b9ac8 --- /dev/null +++ b/tests/upstream-test-suite/071_enum_in_anon_ns.cpp @@ -0,0 +1,12 @@ +// objective: test that enum values in anonymous namespaces produce no warning +// check: namespace_a_namespace_1_1_0D0.xml + +namespace ANamespace { namespace { + +enum class Boolean { + False, + True, + FileNotFound +}; + +}} diff --git a/tests/upstream-test-suite/072/072__using_8cpp.xml b/tests/upstream-test-suite/072/072__using_8cpp.xml new file mode 100644 index 0000000..e368966 --- /dev/null +++ b/tests/upstream-test-suite/072/072__using_8cpp.xml @@ -0,0 +1,32 @@ + + + + 072_using.cpp + + + + + class T + + + std::vector< T > + using Vec = std::vector<T> + + Vec + + A vector. + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/072_using.cpp b/tests/upstream-test-suite/072_using.cpp new file mode 100644 index 0000000..ca02902 --- /dev/null +++ b/tests/upstream-test-suite/072_using.cpp @@ -0,0 +1,7 @@ +// objective: test template parameters for a type alias +// check: 072__using_8cpp.xml + +/** \file */ + +/** @brief A vector */ +template using Vec = std::vector; diff --git a/tests/upstream-test-suite/073/073__typed__enum_8cpp.xml b/tests/upstream-test-suite/073/073__typed__enum_8cpp.xml new file mode 100644 index 0000000..9dda417 --- /dev/null +++ b/tests/upstream-test-suite/073/073__typed__enum_8cpp.xml @@ -0,0 +1,25 @@ + + + + 073_typed_enum.cpp + + + unsigned short + E + + A strongly-typed enum. + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/073_typed_enum.cpp b/tests/upstream-test-suite/073_typed_enum.cpp new file mode 100644 index 0000000..0818463 --- /dev/null +++ b/tests/upstream-test-suite/073_typed_enum.cpp @@ -0,0 +1,7 @@ +// objective: test underlying type and strongness for an enum +// check: 073__typed__enum_8cpp.xml + +/** \file */ + +/** @brief A strongly-typed enum */ +enum class E: unsigned short {}; diff --git a/tests/upstream-test-suite/074/struct_foo.xml b/tests/upstream-test-suite/074/struct_foo.xml new file mode 100644 index 0000000..56a497a --- /dev/null +++ b/tests/upstream-test-suite/074/struct_foo.xml @@ -0,0 +1,287 @@ + + + + Foo + + + + Foo::Foo + () + Foo + + + + Constructor + + + + + + + Foo & + Foo& Foo::operator<< + (int i) + operator<< + + int + i + + + + + overloaded less than operator + + + + + + + const Foo & + const Foo& Foo::operator<< + (int i) const + operator<< + + int + i + + + + + overloaded const less than operator + + + + + + + int + int Foo::operator() + (int i) + operator() + + int + i + + + + + overloaded call operator + + + + + + + int + int Foo::operator() + (int i) const + operator() + + int + i + + + + + overloaded call operator + + + + + + + Foo & + Foo& Foo::operator&= + (const Foo &rhs) + operator&= + + const Foo & + rhs + + + + + and equal operator + + + + + + + Foo & + Foo& Foo::operator&= + (const Foo &rhs) + operator&= + + const Foo & + rhs + + + + + and equal operator + + + + + + + int * + int* Foo::operator->* + (int *p) + operator->* + + int * + p + + + + + Member pointer operator + + + + + + + + Foo + + Foo Foo::fun + () const + fun + + Fun with itself. + + + + + + + + + + + + Foo + + static Foo Foo::fun + (Foo a, Foo b) + fun + + + Foo + + a + + + + Foo + + b + + + Fun of two. + + + + + + + fun() const + + + + + fun() const + + + + + title + + + + + + + + + + + + Foo class. + + + + + Foo::Foo() constructor for details. + + + Foo constant. + + + less than operator. + + + const less than operator. + + + call operator. + + + const call operator. + + + and equal operator. + + + member pointer operator. + + + + + + + Foo + Foo + + + Foo + fun + + + Foo + fun + + + Foo + operator&= + + + Foo + operator&= + + + Foo + operator() + + + Foo + operator() + + + Foo + operator->* + + + Foo + operator<< + + + Foo + operator<< + + + + diff --git a/tests/upstream-test-suite/074_ref.cpp b/tests/upstream-test-suite/074_ref.cpp new file mode 100644 index 0000000..141e2b4 --- /dev/null +++ b/tests/upstream-test-suite/074_ref.cpp @@ -0,0 +1,49 @@ +// objective: test \ref command in combination with const +// check: struct_foo.xml +/** @brief Foo class. + * + * @see @ref Foo::Foo() constructor for details. + * @see @ref Foo constant. + * @see @ref operator<<(int) "less than operator". + * @see @ref operator<<(int) const "const less than operator". + * @see @ref operator()(int) "call operator". + * @see @ref operator()(int) const "const call operator". + * @see @ref operator&=(const Foo&) "and equal operator". + * @see @ref operator->*(int *) "member pointer operator". + */ +struct Foo { + /** Constructor */ + Foo(); + /** + * @brief Fun of two + * + * - fun() const + * - @ref fun() const + * - @ref fun() const "title" + */ + static Foo fun(Foo a, Foo b); + + /** overloaded less than operator */ + Foo& operator<< (int i); + + /** overloaded const less than operator */ + const Foo& operator<< (int i) const; + + /** overloaded call operator */ + int operator()(int i); + + /** overloaded call operator */ + int operator()(int i) const; + + /** and equal operator */ + Foo& operator&=(const Foo& rhs); + + /** and equal operator */ + Foo& operator&=(const Foo& rhs); + + /** Member pointer operator */ + int* operator->*(int *p); + + /** @brief Fun with itself */ + Foo fun() const; +}; diff --git a/tests/upstream-test-suite/075/struct_foo.xml b/tests/upstream-test-suite/075/struct_foo.xml new file mode 100644 index 0000000..eca791b --- /dev/null +++ b/tests/upstream-test-suite/075/struct_foo.xml @@ -0,0 +1,148 @@ + + + + Foo + + + void + void Foo::foo + (float value) + foo + + float + value + + + Float. + + + + + + + + + void + void Foo::foo + (unsigned value) + foo + + unsigned + value + + + Unsigned int. + + + + + + + + + void + void Foo::foo + (unsigned long) + foo + + unsigned long + + + Unnamed unsigned long. + + + + + + + + + void + void Foo::foo + (signed long) + foo + + signed long + + + Unnamed signed long. + + + + + + + + + void + void Foo::foo + (const struct Foo) + foo + + const struct Foo + + + Unnamed struct foo. + + + + + + + + + void + void Foo::foo + (const char *const, const double param2) + foo + + const char * const + + + const double + param2 + + + Unnamed const pointer. + + + + + + + + + + Foo. + + + + + + + Foo + foo + + + Foo + foo + + + Foo + foo + + + Foo + foo + + + Foo + foo + + + Foo + foo + + + + diff --git a/tests/upstream-test-suite/075_argmatch.cpp b/tests/upstream-test-suite/075_argmatch.cpp new file mode 100644 index 0000000..439cdca --- /dev/null +++ b/tests/upstream-test-suite/075_argmatch.cpp @@ -0,0 +1,30 @@ +// objective: test argument matching in particular for unnamed types +// check: struct_foo.xml +/** @brief Foo */ +struct Foo { + void foo(float value); + void foo(unsigned value); + void foo(unsigned long); + void foo(signed long); + void foo(const struct Foo); + void foo(const char * const, const double param2); +}; + +/** @brief Float */ +void Foo::foo(float) {} + +/** @brief Unsigned int */ +void Foo::foo(unsigned value) {} + +/** @brief Unnamed unsigned long */ +void Foo::foo(unsigned long) {} + +/** @brief Unnamed signed long */ +void Foo::foo(signed long) {} + +/** @brief Unnamed struct foo */ +void Foo::foo(const struct Foo) {} + +/** @brief Unnamed const pointer */ +void Foo::foo(const char * const, const double param2); + diff --git a/tests/upstream-test-suite/076/indexpage.xml b/tests/upstream-test-suite/076/indexpage.xml new file mode 100644 index 0000000..5665d9b --- /dev/null +++ b/tests/upstream-test-suite/076/indexpage.xml @@ -0,0 +1,1500 @@ + + + + index + Emoji test + + + + from "+1" + from "-1" + from "100" + from "1234" + from "1st_place_medal" + from "2nd_place_medal" + from "3rd_place_medal" + from "8ball" + from "a" + from "ab" + from "abc" + from "abcd" + from "accept" + from "aerial_tramway" + from "afghanistan" + from "airplane" + from "aland_islands" + from "alarm_clock" + from "albania" + from "alembic" + from "algeria" + from "alien" + from "ambulance" + from "american_samoa" + from "amphora" + from "anchor" + from "andorra" + from "angel" + from "anger" + from "angola" + from "angry" + from "anguilla" + from "anguished" + from "ant" + from "antarctica" + from "antigua_barbuda" + from "apple" + from "aquarius" + from "argentina" + from "aries" + from "armenia" + from "arrow_backward" + from "arrow_double_down" + from "arrow_double_up" + from "arrow_down" + from "arrow_down_small" + from "arrow_forward" + from "arrow_heading_down" + from "arrow_heading_up" + from "arrow_left" + from "arrow_lower_left" + from "arrow_lower_right" + from "arrow_right" + from "arrow_right_hook" + from "arrow_up" + from "arrow_up_down" + from "arrow_up_small" + from "arrow_upper_left" + from "arrow_upper_right" + from "arrows_clockwise" + from "arrows_counterclockwise" + from "art" + from "articulated_lorry" + from "artificial_satellite" + from "aruba" + from "asterisk" + from "astonished" + from "athletic_shoe" + from "atm" + from "atom_symbol" + from "australia" + from "austria" + from "avocado" + from "azerbaijan" + from "b" + from "baby" + from "baby_bottle" + from "baby_chick" + from "baby_symbol" + from "back" + from "bacon" + from "badminton" + from "baggage_claim" + from "baguette_bread" + from "bahamas" + from "bahrain" + from "balance_scale" + from "balloon" + from "ballot_box" + from "ballot_box_with_check" + from "bamboo" + from "banana" + from "bangbang" + from "bangladesh" + from "bank" + from "bar_chart" + from "barbados" + from "barber" + from "baseball" + from "basketball" + from "basketball_man" + from "basketball_woman" + from "bat" + from "bath" + from "bathtub" + from "battery" + from "beach_umbrella" + from "bear" + from "bed" + from "bee" + from "beer" + from "beers" + from "beetle" + from "beginner" + from "belarus" + from "belgium" + from "belize" + from "bell" + from "bellhop_bell" + from "benin" + from "bento" + from "bermuda" + from "bhutan" + from "bicyclist" + from "bike" + from "biking_man" + from "biking_woman" + from "bikini" + from "biohazard" + from "bird" + from "birthday" + from "black_circle" + from "black_flag" + from "black_heart" + from "black_joker" + from "black_large_square" + from "black_medium_small_square" + from "black_medium_square" + from "black_nib" + from "black_small_square" + from "black_square_button" + from "blonde_man" + from "blonde_woman" + from "blossom" + from "blowfish" + from "blue_book" + from "blue_car" + from "blue_heart" + from "blush" + from "boar" + from "boat" + from "bolivia" + from "bomb" + from "book" + from "bookmark" + from "bookmark_tabs" + from "books" + from "boom" + from "boot" + from "bosnia_herzegovina" + from "botswana" + from "bouquet" + from "bow" + from "bow_and_arrow" + from "bowing_man" + from "bowing_woman" + from "bowling" + from "boxing_glove" + from "boy" + from "brazil" + from "bread" + from "bride_with_veil" + from "bridge_at_night" + from "briefcase" + from "british_indian_ocean_territory" + from "british_virgin_islands" + from "broken_heart" + from "brunei" + from "bug" + from "building_construction" + from "bulb" + from "bulgaria" + from "bullettrain_front" + from "bullettrain_side" + from "burkina_faso" + from "burrito" + from "burundi" + from "bus" + from "business_suit_levitating" + from "busstop" + from "bust_in_silhouette" + from "busts_in_silhouette" + from "butterfly" + from "cactus" + from "cake" + from "calendar" + from "call_me_hand" + from "calling" + from "cambodia" + from "camel" + from "camera" + from "camera_flash" + from "cameroon" + from "camping" + from "canada" + from "canary_islands" + from "cancer" + from "candle" + from "candy" + from "canoe" + from "cape_verde" + from "capital_abcd" + from "capricorn" + from "car" + from "card_file_box" + from "card_index" + from "card_index_dividers" + from "caribbean_netherlands" + from "carousel_horse" + from "carrot" + from "cat" + from "cat2" + from "cayman_islands" + from "cd" + from "central_african_republic" + from "chad" + from "chains" + from "champagne" + from "chart" + from "chart_with_downwards_trend" + from "chart_with_upwards_trend" + from "checkered_flag" + from "cheese" + from "cherries" + from "cherry_blossom" + from "chestnut" + from "chicken" + from "children_crossing" + from "chile" + from "chipmunk" + from "chocolate_bar" + from "christmas_island" + from "christmas_tree" + from "church" + from "cinema" + from "circus_tent" + from "city_sunrise" + from "city_sunset" + from "cityscape" + from "cl" + from "clamp" + from "clap" + from "clapper" + from "classical_building" + from "clinking_glasses" + from "clipboard" + from "clock1" + from "clock10" + from "clock1030" + from "clock11" + from "clock1130" + from "clock12" + from "clock1230" + from "clock130" + from "clock2" + from "clock230" + from "clock3" + from "clock330" + from "clock4" + from "clock430" + from "clock5" + from "clock530" + from "clock6" + from "clock630" + from "clock7" + from "clock730" + from "clock8" + from "clock830" + from "clock9" + from "clock930" + from "closed_book" + from "closed_lock_with_key" + from "closed_umbrella" + from "cloud" + from "cloud_with_lightning" + from "cloud_with_lightning_and_rain" + from "cloud_with_rain" + from "cloud_with_snow" + from "clown_face" + from "clubs" + from "cn" + from "cocktail" + from "cocos_islands" + from "coffee" + from "coffin" + from "cold_sweat" + from "collision" + from "colombia" + from "comet" + from "comoros" + from "computer" + from "computer_mouse" + from "confetti_ball" + from "confounded" + from "confused" + from "congo_brazzaville" + from "congo_kinshasa" + from "congratulations" + from "construction" + from "construction_worker" + from "construction_worker_man" + from "construction_worker_woman" + from "control_knobs" + from "convenience_store" + from "cook_islands" + from "cookie" + from "cool" + from "cop" + from "copyright" + from "corn" + from "costa_rica" + from "cote_divoire" + from "couch_and_lamp" + from "couple" + from "couple_with_heart" + from "couple_with_heart_man_man" + from "couple_with_heart_woman_man" + from "couple_with_heart_woman_woman" + from "couplekiss_man_man" + from "couplekiss_man_woman" + from "couplekiss_woman_woman" + from "cow" + from "cow2" + from "cowboy_hat_face" + from "crab" + from "crayon" + from "credit_card" + from "crescent_moon" + from "cricket" + from "croatia" + from "crocodile" + from "croissant" + from "crossed_fingers" + from "crossed_flags" + from "crossed_swords" + from "crown" + from "cry" + from "crying_cat_face" + from "crystal_ball" + from "cuba" + from "cucumber" + from "cupid" + from "curacao" + from "curly_loop" + from "currency_exchange" + from "curry" + from "custard" + from "customs" + from "cyclone" + from "cyprus" + from "czech_republic" + from "dagger" + from "dancer" + from "dancers" + from "dancing_men" + from "dancing_women" + from "dango" + from "dark_sunglasses" + from "dart" + from "dash" + from "date" + from "de" + from "deciduous_tree" + from "deer" + from "denmark" + from "department_store" + from "derelict_house" + from "desert" + from "desert_island" + from "desktop_computer" + from "detective" + from "diamond_shape_with_a_dot_inside" + from "diamonds" + from "disappointed" + from "disappointed_relieved" + from "dizzy" + from "dizzy_face" + from "djibouti" + from "do_not_litter" + from "dog" + from "dog2" + from "dollar" + from "dolls" + from "dolphin" + from "dominica" + from "dominican_republic" + from "door" + from "doughnut" + from "dove" + from "dragon" + from "dragon_face" + from "dress" + from "dromedary_camel" + from "drooling_face" + from "droplet" + from "drum" + from "duck" + from "dvd" + from "e-mail" + from "eagle" + from "ear" + from "ear_of_rice" + from "earth_africa" + from "earth_americas" + from "earth_asia" + from "ecuador" + from "egg" + from "eggplant" + from "egypt" + from "eight" + from "eight_pointed_black_star" + from "eight_spoked_asterisk" + from "el_salvador" + from "electric_plug" + from "elephant" + from "email" + from "end" + from "envelope" + from "envelope_with_arrow" + from "equatorial_guinea" + from "eritrea" + from "es" + from "estonia" + from "ethiopia" + from "eu" + from "euro" + from "european_castle" + from "european_post_office" + from "european_union" + from "evergreen_tree" + from "exclamation" + from "expressionless" + from "eye" + from "eye_speech_bubble" + from "eyeglasses" + from "eyes" + from "face_with_head_bandage" + from "face_with_thermometer" + from "facepunch" + from "factory" + from "falkland_islands" + from "fallen_leaf" + from "family" + from "family_man_boy" + from "family_man_boy_boy" + from "family_man_girl" + from "family_man_girl_boy" + from "family_man_girl_girl" + from "family_man_man_boy" + from "family_man_man_boy_boy" + from "family_man_man_girl" + from "family_man_man_girl_boy" + from "family_man_man_girl_girl" + from "family_man_woman_boy" + from "family_man_woman_boy_boy" + from "family_man_woman_girl" + from "family_man_woman_girl_boy" + from "family_man_woman_girl_girl" + from "family_woman_boy" + from "family_woman_boy_boy" + from "family_woman_girl" + from "family_woman_girl_boy" + from "family_woman_girl_girl" + from "family_woman_woman_boy" + from "family_woman_woman_boy_boy" + from "family_woman_woman_girl" + from "family_woman_woman_girl_boy" + from "family_woman_woman_girl_girl" + from "faroe_islands" + from "fast_forward" + from "fax" + from "fearful" + from "feet" + from "female_detective" + from "ferris_wheel" + from "ferry" + from "field_hockey" + from "fiji" + from "file_cabinet" + from "file_folder" + from "film_projector" + from "film_strip" + from "finland" + from "fire" + from "fire_engine" + from "fireworks" + from "first_quarter_moon" + from "first_quarter_moon_with_face" + from "fish" + from "fish_cake" + from "fishing_pole_and_fish" + from "fist" + from "fist_left" + from "fist_oncoming" + from "fist_raised" + from "fist_right" + from "five" + from "flags" + from "flashlight" + from "fleur_de_lis" + from "flight_arrival" + from "flight_departure" + from "flipper" + from "floppy_disk" + from "flower_playing_cards" + from "flushed" + from "fog" + from "foggy" + from "football" + from "footprints" + from "fork_and_knife" + from "fountain" + from "fountain_pen" + from "four" + from "four_leaf_clover" + from "fox_face" + from "fr" + from "framed_picture" + from "free" + from "french_guiana" + from "french_polynesia" + from "french_southern_territories" + from "fried_egg" + from "fried_shrimp" + from "fries" + from "frog" + from "frowning" + from "frowning_face" + from "frowning_man" + from "frowning_woman" + from "fu" + from "fuelpump" + from "full_moon" + from "full_moon_with_face" + from "funeral_urn" + from "gabon" + from "gambia" + from "game_die" + from "gb" + from "gear" + from "gem" + from "gemini" + from "georgia" + from "ghana" + from "ghost" + from "gibraltar" + from "gift" + from "gift_heart" + from "girl" + from "globe_with_meridians" + from "goal_net" + from "goat" + from "golf" + from "golfing_man" + from "golfing_woman" + from "gorilla" + from "grapes" + from "greece" + from "green_apple" + from "green_book" + from "green_heart" + from "green_salad" + from "greenland" + from "grenada" + from "grey_exclamation" + from "grey_question" + from "grimacing" + from "grin" + from "grinning" + from "guadeloupe" + from "guam" + from "guardsman" + from "guardswoman" + from "guatemala" + from "guernsey" + from "guinea" + from "guinea_bissau" + from "guitar" + from "gun" + from "guyana" + from "haircut" + from "haircut_man" + from "haircut_woman" + from "haiti" + from "hamburger" + from "hammer" + from "hammer_and_pick" + from "hammer_and_wrench" + from "hamster" + from "hand" + from "handbag" + from "handshake" + from "hankey" + from "hash" + from "hatched_chick" + from "hatching_chick" + from "headphones" + from "hear_no_evil" + from "heart" + from "heart_decoration" + from "heart_eyes" + from "heart_eyes_cat" + from "heartbeat" + from "heartpulse" + from "hearts" + from "heavy_check_mark" + from "heavy_division_sign" + from "heavy_dollar_sign" + from "heavy_exclamation_mark" + from "heavy_heart_exclamation" + from "heavy_minus_sign" + from "heavy_multiplication_x" + from "heavy_plus_sign" + from "helicopter" + from "herb" + from "hibiscus" + from "high_brightness" + from "high_heel" + from "hocho" + from "hole" + from "honduras" + from "honey_pot" + from "honeybee" + from "hong_kong" + from "horse" + from "horse_racing" + from "hospital" + from "hot_pepper" + from "hotdog" + from "hotel" + from "hotsprings" + from "hourglass" + from "hourglass_flowing_sand" + from "house" + from "house_with_garden" + from "houses" + from "hugs" + from "hungary" + from "hushed" + from "ice_cream" + from "ice_hockey" + from "ice_skate" + from "icecream" + from "iceland" + from "id" + from "ideograph_advantage" + from "imp" + from "inbox_tray" + from "incoming_envelope" + from "india" + from "indonesia" + from "information_desk_person" + from "information_source" + from "innocent" + from "interrobang" + from "iphone" + from "iran" + from "iraq" + from "ireland" + from "isle_of_man" + from "israel" + from "it" + from "izakaya_lantern" + from "jack_o_lantern" + from "jamaica" + from "japan" + from "japanese_castle" + from "japanese_goblin" + from "japanese_ogre" + from "jeans" + from "jersey" + from "jordan" + from "joy" + from "joy_cat" + from "joystick" + from "jp" + from "kaaba" + from "kazakhstan" + from "kenya" + from "key" + from "keyboard" + from "keycap_ten" + from "kick_scooter" + from "kimono" + from "kiribati" + from "kiss" + from "kissing" + from "kissing_cat" + from "kissing_closed_eyes" + from "kissing_heart" + from "kissing_smiling_eyes" + from "kiwi_fruit" + from "knife" + from "koala" + from "koko" + from "kosovo" + from "kr" + from "kuwait" + from "kyrgyzstan" + from "label" + from "lantern" + from "laos" + from "large_blue_circle" + from "large_blue_diamond" + from "large_orange_diamond" + from "last_quarter_moon" + from "last_quarter_moon_with_face" + from "latin_cross" + from "latvia" + from "laughing" + from "leaves" + from "lebanon" + from "ledger" + from "left_luggage" + from "left_right_arrow" + from "leftwards_arrow_with_hook" + from "lemon" + from "leo" + from "leopard" + from "lesotho" + from "level_slider" + from "liberia" + from "libra" + from "libya" + from "liechtenstein" + from "light_rail" + from "link" + from "lion" + from "lips" + from "lipstick" + from "lithuania" + from "lizard" + from "lock" + from "lock_with_ink_pen" + from "lollipop" + from "loop" + from "loud_sound" + from "loudspeaker" + from "love_hotel" + from "love_letter" + from "low_brightness" + from "luxembourg" + from "lying_face" + from "m" + from "macau" + from "macedonia" + from "madagascar" + from "mag" + from "mag_right" + from "mahjong" + from "mailbox" + from "mailbox_closed" + from "mailbox_with_mail" + from "mailbox_with_no_mail" + from "malawi" + from "malaysia" + from "maldives" + from "male_detective" + from "mali" + from "malta" + from "man" + from "man_artist" + from "man_astronaut" + from "man_cartwheeling" + from "man_cook" + from "man_dancing" + from "man_facepalming" + from "man_factory_worker" + from "man_farmer" + from "man_firefighter" + from "man_health_worker" + from "man_in_tuxedo" + from "man_judge" + from "man_juggling" + from "man_mechanic" + from "man_office_worker" + from "man_pilot" + from "man_playing_handball" + from "man_playing_water_polo" + from "man_scientist" + from "man_shrugging" + from "man_singer" + from "man_student" + from "man_teacher" + from "man_technologist" + from "man_with_gua_pi_mao" + from "man_with_turban" + from "mandarin" + from "mans_shoe" + from "mantelpiece_clock" + from "maple_leaf" + from "marshall_islands" + from "martial_arts_uniform" + from "martinique" + from "mask" + from "massage" + from "massage_man" + from "massage_woman" + from "mauritania" + from "mauritius" + from "mayotte" + from "meat_on_bone" + from "medal_military" + from "medal_sports" + from "mega" + from "melon" + from "memo" + from "men_wrestling" + from "menorah" + from "mens" + from "metal" + from "metro" + from "mexico" + from "micronesia" + from "microphone" + from "microscope" + from "middle_finger" + from "milk_glass" + from "milky_way" + from "minibus" + from "minidisc" + from "mobile_phone_off" + from "moldova" + from "monaco" + from "money_mouth_face" + from "money_with_wings" + from "moneybag" + from "mongolia" + from "monkey" + from "monkey_face" + from "monorail" + from "montenegro" + from "montserrat" + from "moon" + from "morocco" + from "mortar_board" + from "mosque" + from "motor_boat" + from "motor_scooter" + from "motorcycle" + from "motorway" + from "mount_fuji" + from "mountain" + from "mountain_bicyclist" + from "mountain_biking_man" + from "mountain_biking_woman" + from "mountain_cableway" + from "mountain_railway" + from "mountain_snow" + from "mouse" + from "mouse2" + from "movie_camera" + from "moyai" + from "mozambique" + from "mrs_claus" + from "muscle" + from "mushroom" + from "musical_keyboard" + from "musical_note" + from "musical_score" + from "mute" + from "myanmar" + from "nail_care" + from "name_badge" + from "namibia" + from "national_park" + from "nauru" + from "nauseated_face" + from "necktie" + from "negative_squared_cross_mark" + from "nepal" + from "nerd_face" + from "netherlands" + from "neutral_face" + from "new" + from "new_caledonia" + from "new_moon" + from "new_moon_with_face" + from "new_zealand" + from "newspaper" + from "newspaper_roll" + from "next_track_button" + from "ng" + from "ng_man" + from "ng_woman" + from "nicaragua" + from "niger" + from "nigeria" + from "night_with_stars" + from "nine" + from "niue" + from "no_bell" + from "no_bicycles" + from "no_entry" + from "no_entry_sign" + from "no_good" + from "no_good_man" + from "no_good_woman" + from "no_mobile_phones" + from "no_mouth" + from "no_pedestrians" + from "no_smoking" + from "non-potable_water" + from "norfolk_island" + from "north_korea" + from "northern_mariana_islands" + from "norway" + from "nose" + from "notebook" + from "notebook_with_decorative_cover" + from "notes" + from "nut_and_bolt" + from "o" + from "o2" + from "ocean" + from "octopus" + from "oden" + from "office" + from "oil_drum" + from "ok" + from "ok_hand" + from "ok_man" + from "ok_woman" + from "old_key" + from "older_man" + from "older_woman" + from "om" + from "oman" + from "on" + from "oncoming_automobile" + from "oncoming_bus" + from "oncoming_police_car" + from "oncoming_taxi" + from "one" + from "open_book" + from "open_file_folder" + from "open_hands" + from "open_mouth" + from "open_umbrella" + from "ophiuchus" + from "orange" + from "orange_book" + from "orthodox_cross" + from "outbox_tray" + from "owl" + from "ox" + from "package" + from "page_facing_up" + from "page_with_curl" + from "pager" + from "paintbrush" + from "pakistan" + from "palau" + from "palestinian_territories" + from "palm_tree" + from "panama" + from "pancakes" + from "panda_face" + from "paperclip" + from "paperclips" + from "papua_new_guinea" + from "paraguay" + from "parasol_on_ground" + from "parking" + from "part_alternation_mark" + from "partly_sunny" + from "passenger_ship" + from "passport_control" + from "pause_button" + from "paw_prints" + from "peace_symbol" + from "peach" + from "peanuts" + from "pear" + from "pen" + from "pencil" + from "pencil2" + from "penguin" + from "pensive" + from "performing_arts" + from "persevere" + from "person_fencing" + from "person_frowning" + from "person_with_blond_hair" + from "person_with_pouting_face" + from "peru" + from "philippines" + from "phone" + from "pick" + from "pig" + from "pig2" + from "pig_nose" + from "pill" + from "pineapple" + from "ping_pong" + from "pisces" + from "pitcairn_islands" + from "pizza" + from "place_of_worship" + from "plate_with_cutlery" + from "play_or_pause_button" + from "point_down" + from "point_left" + from "point_right" + from "point_up" + from "point_up_2" + from "poland" + from "police_car" + from "policeman" + from "policewoman" + from "poodle" + from "poop" + from "popcorn" + from "portugal" + from "post_office" + from "postal_horn" + from "postbox" + from "potable_water" + from "potato" + from "pouch" + from "poultry_leg" + from "pound" + from "pout" + from "pouting_cat" + from "pouting_man" + from "pouting_woman" + from "pray" + from "prayer_beads" + from "pregnant_woman" + from "previous_track_button" + from "prince" + from "princess" + from "printer" + from "puerto_rico" + from "punch" + from "purple_heart" + from "purse" + from "pushpin" + from "put_litter_in_its_place" + from "qatar" + from "question" + from "rabbit" + from "rabbit2" + from "racehorse" + from "racing_car" + from "radio" + from "radio_button" + from "radioactive" + from "rage" + from "railway_car" + from "railway_track" + from "rainbow" + from "rainbow_flag" + from "raised_back_of_hand" + from "raised_hand" + from "raised_hand_with_fingers_splayed" + from "raised_hands" + from "raising_hand" + from "raising_hand_man" + from "raising_hand_woman" + from "ram" + from "ramen" + from "rat" + from "record_button" + from "recycle" + from "red_car" + from "red_circle" + from "registered" + from "relaxed" + from "relieved" + from "reminder_ribbon" + from "repeat" + from "repeat_one" + from "rescue_worker_helmet" + from "restroom" + from "reunion" + from "revolving_hearts" + from "rewind" + from "rhinoceros" + from "ribbon" + from "rice" + from "rice_ball" + from "rice_cracker" + from "rice_scene" + from "right_anger_bubble" + from "ring" + from "robot" + from "rocket" + from "rofl" + from "roll_eyes" + from "roller_coaster" + from "romania" + from "rooster" + from "rose" + from "rosette" + from "rotating_light" + from "round_pushpin" + from "rowboat" + from "rowing_man" + from "rowing_woman" + from "ru" + from "rugby_football" + from "runner" + from "running" + from "running_man" + from "running_shirt_with_sash" + from "running_woman" + from "rwanda" + from "sa" + from "sagittarius" + from "sailboat" + from "sake" + from "samoa" + from "san_marino" + from "sandal" + from "santa" + from "sao_tome_principe" + from "satellite" + from "satisfied" + from "saudi_arabia" + from "saxophone" + from "school" + from "school_satchel" + from "scissors" + from "scorpion" + from "scorpius" + from "scream" + from "scream_cat" + from "scroll" + from "seat" + from "secret" + from "see_no_evil" + from "seedling" + from "selfie" + from "senegal" + from "serbia" + from "seven" + from "seychelles" + from "shallow_pan_of_food" + from "shamrock" + from "shark" + from "shaved_ice" + from "sheep" + from "shell" + from "shield" + from "shinto_shrine" + from "ship" + from "shirt" + from "shit" + from "shoe" + from "shopping" + from "shopping_cart" + from "shower" + from "shrimp" + from "sierra_leone" + from "signal_strength" + from "singapore" + from "sint_maarten" + from "six" + from "six_pointed_star" + from "ski" + from "skier" + from "skull" + from "skull_and_crossbones" + from "sleeping" + from "sleeping_bed" + from "sleepy" + from "slightly_frowning_face" + from "slightly_smiling_face" + from "slot_machine" + from "slovakia" + from "slovenia" + from "small_airplane" + from "small_blue_diamond" + from "small_orange_diamond" + from "small_red_triangle" + from "small_red_triangle_down" + from "smile" + from "smile_cat" + from "smiley" + from "smiley_cat" + from "smiling_imp" + from "smirk" + from "smirk_cat" + from "smoking" + from "snail" + from "snake" + from "sneezing_face" + from "snowboarder" + from "snowflake" + from "snowman" + from "snowman_with_snow" + from "sob" + from "soccer" + from "solomon_islands" + from "somalia" + from "soon" + from "sos" + from "sound" + from "south_africa" + from "south_georgia_south_sandwich_islands" + from "south_sudan" + from "space_invader" + from "spades" + from "spaghetti" + from "sparkle" + from "sparkler" + from "sparkles" + from "sparkling_heart" + from "speak_no_evil" + from "speaker" + from "speaking_head" + from "speech_balloon" + from "speedboat" + from "spider" + from "spider_web" + from "spiral_calendar" + from "spiral_notepad" + from "spoon" + from "squid" + from "sri_lanka" + from "st_barthelemy" + from "st_helena" + from "st_kitts_nevis" + from "st_lucia" + from "st_pierre_miquelon" + from "st_vincent_grenadines" + from "stadium" + from "star" + from "star2" + from "star_and_crescent" + from "star_of_david" + from "stars" + from "station" + from "statue_of_liberty" + from "steam_locomotive" + from "stew" + from "stop_button" + from "stop_sign" + from "stopwatch" + from "straight_ruler" + from "strawberry" + from "stuck_out_tongue" + from "stuck_out_tongue_closed_eyes" + from "stuck_out_tongue_winking_eye" + from "studio_microphone" + from "stuffed_flatbread" + from "sudan" + from "sun_behind_large_cloud" + from "sun_behind_rain_cloud" + from "sun_behind_small_cloud" + from "sun_with_face" + from "sunflower" + from "sunglasses" + from "sunny" + from "sunrise" + from "sunrise_over_mountains" + from "surfer" + from "surfing_man" + from "surfing_woman" + from "suriname" + from "sushi" + from "suspension_railway" + from "swaziland" + from "sweat" + from "sweat_drops" + from "sweat_smile" + from "sweden" + from "sweet_potato" + from "swimmer" + from "swimming_man" + from "swimming_woman" + from "switzerland" + from "symbols" + from "synagogue" + from "syria" + from "syringe" + from "taco" + from "tada" + from "taiwan" + from "tajikistan" + from "tanabata_tree" + from "tangerine" + from "tanzania" + from "taurus" + from "taxi" + from "tea" + from "telephone" + from "telephone_receiver" + from "telescope" + from "tennis" + from "tent" + from "thailand" + from "thermometer" + from "thinking" + from "thought_balloon" + from "three" + from "thumbsdown" + from "thumbsup" + from "ticket" + from "tickets" + from "tiger" + from "tiger2" + from "timer_clock" + from "timor_leste" + from "tipping_hand_man" + from "tipping_hand_woman" + from "tired_face" + from "tm" + from "togo" + from "toilet" + from "tokelau" + from "tokyo_tower" + from "tomato" + from "tonga" + from "tongue" + from "top" + from "tophat" + from "tornado" + from "tr" + from "trackball" + from "tractor" + from "traffic_light" + from "train" + from "train2" + from "tram" + from "triangular_flag_on_post" + from "triangular_ruler" + from "trident" + from "trinidad_tobago" + from "triumph" + from "trolleybus" + from "trophy" + from "tropical_drink" + from "tropical_fish" + from "truck" + from "trumpet" + from "tshirt" + from "tulip" + from "tumbler_glass" + from "tunisia" + from "turkey" + from "turkmenistan" + from "turks_caicos_islands" + from "turtle" + from "tuvalu" + from "tv" + from "twisted_rightwards_arrows" + from "two" + from "two_hearts" + from "two_men_holding_hands" + from "two_women_holding_hands" + from "u5272" + from "u5408" + from "u55b6" + from "u6307" + from "u6708" + from "u6709" + from "u6e80" + from "u7121" + from "u7533" + from "u7981" + from "u7a7a" + from "uganda" + from "uk" + from "ukraine" + from "umbrella" + from "unamused" + from "underage" + from "unicorn" + from "united_arab_emirates" + from "unlock" + from "up" + from "upside_down_face" + from "uruguay" + from "us" + from "us_virgin_islands" + from "uzbekistan" + from "v" + from "vanuatu" + from "vatican_city" + from "venezuela" + from "vertical_traffic_light" + from "vhs" + from "vibration_mode" + from "video_camera" + from "video_game" + from "vietnam" + from "violin" + from "virgo" + from "volcano" + from "volleyball" + from "vs" + from "vulcan_salute" + from "walking" + from "walking_man" + from "walking_woman" + from "wallis_futuna" + from "waning_crescent_moon" + from "waning_gibbous_moon" + from "warning" + from "wastebasket" + from "watch" + from "water_buffalo" + from "watermelon" + from "wave" + from "wavy_dash" + from "waxing_crescent_moon" + from "waxing_gibbous_moon" + from "wc" + from "weary" + from "wedding" + from "weight_lifting_man" + from "weight_lifting_woman" + from "western_sahara" + from "whale" + from "whale2" + from "wheel_of_dharma" + from "wheelchair" + from "white_check_mark" + from "white_circle" + from "white_flag" + from "white_flower" + from "white_large_square" + from "white_medium_small_square" + from "white_medium_square" + from "white_small_square" + from "white_square_button" + from "wilted_flower" + from "wind_chime" + from "wind_face" + from "wine_glass" + from "wink" + from "wolf" + from "woman" + from "woman_artist" + from "woman_astronaut" + from "woman_cartwheeling" + from "woman_cook" + from "woman_facepalming" + from "woman_factory_worker" + from "woman_farmer" + from "woman_firefighter" + from "woman_health_worker" + from "woman_judge" + from "woman_juggling" + from "woman_mechanic" + from "woman_office_worker" + from "woman_pilot" + from "woman_playing_handball" + from "woman_playing_water_polo" + from "woman_scientist" + from "woman_shrugging" + from "woman_singer" + from "woman_student" + from "woman_teacher" + from "woman_technologist" + from "woman_with_turban" + from "womans_clothes" + from "womans_hat" + from "women_wrestling" + from "womens" + from "world_map" + from "worried" + from "wrench" + from "writing_hand" + from "x" + from "yellow_heart" + from "yemen" + from "yen" + from "yin_yang" + from "yum" + from "zambia" + from "zap" + from "zero" + from "zimbabwe" + from "zipper_mouth_face" + from "zzz" + + + + diff --git a/tests/upstream-test-suite/076_emojis.cpp b/tests/upstream-test-suite/076_emojis.cpp new file mode 100644 index 0000000..0526ebe --- /dev/null +++ b/tests/upstream-test-suite/076_emojis.cpp @@ -0,0 +1,1493 @@ +// objective: test all supported emoji characters +// check: indexpage.xml +/** \mainpage Emoji test + + @emoji +1 @emoji :+1: from "+1"
    + @emoji -1 @emoji :-1: from "-1"
    + @emoji 100 @emoji :100: from "100"
    + @emoji 1234 @emoji :1234: from "1234"
    + @emoji 1st_place_medal @emoji :1st_place_medal: from "1st_place_medal"
    + @emoji 2nd_place_medal @emoji :2nd_place_medal: from "2nd_place_medal"
    + @emoji 3rd_place_medal @emoji :3rd_place_medal: from "3rd_place_medal"
    + @emoji 8ball @emoji :8ball: from "8ball"
    + @emoji a @emoji :a: from "a"
    + @emoji ab @emoji :ab: from "ab"
    + @emoji abc @emoji :abc: from "abc"
    + @emoji abcd @emoji :abcd: from "abcd"
    + @emoji accept @emoji :accept: from "accept"
    + @emoji aerial_tramway @emoji :aerial_tramway: from "aerial_tramway"
    + @emoji afghanistan @emoji :afghanistan: from "afghanistan"
    + @emoji airplane @emoji :airplane: from "airplane"
    + @emoji aland_islands @emoji :aland_islands: from "aland_islands"
    + @emoji alarm_clock @emoji :alarm_clock: from "alarm_clock"
    + @emoji albania @emoji :albania: from "albania"
    + @emoji alembic @emoji :alembic: from "alembic"
    + @emoji algeria @emoji :algeria: from "algeria"
    + @emoji alien @emoji :alien: from "alien"
    + @emoji ambulance @emoji :ambulance: from "ambulance"
    + @emoji american_samoa @emoji :american_samoa: from "american_samoa"
    + @emoji amphora @emoji :amphora: from "amphora"
    + @emoji anchor @emoji :anchor: from "anchor"
    + @emoji andorra @emoji :andorra: from "andorra"
    + @emoji angel @emoji :angel: from "angel"
    + @emoji anger @emoji :anger: from "anger"
    + @emoji angola @emoji :angola: from "angola"
    + @emoji angry @emoji :angry: from "angry"
    + @emoji anguilla @emoji :anguilla: from "anguilla"
    + @emoji anguished @emoji :anguished: from "anguished"
    + @emoji ant @emoji :ant: from "ant"
    + @emoji antarctica @emoji :antarctica: from "antarctica"
    + @emoji antigua_barbuda @emoji :antigua_barbuda: from "antigua_barbuda"
    + @emoji apple @emoji :apple: from "apple"
    + @emoji aquarius @emoji :aquarius: from "aquarius"
    + @emoji argentina @emoji :argentina: from "argentina"
    + @emoji aries @emoji :aries: from "aries"
    + @emoji armenia @emoji :armenia: from "armenia"
    + @emoji arrow_backward @emoji :arrow_backward: from "arrow_backward"
    + @emoji arrow_double_down @emoji :arrow_double_down: from "arrow_double_down"
    + @emoji arrow_double_up @emoji :arrow_double_up: from "arrow_double_up"
    + @emoji arrow_down @emoji :arrow_down: from "arrow_down"
    + @emoji arrow_down_small @emoji :arrow_down_small: from "arrow_down_small"
    + @emoji arrow_forward @emoji :arrow_forward: from "arrow_forward"
    + @emoji arrow_heading_down @emoji :arrow_heading_down: from "arrow_heading_down"
    + @emoji arrow_heading_up @emoji :arrow_heading_up: from "arrow_heading_up"
    + @emoji arrow_left @emoji :arrow_left: from "arrow_left"
    + @emoji arrow_lower_left @emoji :arrow_lower_left: from "arrow_lower_left"
    + @emoji arrow_lower_right @emoji :arrow_lower_right: from "arrow_lower_right"
    + @emoji arrow_right @emoji :arrow_right: from "arrow_right"
    + @emoji arrow_right_hook @emoji :arrow_right_hook: from "arrow_right_hook"
    + @emoji arrow_up @emoji :arrow_up: from "arrow_up"
    + @emoji arrow_up_down @emoji :arrow_up_down: from "arrow_up_down"
    + @emoji arrow_up_small @emoji :arrow_up_small: from "arrow_up_small"
    + @emoji arrow_upper_left @emoji :arrow_upper_left: from "arrow_upper_left"
    + @emoji arrow_upper_right @emoji :arrow_upper_right: from "arrow_upper_right"
    + @emoji arrows_clockwise @emoji :arrows_clockwise: from "arrows_clockwise"
    + @emoji arrows_counterclockwise @emoji :arrows_counterclockwise: from "arrows_counterclockwise"
    + @emoji art @emoji :art: from "art"
    + @emoji articulated_lorry @emoji :articulated_lorry: from "articulated_lorry"
    + @emoji artificial_satellite @emoji :artificial_satellite: from "artificial_satellite"
    + @emoji aruba @emoji :aruba: from "aruba"
    + @emoji asterisk @emoji :asterisk: from "asterisk"
    + @emoji astonished @emoji :astonished: from "astonished"
    + @emoji athletic_shoe @emoji :athletic_shoe: from "athletic_shoe"
    + @emoji atm @emoji :atm: from "atm"
    + @emoji atom_symbol @emoji :atom_symbol: from "atom_symbol"
    + @emoji australia @emoji :australia: from "australia"
    + @emoji austria @emoji :austria: from "austria"
    + @emoji avocado @emoji :avocado: from "avocado"
    + @emoji azerbaijan @emoji :azerbaijan: from "azerbaijan"
    + @emoji b @emoji :b: from "b"
    + @emoji baby @emoji :baby: from "baby"
    + @emoji baby_bottle @emoji :baby_bottle: from "baby_bottle"
    + @emoji baby_chick @emoji :baby_chick: from "baby_chick"
    + @emoji baby_symbol @emoji :baby_symbol: from "baby_symbol"
    + @emoji back @emoji :back: from "back"
    + @emoji bacon @emoji :bacon: from "bacon"
    + @emoji badminton @emoji :badminton: from "badminton"
    + @emoji baggage_claim @emoji :baggage_claim: from "baggage_claim"
    + @emoji baguette_bread @emoji :baguette_bread: from "baguette_bread"
    + @emoji bahamas @emoji :bahamas: from "bahamas"
    + @emoji bahrain @emoji :bahrain: from "bahrain"
    + @emoji balance_scale @emoji :balance_scale: from "balance_scale"
    + @emoji balloon @emoji :balloon: from "balloon"
    + @emoji ballot_box @emoji :ballot_box: from "ballot_box"
    + @emoji ballot_box_with_check @emoji :ballot_box_with_check: from "ballot_box_with_check"
    + @emoji bamboo @emoji :bamboo: from "bamboo"
    + @emoji banana @emoji :banana: from "banana"
    + @emoji bangbang @emoji :bangbang: from "bangbang"
    + @emoji bangladesh @emoji :bangladesh: from "bangladesh"
    + @emoji bank @emoji :bank: from "bank"
    + @emoji bar_chart @emoji :bar_chart: from "bar_chart"
    + @emoji barbados @emoji :barbados: from "barbados"
    + @emoji barber @emoji :barber: from "barber"
    + @emoji baseball @emoji :baseball: from "baseball"
    + @emoji basketball @emoji :basketball: from "basketball"
    + @emoji basketball_man @emoji :basketball_man: from "basketball_man"
    + @emoji basketball_woman @emoji :basketball_woman: from "basketball_woman"
    + @emoji bat @emoji :bat: from "bat"
    + @emoji bath @emoji :bath: from "bath"
    + @emoji bathtub @emoji :bathtub: from "bathtub"
    + @emoji battery @emoji :battery: from "battery"
    + @emoji beach_umbrella @emoji :beach_umbrella: from "beach_umbrella"
    + @emoji bear @emoji :bear: from "bear"
    + @emoji bed @emoji :bed: from "bed"
    + @emoji bee @emoji :bee: from "bee"
    + @emoji beer @emoji :beer: from "beer"
    + @emoji beers @emoji :beers: from "beers"
    + @emoji beetle @emoji :beetle: from "beetle"
    + @emoji beginner @emoji :beginner: from "beginner"
    + @emoji belarus @emoji :belarus: from "belarus"
    + @emoji belgium @emoji :belgium: from "belgium"
    + @emoji belize @emoji :belize: from "belize"
    + @emoji bell @emoji :bell: from "bell"
    + @emoji bellhop_bell @emoji :bellhop_bell: from "bellhop_bell"
    + @emoji benin @emoji :benin: from "benin"
    + @emoji bento @emoji :bento: from "bento"
    + @emoji bermuda @emoji :bermuda: from "bermuda"
    + @emoji bhutan @emoji :bhutan: from "bhutan"
    + @emoji bicyclist @emoji :bicyclist: from "bicyclist"
    + @emoji bike @emoji :bike: from "bike"
    + @emoji biking_man @emoji :biking_man: from "biking_man"
    + @emoji biking_woman @emoji :biking_woman: from "biking_woman"
    + @emoji bikini @emoji :bikini: from "bikini"
    + @emoji biohazard @emoji :biohazard: from "biohazard"
    + @emoji bird @emoji :bird: from "bird"
    + @emoji birthday @emoji :birthday: from "birthday"
    + @emoji black_circle @emoji :black_circle: from "black_circle"
    + @emoji black_flag @emoji :black_flag: from "black_flag"
    + @emoji black_heart @emoji :black_heart: from "black_heart"
    + @emoji black_joker @emoji :black_joker: from "black_joker"
    + @emoji black_large_square @emoji :black_large_square: from "black_large_square"
    + @emoji black_medium_small_square @emoji :black_medium_small_square: from "black_medium_small_square"
    + @emoji black_medium_square @emoji :black_medium_square: from "black_medium_square"
    + @emoji black_nib @emoji :black_nib: from "black_nib"
    + @emoji black_small_square @emoji :black_small_square: from "black_small_square"
    + @emoji black_square_button @emoji :black_square_button: from "black_square_button"
    + @emoji blonde_man @emoji :blonde_man: from "blonde_man"
    + @emoji blonde_woman @emoji :blonde_woman: from "blonde_woman"
    + @emoji blossom @emoji :blossom: from "blossom"
    + @emoji blowfish @emoji :blowfish: from "blowfish"
    + @emoji blue_book @emoji :blue_book: from "blue_book"
    + @emoji blue_car @emoji :blue_car: from "blue_car"
    + @emoji blue_heart @emoji :blue_heart: from "blue_heart"
    + @emoji blush @emoji :blush: from "blush"
    + @emoji boar @emoji :boar: from "boar"
    + @emoji boat @emoji :boat: from "boat"
    + @emoji bolivia @emoji :bolivia: from "bolivia"
    + @emoji bomb @emoji :bomb: from "bomb"
    + @emoji book @emoji :book: from "book"
    + @emoji bookmark @emoji :bookmark: from "bookmark"
    + @emoji bookmark_tabs @emoji :bookmark_tabs: from "bookmark_tabs"
    + @emoji books @emoji :books: from "books"
    + @emoji boom @emoji :boom: from "boom"
    + @emoji boot @emoji :boot: from "boot"
    + @emoji bosnia_herzegovina @emoji :bosnia_herzegovina: from "bosnia_herzegovina"
    + @emoji botswana @emoji :botswana: from "botswana"
    + @emoji bouquet @emoji :bouquet: from "bouquet"
    + @emoji bow @emoji :bow: from "bow"
    + @emoji bow_and_arrow @emoji :bow_and_arrow: from "bow_and_arrow"
    + @emoji bowing_man @emoji :bowing_man: from "bowing_man"
    + @emoji bowing_woman @emoji :bowing_woman: from "bowing_woman"
    + @emoji bowling @emoji :bowling: from "bowling"
    + @emoji boxing_glove @emoji :boxing_glove: from "boxing_glove"
    + @emoji boy @emoji :boy: from "boy"
    + @emoji brazil @emoji :brazil: from "brazil"
    + @emoji bread @emoji :bread: from "bread"
    + @emoji bride_with_veil @emoji :bride_with_veil: from "bride_with_veil"
    + @emoji bridge_at_night @emoji :bridge_at_night: from "bridge_at_night"
    + @emoji briefcase @emoji :briefcase: from "briefcase"
    + @emoji british_indian_ocean_territory @emoji :british_indian_ocean_territory: from "british_indian_ocean_territory"
    + @emoji british_virgin_islands @emoji :british_virgin_islands: from "british_virgin_islands"
    + @emoji broken_heart @emoji :broken_heart: from "broken_heart"
    + @emoji brunei @emoji :brunei: from "brunei"
    + @emoji bug @emoji :bug: from "bug"
    + @emoji building_construction @emoji :building_construction: from "building_construction"
    + @emoji bulb @emoji :bulb: from "bulb"
    + @emoji bulgaria @emoji :bulgaria: from "bulgaria"
    + @emoji bullettrain_front @emoji :bullettrain_front: from "bullettrain_front"
    + @emoji bullettrain_side @emoji :bullettrain_side: from "bullettrain_side"
    + @emoji burkina_faso @emoji :burkina_faso: from "burkina_faso"
    + @emoji burrito @emoji :burrito: from "burrito"
    + @emoji burundi @emoji :burundi: from "burundi"
    + @emoji bus @emoji :bus: from "bus"
    + @emoji business_suit_levitating @emoji :business_suit_levitating: from "business_suit_levitating"
    + @emoji busstop @emoji :busstop: from "busstop"
    + @emoji bust_in_silhouette @emoji :bust_in_silhouette: from "bust_in_silhouette"
    + @emoji busts_in_silhouette @emoji :busts_in_silhouette: from "busts_in_silhouette"
    + @emoji butterfly @emoji :butterfly: from "butterfly"
    + @emoji cactus @emoji :cactus: from "cactus"
    + @emoji cake @emoji :cake: from "cake"
    + @emoji calendar @emoji :calendar: from "calendar"
    + @emoji call_me_hand @emoji :call_me_hand: from "call_me_hand"
    + @emoji calling @emoji :calling: from "calling"
    + @emoji cambodia @emoji :cambodia: from "cambodia"
    + @emoji camel @emoji :camel: from "camel"
    + @emoji camera @emoji :camera: from "camera"
    + @emoji camera_flash @emoji :camera_flash: from "camera_flash"
    + @emoji cameroon @emoji :cameroon: from "cameroon"
    + @emoji camping @emoji :camping: from "camping"
    + @emoji canada @emoji :canada: from "canada"
    + @emoji canary_islands @emoji :canary_islands: from "canary_islands"
    + @emoji cancer @emoji :cancer: from "cancer"
    + @emoji candle @emoji :candle: from "candle"
    + @emoji candy @emoji :candy: from "candy"
    + @emoji canoe @emoji :canoe: from "canoe"
    + @emoji cape_verde @emoji :cape_verde: from "cape_verde"
    + @emoji capital_abcd @emoji :capital_abcd: from "capital_abcd"
    + @emoji capricorn @emoji :capricorn: from "capricorn"
    + @emoji car @emoji :car: from "car"
    + @emoji card_file_box @emoji :card_file_box: from "card_file_box"
    + @emoji card_index @emoji :card_index: from "card_index"
    + @emoji card_index_dividers @emoji :card_index_dividers: from "card_index_dividers"
    + @emoji caribbean_netherlands @emoji :caribbean_netherlands: from "caribbean_netherlands"
    + @emoji carousel_horse @emoji :carousel_horse: from "carousel_horse"
    + @emoji carrot @emoji :carrot: from "carrot"
    + @emoji cat @emoji :cat: from "cat"
    + @emoji cat2 @emoji :cat2: from "cat2"
    + @emoji cayman_islands @emoji :cayman_islands: from "cayman_islands"
    + @emoji cd @emoji :cd: from "cd"
    + @emoji central_african_republic @emoji :central_african_republic: from "central_african_republic"
    + @emoji chad @emoji :chad: from "chad"
    + @emoji chains @emoji :chains: from "chains"
    + @emoji champagne @emoji :champagne: from "champagne"
    + @emoji chart @emoji :chart: from "chart"
    + @emoji chart_with_downwards_trend @emoji :chart_with_downwards_trend: from "chart_with_downwards_trend"
    + @emoji chart_with_upwards_trend @emoji :chart_with_upwards_trend: from "chart_with_upwards_trend"
    + @emoji checkered_flag @emoji :checkered_flag: from "checkered_flag"
    + @emoji cheese @emoji :cheese: from "cheese"
    + @emoji cherries @emoji :cherries: from "cherries"
    + @emoji cherry_blossom @emoji :cherry_blossom: from "cherry_blossom"
    + @emoji chestnut @emoji :chestnut: from "chestnut"
    + @emoji chicken @emoji :chicken: from "chicken"
    + @emoji children_crossing @emoji :children_crossing: from "children_crossing"
    + @emoji chile @emoji :chile: from "chile"
    + @emoji chipmunk @emoji :chipmunk: from "chipmunk"
    + @emoji chocolate_bar @emoji :chocolate_bar: from "chocolate_bar"
    + @emoji christmas_island @emoji :christmas_island: from "christmas_island"
    + @emoji christmas_tree @emoji :christmas_tree: from "christmas_tree"
    + @emoji church @emoji :church: from "church"
    + @emoji cinema @emoji :cinema: from "cinema"
    + @emoji circus_tent @emoji :circus_tent: from "circus_tent"
    + @emoji city_sunrise @emoji :city_sunrise: from "city_sunrise"
    + @emoji city_sunset @emoji :city_sunset: from "city_sunset"
    + @emoji cityscape @emoji :cityscape: from "cityscape"
    + @emoji cl @emoji :cl: from "cl"
    + @emoji clamp @emoji :clamp: from "clamp"
    + @emoji clap @emoji :clap: from "clap"
    + @emoji clapper @emoji :clapper: from "clapper"
    + @emoji classical_building @emoji :classical_building: from "classical_building"
    + @emoji clinking_glasses @emoji :clinking_glasses: from "clinking_glasses"
    + @emoji clipboard @emoji :clipboard: from "clipboard"
    + @emoji clock1 @emoji :clock1: from "clock1"
    + @emoji clock10 @emoji :clock10: from "clock10"
    + @emoji clock1030 @emoji :clock1030: from "clock1030"
    + @emoji clock11 @emoji :clock11: from "clock11"
    + @emoji clock1130 @emoji :clock1130: from "clock1130"
    + @emoji clock12 @emoji :clock12: from "clock12"
    + @emoji clock1230 @emoji :clock1230: from "clock1230"
    + @emoji clock130 @emoji :clock130: from "clock130"
    + @emoji clock2 @emoji :clock2: from "clock2"
    + @emoji clock230 @emoji :clock230: from "clock230"
    + @emoji clock3 @emoji :clock3: from "clock3"
    + @emoji clock330 @emoji :clock330: from "clock330"
    + @emoji clock4 @emoji :clock4: from "clock4"
    + @emoji clock430 @emoji :clock430: from "clock430"
    + @emoji clock5 @emoji :clock5: from "clock5"
    + @emoji clock530 @emoji :clock530: from "clock530"
    + @emoji clock6 @emoji :clock6: from "clock6"
    + @emoji clock630 @emoji :clock630: from "clock630"
    + @emoji clock7 @emoji :clock7: from "clock7"
    + @emoji clock730 @emoji :clock730: from "clock730"
    + @emoji clock8 @emoji :clock8: from "clock8"
    + @emoji clock830 @emoji :clock830: from "clock830"
    + @emoji clock9 @emoji :clock9: from "clock9"
    + @emoji clock930 @emoji :clock930: from "clock930"
    + @emoji closed_book @emoji :closed_book: from "closed_book"
    + @emoji closed_lock_with_key @emoji :closed_lock_with_key: from "closed_lock_with_key"
    + @emoji closed_umbrella @emoji :closed_umbrella: from "closed_umbrella"
    + @emoji cloud @emoji :cloud: from "cloud"
    + @emoji cloud_with_lightning @emoji :cloud_with_lightning: from "cloud_with_lightning"
    + @emoji cloud_with_lightning_and_rain @emoji :cloud_with_lightning_and_rain: from "cloud_with_lightning_and_rain"
    + @emoji cloud_with_rain @emoji :cloud_with_rain: from "cloud_with_rain"
    + @emoji cloud_with_snow @emoji :cloud_with_snow: from "cloud_with_snow"
    + @emoji clown_face @emoji :clown_face: from "clown_face"
    + @emoji clubs @emoji :clubs: from "clubs"
    + @emoji cn @emoji :cn: from "cn"
    + @emoji cocktail @emoji :cocktail: from "cocktail"
    + @emoji cocos_islands @emoji :cocos_islands: from "cocos_islands"
    + @emoji coffee @emoji :coffee: from "coffee"
    + @emoji coffin @emoji :coffin: from "coffin"
    + @emoji cold_sweat @emoji :cold_sweat: from "cold_sweat"
    + @emoji collision @emoji :collision: from "collision"
    + @emoji colombia @emoji :colombia: from "colombia"
    + @emoji comet @emoji :comet: from "comet"
    + @emoji comoros @emoji :comoros: from "comoros"
    + @emoji computer @emoji :computer: from "computer"
    + @emoji computer_mouse @emoji :computer_mouse: from "computer_mouse"
    + @emoji confetti_ball @emoji :confetti_ball: from "confetti_ball"
    + @emoji confounded @emoji :confounded: from "confounded"
    + @emoji confused @emoji :confused: from "confused"
    + @emoji congo_brazzaville @emoji :congo_brazzaville: from "congo_brazzaville"
    + @emoji congo_kinshasa @emoji :congo_kinshasa: from "congo_kinshasa"
    + @emoji congratulations @emoji :congratulations: from "congratulations"
    + @emoji construction @emoji :construction: from "construction"
    + @emoji construction_worker @emoji :construction_worker: from "construction_worker"
    + @emoji construction_worker_man @emoji :construction_worker_man: from "construction_worker_man"
    + @emoji construction_worker_woman @emoji :construction_worker_woman: from "construction_worker_woman"
    + @emoji control_knobs @emoji :control_knobs: from "control_knobs"
    + @emoji convenience_store @emoji :convenience_store: from "convenience_store"
    + @emoji cook_islands @emoji :cook_islands: from "cook_islands"
    + @emoji cookie @emoji :cookie: from "cookie"
    + @emoji cool @emoji :cool: from "cool"
    + @emoji cop @emoji :cop: from "cop"
    + @emoji copyright @emoji :copyright: from "copyright"
    + @emoji corn @emoji :corn: from "corn"
    + @emoji costa_rica @emoji :costa_rica: from "costa_rica"
    + @emoji cote_divoire @emoji :cote_divoire: from "cote_divoire"
    + @emoji couch_and_lamp @emoji :couch_and_lamp: from "couch_and_lamp"
    + @emoji couple @emoji :couple: from "couple"
    + @emoji couple_with_heart @emoji :couple_with_heart: from "couple_with_heart"
    + @emoji couple_with_heart_man_man @emoji :couple_with_heart_man_man: from "couple_with_heart_man_man"
    + @emoji couple_with_heart_woman_man @emoji :couple_with_heart_woman_man: from "couple_with_heart_woman_man"
    + @emoji couple_with_heart_woman_woman @emoji :couple_with_heart_woman_woman: from "couple_with_heart_woman_woman"
    + @emoji couplekiss_man_man @emoji :couplekiss_man_man: from "couplekiss_man_man"
    + @emoji couplekiss_man_woman @emoji :couplekiss_man_woman: from "couplekiss_man_woman"
    + @emoji couplekiss_woman_woman @emoji :couplekiss_woman_woman: from "couplekiss_woman_woman"
    + @emoji cow @emoji :cow: from "cow"
    + @emoji cow2 @emoji :cow2: from "cow2"
    + @emoji cowboy_hat_face @emoji :cowboy_hat_face: from "cowboy_hat_face"
    + @emoji crab @emoji :crab: from "crab"
    + @emoji crayon @emoji :crayon: from "crayon"
    + @emoji credit_card @emoji :credit_card: from "credit_card"
    + @emoji crescent_moon @emoji :crescent_moon: from "crescent_moon"
    + @emoji cricket @emoji :cricket: from "cricket"
    + @emoji croatia @emoji :croatia: from "croatia"
    + @emoji crocodile @emoji :crocodile: from "crocodile"
    + @emoji croissant @emoji :croissant: from "croissant"
    + @emoji crossed_fingers @emoji :crossed_fingers: from "crossed_fingers"
    + @emoji crossed_flags @emoji :crossed_flags: from "crossed_flags"
    + @emoji crossed_swords @emoji :crossed_swords: from "crossed_swords"
    + @emoji crown @emoji :crown: from "crown"
    + @emoji cry @emoji :cry: from "cry"
    + @emoji crying_cat_face @emoji :crying_cat_face: from "crying_cat_face"
    + @emoji crystal_ball @emoji :crystal_ball: from "crystal_ball"
    + @emoji cuba @emoji :cuba: from "cuba"
    + @emoji cucumber @emoji :cucumber: from "cucumber"
    + @emoji cupid @emoji :cupid: from "cupid"
    + @emoji curacao @emoji :curacao: from "curacao"
    + @emoji curly_loop @emoji :curly_loop: from "curly_loop"
    + @emoji currency_exchange @emoji :currency_exchange: from "currency_exchange"
    + @emoji curry @emoji :curry: from "curry"
    + @emoji custard @emoji :custard: from "custard"
    + @emoji customs @emoji :customs: from "customs"
    + @emoji cyclone @emoji :cyclone: from "cyclone"
    + @emoji cyprus @emoji :cyprus: from "cyprus"
    + @emoji czech_republic @emoji :czech_republic: from "czech_republic"
    + @emoji dagger @emoji :dagger: from "dagger"
    + @emoji dancer @emoji :dancer: from "dancer"
    + @emoji dancers @emoji :dancers: from "dancers"
    + @emoji dancing_men @emoji :dancing_men: from "dancing_men"
    + @emoji dancing_women @emoji :dancing_women: from "dancing_women"
    + @emoji dango @emoji :dango: from "dango"
    + @emoji dark_sunglasses @emoji :dark_sunglasses: from "dark_sunglasses"
    + @emoji dart @emoji :dart: from "dart"
    + @emoji dash @emoji :dash: from "dash"
    + @emoji date @emoji :date: from "date"
    + @emoji de @emoji :de: from "de"
    + @emoji deciduous_tree @emoji :deciduous_tree: from "deciduous_tree"
    + @emoji deer @emoji :deer: from "deer"
    + @emoji denmark @emoji :denmark: from "denmark"
    + @emoji department_store @emoji :department_store: from "department_store"
    + @emoji derelict_house @emoji :derelict_house: from "derelict_house"
    + @emoji desert @emoji :desert: from "desert"
    + @emoji desert_island @emoji :desert_island: from "desert_island"
    + @emoji desktop_computer @emoji :desktop_computer: from "desktop_computer"
    + @emoji detective @emoji :detective: from "detective"
    + @emoji diamond_shape_with_a_dot_inside @emoji :diamond_shape_with_a_dot_inside: from "diamond_shape_with_a_dot_inside"
    + @emoji diamonds @emoji :diamonds: from "diamonds"
    + @emoji disappointed @emoji :disappointed: from "disappointed"
    + @emoji disappointed_relieved @emoji :disappointed_relieved: from "disappointed_relieved"
    + @emoji dizzy @emoji :dizzy: from "dizzy"
    + @emoji dizzy_face @emoji :dizzy_face: from "dizzy_face"
    + @emoji djibouti @emoji :djibouti: from "djibouti"
    + @emoji do_not_litter @emoji :do_not_litter: from "do_not_litter"
    + @emoji dog @emoji :dog: from "dog"
    + @emoji dog2 @emoji :dog2: from "dog2"
    + @emoji dollar @emoji :dollar: from "dollar"
    + @emoji dolls @emoji :dolls: from "dolls"
    + @emoji dolphin @emoji :dolphin: from "dolphin"
    + @emoji dominica @emoji :dominica: from "dominica"
    + @emoji dominican_republic @emoji :dominican_republic: from "dominican_republic"
    + @emoji door @emoji :door: from "door"
    + @emoji doughnut @emoji :doughnut: from "doughnut"
    + @emoji dove @emoji :dove: from "dove"
    + @emoji dragon @emoji :dragon: from "dragon"
    + @emoji dragon_face @emoji :dragon_face: from "dragon_face"
    + @emoji dress @emoji :dress: from "dress"
    + @emoji dromedary_camel @emoji :dromedary_camel: from "dromedary_camel"
    + @emoji drooling_face @emoji :drooling_face: from "drooling_face"
    + @emoji droplet @emoji :droplet: from "droplet"
    + @emoji drum @emoji :drum: from "drum"
    + @emoji duck @emoji :duck: from "duck"
    + @emoji dvd @emoji :dvd: from "dvd"
    + @emoji e-mail @emoji :e-mail: from "e-mail"
    + @emoji eagle @emoji :eagle: from "eagle"
    + @emoji ear @emoji :ear: from "ear"
    + @emoji ear_of_rice @emoji :ear_of_rice: from "ear_of_rice"
    + @emoji earth_africa @emoji :earth_africa: from "earth_africa"
    + @emoji earth_americas @emoji :earth_americas: from "earth_americas"
    + @emoji earth_asia @emoji :earth_asia: from "earth_asia"
    + @emoji ecuador @emoji :ecuador: from "ecuador"
    + @emoji egg @emoji :egg: from "egg"
    + @emoji eggplant @emoji :eggplant: from "eggplant"
    + @emoji egypt @emoji :egypt: from "egypt"
    + @emoji eight @emoji :eight: from "eight"
    + @emoji eight_pointed_black_star @emoji :eight_pointed_black_star: from "eight_pointed_black_star"
    + @emoji eight_spoked_asterisk @emoji :eight_spoked_asterisk: from "eight_spoked_asterisk"
    + @emoji el_salvador @emoji :el_salvador: from "el_salvador"
    + @emoji electric_plug @emoji :electric_plug: from "electric_plug"
    + @emoji elephant @emoji :elephant: from "elephant"
    + @emoji email @emoji :email: from "email"
    + @emoji end @emoji :end: from "end"
    + @emoji envelope @emoji :envelope: from "envelope"
    + @emoji envelope_with_arrow @emoji :envelope_with_arrow: from "envelope_with_arrow"
    + @emoji equatorial_guinea @emoji :equatorial_guinea: from "equatorial_guinea"
    + @emoji eritrea @emoji :eritrea: from "eritrea"
    + @emoji es @emoji :es: from "es"
    + @emoji estonia @emoji :estonia: from "estonia"
    + @emoji ethiopia @emoji :ethiopia: from "ethiopia"
    + @emoji eu @emoji :eu: from "eu"
    + @emoji euro @emoji :euro: from "euro"
    + @emoji european_castle @emoji :european_castle: from "european_castle"
    + @emoji european_post_office @emoji :european_post_office: from "european_post_office"
    + @emoji european_union @emoji :european_union: from "european_union"
    + @emoji evergreen_tree @emoji :evergreen_tree: from "evergreen_tree"
    + @emoji exclamation @emoji :exclamation: from "exclamation"
    + @emoji expressionless @emoji :expressionless: from "expressionless"
    + @emoji eye @emoji :eye: from "eye"
    + @emoji eye_speech_bubble @emoji :eye_speech_bubble: from "eye_speech_bubble"
    + @emoji eyeglasses @emoji :eyeglasses: from "eyeglasses"
    + @emoji eyes @emoji :eyes: from "eyes"
    + @emoji face_with_head_bandage @emoji :face_with_head_bandage: from "face_with_head_bandage"
    + @emoji face_with_thermometer @emoji :face_with_thermometer: from "face_with_thermometer"
    + @emoji facepunch @emoji :facepunch: from "facepunch"
    + @emoji factory @emoji :factory: from "factory"
    + @emoji falkland_islands @emoji :falkland_islands: from "falkland_islands"
    + @emoji fallen_leaf @emoji :fallen_leaf: from "fallen_leaf"
    + @emoji family @emoji :family: from "family"
    + @emoji family_man_boy @emoji :family_man_boy: from "family_man_boy"
    + @emoji family_man_boy_boy @emoji :family_man_boy_boy: from "family_man_boy_boy"
    + @emoji family_man_girl @emoji :family_man_girl: from "family_man_girl"
    + @emoji family_man_girl_boy @emoji :family_man_girl_boy: from "family_man_girl_boy"
    + @emoji family_man_girl_girl @emoji :family_man_girl_girl: from "family_man_girl_girl"
    + @emoji family_man_man_boy @emoji :family_man_man_boy: from "family_man_man_boy"
    + @emoji family_man_man_boy_boy @emoji :family_man_man_boy_boy: from "family_man_man_boy_boy"
    + @emoji family_man_man_girl @emoji :family_man_man_girl: from "family_man_man_girl"
    + @emoji family_man_man_girl_boy @emoji :family_man_man_girl_boy: from "family_man_man_girl_boy"
    + @emoji family_man_man_girl_girl @emoji :family_man_man_girl_girl: from "family_man_man_girl_girl"
    + @emoji family_man_woman_boy @emoji :family_man_woman_boy: from "family_man_woman_boy"
    + @emoji family_man_woman_boy_boy @emoji :family_man_woman_boy_boy: from "family_man_woman_boy_boy"
    + @emoji family_man_woman_girl @emoji :family_man_woman_girl: from "family_man_woman_girl"
    + @emoji family_man_woman_girl_boy @emoji :family_man_woman_girl_boy: from "family_man_woman_girl_boy"
    + @emoji family_man_woman_girl_girl @emoji :family_man_woman_girl_girl: from "family_man_woman_girl_girl"
    + @emoji family_woman_boy @emoji :family_woman_boy: from "family_woman_boy"
    + @emoji family_woman_boy_boy @emoji :family_woman_boy_boy: from "family_woman_boy_boy"
    + @emoji family_woman_girl @emoji :family_woman_girl: from "family_woman_girl"
    + @emoji family_woman_girl_boy @emoji :family_woman_girl_boy: from "family_woman_girl_boy"
    + @emoji family_woman_girl_girl @emoji :family_woman_girl_girl: from "family_woman_girl_girl"
    + @emoji family_woman_woman_boy @emoji :family_woman_woman_boy: from "family_woman_woman_boy"
    + @emoji family_woman_woman_boy_boy @emoji :family_woman_woman_boy_boy: from "family_woman_woman_boy_boy"
    + @emoji family_woman_woman_girl @emoji :family_woman_woman_girl: from "family_woman_woman_girl"
    + @emoji family_woman_woman_girl_boy @emoji :family_woman_woman_girl_boy: from "family_woman_woman_girl_boy"
    + @emoji family_woman_woman_girl_girl @emoji :family_woman_woman_girl_girl: from "family_woman_woman_girl_girl"
    + @emoji faroe_islands @emoji :faroe_islands: from "faroe_islands"
    + @emoji fast_forward @emoji :fast_forward: from "fast_forward"
    + @emoji fax @emoji :fax: from "fax"
    + @emoji fearful @emoji :fearful: from "fearful"
    + @emoji feet @emoji :feet: from "feet"
    + @emoji female_detective @emoji :female_detective: from "female_detective"
    + @emoji ferris_wheel @emoji :ferris_wheel: from "ferris_wheel"
    + @emoji ferry @emoji :ferry: from "ferry"
    + @emoji field_hockey @emoji :field_hockey: from "field_hockey"
    + @emoji fiji @emoji :fiji: from "fiji"
    + @emoji file_cabinet @emoji :file_cabinet: from "file_cabinet"
    + @emoji file_folder @emoji :file_folder: from "file_folder"
    + @emoji film_projector @emoji :film_projector: from "film_projector"
    + @emoji film_strip @emoji :film_strip: from "film_strip"
    + @emoji finland @emoji :finland: from "finland"
    + @emoji fire @emoji :fire: from "fire"
    + @emoji fire_engine @emoji :fire_engine: from "fire_engine"
    + @emoji fireworks @emoji :fireworks: from "fireworks"
    + @emoji first_quarter_moon @emoji :first_quarter_moon: from "first_quarter_moon"
    + @emoji first_quarter_moon_with_face @emoji :first_quarter_moon_with_face: from "first_quarter_moon_with_face"
    + @emoji fish @emoji :fish: from "fish"
    + @emoji fish_cake @emoji :fish_cake: from "fish_cake"
    + @emoji fishing_pole_and_fish @emoji :fishing_pole_and_fish: from "fishing_pole_and_fish"
    + @emoji fist @emoji :fist: from "fist"
    + @emoji fist_left @emoji :fist_left: from "fist_left"
    + @emoji fist_oncoming @emoji :fist_oncoming: from "fist_oncoming"
    + @emoji fist_raised @emoji :fist_raised: from "fist_raised"
    + @emoji fist_right @emoji :fist_right: from "fist_right"
    + @emoji five @emoji :five: from "five"
    + @emoji flags @emoji :flags: from "flags"
    + @emoji flashlight @emoji :flashlight: from "flashlight"
    + @emoji fleur_de_lis @emoji :fleur_de_lis: from "fleur_de_lis"
    + @emoji flight_arrival @emoji :flight_arrival: from "flight_arrival"
    + @emoji flight_departure @emoji :flight_departure: from "flight_departure"
    + @emoji flipper @emoji :flipper: from "flipper"
    + @emoji floppy_disk @emoji :floppy_disk: from "floppy_disk"
    + @emoji flower_playing_cards @emoji :flower_playing_cards: from "flower_playing_cards"
    + @emoji flushed @emoji :flushed: from "flushed"
    + @emoji fog @emoji :fog: from "fog"
    + @emoji foggy @emoji :foggy: from "foggy"
    + @emoji football @emoji :football: from "football"
    + @emoji footprints @emoji :footprints: from "footprints"
    + @emoji fork_and_knife @emoji :fork_and_knife: from "fork_and_knife"
    + @emoji fountain @emoji :fountain: from "fountain"
    + @emoji fountain_pen @emoji :fountain_pen: from "fountain_pen"
    + @emoji four @emoji :four: from "four"
    + @emoji four_leaf_clover @emoji :four_leaf_clover: from "four_leaf_clover"
    + @emoji fox_face @emoji :fox_face: from "fox_face"
    + @emoji fr @emoji :fr: from "fr"
    + @emoji framed_picture @emoji :framed_picture: from "framed_picture"
    + @emoji free @emoji :free: from "free"
    + @emoji french_guiana @emoji :french_guiana: from "french_guiana"
    + @emoji french_polynesia @emoji :french_polynesia: from "french_polynesia"
    + @emoji french_southern_territories @emoji :french_southern_territories: from "french_southern_territories"
    + @emoji fried_egg @emoji :fried_egg: from "fried_egg"
    + @emoji fried_shrimp @emoji :fried_shrimp: from "fried_shrimp"
    + @emoji fries @emoji :fries: from "fries"
    + @emoji frog @emoji :frog: from "frog"
    + @emoji frowning @emoji :frowning: from "frowning"
    + @emoji frowning_face @emoji :frowning_face: from "frowning_face"
    + @emoji frowning_man @emoji :frowning_man: from "frowning_man"
    + @emoji frowning_woman @emoji :frowning_woman: from "frowning_woman"
    + @emoji fu @emoji :fu: from "fu"
    + @emoji fuelpump @emoji :fuelpump: from "fuelpump"
    + @emoji full_moon @emoji :full_moon: from "full_moon"
    + @emoji full_moon_with_face @emoji :full_moon_with_face: from "full_moon_with_face"
    + @emoji funeral_urn @emoji :funeral_urn: from "funeral_urn"
    + @emoji gabon @emoji :gabon: from "gabon"
    + @emoji gambia @emoji :gambia: from "gambia"
    + @emoji game_die @emoji :game_die: from "game_die"
    + @emoji gb @emoji :gb: from "gb"
    + @emoji gear @emoji :gear: from "gear"
    + @emoji gem @emoji :gem: from "gem"
    + @emoji gemini @emoji :gemini: from "gemini"
    + @emoji georgia @emoji :georgia: from "georgia"
    + @emoji ghana @emoji :ghana: from "ghana"
    + @emoji ghost @emoji :ghost: from "ghost"
    + @emoji gibraltar @emoji :gibraltar: from "gibraltar"
    + @emoji gift @emoji :gift: from "gift"
    + @emoji gift_heart @emoji :gift_heart: from "gift_heart"
    + @emoji girl @emoji :girl: from "girl"
    + @emoji globe_with_meridians @emoji :globe_with_meridians: from "globe_with_meridians"
    + @emoji goal_net @emoji :goal_net: from "goal_net"
    + @emoji goat @emoji :goat: from "goat"
    + @emoji golf @emoji :golf: from "golf"
    + @emoji golfing_man @emoji :golfing_man: from "golfing_man"
    + @emoji golfing_woman @emoji :golfing_woman: from "golfing_woman"
    + @emoji gorilla @emoji :gorilla: from "gorilla"
    + @emoji grapes @emoji :grapes: from "grapes"
    + @emoji greece @emoji :greece: from "greece"
    + @emoji green_apple @emoji :green_apple: from "green_apple"
    + @emoji green_book @emoji :green_book: from "green_book"
    + @emoji green_heart @emoji :green_heart: from "green_heart"
    + @emoji green_salad @emoji :green_salad: from "green_salad"
    + @emoji greenland @emoji :greenland: from "greenland"
    + @emoji grenada @emoji :grenada: from "grenada"
    + @emoji grey_exclamation @emoji :grey_exclamation: from "grey_exclamation"
    + @emoji grey_question @emoji :grey_question: from "grey_question"
    + @emoji grimacing @emoji :grimacing: from "grimacing"
    + @emoji grin @emoji :grin: from "grin"
    + @emoji grinning @emoji :grinning: from "grinning"
    + @emoji guadeloupe @emoji :guadeloupe: from "guadeloupe"
    + @emoji guam @emoji :guam: from "guam"
    + @emoji guardsman @emoji :guardsman: from "guardsman"
    + @emoji guardswoman @emoji :guardswoman: from "guardswoman"
    + @emoji guatemala @emoji :guatemala: from "guatemala"
    + @emoji guernsey @emoji :guernsey: from "guernsey"
    + @emoji guinea @emoji :guinea: from "guinea"
    + @emoji guinea_bissau @emoji :guinea_bissau: from "guinea_bissau"
    + @emoji guitar @emoji :guitar: from "guitar"
    + @emoji gun @emoji :gun: from "gun"
    + @emoji guyana @emoji :guyana: from "guyana"
    + @emoji haircut @emoji :haircut: from "haircut"
    + @emoji haircut_man @emoji :haircut_man: from "haircut_man"
    + @emoji haircut_woman @emoji :haircut_woman: from "haircut_woman"
    + @emoji haiti @emoji :haiti: from "haiti"
    + @emoji hamburger @emoji :hamburger: from "hamburger"
    + @emoji hammer @emoji :hammer: from "hammer"
    + @emoji hammer_and_pick @emoji :hammer_and_pick: from "hammer_and_pick"
    + @emoji hammer_and_wrench @emoji :hammer_and_wrench: from "hammer_and_wrench"
    + @emoji hamster @emoji :hamster: from "hamster"
    + @emoji hand @emoji :hand: from "hand"
    + @emoji handbag @emoji :handbag: from "handbag"
    + @emoji handshake @emoji :handshake: from "handshake"
    + @emoji hankey @emoji :hankey: from "hankey"
    + @emoji hash @emoji :hash: from "hash"
    + @emoji hatched_chick @emoji :hatched_chick: from "hatched_chick"
    + @emoji hatching_chick @emoji :hatching_chick: from "hatching_chick"
    + @emoji headphones @emoji :headphones: from "headphones"
    + @emoji hear_no_evil @emoji :hear_no_evil: from "hear_no_evil"
    + @emoji heart @emoji :heart: from "heart"
    + @emoji heart_decoration @emoji :heart_decoration: from "heart_decoration"
    + @emoji heart_eyes @emoji :heart_eyes: from "heart_eyes"
    + @emoji heart_eyes_cat @emoji :heart_eyes_cat: from "heart_eyes_cat"
    + @emoji heartbeat @emoji :heartbeat: from "heartbeat"
    + @emoji heartpulse @emoji :heartpulse: from "heartpulse"
    + @emoji hearts @emoji :hearts: from "hearts"
    + @emoji heavy_check_mark @emoji :heavy_check_mark: from "heavy_check_mark"
    + @emoji heavy_division_sign @emoji :heavy_division_sign: from "heavy_division_sign"
    + @emoji heavy_dollar_sign @emoji :heavy_dollar_sign: from "heavy_dollar_sign"
    + @emoji heavy_exclamation_mark @emoji :heavy_exclamation_mark: from "heavy_exclamation_mark"
    + @emoji heavy_heart_exclamation @emoji :heavy_heart_exclamation: from "heavy_heart_exclamation"
    + @emoji heavy_minus_sign @emoji :heavy_minus_sign: from "heavy_minus_sign"
    + @emoji heavy_multiplication_x @emoji :heavy_multiplication_x: from "heavy_multiplication_x"
    + @emoji heavy_plus_sign @emoji :heavy_plus_sign: from "heavy_plus_sign"
    + @emoji helicopter @emoji :helicopter: from "helicopter"
    + @emoji herb @emoji :herb: from "herb"
    + @emoji hibiscus @emoji :hibiscus: from "hibiscus"
    + @emoji high_brightness @emoji :high_brightness: from "high_brightness"
    + @emoji high_heel @emoji :high_heel: from "high_heel"
    + @emoji hocho @emoji :hocho: from "hocho"
    + @emoji hole @emoji :hole: from "hole"
    + @emoji honduras @emoji :honduras: from "honduras"
    + @emoji honey_pot @emoji :honey_pot: from "honey_pot"
    + @emoji honeybee @emoji :honeybee: from "honeybee"
    + @emoji hong_kong @emoji :hong_kong: from "hong_kong"
    + @emoji horse @emoji :horse: from "horse"
    + @emoji horse_racing @emoji :horse_racing: from "horse_racing"
    + @emoji hospital @emoji :hospital: from "hospital"
    + @emoji hot_pepper @emoji :hot_pepper: from "hot_pepper"
    + @emoji hotdog @emoji :hotdog: from "hotdog"
    + @emoji hotel @emoji :hotel: from "hotel"
    + @emoji hotsprings @emoji :hotsprings: from "hotsprings"
    + @emoji hourglass @emoji :hourglass: from "hourglass"
    + @emoji hourglass_flowing_sand @emoji :hourglass_flowing_sand: from "hourglass_flowing_sand"
    + @emoji house @emoji :house: from "house"
    + @emoji house_with_garden @emoji :house_with_garden: from "house_with_garden"
    + @emoji houses @emoji :houses: from "houses"
    + @emoji hugs @emoji :hugs: from "hugs"
    + @emoji hungary @emoji :hungary: from "hungary"
    + @emoji hushed @emoji :hushed: from "hushed"
    + @emoji ice_cream @emoji :ice_cream: from "ice_cream"
    + @emoji ice_hockey @emoji :ice_hockey: from "ice_hockey"
    + @emoji ice_skate @emoji :ice_skate: from "ice_skate"
    + @emoji icecream @emoji :icecream: from "icecream"
    + @emoji iceland @emoji :iceland: from "iceland"
    + @emoji id @emoji :id: from "id"
    + @emoji ideograph_advantage @emoji :ideograph_advantage: from "ideograph_advantage"
    + @emoji imp @emoji :imp: from "imp"
    + @emoji inbox_tray @emoji :inbox_tray: from "inbox_tray"
    + @emoji incoming_envelope @emoji :incoming_envelope: from "incoming_envelope"
    + @emoji india @emoji :india: from "india"
    + @emoji indonesia @emoji :indonesia: from "indonesia"
    + @emoji information_desk_person @emoji :information_desk_person: from "information_desk_person"
    + @emoji information_source @emoji :information_source: from "information_source"
    + @emoji innocent @emoji :innocent: from "innocent"
    + @emoji interrobang @emoji :interrobang: from "interrobang"
    + @emoji iphone @emoji :iphone: from "iphone"
    + @emoji iran @emoji :iran: from "iran"
    + @emoji iraq @emoji :iraq: from "iraq"
    + @emoji ireland @emoji :ireland: from "ireland"
    + @emoji isle_of_man @emoji :isle_of_man: from "isle_of_man"
    + @emoji israel @emoji :israel: from "israel"
    + @emoji it @emoji :it: from "it"
    + @emoji izakaya_lantern @emoji :izakaya_lantern: from "izakaya_lantern"
    + @emoji jack_o_lantern @emoji :jack_o_lantern: from "jack_o_lantern"
    + @emoji jamaica @emoji :jamaica: from "jamaica"
    + @emoji japan @emoji :japan: from "japan"
    + @emoji japanese_castle @emoji :japanese_castle: from "japanese_castle"
    + @emoji japanese_goblin @emoji :japanese_goblin: from "japanese_goblin"
    + @emoji japanese_ogre @emoji :japanese_ogre: from "japanese_ogre"
    + @emoji jeans @emoji :jeans: from "jeans"
    + @emoji jersey @emoji :jersey: from "jersey"
    + @emoji jordan @emoji :jordan: from "jordan"
    + @emoji joy @emoji :joy: from "joy"
    + @emoji joy_cat @emoji :joy_cat: from "joy_cat"
    + @emoji joystick @emoji :joystick: from "joystick"
    + @emoji jp @emoji :jp: from "jp"
    + @emoji kaaba @emoji :kaaba: from "kaaba"
    + @emoji kazakhstan @emoji :kazakhstan: from "kazakhstan"
    + @emoji kenya @emoji :kenya: from "kenya"
    + @emoji key @emoji :key: from "key"
    + @emoji keyboard @emoji :keyboard: from "keyboard"
    + @emoji keycap_ten @emoji :keycap_ten: from "keycap_ten"
    + @emoji kick_scooter @emoji :kick_scooter: from "kick_scooter"
    + @emoji kimono @emoji :kimono: from "kimono"
    + @emoji kiribati @emoji :kiribati: from "kiribati"
    + @emoji kiss @emoji :kiss: from "kiss"
    + @emoji kissing @emoji :kissing: from "kissing"
    + @emoji kissing_cat @emoji :kissing_cat: from "kissing_cat"
    + @emoji kissing_closed_eyes @emoji :kissing_closed_eyes: from "kissing_closed_eyes"
    + @emoji kissing_heart @emoji :kissing_heart: from "kissing_heart"
    + @emoji kissing_smiling_eyes @emoji :kissing_smiling_eyes: from "kissing_smiling_eyes"
    + @emoji kiwi_fruit @emoji :kiwi_fruit: from "kiwi_fruit"
    + @emoji knife @emoji :knife: from "knife"
    + @emoji koala @emoji :koala: from "koala"
    + @emoji koko @emoji :koko: from "koko"
    + @emoji kosovo @emoji :kosovo: from "kosovo"
    + @emoji kr @emoji :kr: from "kr"
    + @emoji kuwait @emoji :kuwait: from "kuwait"
    + @emoji kyrgyzstan @emoji :kyrgyzstan: from "kyrgyzstan"
    + @emoji label @emoji :label: from "label"
    + @emoji lantern @emoji :lantern: from "lantern"
    + @emoji laos @emoji :laos: from "laos"
    + @emoji large_blue_circle @emoji :large_blue_circle: from "large_blue_circle"
    + @emoji large_blue_diamond @emoji :large_blue_diamond: from "large_blue_diamond"
    + @emoji large_orange_diamond @emoji :large_orange_diamond: from "large_orange_diamond"
    + @emoji last_quarter_moon @emoji :last_quarter_moon: from "last_quarter_moon"
    + @emoji last_quarter_moon_with_face @emoji :last_quarter_moon_with_face: from "last_quarter_moon_with_face"
    + @emoji latin_cross @emoji :latin_cross: from "latin_cross"
    + @emoji latvia @emoji :latvia: from "latvia"
    + @emoji laughing @emoji :laughing: from "laughing"
    + @emoji leaves @emoji :leaves: from "leaves"
    + @emoji lebanon @emoji :lebanon: from "lebanon"
    + @emoji ledger @emoji :ledger: from "ledger"
    + @emoji left_luggage @emoji :left_luggage: from "left_luggage"
    + @emoji left_right_arrow @emoji :left_right_arrow: from "left_right_arrow"
    + @emoji leftwards_arrow_with_hook @emoji :leftwards_arrow_with_hook: from "leftwards_arrow_with_hook"
    + @emoji lemon @emoji :lemon: from "lemon"
    + @emoji leo @emoji :leo: from "leo"
    + @emoji leopard @emoji :leopard: from "leopard"
    + @emoji lesotho @emoji :lesotho: from "lesotho"
    + @emoji level_slider @emoji :level_slider: from "level_slider"
    + @emoji liberia @emoji :liberia: from "liberia"
    + @emoji libra @emoji :libra: from "libra"
    + @emoji libya @emoji :libya: from "libya"
    + @emoji liechtenstein @emoji :liechtenstein: from "liechtenstein"
    + @emoji light_rail @emoji :light_rail: from "light_rail"
    + @emoji link @emoji :link: from "link"
    + @emoji lion @emoji :lion: from "lion"
    + @emoji lips @emoji :lips: from "lips"
    + @emoji lipstick @emoji :lipstick: from "lipstick"
    + @emoji lithuania @emoji :lithuania: from "lithuania"
    + @emoji lizard @emoji :lizard: from "lizard"
    + @emoji lock @emoji :lock: from "lock"
    + @emoji lock_with_ink_pen @emoji :lock_with_ink_pen: from "lock_with_ink_pen"
    + @emoji lollipop @emoji :lollipop: from "lollipop"
    + @emoji loop @emoji :loop: from "loop"
    + @emoji loud_sound @emoji :loud_sound: from "loud_sound"
    + @emoji loudspeaker @emoji :loudspeaker: from "loudspeaker"
    + @emoji love_hotel @emoji :love_hotel: from "love_hotel"
    + @emoji love_letter @emoji :love_letter: from "love_letter"
    + @emoji low_brightness @emoji :low_brightness: from "low_brightness"
    + @emoji luxembourg @emoji :luxembourg: from "luxembourg"
    + @emoji lying_face @emoji :lying_face: from "lying_face"
    + @emoji m @emoji :m: from "m"
    + @emoji macau @emoji :macau: from "macau"
    + @emoji macedonia @emoji :macedonia: from "macedonia"
    + @emoji madagascar @emoji :madagascar: from "madagascar"
    + @emoji mag @emoji :mag: from "mag"
    + @emoji mag_right @emoji :mag_right: from "mag_right"
    + @emoji mahjong @emoji :mahjong: from "mahjong"
    + @emoji mailbox @emoji :mailbox: from "mailbox"
    + @emoji mailbox_closed @emoji :mailbox_closed: from "mailbox_closed"
    + @emoji mailbox_with_mail @emoji :mailbox_with_mail: from "mailbox_with_mail"
    + @emoji mailbox_with_no_mail @emoji :mailbox_with_no_mail: from "mailbox_with_no_mail"
    + @emoji malawi @emoji :malawi: from "malawi"
    + @emoji malaysia @emoji :malaysia: from "malaysia"
    + @emoji maldives @emoji :maldives: from "maldives"
    + @emoji male_detective @emoji :male_detective: from "male_detective"
    + @emoji mali @emoji :mali: from "mali"
    + @emoji malta @emoji :malta: from "malta"
    + @emoji man @emoji :man: from "man"
    + @emoji man_artist @emoji :man_artist: from "man_artist"
    + @emoji man_astronaut @emoji :man_astronaut: from "man_astronaut"
    + @emoji man_cartwheeling @emoji :man_cartwheeling: from "man_cartwheeling"
    + @emoji man_cook @emoji :man_cook: from "man_cook"
    + @emoji man_dancing @emoji :man_dancing: from "man_dancing"
    + @emoji man_facepalming @emoji :man_facepalming: from "man_facepalming"
    + @emoji man_factory_worker @emoji :man_factory_worker: from "man_factory_worker"
    + @emoji man_farmer @emoji :man_farmer: from "man_farmer"
    + @emoji man_firefighter @emoji :man_firefighter: from "man_firefighter"
    + @emoji man_health_worker @emoji :man_health_worker: from "man_health_worker"
    + @emoji man_in_tuxedo @emoji :man_in_tuxedo: from "man_in_tuxedo"
    + @emoji man_judge @emoji :man_judge: from "man_judge"
    + @emoji man_juggling @emoji :man_juggling: from "man_juggling"
    + @emoji man_mechanic @emoji :man_mechanic: from "man_mechanic"
    + @emoji man_office_worker @emoji :man_office_worker: from "man_office_worker"
    + @emoji man_pilot @emoji :man_pilot: from "man_pilot"
    + @emoji man_playing_handball @emoji :man_playing_handball: from "man_playing_handball"
    + @emoji man_playing_water_polo @emoji :man_playing_water_polo: from "man_playing_water_polo"
    + @emoji man_scientist @emoji :man_scientist: from "man_scientist"
    + @emoji man_shrugging @emoji :man_shrugging: from "man_shrugging"
    + @emoji man_singer @emoji :man_singer: from "man_singer"
    + @emoji man_student @emoji :man_student: from "man_student"
    + @emoji man_teacher @emoji :man_teacher: from "man_teacher"
    + @emoji man_technologist @emoji :man_technologist: from "man_technologist"
    + @emoji man_with_gua_pi_mao @emoji :man_with_gua_pi_mao: from "man_with_gua_pi_mao"
    + @emoji man_with_turban @emoji :man_with_turban: from "man_with_turban"
    + @emoji mandarin @emoji :mandarin: from "mandarin"
    + @emoji mans_shoe @emoji :mans_shoe: from "mans_shoe"
    + @emoji mantelpiece_clock @emoji :mantelpiece_clock: from "mantelpiece_clock"
    + @emoji maple_leaf @emoji :maple_leaf: from "maple_leaf"
    + @emoji marshall_islands @emoji :marshall_islands: from "marshall_islands"
    + @emoji martial_arts_uniform @emoji :martial_arts_uniform: from "martial_arts_uniform"
    + @emoji martinique @emoji :martinique: from "martinique"
    + @emoji mask @emoji :mask: from "mask"
    + @emoji massage @emoji :massage: from "massage"
    + @emoji massage_man @emoji :massage_man: from "massage_man"
    + @emoji massage_woman @emoji :massage_woman: from "massage_woman"
    + @emoji mauritania @emoji :mauritania: from "mauritania"
    + @emoji mauritius @emoji :mauritius: from "mauritius"
    + @emoji mayotte @emoji :mayotte: from "mayotte"
    + @emoji meat_on_bone @emoji :meat_on_bone: from "meat_on_bone"
    + @emoji medal_military @emoji :medal_military: from "medal_military"
    + @emoji medal_sports @emoji :medal_sports: from "medal_sports"
    + @emoji mega @emoji :mega: from "mega"
    + @emoji melon @emoji :melon: from "melon"
    + @emoji memo @emoji :memo: from "memo"
    + @emoji men_wrestling @emoji :men_wrestling: from "men_wrestling"
    + @emoji menorah @emoji :menorah: from "menorah"
    + @emoji mens @emoji :mens: from "mens"
    + @emoji metal @emoji :metal: from "metal"
    + @emoji metro @emoji :metro: from "metro"
    + @emoji mexico @emoji :mexico: from "mexico"
    + @emoji micronesia @emoji :micronesia: from "micronesia"
    + @emoji microphone @emoji :microphone: from "microphone"
    + @emoji microscope @emoji :microscope: from "microscope"
    + @emoji middle_finger @emoji :middle_finger: from "middle_finger"
    + @emoji milk_glass @emoji :milk_glass: from "milk_glass"
    + @emoji milky_way @emoji :milky_way: from "milky_way"
    + @emoji minibus @emoji :minibus: from "minibus"
    + @emoji minidisc @emoji :minidisc: from "minidisc"
    + @emoji mobile_phone_off @emoji :mobile_phone_off: from "mobile_phone_off"
    + @emoji moldova @emoji :moldova: from "moldova"
    + @emoji monaco @emoji :monaco: from "monaco"
    + @emoji money_mouth_face @emoji :money_mouth_face: from "money_mouth_face"
    + @emoji money_with_wings @emoji :money_with_wings: from "money_with_wings"
    + @emoji moneybag @emoji :moneybag: from "moneybag"
    + @emoji mongolia @emoji :mongolia: from "mongolia"
    + @emoji monkey @emoji :monkey: from "monkey"
    + @emoji monkey_face @emoji :monkey_face: from "monkey_face"
    + @emoji monorail @emoji :monorail: from "monorail"
    + @emoji montenegro @emoji :montenegro: from "montenegro"
    + @emoji montserrat @emoji :montserrat: from "montserrat"
    + @emoji moon @emoji :moon: from "moon"
    + @emoji morocco @emoji :morocco: from "morocco"
    + @emoji mortar_board @emoji :mortar_board: from "mortar_board"
    + @emoji mosque @emoji :mosque: from "mosque"
    + @emoji motor_boat @emoji :motor_boat: from "motor_boat"
    + @emoji motor_scooter @emoji :motor_scooter: from "motor_scooter"
    + @emoji motorcycle @emoji :motorcycle: from "motorcycle"
    + @emoji motorway @emoji :motorway: from "motorway"
    + @emoji mount_fuji @emoji :mount_fuji: from "mount_fuji"
    + @emoji mountain @emoji :mountain: from "mountain"
    + @emoji mountain_bicyclist @emoji :mountain_bicyclist: from "mountain_bicyclist"
    + @emoji mountain_biking_man @emoji :mountain_biking_man: from "mountain_biking_man"
    + @emoji mountain_biking_woman @emoji :mountain_biking_woman: from "mountain_biking_woman"
    + @emoji mountain_cableway @emoji :mountain_cableway: from "mountain_cableway"
    + @emoji mountain_railway @emoji :mountain_railway: from "mountain_railway"
    + @emoji mountain_snow @emoji :mountain_snow: from "mountain_snow"
    + @emoji mouse @emoji :mouse: from "mouse"
    + @emoji mouse2 @emoji :mouse2: from "mouse2"
    + @emoji movie_camera @emoji :movie_camera: from "movie_camera"
    + @emoji moyai @emoji :moyai: from "moyai"
    + @emoji mozambique @emoji :mozambique: from "mozambique"
    + @emoji mrs_claus @emoji :mrs_claus: from "mrs_claus"
    + @emoji muscle @emoji :muscle: from "muscle"
    + @emoji mushroom @emoji :mushroom: from "mushroom"
    + @emoji musical_keyboard @emoji :musical_keyboard: from "musical_keyboard"
    + @emoji musical_note @emoji :musical_note: from "musical_note"
    + @emoji musical_score @emoji :musical_score: from "musical_score"
    + @emoji mute @emoji :mute: from "mute"
    + @emoji myanmar @emoji :myanmar: from "myanmar"
    + @emoji nail_care @emoji :nail_care: from "nail_care"
    + @emoji name_badge @emoji :name_badge: from "name_badge"
    + @emoji namibia @emoji :namibia: from "namibia"
    + @emoji national_park @emoji :national_park: from "national_park"
    + @emoji nauru @emoji :nauru: from "nauru"
    + @emoji nauseated_face @emoji :nauseated_face: from "nauseated_face"
    + @emoji necktie @emoji :necktie: from "necktie"
    + @emoji negative_squared_cross_mark @emoji :negative_squared_cross_mark: from "negative_squared_cross_mark"
    + @emoji nepal @emoji :nepal: from "nepal"
    + @emoji nerd_face @emoji :nerd_face: from "nerd_face"
    + @emoji netherlands @emoji :netherlands: from "netherlands"
    + @emoji neutral_face @emoji :neutral_face: from "neutral_face"
    + @emoji new @emoji :new: from "new"
    + @emoji new_caledonia @emoji :new_caledonia: from "new_caledonia"
    + @emoji new_moon @emoji :new_moon: from "new_moon"
    + @emoji new_moon_with_face @emoji :new_moon_with_face: from "new_moon_with_face"
    + @emoji new_zealand @emoji :new_zealand: from "new_zealand"
    + @emoji newspaper @emoji :newspaper: from "newspaper"
    + @emoji newspaper_roll @emoji :newspaper_roll: from "newspaper_roll"
    + @emoji next_track_button @emoji :next_track_button: from "next_track_button"
    + @emoji ng @emoji :ng: from "ng"
    + @emoji ng_man @emoji :ng_man: from "ng_man"
    + @emoji ng_woman @emoji :ng_woman: from "ng_woman"
    + @emoji nicaragua @emoji :nicaragua: from "nicaragua"
    + @emoji niger @emoji :niger: from "niger"
    + @emoji nigeria @emoji :nigeria: from "nigeria"
    + @emoji night_with_stars @emoji :night_with_stars: from "night_with_stars"
    + @emoji nine @emoji :nine: from "nine"
    + @emoji niue @emoji :niue: from "niue"
    + @emoji no_bell @emoji :no_bell: from "no_bell"
    + @emoji no_bicycles @emoji :no_bicycles: from "no_bicycles"
    + @emoji no_entry @emoji :no_entry: from "no_entry"
    + @emoji no_entry_sign @emoji :no_entry_sign: from "no_entry_sign"
    + @emoji no_good @emoji :no_good: from "no_good"
    + @emoji no_good_man @emoji :no_good_man: from "no_good_man"
    + @emoji no_good_woman @emoji :no_good_woman: from "no_good_woman"
    + @emoji no_mobile_phones @emoji :no_mobile_phones: from "no_mobile_phones"
    + @emoji no_mouth @emoji :no_mouth: from "no_mouth"
    + @emoji no_pedestrians @emoji :no_pedestrians: from "no_pedestrians"
    + @emoji no_smoking @emoji :no_smoking: from "no_smoking"
    + @emoji non-potable_water @emoji :non-potable_water: from "non-potable_water"
    + @emoji norfolk_island @emoji :norfolk_island: from "norfolk_island"
    + @emoji north_korea @emoji :north_korea: from "north_korea"
    + @emoji northern_mariana_islands @emoji :northern_mariana_islands: from "northern_mariana_islands"
    + @emoji norway @emoji :norway: from "norway"
    + @emoji nose @emoji :nose: from "nose"
    + @emoji notebook @emoji :notebook: from "notebook"
    + @emoji notebook_with_decorative_cover @emoji :notebook_with_decorative_cover: from "notebook_with_decorative_cover"
    + @emoji notes @emoji :notes: from "notes"
    + @emoji nut_and_bolt @emoji :nut_and_bolt: from "nut_and_bolt"
    + @emoji o @emoji :o: from "o"
    + @emoji o2 @emoji :o2: from "o2"
    + @emoji ocean @emoji :ocean: from "ocean"
    + @emoji octopus @emoji :octopus: from "octopus"
    + @emoji oden @emoji :oden: from "oden"
    + @emoji office @emoji :office: from "office"
    + @emoji oil_drum @emoji :oil_drum: from "oil_drum"
    + @emoji ok @emoji :ok: from "ok"
    + @emoji ok_hand @emoji :ok_hand: from "ok_hand"
    + @emoji ok_man @emoji :ok_man: from "ok_man"
    + @emoji ok_woman @emoji :ok_woman: from "ok_woman"
    + @emoji old_key @emoji :old_key: from "old_key"
    + @emoji older_man @emoji :older_man: from "older_man"
    + @emoji older_woman @emoji :older_woman: from "older_woman"
    + @emoji om @emoji :om: from "om"
    + @emoji oman @emoji :oman: from "oman"
    + @emoji on @emoji :on: from "on"
    + @emoji oncoming_automobile @emoji :oncoming_automobile: from "oncoming_automobile"
    + @emoji oncoming_bus @emoji :oncoming_bus: from "oncoming_bus"
    + @emoji oncoming_police_car @emoji :oncoming_police_car: from "oncoming_police_car"
    + @emoji oncoming_taxi @emoji :oncoming_taxi: from "oncoming_taxi"
    + @emoji one @emoji :one: from "one"
    + @emoji open_book @emoji :open_book: from "open_book"
    + @emoji open_file_folder @emoji :open_file_folder: from "open_file_folder"
    + @emoji open_hands @emoji :open_hands: from "open_hands"
    + @emoji open_mouth @emoji :open_mouth: from "open_mouth"
    + @emoji open_umbrella @emoji :open_umbrella: from "open_umbrella"
    + @emoji ophiuchus @emoji :ophiuchus: from "ophiuchus"
    + @emoji orange @emoji :orange: from "orange"
    + @emoji orange_book @emoji :orange_book: from "orange_book"
    + @emoji orthodox_cross @emoji :orthodox_cross: from "orthodox_cross"
    + @emoji outbox_tray @emoji :outbox_tray: from "outbox_tray"
    + @emoji owl @emoji :owl: from "owl"
    + @emoji ox @emoji :ox: from "ox"
    + @emoji package @emoji :package: from "package"
    + @emoji page_facing_up @emoji :page_facing_up: from "page_facing_up"
    + @emoji page_with_curl @emoji :page_with_curl: from "page_with_curl"
    + @emoji pager @emoji :pager: from "pager"
    + @emoji paintbrush @emoji :paintbrush: from "paintbrush"
    + @emoji pakistan @emoji :pakistan: from "pakistan"
    + @emoji palau @emoji :palau: from "palau"
    + @emoji palestinian_territories @emoji :palestinian_territories: from "palestinian_territories"
    + @emoji palm_tree @emoji :palm_tree: from "palm_tree"
    + @emoji panama @emoji :panama: from "panama"
    + @emoji pancakes @emoji :pancakes: from "pancakes"
    + @emoji panda_face @emoji :panda_face: from "panda_face"
    + @emoji paperclip @emoji :paperclip: from "paperclip"
    + @emoji paperclips @emoji :paperclips: from "paperclips"
    + @emoji papua_new_guinea @emoji :papua_new_guinea: from "papua_new_guinea"
    + @emoji paraguay @emoji :paraguay: from "paraguay"
    + @emoji parasol_on_ground @emoji :parasol_on_ground: from "parasol_on_ground"
    + @emoji parking @emoji :parking: from "parking"
    + @emoji part_alternation_mark @emoji :part_alternation_mark: from "part_alternation_mark"
    + @emoji partly_sunny @emoji :partly_sunny: from "partly_sunny"
    + @emoji passenger_ship @emoji :passenger_ship: from "passenger_ship"
    + @emoji passport_control @emoji :passport_control: from "passport_control"
    + @emoji pause_button @emoji :pause_button: from "pause_button"
    + @emoji paw_prints @emoji :paw_prints: from "paw_prints"
    + @emoji peace_symbol @emoji :peace_symbol: from "peace_symbol"
    + @emoji peach @emoji :peach: from "peach"
    + @emoji peanuts @emoji :peanuts: from "peanuts"
    + @emoji pear @emoji :pear: from "pear"
    + @emoji pen @emoji :pen: from "pen"
    + @emoji pencil @emoji :pencil: from "pencil"
    + @emoji pencil2 @emoji :pencil2: from "pencil2"
    + @emoji penguin @emoji :penguin: from "penguin"
    + @emoji pensive @emoji :pensive: from "pensive"
    + @emoji performing_arts @emoji :performing_arts: from "performing_arts"
    + @emoji persevere @emoji :persevere: from "persevere"
    + @emoji person_fencing @emoji :person_fencing: from "person_fencing"
    + @emoji person_frowning @emoji :person_frowning: from "person_frowning"
    + @emoji person_with_blond_hair @emoji :person_with_blond_hair: from "person_with_blond_hair"
    + @emoji person_with_pouting_face @emoji :person_with_pouting_face: from "person_with_pouting_face"
    + @emoji peru @emoji :peru: from "peru"
    + @emoji philippines @emoji :philippines: from "philippines"
    + @emoji phone @emoji :phone: from "phone"
    + @emoji pick @emoji :pick: from "pick"
    + @emoji pig @emoji :pig: from "pig"
    + @emoji pig2 @emoji :pig2: from "pig2"
    + @emoji pig_nose @emoji :pig_nose: from "pig_nose"
    + @emoji pill @emoji :pill: from "pill"
    + @emoji pineapple @emoji :pineapple: from "pineapple"
    + @emoji ping_pong @emoji :ping_pong: from "ping_pong"
    + @emoji pisces @emoji :pisces: from "pisces"
    + @emoji pitcairn_islands @emoji :pitcairn_islands: from "pitcairn_islands"
    + @emoji pizza @emoji :pizza: from "pizza"
    + @emoji place_of_worship @emoji :place_of_worship: from "place_of_worship"
    + @emoji plate_with_cutlery @emoji :plate_with_cutlery: from "plate_with_cutlery"
    + @emoji play_or_pause_button @emoji :play_or_pause_button: from "play_or_pause_button"
    + @emoji point_down @emoji :point_down: from "point_down"
    + @emoji point_left @emoji :point_left: from "point_left"
    + @emoji point_right @emoji :point_right: from "point_right"
    + @emoji point_up @emoji :point_up: from "point_up"
    + @emoji point_up_2 @emoji :point_up_2: from "point_up_2"
    + @emoji poland @emoji :poland: from "poland"
    + @emoji police_car @emoji :police_car: from "police_car"
    + @emoji policeman @emoji :policeman: from "policeman"
    + @emoji policewoman @emoji :policewoman: from "policewoman"
    + @emoji poodle @emoji :poodle: from "poodle"
    + @emoji poop @emoji :poop: from "poop"
    + @emoji popcorn @emoji :popcorn: from "popcorn"
    + @emoji portugal @emoji :portugal: from "portugal"
    + @emoji post_office @emoji :post_office: from "post_office"
    + @emoji postal_horn @emoji :postal_horn: from "postal_horn"
    + @emoji postbox @emoji :postbox: from "postbox"
    + @emoji potable_water @emoji :potable_water: from "potable_water"
    + @emoji potato @emoji :potato: from "potato"
    + @emoji pouch @emoji :pouch: from "pouch"
    + @emoji poultry_leg @emoji :poultry_leg: from "poultry_leg"
    + @emoji pound @emoji :pound: from "pound"
    + @emoji pout @emoji :pout: from "pout"
    + @emoji pouting_cat @emoji :pouting_cat: from "pouting_cat"
    + @emoji pouting_man @emoji :pouting_man: from "pouting_man"
    + @emoji pouting_woman @emoji :pouting_woman: from "pouting_woman"
    + @emoji pray @emoji :pray: from "pray"
    + @emoji prayer_beads @emoji :prayer_beads: from "prayer_beads"
    + @emoji pregnant_woman @emoji :pregnant_woman: from "pregnant_woman"
    + @emoji previous_track_button @emoji :previous_track_button: from "previous_track_button"
    + @emoji prince @emoji :prince: from "prince"
    + @emoji princess @emoji :princess: from "princess"
    + @emoji printer @emoji :printer: from "printer"
    + @emoji puerto_rico @emoji :puerto_rico: from "puerto_rico"
    + @emoji punch @emoji :punch: from "punch"
    + @emoji purple_heart @emoji :purple_heart: from "purple_heart"
    + @emoji purse @emoji :purse: from "purse"
    + @emoji pushpin @emoji :pushpin: from "pushpin"
    + @emoji put_litter_in_its_place @emoji :put_litter_in_its_place: from "put_litter_in_its_place"
    + @emoji qatar @emoji :qatar: from "qatar"
    + @emoji question @emoji :question: from "question"
    + @emoji rabbit @emoji :rabbit: from "rabbit"
    + @emoji rabbit2 @emoji :rabbit2: from "rabbit2"
    + @emoji racehorse @emoji :racehorse: from "racehorse"
    + @emoji racing_car @emoji :racing_car: from "racing_car"
    + @emoji radio @emoji :radio: from "radio"
    + @emoji radio_button @emoji :radio_button: from "radio_button"
    + @emoji radioactive @emoji :radioactive: from "radioactive"
    + @emoji rage @emoji :rage: from "rage"
    + @emoji railway_car @emoji :railway_car: from "railway_car"
    + @emoji railway_track @emoji :railway_track: from "railway_track"
    + @emoji rainbow @emoji :rainbow: from "rainbow"
    + @emoji rainbow_flag @emoji :rainbow_flag: from "rainbow_flag"
    + @emoji raised_back_of_hand @emoji :raised_back_of_hand: from "raised_back_of_hand"
    + @emoji raised_hand @emoji :raised_hand: from "raised_hand"
    + @emoji raised_hand_with_fingers_splayed @emoji :raised_hand_with_fingers_splayed: from "raised_hand_with_fingers_splayed"
    + @emoji raised_hands @emoji :raised_hands: from "raised_hands"
    + @emoji raising_hand @emoji :raising_hand: from "raising_hand"
    + @emoji raising_hand_man @emoji :raising_hand_man: from "raising_hand_man"
    + @emoji raising_hand_woman @emoji :raising_hand_woman: from "raising_hand_woman"
    + @emoji ram @emoji :ram: from "ram"
    + @emoji ramen @emoji :ramen: from "ramen"
    + @emoji rat @emoji :rat: from "rat"
    + @emoji record_button @emoji :record_button: from "record_button"
    + @emoji recycle @emoji :recycle: from "recycle"
    + @emoji red_car @emoji :red_car: from "red_car"
    + @emoji red_circle @emoji :red_circle: from "red_circle"
    + @emoji registered @emoji :registered: from "registered"
    + @emoji relaxed @emoji :relaxed: from "relaxed"
    + @emoji relieved @emoji :relieved: from "relieved"
    + @emoji reminder_ribbon @emoji :reminder_ribbon: from "reminder_ribbon"
    + @emoji repeat @emoji :repeat: from "repeat"
    + @emoji repeat_one @emoji :repeat_one: from "repeat_one"
    + @emoji rescue_worker_helmet @emoji :rescue_worker_helmet: from "rescue_worker_helmet"
    + @emoji restroom @emoji :restroom: from "restroom"
    + @emoji reunion @emoji :reunion: from "reunion"
    + @emoji revolving_hearts @emoji :revolving_hearts: from "revolving_hearts"
    + @emoji rewind @emoji :rewind: from "rewind"
    + @emoji rhinoceros @emoji :rhinoceros: from "rhinoceros"
    + @emoji ribbon @emoji :ribbon: from "ribbon"
    + @emoji rice @emoji :rice: from "rice"
    + @emoji rice_ball @emoji :rice_ball: from "rice_ball"
    + @emoji rice_cracker @emoji :rice_cracker: from "rice_cracker"
    + @emoji rice_scene @emoji :rice_scene: from "rice_scene"
    + @emoji right_anger_bubble @emoji :right_anger_bubble: from "right_anger_bubble"
    + @emoji ring @emoji :ring: from "ring"
    + @emoji robot @emoji :robot: from "robot"
    + @emoji rocket @emoji :rocket: from "rocket"
    + @emoji rofl @emoji :rofl: from "rofl"
    + @emoji roll_eyes @emoji :roll_eyes: from "roll_eyes"
    + @emoji roller_coaster @emoji :roller_coaster: from "roller_coaster"
    + @emoji romania @emoji :romania: from "romania"
    + @emoji rooster @emoji :rooster: from "rooster"
    + @emoji rose @emoji :rose: from "rose"
    + @emoji rosette @emoji :rosette: from "rosette"
    + @emoji rotating_light @emoji :rotating_light: from "rotating_light"
    + @emoji round_pushpin @emoji :round_pushpin: from "round_pushpin"
    + @emoji rowboat @emoji :rowboat: from "rowboat"
    + @emoji rowing_man @emoji :rowing_man: from "rowing_man"
    + @emoji rowing_woman @emoji :rowing_woman: from "rowing_woman"
    + @emoji ru @emoji :ru: from "ru"
    + @emoji rugby_football @emoji :rugby_football: from "rugby_football"
    + @emoji runner @emoji :runner: from "runner"
    + @emoji running @emoji :running: from "running"
    + @emoji running_man @emoji :running_man: from "running_man"
    + @emoji running_shirt_with_sash @emoji :running_shirt_with_sash: from "running_shirt_with_sash"
    + @emoji running_woman @emoji :running_woman: from "running_woman"
    + @emoji rwanda @emoji :rwanda: from "rwanda"
    + @emoji sa @emoji :sa: from "sa"
    + @emoji sagittarius @emoji :sagittarius: from "sagittarius"
    + @emoji sailboat @emoji :sailboat: from "sailboat"
    + @emoji sake @emoji :sake: from "sake"
    + @emoji samoa @emoji :samoa: from "samoa"
    + @emoji san_marino @emoji :san_marino: from "san_marino"
    + @emoji sandal @emoji :sandal: from "sandal"
    + @emoji santa @emoji :santa: from "santa"
    + @emoji sao_tome_principe @emoji :sao_tome_principe: from "sao_tome_principe"
    + @emoji satellite @emoji :satellite: from "satellite"
    + @emoji satisfied @emoji :satisfied: from "satisfied"
    + @emoji saudi_arabia @emoji :saudi_arabia: from "saudi_arabia"
    + @emoji saxophone @emoji :saxophone: from "saxophone"
    + @emoji school @emoji :school: from "school"
    + @emoji school_satchel @emoji :school_satchel: from "school_satchel"
    + @emoji scissors @emoji :scissors: from "scissors"
    + @emoji scorpion @emoji :scorpion: from "scorpion"
    + @emoji scorpius @emoji :scorpius: from "scorpius"
    + @emoji scream @emoji :scream: from "scream"
    + @emoji scream_cat @emoji :scream_cat: from "scream_cat"
    + @emoji scroll @emoji :scroll: from "scroll"
    + @emoji seat @emoji :seat: from "seat"
    + @emoji secret @emoji :secret: from "secret"
    + @emoji see_no_evil @emoji :see_no_evil: from "see_no_evil"
    + @emoji seedling @emoji :seedling: from "seedling"
    + @emoji selfie @emoji :selfie: from "selfie"
    + @emoji senegal @emoji :senegal: from "senegal"
    + @emoji serbia @emoji :serbia: from "serbia"
    + @emoji seven @emoji :seven: from "seven"
    + @emoji seychelles @emoji :seychelles: from "seychelles"
    + @emoji shallow_pan_of_food @emoji :shallow_pan_of_food: from "shallow_pan_of_food"
    + @emoji shamrock @emoji :shamrock: from "shamrock"
    + @emoji shark @emoji :shark: from "shark"
    + @emoji shaved_ice @emoji :shaved_ice: from "shaved_ice"
    + @emoji sheep @emoji :sheep: from "sheep"
    + @emoji shell @emoji :shell: from "shell"
    + @emoji shield @emoji :shield: from "shield"
    + @emoji shinto_shrine @emoji :shinto_shrine: from "shinto_shrine"
    + @emoji ship @emoji :ship: from "ship"
    + @emoji shirt @emoji :shirt: from "shirt"
    + @emoji shit @emoji :shit: from "shit"
    + @emoji shoe @emoji :shoe: from "shoe"
    + @emoji shopping @emoji :shopping: from "shopping"
    + @emoji shopping_cart @emoji :shopping_cart: from "shopping_cart"
    + @emoji shower @emoji :shower: from "shower"
    + @emoji shrimp @emoji :shrimp: from "shrimp"
    + @emoji sierra_leone @emoji :sierra_leone: from "sierra_leone"
    + @emoji signal_strength @emoji :signal_strength: from "signal_strength"
    + @emoji singapore @emoji :singapore: from "singapore"
    + @emoji sint_maarten @emoji :sint_maarten: from "sint_maarten"
    + @emoji six @emoji :six: from "six"
    + @emoji six_pointed_star @emoji :six_pointed_star: from "six_pointed_star"
    + @emoji ski @emoji :ski: from "ski"
    + @emoji skier @emoji :skier: from "skier"
    + @emoji skull @emoji :skull: from "skull"
    + @emoji skull_and_crossbones @emoji :skull_and_crossbones: from "skull_and_crossbones"
    + @emoji sleeping @emoji :sleeping: from "sleeping"
    + @emoji sleeping_bed @emoji :sleeping_bed: from "sleeping_bed"
    + @emoji sleepy @emoji :sleepy: from "sleepy"
    + @emoji slightly_frowning_face @emoji :slightly_frowning_face: from "slightly_frowning_face"
    + @emoji slightly_smiling_face @emoji :slightly_smiling_face: from "slightly_smiling_face"
    + @emoji slot_machine @emoji :slot_machine: from "slot_machine"
    + @emoji slovakia @emoji :slovakia: from "slovakia"
    + @emoji slovenia @emoji :slovenia: from "slovenia"
    + @emoji small_airplane @emoji :small_airplane: from "small_airplane"
    + @emoji small_blue_diamond @emoji :small_blue_diamond: from "small_blue_diamond"
    + @emoji small_orange_diamond @emoji :small_orange_diamond: from "small_orange_diamond"
    + @emoji small_red_triangle @emoji :small_red_triangle: from "small_red_triangle"
    + @emoji small_red_triangle_down @emoji :small_red_triangle_down: from "small_red_triangle_down"
    + @emoji smile @emoji :smile: from "smile"
    + @emoji smile_cat @emoji :smile_cat: from "smile_cat"
    + @emoji smiley @emoji :smiley: from "smiley"
    + @emoji smiley_cat @emoji :smiley_cat: from "smiley_cat"
    + @emoji smiling_imp @emoji :smiling_imp: from "smiling_imp"
    + @emoji smirk @emoji :smirk: from "smirk"
    + @emoji smirk_cat @emoji :smirk_cat: from "smirk_cat"
    + @emoji smoking @emoji :smoking: from "smoking"
    + @emoji snail @emoji :snail: from "snail"
    + @emoji snake @emoji :snake: from "snake"
    + @emoji sneezing_face @emoji :sneezing_face: from "sneezing_face"
    + @emoji snowboarder @emoji :snowboarder: from "snowboarder"
    + @emoji snowflake @emoji :snowflake: from "snowflake"
    + @emoji snowman @emoji :snowman: from "snowman"
    + @emoji snowman_with_snow @emoji :snowman_with_snow: from "snowman_with_snow"
    + @emoji sob @emoji :sob: from "sob"
    + @emoji soccer @emoji :soccer: from "soccer"
    + @emoji solomon_islands @emoji :solomon_islands: from "solomon_islands"
    + @emoji somalia @emoji :somalia: from "somalia"
    + @emoji soon @emoji :soon: from "soon"
    + @emoji sos @emoji :sos: from "sos"
    + @emoji sound @emoji :sound: from "sound"
    + @emoji south_africa @emoji :south_africa: from "south_africa"
    + @emoji south_georgia_south_sandwich_islands @emoji :south_georgia_south_sandwich_islands: from "south_georgia_south_sandwich_islands"
    + @emoji south_sudan @emoji :south_sudan: from "south_sudan"
    + @emoji space_invader @emoji :space_invader: from "space_invader"
    + @emoji spades @emoji :spades: from "spades"
    + @emoji spaghetti @emoji :spaghetti: from "spaghetti"
    + @emoji sparkle @emoji :sparkle: from "sparkle"
    + @emoji sparkler @emoji :sparkler: from "sparkler"
    + @emoji sparkles @emoji :sparkles: from "sparkles"
    + @emoji sparkling_heart @emoji :sparkling_heart: from "sparkling_heart"
    + @emoji speak_no_evil @emoji :speak_no_evil: from "speak_no_evil"
    + @emoji speaker @emoji :speaker: from "speaker"
    + @emoji speaking_head @emoji :speaking_head: from "speaking_head"
    + @emoji speech_balloon @emoji :speech_balloon: from "speech_balloon"
    + @emoji speedboat @emoji :speedboat: from "speedboat"
    + @emoji spider @emoji :spider: from "spider"
    + @emoji spider_web @emoji :spider_web: from "spider_web"
    + @emoji spiral_calendar @emoji :spiral_calendar: from "spiral_calendar"
    + @emoji spiral_notepad @emoji :spiral_notepad: from "spiral_notepad"
    + @emoji spoon @emoji :spoon: from "spoon"
    + @emoji squid @emoji :squid: from "squid"
    + @emoji sri_lanka @emoji :sri_lanka: from "sri_lanka"
    + @emoji st_barthelemy @emoji :st_barthelemy: from "st_barthelemy"
    + @emoji st_helena @emoji :st_helena: from "st_helena"
    + @emoji st_kitts_nevis @emoji :st_kitts_nevis: from "st_kitts_nevis"
    + @emoji st_lucia @emoji :st_lucia: from "st_lucia"
    + @emoji st_pierre_miquelon @emoji :st_pierre_miquelon: from "st_pierre_miquelon"
    + @emoji st_vincent_grenadines @emoji :st_vincent_grenadines: from "st_vincent_grenadines"
    + @emoji stadium @emoji :stadium: from "stadium"
    + @emoji star @emoji :star: from "star"
    + @emoji star2 @emoji :star2: from "star2"
    + @emoji star_and_crescent @emoji :star_and_crescent: from "star_and_crescent"
    + @emoji star_of_david @emoji :star_of_david: from "star_of_david"
    + @emoji stars @emoji :stars: from "stars"
    + @emoji station @emoji :station: from "station"
    + @emoji statue_of_liberty @emoji :statue_of_liberty: from "statue_of_liberty"
    + @emoji steam_locomotive @emoji :steam_locomotive: from "steam_locomotive"
    + @emoji stew @emoji :stew: from "stew"
    + @emoji stop_button @emoji :stop_button: from "stop_button"
    + @emoji stop_sign @emoji :stop_sign: from "stop_sign"
    + @emoji stopwatch @emoji :stopwatch: from "stopwatch"
    + @emoji straight_ruler @emoji :straight_ruler: from "straight_ruler"
    + @emoji strawberry @emoji :strawberry: from "strawberry"
    + @emoji stuck_out_tongue @emoji :stuck_out_tongue: from "stuck_out_tongue"
    + @emoji stuck_out_tongue_closed_eyes @emoji :stuck_out_tongue_closed_eyes: from "stuck_out_tongue_closed_eyes"
    + @emoji stuck_out_tongue_winking_eye @emoji :stuck_out_tongue_winking_eye: from "stuck_out_tongue_winking_eye"
    + @emoji studio_microphone @emoji :studio_microphone: from "studio_microphone"
    + @emoji stuffed_flatbread @emoji :stuffed_flatbread: from "stuffed_flatbread"
    + @emoji sudan @emoji :sudan: from "sudan"
    + @emoji sun_behind_large_cloud @emoji :sun_behind_large_cloud: from "sun_behind_large_cloud"
    + @emoji sun_behind_rain_cloud @emoji :sun_behind_rain_cloud: from "sun_behind_rain_cloud"
    + @emoji sun_behind_small_cloud @emoji :sun_behind_small_cloud: from "sun_behind_small_cloud"
    + @emoji sun_with_face @emoji :sun_with_face: from "sun_with_face"
    + @emoji sunflower @emoji :sunflower: from "sunflower"
    + @emoji sunglasses @emoji :sunglasses: from "sunglasses"
    + @emoji sunny @emoji :sunny: from "sunny"
    + @emoji sunrise @emoji :sunrise: from "sunrise"
    + @emoji sunrise_over_mountains @emoji :sunrise_over_mountains: from "sunrise_over_mountains"
    + @emoji surfer @emoji :surfer: from "surfer"
    + @emoji surfing_man @emoji :surfing_man: from "surfing_man"
    + @emoji surfing_woman @emoji :surfing_woman: from "surfing_woman"
    + @emoji suriname @emoji :suriname: from "suriname"
    + @emoji sushi @emoji :sushi: from "sushi"
    + @emoji suspension_railway @emoji :suspension_railway: from "suspension_railway"
    + @emoji swaziland @emoji :swaziland: from "swaziland"
    + @emoji sweat @emoji :sweat: from "sweat"
    + @emoji sweat_drops @emoji :sweat_drops: from "sweat_drops"
    + @emoji sweat_smile @emoji :sweat_smile: from "sweat_smile"
    + @emoji sweden @emoji :sweden: from "sweden"
    + @emoji sweet_potato @emoji :sweet_potato: from "sweet_potato"
    + @emoji swimmer @emoji :swimmer: from "swimmer"
    + @emoji swimming_man @emoji :swimming_man: from "swimming_man"
    + @emoji swimming_woman @emoji :swimming_woman: from "swimming_woman"
    + @emoji switzerland @emoji :switzerland: from "switzerland"
    + @emoji symbols @emoji :symbols: from "symbols"
    + @emoji synagogue @emoji :synagogue: from "synagogue"
    + @emoji syria @emoji :syria: from "syria"
    + @emoji syringe @emoji :syringe: from "syringe"
    + @emoji taco @emoji :taco: from "taco"
    + @emoji tada @emoji :tada: from "tada"
    + @emoji taiwan @emoji :taiwan: from "taiwan"
    + @emoji tajikistan @emoji :tajikistan: from "tajikistan"
    + @emoji tanabata_tree @emoji :tanabata_tree: from "tanabata_tree"
    + @emoji tangerine @emoji :tangerine: from "tangerine"
    + @emoji tanzania @emoji :tanzania: from "tanzania"
    + @emoji taurus @emoji :taurus: from "taurus"
    + @emoji taxi @emoji :taxi: from "taxi"
    + @emoji tea @emoji :tea: from "tea"
    + @emoji telephone @emoji :telephone: from "telephone"
    + @emoji telephone_receiver @emoji :telephone_receiver: from "telephone_receiver"
    + @emoji telescope @emoji :telescope: from "telescope"
    + @emoji tennis @emoji :tennis: from "tennis"
    + @emoji tent @emoji :tent: from "tent"
    + @emoji thailand @emoji :thailand: from "thailand"
    + @emoji thermometer @emoji :thermometer: from "thermometer"
    + @emoji thinking @emoji :thinking: from "thinking"
    + @emoji thought_balloon @emoji :thought_balloon: from "thought_balloon"
    + @emoji three @emoji :three: from "three"
    + @emoji thumbsdown @emoji :thumbsdown: from "thumbsdown"
    + @emoji thumbsup @emoji :thumbsup: from "thumbsup"
    + @emoji ticket @emoji :ticket: from "ticket"
    + @emoji tickets @emoji :tickets: from "tickets"
    + @emoji tiger @emoji :tiger: from "tiger"
    + @emoji tiger2 @emoji :tiger2: from "tiger2"
    + @emoji timer_clock @emoji :timer_clock: from "timer_clock"
    + @emoji timor_leste @emoji :timor_leste: from "timor_leste"
    + @emoji tipping_hand_man @emoji :tipping_hand_man: from "tipping_hand_man"
    + @emoji tipping_hand_woman @emoji :tipping_hand_woman: from "tipping_hand_woman"
    + @emoji tired_face @emoji :tired_face: from "tired_face"
    + @emoji tm @emoji :tm: from "tm"
    + @emoji togo @emoji :togo: from "togo"
    + @emoji toilet @emoji :toilet: from "toilet"
    + @emoji tokelau @emoji :tokelau: from "tokelau"
    + @emoji tokyo_tower @emoji :tokyo_tower: from "tokyo_tower"
    + @emoji tomato @emoji :tomato: from "tomato"
    + @emoji tonga @emoji :tonga: from "tonga"
    + @emoji tongue @emoji :tongue: from "tongue"
    + @emoji top @emoji :top: from "top"
    + @emoji tophat @emoji :tophat: from "tophat"
    + @emoji tornado @emoji :tornado: from "tornado"
    + @emoji tr @emoji :tr: from "tr"
    + @emoji trackball @emoji :trackball: from "trackball"
    + @emoji tractor @emoji :tractor: from "tractor"
    + @emoji traffic_light @emoji :traffic_light: from "traffic_light"
    + @emoji train @emoji :train: from "train"
    + @emoji train2 @emoji :train2: from "train2"
    + @emoji tram @emoji :tram: from "tram"
    + @emoji triangular_flag_on_post @emoji :triangular_flag_on_post: from "triangular_flag_on_post"
    + @emoji triangular_ruler @emoji :triangular_ruler: from "triangular_ruler"
    + @emoji trident @emoji :trident: from "trident"
    + @emoji trinidad_tobago @emoji :trinidad_tobago: from "trinidad_tobago"
    + @emoji triumph @emoji :triumph: from "triumph"
    + @emoji trolleybus @emoji :trolleybus: from "trolleybus"
    + @emoji trophy @emoji :trophy: from "trophy"
    + @emoji tropical_drink @emoji :tropical_drink: from "tropical_drink"
    + @emoji tropical_fish @emoji :tropical_fish: from "tropical_fish"
    + @emoji truck @emoji :truck: from "truck"
    + @emoji trumpet @emoji :trumpet: from "trumpet"
    + @emoji tshirt @emoji :tshirt: from "tshirt"
    + @emoji tulip @emoji :tulip: from "tulip"
    + @emoji tumbler_glass @emoji :tumbler_glass: from "tumbler_glass"
    + @emoji tunisia @emoji :tunisia: from "tunisia"
    + @emoji turkey @emoji :turkey: from "turkey"
    + @emoji turkmenistan @emoji :turkmenistan: from "turkmenistan"
    + @emoji turks_caicos_islands @emoji :turks_caicos_islands: from "turks_caicos_islands"
    + @emoji turtle @emoji :turtle: from "turtle"
    + @emoji tuvalu @emoji :tuvalu: from "tuvalu"
    + @emoji tv @emoji :tv: from "tv"
    + @emoji twisted_rightwards_arrows @emoji :twisted_rightwards_arrows: from "twisted_rightwards_arrows"
    + @emoji two @emoji :two: from "two"
    + @emoji two_hearts @emoji :two_hearts: from "two_hearts"
    + @emoji two_men_holding_hands @emoji :two_men_holding_hands: from "two_men_holding_hands"
    + @emoji two_women_holding_hands @emoji :two_women_holding_hands: from "two_women_holding_hands"
    + @emoji u5272 @emoji :u5272: from "u5272"
    + @emoji u5408 @emoji :u5408: from "u5408"
    + @emoji u55b6 @emoji :u55b6: from "u55b6"
    + @emoji u6307 @emoji :u6307: from "u6307"
    + @emoji u6708 @emoji :u6708: from "u6708"
    + @emoji u6709 @emoji :u6709: from "u6709"
    + @emoji u6e80 @emoji :u6e80: from "u6e80"
    + @emoji u7121 @emoji :u7121: from "u7121"
    + @emoji u7533 @emoji :u7533: from "u7533"
    + @emoji u7981 @emoji :u7981: from "u7981"
    + @emoji u7a7a @emoji :u7a7a: from "u7a7a"
    + @emoji uganda @emoji :uganda: from "uganda"
    + @emoji uk @emoji :uk: from "uk"
    + @emoji ukraine @emoji :ukraine: from "ukraine"
    + @emoji umbrella @emoji :umbrella: from "umbrella"
    + @emoji unamused @emoji :unamused: from "unamused"
    + @emoji underage @emoji :underage: from "underage"
    + @emoji unicorn @emoji :unicorn: from "unicorn"
    + @emoji united_arab_emirates @emoji :united_arab_emirates: from "united_arab_emirates"
    + @emoji unlock @emoji :unlock: from "unlock"
    + @emoji up @emoji :up: from "up"
    + @emoji upside_down_face @emoji :upside_down_face: from "upside_down_face"
    + @emoji uruguay @emoji :uruguay: from "uruguay"
    + @emoji us @emoji :us: from "us"
    + @emoji us_virgin_islands @emoji :us_virgin_islands: from "us_virgin_islands"
    + @emoji uzbekistan @emoji :uzbekistan: from "uzbekistan"
    + @emoji v @emoji :v: from "v"
    + @emoji vanuatu @emoji :vanuatu: from "vanuatu"
    + @emoji vatican_city @emoji :vatican_city: from "vatican_city"
    + @emoji venezuela @emoji :venezuela: from "venezuela"
    + @emoji vertical_traffic_light @emoji :vertical_traffic_light: from "vertical_traffic_light"
    + @emoji vhs @emoji :vhs: from "vhs"
    + @emoji vibration_mode @emoji :vibration_mode: from "vibration_mode"
    + @emoji video_camera @emoji :video_camera: from "video_camera"
    + @emoji video_game @emoji :video_game: from "video_game"
    + @emoji vietnam @emoji :vietnam: from "vietnam"
    + @emoji violin @emoji :violin: from "violin"
    + @emoji virgo @emoji :virgo: from "virgo"
    + @emoji volcano @emoji :volcano: from "volcano"
    + @emoji volleyball @emoji :volleyball: from "volleyball"
    + @emoji vs @emoji :vs: from "vs"
    + @emoji vulcan_salute @emoji :vulcan_salute: from "vulcan_salute"
    + @emoji walking @emoji :walking: from "walking"
    + @emoji walking_man @emoji :walking_man: from "walking_man"
    + @emoji walking_woman @emoji :walking_woman: from "walking_woman"
    + @emoji wallis_futuna @emoji :wallis_futuna: from "wallis_futuna"
    + @emoji waning_crescent_moon @emoji :waning_crescent_moon: from "waning_crescent_moon"
    + @emoji waning_gibbous_moon @emoji :waning_gibbous_moon: from "waning_gibbous_moon"
    + @emoji warning @emoji :warning: from "warning"
    + @emoji wastebasket @emoji :wastebasket: from "wastebasket"
    + @emoji watch @emoji :watch: from "watch"
    + @emoji water_buffalo @emoji :water_buffalo: from "water_buffalo"
    + @emoji watermelon @emoji :watermelon: from "watermelon"
    + @emoji wave @emoji :wave: from "wave"
    + @emoji wavy_dash @emoji :wavy_dash: from "wavy_dash"
    + @emoji waxing_crescent_moon @emoji :waxing_crescent_moon: from "waxing_crescent_moon"
    + @emoji waxing_gibbous_moon @emoji :waxing_gibbous_moon: from "waxing_gibbous_moon"
    + @emoji wc @emoji :wc: from "wc"
    + @emoji weary @emoji :weary: from "weary"
    + @emoji wedding @emoji :wedding: from "wedding"
    + @emoji weight_lifting_man @emoji :weight_lifting_man: from "weight_lifting_man"
    + @emoji weight_lifting_woman @emoji :weight_lifting_woman: from "weight_lifting_woman"
    + @emoji western_sahara @emoji :western_sahara: from "western_sahara"
    + @emoji whale @emoji :whale: from "whale"
    + @emoji whale2 @emoji :whale2: from "whale2"
    + @emoji wheel_of_dharma @emoji :wheel_of_dharma: from "wheel_of_dharma"
    + @emoji wheelchair @emoji :wheelchair: from "wheelchair"
    + @emoji white_check_mark @emoji :white_check_mark: from "white_check_mark"
    + @emoji white_circle @emoji :white_circle: from "white_circle"
    + @emoji white_flag @emoji :white_flag: from "white_flag"
    + @emoji white_flower @emoji :white_flower: from "white_flower"
    + @emoji white_large_square @emoji :white_large_square: from "white_large_square"
    + @emoji white_medium_small_square @emoji :white_medium_small_square: from "white_medium_small_square"
    + @emoji white_medium_square @emoji :white_medium_square: from "white_medium_square"
    + @emoji white_small_square @emoji :white_small_square: from "white_small_square"
    + @emoji white_square_button @emoji :white_square_button: from "white_square_button"
    + @emoji wilted_flower @emoji :wilted_flower: from "wilted_flower"
    + @emoji wind_chime @emoji :wind_chime: from "wind_chime"
    + @emoji wind_face @emoji :wind_face: from "wind_face"
    + @emoji wine_glass @emoji :wine_glass: from "wine_glass"
    + @emoji wink @emoji :wink: from "wink"
    + @emoji wolf @emoji :wolf: from "wolf"
    + @emoji woman @emoji :woman: from "woman"
    + @emoji woman_artist @emoji :woman_artist: from "woman_artist"
    + @emoji woman_astronaut @emoji :woman_astronaut: from "woman_astronaut"
    + @emoji woman_cartwheeling @emoji :woman_cartwheeling: from "woman_cartwheeling"
    + @emoji woman_cook @emoji :woman_cook: from "woman_cook"
    + @emoji woman_facepalming @emoji :woman_facepalming: from "woman_facepalming"
    + @emoji woman_factory_worker @emoji :woman_factory_worker: from "woman_factory_worker"
    + @emoji woman_farmer @emoji :woman_farmer: from "woman_farmer"
    + @emoji woman_firefighter @emoji :woman_firefighter: from "woman_firefighter"
    + @emoji woman_health_worker @emoji :woman_health_worker: from "woman_health_worker"
    + @emoji woman_judge @emoji :woman_judge: from "woman_judge"
    + @emoji woman_juggling @emoji :woman_juggling: from "woman_juggling"
    + @emoji woman_mechanic @emoji :woman_mechanic: from "woman_mechanic"
    + @emoji woman_office_worker @emoji :woman_office_worker: from "woman_office_worker"
    + @emoji woman_pilot @emoji :woman_pilot: from "woman_pilot"
    + @emoji woman_playing_handball @emoji :woman_playing_handball: from "woman_playing_handball"
    + @emoji woman_playing_water_polo @emoji :woman_playing_water_polo: from "woman_playing_water_polo"
    + @emoji woman_scientist @emoji :woman_scientist: from "woman_scientist"
    + @emoji woman_shrugging @emoji :woman_shrugging: from "woman_shrugging"
    + @emoji woman_singer @emoji :woman_singer: from "woman_singer"
    + @emoji woman_student @emoji :woman_student: from "woman_student"
    + @emoji woman_teacher @emoji :woman_teacher: from "woman_teacher"
    + @emoji woman_technologist @emoji :woman_technologist: from "woman_technologist"
    + @emoji woman_with_turban @emoji :woman_with_turban: from "woman_with_turban"
    + @emoji womans_clothes @emoji :womans_clothes: from "womans_clothes"
    + @emoji womans_hat @emoji :womans_hat: from "womans_hat"
    + @emoji women_wrestling @emoji :women_wrestling: from "women_wrestling"
    + @emoji womens @emoji :womens: from "womens"
    + @emoji world_map @emoji :world_map: from "world_map"
    + @emoji worried @emoji :worried: from "worried"
    + @emoji wrench @emoji :wrench: from "wrench"
    + @emoji writing_hand @emoji :writing_hand: from "writing_hand"
    + @emoji x @emoji :x: from "x"
    + @emoji yellow_heart @emoji :yellow_heart: from "yellow_heart"
    + @emoji yemen @emoji :yemen: from "yemen"
    + @emoji yen @emoji :yen: from "yen"
    + @emoji yin_yang @emoji :yin_yang: from "yin_yang"
    + @emoji yum @emoji :yum: from "yum"
    + @emoji zambia @emoji :zambia: from "zambia"
    + @emoji zap @emoji :zap: from "zap"
    + @emoji zero @emoji :zero: from "zero"
    + @emoji zimbabwe @emoji :zimbabwe: from "zimbabwe"
    + @emoji zipper_mouth_face @emoji :zipper_mouth_face: from "zipper_mouth_face"
    + @emoji zzz @emoji :zzz: from "zzz"
    + */ diff --git a/tests/upstream-test-suite/077/077__no__xml__namespace__members__in__file__scope_8h.xml b/tests/upstream-test-suite/077/077__no__xml__namespace__members__in__file__scope_8h.xml new file mode 100644 index 0000000..9825cc1 --- /dev/null +++ b/tests/upstream-test-suite/077/077__no__xml__namespace__members__in__file__scope_8h.xml @@ -0,0 +1,12 @@ + + + + 077_no_xml_namespace_members_in_file_scope.h + Namespace + + + + + + + diff --git a/tests/upstream-test-suite/077_no_xml_namespace_members_in_file_scope.h b/tests/upstream-test-suite/077_no_xml_namespace_members_in_file_scope.h new file mode 100644 index 0000000..bf3dc64 --- /dev/null +++ b/tests/upstream-test-suite/077_no_xml_namespace_members_in_file_scope.h @@ -0,0 +1,16 @@ +// objective: test that namespace members are not put to file docs by default +// check: 077__no__xml__namespace__members__in__file__scope_8h.xml + +namespace Namespace { + +/** +@brief A function + +Detailed documentation. +*/ +void foo(); + +/** @brief An enum */ +enum class Enum {}; + +} diff --git a/tests/upstream-test-suite/078/078__xml__namespace__members__in__file__scope_8h.xml b/tests/upstream-test-suite/078/078__xml__namespace__members__in__file__scope_8h.xml new file mode 100644 index 0000000..e0a0343 --- /dev/null +++ b/tests/upstream-test-suite/078/078__xml__namespace__members__in__file__scope_8h.xml @@ -0,0 +1,43 @@ + + + + 078_xml_namespace_members_in_file_scope.h + Namespace + + + + Enum + + An enum. + + + + + + + + + + + void + void Namespace::foo + () + foo + + A function. + + + Detailed documentation. + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/078_xml_namespace_members_in_file_scope.h b/tests/upstream-test-suite/078_xml_namespace_members_in_file_scope.h new file mode 100644 index 0000000..f456464 --- /dev/null +++ b/tests/upstream-test-suite/078_xml_namespace_members_in_file_scope.h @@ -0,0 +1,17 @@ +// objective: test that namespace members are put to file docs when enabled +// check: 078__xml__namespace__members__in__file__scope_8h.xml +// config: XML_NS_MEMB_FILE_SCOPE = YES + +namespace Namespace { + +/** +@brief A function + +Detailed documentation. +*/ +void foo(); + +/** @brief An enum */ +enum class Enum {}; + +} diff --git a/tests/upstream-test-suite/Doxyfile b/tests/upstream-test-suite/Doxyfile new file mode 100644 index 0000000..e1486d3 --- /dev/null +++ b/tests/upstream-test-suite/Doxyfile @@ -0,0 +1,7 @@ +# start with defaults +QUIET = YES +GENERATE_HTML = NO +GENERATE_LATEX = NO +GENERATE_XML = YES +XML_PROGRAMLISTING = NO +CASE_SENSE_NAMES = NO diff --git a/tests/upstream-test-suite/Makefile b/tests/upstream-test-suite/Makefile new file mode 100644 index 0000000..30ee4e2 --- /dev/null +++ b/tests/upstream-test-suite/Makefile @@ -0,0 +1,64 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /CoreOS/patch/Sanity/upstream-test-suite +# Description: tests upstream test suite +# Author: Than Ngo +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2019 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/CoreOS/patch/Sanity/upstream-test-suite +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Than Ngo " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Executes upstream test suite" >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 30m" >> $(METADATA) + @echo "RunFor: doxygen" >> $(METADATA) + @echo "Requires: doxygen python3" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/upstream-test-suite/PURPOSE b/tests/upstream-test-suite/PURPOSE new file mode 100644 index 0000000..62ae14b --- /dev/null +++ b/tests/upstream-test-suite/PURPOSE @@ -0,0 +1,8 @@ +PURPOSE of /CoreOS/patch/Sanity/upstream-test-suite +Description: smoke test, funktion test and upstream test suite +Author: Than Ngo + +tests following scenarios: + * smoke test + * funktion test + * run the upstream test suite diff --git a/tests/upstream-test-suite/README.txt b/tests/upstream-test-suite/README.txt new file mode 100644 index 0000000..39b2345 --- /dev/null +++ b/tests/upstream-test-suite/README.txt @@ -0,0 +1,66 @@ +Doxygen regression test suite +============================ + +This directory contains a set of regression tests. Each test consists of a +file starting with a 3 digit number and a corresponding directory whose name +has the same 3 digit number. The directory contains one or more reference +files that are compared against the XML output produced by doxygen. If the +result is the same, there is no regression and the test passes. If there is a +difference the test fails and the difference (in diff -u format) will be shown. +It is also possible to see whether or not the test can be built to a xhtml set +of files (and tested against a DTD), it is also possible to create a pdf file +for each test to see if the LaTeX / pdf generation is possible. + +The runtest.py script responsible for running the tests takes a number of +optional parameters: + --updateref update the reference data for a test + --doxygen [DOXYGEN] path/name of the doxygen executable + --xmllint [XMLLINT] path/name of the xmllint executable + --id IDS [IDS ...] id of the test to perform + --start_id START_ID run tests starting with number n + --end_id END_ID run tests ending with number n + --all perform all tests + --inputdir [INPUTDIR] + input directory containing the tests + --outputdir [OUTPUTDIR] + output directory to write the doxygen output to + --noredir disable redirection of doxygen warnings + --xml create xml output and check + --rtf create rtf output + --docbook create docbook output and check with xmllint + --xhtml create xhtml output and check with xmllint + --pdf create LaTeX output and create pdf from it + --subdirs use the configuration parameter CREATE_SUBDIRS=YES + --keep keep result directories + --cfg CFGS [CFGS ...] run test with extra doxygen configuration settings + (the option may be specified multiple times +In case neither --xml, --pdf, --rtf, --docbook or --xhtml is used the default is set to --xml. + +The runtest.pl has the following dependencies on 3rd party tools: +- python to run the script +- xmllint to normalize the XML output +- diff to show the differences in case a test fails + +Each test file can have a number of special comment lines that are extracted by +the runtest.pl script and take the form: +// : 'argument' +Where can be one of: +- objective: 'argument' provides the objective for the test (i.e. its purpose) +- check: 'argument' names a file that is generated by doxygen, which should + be compared against the reference. +- config: 'argument' is a line that is added to the default Doxyfile used to + run doxygen on the test file. + +Example to run all tests: + python runtest.py + +Example to run a test + python runtest.py -id 10 + +Example to update the reference files for a test + python runtest.py -updateref -id 10 + +There is also a CMakeLists.txt, which can be used from the build directory +to run all tests by simply invoking 'make tests', to use the specific options use +the flag TEST_FLAGS with make + e.g. make tests TEST_FLAGS="--id=5 --id=10 --pdf --xhtml" diff --git a/tests/upstream-test-suite/_057_caller_graphs.tcl b/tests/upstream-test-suite/_057_caller_graphs.tcl new file mode 100644 index 0000000..24b9c20 --- /dev/null +++ b/tests/upstream-test-suite/_057_caller_graphs.tcl @@ -0,0 +1,4 @@ +proc inFileB args { + array set info [info frame 0]; puts -nonewline ->$info(proc) + inFileA +} diff --git a/tests/upstream-test-suite/dtd/xhtml-lat1.ent b/tests/upstream-test-suite/dtd/xhtml-lat1.ent new file mode 100755 index 0000000..ffee223 --- /dev/null +++ b/tests/upstream-test-suite/dtd/xhtml-lat1.ent @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/dtd/xhtml-special.ent b/tests/upstream-test-suite/dtd/xhtml-special.ent new file mode 100755 index 0000000..ca358b2 --- /dev/null +++ b/tests/upstream-test-suite/dtd/xhtml-special.ent @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/dtd/xhtml-symbol.ent b/tests/upstream-test-suite/dtd/xhtml-symbol.ent new file mode 100755 index 0000000..63c2abf --- /dev/null +++ b/tests/upstream-test-suite/dtd/xhtml-symbol.ent @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/dtd/xhtml1-strict.dtd b/tests/upstream-test-suite/dtd/xhtml1-strict.dtd new file mode 100755 index 0000000..2927b9e --- /dev/null +++ b/tests/upstream-test-suite/dtd/xhtml1-strict.dtd @@ -0,0 +1,978 @@ + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/dtd/xhtml1-transitional.dtd b/tests/upstream-test-suite/dtd/xhtml1-transitional.dtd new file mode 100755 index 0000000..4ac1571 --- /dev/null +++ b/tests/upstream-test-suite/dtd/xhtml1-transitional.dtd @@ -0,0 +1,1220 @@ + + + + + + +%HTMLlat1; + + +%HTMLsymbol; + + +%HTMLspecial; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/upstream-test-suite/example_test.cpp b/tests/upstream-test-suite/example_test.cpp new file mode 100644 index 0000000..a117b63 --- /dev/null +++ b/tests/upstream-test-suite/example_test.cpp @@ -0,0 +1,8 @@ +void main() +{ + const char* a = "Some special character here:  "; + + Test t; + t.example(); +} + diff --git a/tests/upstream-test-suite/runtest.sh b/tests/upstream-test-suite/runtest.sh new file mode 100755 index 0000000..127806b --- /dev/null +++ b/tests/upstream-test-suite/runtest.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/patch/Sanity/upstream-test-suite +# Description: Executes the upstream test suite comming with the package +# Author: Than Ngo +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2010 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/bin/rhts-environment.sh || exit 1 +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="doxygen" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp -a * $TmpDir" 0 "Copy files to $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest "test --version" + rlRun "VERSION=\$( rpm -q --qf '%{VERSION}' doxygen )" + rlRun -s "doxygen --version" + rlAssertGrep "${VERSION}" $rlRun_LOG + rlPhaseEnd + + rlPhaseStartTest "test upstream test suite" + rlRun "python3 runtests.py >out" 0 "python3 runtests.py" + rlRun "[ -s out ]" 0 "Output should not be empty" + rlRun "cat out" 0 "Output of the test suite" + rlAssertGrep 'All tests passed!' out + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -fr $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/upstream-test-suite/runtests.py b/tests/upstream-test-suite/runtests.py new file mode 100644 index 0000000..452c36e --- /dev/null +++ b/tests/upstream-test-suite/runtests.py @@ -0,0 +1,424 @@ +#!/usr/bin/python + +from __future__ import print_function +import argparse, glob, itertools, re, shutil, os, sys + +config_reg = re.compile('.*\/\/\s*(?P\S+):\s*(?P.*)$') + +class Tester: + def __init__(self,args,test): + self.args = args + self.test = test + self.update = args.updateref + self.config = self.get_config() + self.test_name = '[%s]: %s' % (self.test,self.config['objective'][0]) + self.test_id = self.test.split('_')[0] + if self.update: + self.test_out = self.args.inputdir+'/'+self.test_id + else: + self.test_out = self.args.outputdir+'/test_output_'+self.test_id + self.prepare_test() + + def compare_ok(self,got_file,expected_file,name): + if not os.path.isfile(got_file): + return (True,'%s absent' % got_file) + elif not os.path.isfile(expected_file): + return (True,'%s absent' % expected_file) + else: + diff = os.popen('diff -b -w -u %s %s' % (got_file,expected_file)).read() + if diff and not diff.startswith("No differences"): + return (True,'Difference between generated output and reference:\n%s' % diff) + return (False,'') + + def cleanup_xmllint(self,errmsg): + msg = errmsg.split('\n') + rtnmsg = "" + for o in msg: + if (o): + if (o.startswith("I/O error : Attempt")): + pass + else: + if (rtnmsg): + rtnmsg += '\n' + rtnmsg += o + return rtnmsg + + def cleanup_xmllint_docbook(self,errmsg): + # For future work, first get everything valid XML + msg = self.cleanup_xmllint(errmsg).split('\n') + rtnmsg = "" + cnt = 0 + for o in msg: + if (o): + if (cnt): + cnt -= 1 + pass + elif (o.endswith("does not validate")): + pass + elif (o.find("no DTD found!")!=-1): + pass + elif (o.find("is not an NCName")!=-1): + cnt = 2 + else: + if (rtnmsg): + rtnmsg += '\n' + rtnmsg += o + return rtnmsg + + def get_config(self): + config = {} + with open(self.args.inputdir+'/'+self.test,'r') as f: + for line in f.readlines(): + m = config_reg.match(line) + if m: + key = m.group('name') + value = m.group('value') + if (key=='config'): + value = value.replace('$INPUTDIR',self.args.inputdir) + # print('key=%s value=%s' % (key,value)) + config.setdefault(key, []).append(value) + return config + + def prepare_test(self): + # prepare test environment + shutil.rmtree(self.test_out,ignore_errors=True) + os.mkdir(self.test_out) + shutil.copy(self.args.inputdir+'/Doxyfile',self.test_out) + with open(self.test_out+'/Doxyfile','a') as f: + print('INPUT=%s/%s' % (self.args.inputdir,self.test), file=f) + print('STRIP_FROM_PATH=%s' % self.args.inputdir, file=f) + print('EXAMPLE_PATH=%s' % self.args.inputdir, file=f) + if 'config' in self.config: + for option in self.config['config']: + print(option, file=f) + if (self.args.xml): + print('GENERATE_XML=YES', file=f) + print('XML_OUTPUT=%s/out' % self.test_out, file=f) + else: + print('GENERATE_XML=NO', file=f) + if (self.args.rtf): + print('GENERATE_RTF=YES', file=f) + print('RTF_OUTPUT=%s/rtf' % self.test_out, file=f) + else: + print('GENERATE_RTF=NO', file=f) + if (self.args.docbook): + print('GENERATE_DOCBOOK=YES', file=f) + print('DOCBOOK_OUTPUT=%s/docbook' % self.test_out, file=f) + else: + print('GENERATE_DOCBOOK=NO', file=f) + if (self.args.xhtml): + print('GENERATE_HTML=YES', file=f) + # HTML_OUTPUT can also be set locally + print('HTML_OUTPUT=%s/html' % self.test_out, file=f) + print('HTML_FILE_EXTENSION=.xhtml', file=f) + if (self.args.pdf): + print('GENERATE_LATEX=YES', file=f) + print('LATEX_OUTPUT=%s/latex' % self.test_out, file=f) + if self.args.subdirs: + print('CREATE_SUBDIRS=YES', file=f) + if (self.args.cfgs): + for cfg in list(itertools.chain.from_iterable(self.args.cfgs)): + if cfg.find('=') == -1: + print("Not a doxygen configuration item, missing '=' sign: '%s'."%cfg) + sys.exit(1) + print(cfg, file=f) + + if 'check' not in self.config or not self.config['check']: + print('Test doesn\'t specify any files to check') + sys.exit(1) + + # run doxygen + if (sys.platform == 'win32'): + redir=' > nul:' + else: + redir=' 2> /dev/null > /dev/null' + + if (self.args.noredir): + redir='' + + if os.system('%s %s/Doxyfile %s' % (self.args.doxygen,self.test_out,redir))!=0: + print('Error: failed to run %s on %s/Doxyfile' % (self.args.doxygen,self.test_out)) + sys.exit(1) + + # update the reference data for this test + def update_test(self,testmgr): + print('Updating reference for %s' % self.test_name) + + if 'check' in self.config: + for check in self.config['check']: + check_file='%s/out/%s' % (self.test_out,check) + # check if the file we need to check is actually generated + if not os.path.isfile(check_file): + print('Non-existing file %s after \'check:\' statement' % check_file) + return + # convert output to canonical form + data = os.popen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read() + if data: + # strip version + data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n') + else: + print('Failed to run %s on the doxygen output file %s' % (self.args.xmllint,self.test_out)) + return + out_file='%s/%s' % (self.test_out,check) + with open(out_file,'w') as f: + print(data,file=f) + shutil.rmtree(self.test_out+'/out',ignore_errors=True) + os.remove(self.test_out+'/Doxyfile') + + # check the relevant files of a doxygen run with the reference material + def perform_test(self,testmgr): + if (sys.platform == 'win32'): + redir=' > nul:' + separ='&' + else: + redir=' 2> /dev/null' + separ=';' + + if (self.args.noredir): + redir='' + + failed_xml=False + failed_html=False + failed_latex=False + failed_docbook=False + failed_rtf=False + msg = () + # look for files to check against the reference + if self.args.xml: + failed_xml=True + if 'check' in self.config: + for check in self.config['check']: + check_file='%s/out/%s' % (self.test_out,check) + # check if the file we need to check is actually generated + if not os.path.isfile(check_file): + # try with sub dirs + check_file = glob.glob('%s/out/*/*/%s' % (self.test_out,check)) + if not check_file: + check_file='%s/out/%s' % (self.test_out,check) + msg += ('Non-existing file %s after \'check:\' statement' % check_file,) + break + else: + check_file = check_file[0] + # convert output to canonical form + data = os.popen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read() + if data: + # strip version + data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n') + else: + msg += ('Failed to run %s on the doxygen output file %s' % (self.args.xmllint,self.test_out),) + break + out_file='%s/%s' % (self.test_out,check) + with open(out_file,'w') as f: + print(data,file=f) + ref_file='%s/%s/%s' % (self.args.inputdir,self.test_id,check) + (failed_xml,xml_msg) = self.compare_ok(out_file,ref_file,self.test_name) + if failed_xml: + msg+= (xml_msg,) + break + if not failed_xml and not self.args.keep: + xml_output='%s/out' % self.test_out + shutil.rmtree(xml_output,ignore_errors=True) + + if (self.args.rtf): + # no tests defined yet + pass + + if (self.args.docbook): + docbook_output='%s/docbook' % self.test_out + if (sys.platform == 'win32'): + redirx=' 2> %s/temp >nul:'%docbook_output + else: + redirx='2>%s/temp >/dev/null'%docbook_output + # For future work, first get everything valid XML + # exe_string = '%s --relaxng db/docbook.rng --nonet --postvalid %s/*xml %s % (self.args.xmllint,docbook_output,redirx) + tests = [] + tests.append(glob.glob('%s/*.xml' % (docbook_output))) + tests.append(glob.glob('%s/*/*/*.xml' % (docbook_output))) + tests = ' '.join(list(itertools.chain.from_iterable(tests))).replace(self.args.outputdir +'/','').replace('\\','/') + exe_string = '%s --nonet --postvalid %s %s' % (self.args.xmllint,tests,redirx) + exe_string += ' %s more "%s/temp"' % (separ,docbook_output) + + failed_docbook=False + xmllint_out = os.popen(exe_string).read() + xmllint_out = self.cleanup_xmllint_docbook(xmllint_out) + if xmllint_out: + msg += (xmllint_out,) + failed_docbook=True + elif not self.args.keep: + shutil.rmtree(docbook_output,ignore_errors=True) + + if (self.args.xhtml): + html_output='%s/html' % self.test_out + if (sys.platform == 'win32'): + redirx=' 2> %s/temp >nul:'%html_output + else: + redirx='2>%s/temp >/dev/null'%html_output + exe_string = '%s --path dtd --nonet --postvalid %s/*xhtml %s %s ' % (self.args.xmllint,html_output,redirx,separ) + exe_string += 'more "%s/temp"' % (html_output) + failed_html=False + xmllint_out = os.popen(exe_string).read() + xmllint_out = self.cleanup_xmllint(xmllint_out) + if xmllint_out: + msg += (xmllint_out,) + failed_html=True + elif not self.args.keep: + shutil.rmtree(html_output,ignore_errors=True) + if (self.args.pdf): + failed_latex=False + latex_output='%s/latex' % self.test_out + if (sys.platform == 'win32'): + redirl='>nul: 2>temp' + else: + redirl='>/dev/null 2>temp' + exe_string = 'cd %s %s echo "q" | make %s %s' % (latex_output,separ,redirl,separ) + exe_string += 'more temp' + latex_out = os.popen(exe_string).read() + if latex_out.find("Error")!=-1: + msg += ("PDF generation failed\n For a description of the problem see 'refman.log' in the latex directory of this test",) + failed_html=True + elif open(latex_output + "/refman.log",'r').read().find("Emergency stop")!= -1: + msg += ("PDF generation failed\n For a description of the problem see 'refman.log' in the latex directory of this test",) + failed_html=True + elif not self.args.keep: + shutil.rmtree(latex_output,ignore_errors=True) + + if failed_xml or failed_html or failed_latex or failed_docbook or failed_rtf: + testmgr.ok(False,self.test_name,msg) + return + + testmgr.ok(True,self.test_name) + if not self.args.keep: + shutil.rmtree(self.test_out,ignore_errors=True) + + def run(self,testmgr): + if self.update: + self.update_test(testmgr) + else: + self.perform_test(testmgr) + +class TestManager: + def __init__(self,args,tests): + self.args = args + self.tests = tests + self.num_tests = len(tests) + self.count=1 + self.passed=0 + if self.args.xhtml: + self.prepare_dtd() + print('1..%d' % self.num_tests) + + def ok(self,result,test_name,msg='Ok'): + if result: + print('ok %s - %s' % (self.count,test_name)) + self.passed = self.passed + 1 + else: + print('not ok %s - %s' % (self.count,test_name)) + print('-------------------------------------') + for o in msg: + print(o) + print('-------------------------------------') + self.count = self.count + 1 + + def result(self): + if self.passed==self.num_tests: + print('All tests passed!') + else: + print('%d out of %s tests failed' % (self.num_tests-self.passed,self.num_tests)) + return 0 if self.passed==self.num_tests else 1 + + def perform_tests(self): + for test in self.tests: + tester = Tester(self.args,test) + tester.run(self) + res=self.result() + if self.args.xhtml and not res and not self.args.keep: + shutil.rmtree("dtd",ignore_errors=True) + return 0 if self.args.updateref else res + + def prepare_dtd(self): + shutil.rmtree("dtd",ignore_errors=True) + shutil.copytree(self.args.inputdir+"/dtd", "dtd") + +def main(): + # argument handling + parser = argparse.ArgumentParser(description='run doxygen tests') + parser.add_argument('--updateref',help= + 'update the reference files. Should be used in combination with -id to ' + 'update the reference file(s) for the given test',action="store_true") + parser.add_argument('--doxygen',nargs='?',default='doxygen',help= + 'path/name of the doxygen executable') + parser.add_argument('--xmllint',nargs='?',default='xmllint',help= + 'path/name of the xmllint executable') + parser.add_argument('--id',nargs='+',dest='ids',action='append',type=int,help= + 'run test with number n only (the option can be specified to run test with ' + 'number n only (the option can be specified multiple times') + parser.add_argument('--start_id',dest='start_id',type=int,help= + 'run tests starting with number n') + parser.add_argument('--end_id',dest='end_id',type=int,help= + 'run tests ending with number n') + parser.add_argument('--all',help= + 'can be used in combination with -updateref to update the reference files ' + 'for all tests.',action="store_true") + parser.add_argument('--inputdir',nargs='?',default='.',help= + 'input directory containing the tests') + parser.add_argument('--outputdir',nargs='?',default='.',help= + 'output directory to write the doxygen output to') + parser.add_argument('--noredir',help= + 'disable redirection of doxygen warnings',action="store_true") + parser.add_argument('--xml',help='create xml output and check', + action="store_true") + parser.add_argument('--rtf',help= + 'create rtf output',action="store_true") + parser.add_argument('--docbook',help= + 'create docbook output and check with xmllint',action="store_true") + parser.add_argument('--xhtml',help= + 'create xhtml output and check with xmllint',action="store_true") + parser.add_argument('--pdf',help='create LaTeX output and create pdf from it', + action="store_true") + parser.add_argument('--subdirs',help='use the configuration parameter CREATE_SUBDIRS=YES', + action="store_true") + parser.add_argument('--keep',help='keep result directories', + action="store_true") + parser.add_argument('--cfg',nargs='+',dest='cfgs',action='append',help= + 'run test with extra doxygen configuration settings ' + '(the option may be specified multiple times') + test_flags = os.getenv('TEST_FLAGS', default='').split() + args = parser.parse_args(test_flags + sys.argv[1:]) + + # sanity check + if (not args.xml) and (not args.pdf) and (not args.xhtml) and (not args.docbook and (not args.rtf)): + args.xml=True + if (not args.updateref is None) and (args.ids is None) and (args.all is None): + parser.error('--updateref requires either --id or --all') + + starting_directory = os.getcwd() + os.chdir(args.inputdir) + # find the tests to run + tests = [] + if args.start_id: + if args.end_id: + for id in range(args.start_id, args.end_id + 1): + tests.append(glob.glob('%s_*'%id)) + tests.append(glob.glob('0%s_*'%id)) + tests.append(glob.glob('00%s_*'%id)) + else: + parser.error('--start_id requires --end_id') + elif args.end_id: + parser.error('--end_id requires --start_id') + if args.ids: # test ids are given by user + for id in list(itertools.chain.from_iterable(args.ids)): + tests.append(glob.glob('%s_*'%id)) + tests.append(glob.glob('0%s_*'%id)) + tests.append(glob.glob('00%s_*'%id)) + if (not args.ids and not args.start_id): # find all tests + tests = glob.glob('[0-9][0-9][0-9]_*') + else: + tests = list(itertools.chain.from_iterable(tests)) + os.chdir(starting_directory) + + # create test manager to run the tests + testManager = TestManager(args,tests) + sys.exit(testManager.perform_tests()) + +if __name__ == '__main__': + main() diff --git a/tests/upstream-test-suite/sample.bib b/tests/upstream-test-suite/sample.bib new file mode 100644 index 0000000..436e8cd --- /dev/null +++ b/tests/upstream-test-suite/sample.bib @@ -0,0 +1,7 @@ +@book{knuth79, + author = "Donald E. Knuth", + title = "Tex and Metafont, New Directions in Typesetting", + year = "1979", + publisher = "American Mathematical Society and Digital Press", + address = "Stanford" +} diff --git a/tests/upstream-test-suite/sample.html b/tests/upstream-test-suite/sample.html new file mode 100644 index 0000000..159202e --- /dev/null +++ b/tests/upstream-test-suite/sample.html @@ -0,0 +1 @@ +

    Hello world

    diff --git a/tests/upstream-test-suite/sample.png b/tests/upstream-test-suite/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9f51f56cc9b4b7b459646e90843a02d91d196e GIT binary patch literal 2560 zcmaJ?c{mh!AOGdZW`t@tCF4w6GQ%LnqSQ9I->3CH`|SHXyYJ_Z&+|FH-`{_~=bLcS`owlgc}W1kc7mCy zEdan10HE}PC;-54Dr5!#Am(9gWeh-R3S`w;8~~t9HnX(?AnX7DQLz9l0|27l13-lX zFyjOOIuign|LodRh5(50Pg)Xj8yg!?n91te`tr)!x24su!j;88mKGMj&CGwDp8YcU z;WK~g)5!S3Aa9QQX7=^a45$Bnd(XR;uBpb33DzqC6lMa2nV2}=gThQUHa0fj*$g-N z+tTXa?O*z56v;Qfp`w`=mD!HK2YeN-Y*y#Os?!QyV;wU$ZC=H|rm*mNingO2wY?^I zzqt6v68Ft)NyFO|W)~^6I;X7P=lXLf%%r(#1ID z^O8F~J^RI;S~0|*KXAk$IIX3oZ7k~v*Da>r%%kAZv*GIu4(9yr$q%3VM}LRHOw2qU zWEA#Pw(wCWqiNY}yDJs0(RI|6=7Opr%=uf#&)sy1tUY2A**!ed)H!*al=^FFzhguV zr~kb_z46%DltJEH_HTU`!=K?@bFC<)+Sp4_n2C`?5m5UnewJlqcb=3 zEw6gfSlY&3L8&ddRGP@XM!tlKk7C-ov4NJZ0~ueZyEZeZsc-Olc9Y=>VvMT zR(?y@)Q!AOb$$DQ8%=r^A(405H8Jj|0?HdZCJgN3?-cde_?P8Z45Eo~YPz;+y0(fM zxc>@GytQBHrdEMl=@O{lTTQ$brBoGRqo!-CtZj~W%~gS0q3vi_lABd@EdCl+)3sI6 zu~5{+Zzli9Da@|Q7CtGoT3OrtgnPbcEX&Y7p`w{r)ymhi2*I4crE4A(l-hC-eZkVF z81I%BmDwJh^->Gt=@?OC;(RYTzcc%{zC#8V(Zsj|M;!L+*(qw^R1r3CQ_9B1Mr~c+ z_dn1dXlrc;{t4JL;djVhsf-npZ>v18MMVD@2>l0yLZS9?p;OzY{}YPe+2(J-zhe4d z8=+A8|8#%H1D`QBX3DZlVf;!=)^aGTZM9@+CF67>o0i6*+B9R`2|D=l!Lt$ofGsW- zCrm-SIMfUPAQ4Eg!bu3EBp?bq2PU_=0U&NfFf}HcwU3@&3f^VE=l&_%oIt`Z_dQfz zViw`9-V5d>kr#QgS}IisyMH8QWS9+`A0mkr`q*OVdoWCKNs7drV_e+EL)yR!RCI@gg zoCA+y1Ufa1sOvpHfrN%HA`>!rWNzR73)@n^T?FOW$1ZsF2|3k#Y%U&o+Wpq3x1gg@bHE&gx z<#5WFZU)@5p*e-UAKo&IA4^|XQ*XKX03x$}w=Ng@;Tq0;vSaUMs@P5?GKal=_N~G> zDX64CUcD_y>!a)nJidh>wO87(L*RC_uf=|--nz~`(?|pV5+J^WWq3SmGOLV&quZZeLbMSTF)&I@`DHEcI7~QHDspxb}5~k_Y8tNYz-M9_1_DkepaW$s~ zQ*Y&g)L+)}nj;Jjuj*I*67|XevsKPH)$4FKRt3rC9xQttgm{<~&@8|xmxv`riS9fr z8E_~eF_Dg{73(X@k#o(yDYfXI^aNY`f+gXbKDELSf&GkUoq@#twsZU32>^HIchiyJh3S&kPr zW{M(vDOQX>Q&}S=9NG!e$9;U=up$I_Oj#d2nw%xe7hI`tm7!P(Cv%JiLd>S`N5J7g06AtaHCCqKKSSLiDviWXCA_GuQr`1}KL@u`EXCbu{_ zS(;6@ZPDm!Uph#M&t>>wS0BLg^0k@Dsg?S0fl? zJ+{FSweoRpy+R^Hz$%?wZKoyVfTfIByWK{Doc3|KK`Yx3Cuet|QCQdVP6aLWvP6lk_#RkF0?D_^`SC z*VUG`^~438W5Rs_^LH@k +#include + +void main() +{ + int i,n,temp,j,arr[25]; + printf("Enter the number of elements in the Array: "); + scanf("%d",&n); + printf("\nEnter the elements:\n\n"); + + /* [input] */ + for(i=0 ; iarr[j+1]) //Swapping Condition is Checked + { + temp=arr[j]; + arr[j]=arr[j+1]; + arr[j+1]=temp; + } + } + } + // [bubble] + + printf("\nThe Sorted Array is:\n\n"); + /* [output] */ + for(i=0 ; i Date: Wed, 13 Mar 2019 11:06:26 +0100 Subject: [PATCH 022/117] added Requirement on dot --- doxygen.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 6ec03ef..1e22987 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 6%{?dist} +Release: 7%{?dist} # No version is specified. License: GPL+ @@ -57,6 +57,7 @@ BuildRequires: xapian-core-devel BuildRequires: zlib-devel %endif Requires: perl-interpreter +Requires: graphviz %description Doxygen can generate an online class browser (in HTML) and/or a @@ -190,6 +191,9 @@ make tests -C %{_target_platform} %endif %changelog +* Wed Mar 13 2019 Than Ngo - 1:1.8.15-7 +- added Requirement on dot + * Thu Feb 14 2019 Than Ngo - 1:1.8.15-6 - fixed bz#1677000, fixed multilib issue From f47fc930b4e7b92ae0ebf7c2850a8bace9da3656 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Sat, 16 Mar 2019 19:57:52 +0100 Subject: [PATCH 023/117] added license file --- doxygen.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 1e22987..d199732 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 7%{?dist} +Release: 8%{?dist} # No version is specified. License: GPL+ @@ -165,6 +165,7 @@ make tests -C %{_target_platform} %files %doc LANGUAGE.HOWTO README.md +%license LICENSE %if ! 0%{?_module_build} %if %{xapian_core_support} == "ON" %{_bindir}/doxyindexer @@ -191,6 +192,9 @@ make tests -C %{_target_platform} %endif %changelog +* Sat Mar 16 2019 Than Ngo - 1:1.8.15-8 +- added license file + * Wed Mar 13 2019 Than Ngo - 1:1.8.15-7 - added Requirement on dot From 6cce15d35b3340f76a69a36b75cfab6727d8bd1c Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Tue, 19 Mar 2019 11:32:36 -0600 Subject: [PATCH 024/117] Incl. xml fix for c++11 --- doxygen.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index d199732..59a462a 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 8%{?dist} +Release: 9%{?dist} # No version is specified. License: GPL+ @@ -24,6 +24,7 @@ Patch1: doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch Patch2: doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch Patch3: doxygen-1.8.15-crash.patch Patch4: doxygen-1.8.15-multilib.patch +Patch5: https://github.com/doxygen/doxygen/pull/6893.patch BuildRequires: %{_bindir}/python3 @@ -192,6 +193,9 @@ make tests -C %{_target_platform} %endif %changelog +* Tue Mar 19 2019 Christoph Junghans - 1:1.8.15-9 +- Incl. xml fix for c++11 + * Sat Mar 16 2019 Than Ngo - 1:1.8.15-8 - added license file From e0716db071e61495b210e1998c752aa1f1f8a69f Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 20 Mar 2019 11:03:58 +0100 Subject: [PATCH 025/117] add xml fix for c++11 --- 6893.patch | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 6893.patch diff --git a/6893.patch b/6893.patch new file mode 100644 index 0000000..8680d19 --- /dev/null +++ b/6893.patch @@ -0,0 +1,25 @@ +From f217b5c36b39a294b920437ff66055ee1a3fa5b7 Mon Sep 17 00:00:00 2001 +From: albert-github +Date: Tue, 19 Mar 2019 10:42:24 +0100 +Subject: [PATCH] issue #6892 xml not well-formed (invalid token) for c++ + +the `declname` and `defname` should also be converted (compare as well the routine `generateXMLForMember`) +--- + src/xmlgen.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp +index 420a653fc..568e48886 100644 +--- a/src/xmlgen.cpp ++++ b/src/xmlgen.cpp +@@ -360,8 +360,8 @@ static void writeTemplateArgumentList(ArgumentList *al, + } + if (!a->name.isEmpty()) + { +- t << indentStr << " " << a->name << "" << endl; +- t << indentStr << " " << a->name << "" << endl; ++ t << indentStr << " " << convertToXML(a->name) << "" << endl; ++ t << indentStr << " " << convertToXML(a->name) << "" << endl; + } + if (!a->defval.isEmpty()) + { From b3059010fd1b3a3da7785eaf06400805f95414c8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jul 2019 22:19:51 +0000 Subject: [PATCH 026/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 59a462a..3f8f05d 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.15 -Release: 9%{?dist} +Release: 10%{?dist} # No version is specified. License: GPL+ @@ -193,6 +193,9 @@ make tests -C %{_target_platform} %endif %changelog +* Wed Jul 24 2019 Fedora Release Engineering - 1:1.8.15-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Tue Mar 19 2019 Christoph Junghans - 1:1.8.15-9 - Incl. xml fix for c++11 From a8fac620784c98898d83b0e385a7870e1d712103 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 11 Sep 2019 11:55:10 +0200 Subject: [PATCH 027/117] resolves #1742614, update to 1.8.16 --- .gitignore | 1 + 6893.patch | 25 --------- doxygen-1.8.15-crash.patch | 52 ------------------- ....8.15-handle_empty_TOC_in_XML_output.patch | 27 ---------- ...ent_whitespace_removal_for_operators.patch | 48 ----------------- doxygen-1.8.15-multilib.patch | 20 ------- ...est_for_XML_output_with_an_empty_TOC.patch | 42 --------------- doxygen.spec | 13 ++--- sources | 2 +- 9 files changed, 7 insertions(+), 223 deletions(-) delete mode 100644 6893.patch delete mode 100644 doxygen-1.8.15-crash.patch delete mode 100644 doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch delete mode 100644 doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch delete mode 100644 doxygen-1.8.15-multilib.patch delete mode 100644 doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch diff --git a/.gitignore b/.gitignore index 62f8f34..0125476 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.13.src.tar.gz /doxygen-1.8.14.src.tar.gz /doxygen-1.8.15.src.tar.gz +/doxygen-1.8.16.src.tar.gz diff --git a/6893.patch b/6893.patch deleted file mode 100644 index 8680d19..0000000 --- a/6893.patch +++ /dev/null @@ -1,25 +0,0 @@ -From f217b5c36b39a294b920437ff66055ee1a3fa5b7 Mon Sep 17 00:00:00 2001 -From: albert-github -Date: Tue, 19 Mar 2019 10:42:24 +0100 -Subject: [PATCH] issue #6892 xml not well-formed (invalid token) for c++ - -the `declname` and `defname` should also be converted (compare as well the routine `generateXMLForMember`) ---- - src/xmlgen.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp -index 420a653fc..568e48886 100644 ---- a/src/xmlgen.cpp -+++ b/src/xmlgen.cpp -@@ -360,8 +360,8 @@ static void writeTemplateArgumentList(ArgumentList *al, - } - if (!a->name.isEmpty()) - { -- t << indentStr << " " << a->name << "" << endl; -- t << indentStr << " " << a->name << "" << endl; -+ t << indentStr << " " << convertToXML(a->name) << "" << endl; -+ t << indentStr << " " << convertToXML(a->name) << "" << endl; - } - if (!a->defval.isEmpty()) - { diff --git a/doxygen-1.8.15-crash.patch b/doxygen-1.8.15-crash.patch deleted file mode 100644 index 24c3467..0000000 --- a/doxygen-1.8.15-crash.patch +++ /dev/null @@ -1,52 +0,0 @@ -commit c26c5fc4fb852098c7188e7762778c87a50771cb -Author: albert-github -Date: Mon Jan 7 18:48:13 2019 +0100 - - issue #6749 doxygen 1.8.15 segfault - - An empty string was defined in a `
    ` resulting in a null pointer access. - -diff --git a/src/util.cpp b/src/util.cpp -index f9c2492f..9a0e513b 100644 ---- a/src/util.cpp -+++ b/src/util.cpp -@@ -5444,6 +5444,7 @@ QCString escapeCharsInString(const char *name,bool allowDots,bool allowUnderscor - static bool allowUnicodeNames = Config_getBool(ALLOW_UNICODE_NAMES); - static GrowBuf growBuf; - growBuf.clear(); -+ if (name==0) return ""; - char c; - const char *p=name; - while ((c=*p++)!=0) -@@ -6962,6 +6963,7 @@ void filterLatexString(FTextStream &t,const char *str, - - QCString latexEscapeLabelName(const char *s) - { -+ if (s==0) return ""; - QGString result; - QCString tmp(qstrlen(s)+1); - FTextStream t(&result); -@@ -6999,6 +7001,7 @@ QCString latexEscapeLabelName(const char *s) - - QCString latexEscapeIndexChars(const char *s) - { -+ if (s==0) return ""; - QGString result; - QCString tmp(qstrlen(s)+1); - FTextStream t(&result); -@@ -7037,6 +7040,7 @@ QCString latexEscapeIndexChars(const char *s) - - QCString latexEscapePDFString(const char *s) - { -+ if (s==0) return ""; - QGString result; - FTextStream t(&result); - const char *p=s; -@@ -7061,6 +7065,7 @@ QCString latexEscapePDFString(const char *s) - - QCString latexFilterURL(const char *s) - { -+ if (s==0) return ""; - QGString result; - FTextStream t(&result); - const char *p=s; diff --git a/doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch b/doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch deleted file mode 100644 index dd90cdd..0000000 --- a/doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch +++ /dev/null @@ -1,27 +0,0 @@ -commit cfe381e3ee55b8291faeea55fe3b67bb9e545d60 -Author: Vladimír Vondruš -Date: Sat Dec 29 21:52:39 2018 +0100 - - Properly handle empty TOC in XML output. - - Caused the test (079) to fail with a SIGSEGV, but larger projects exit - with a success return code and the generated XML is either truncated or - empty. Weird. - -diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp -index bacf4d41..033e611f 100644 ---- a/src/xmlgen.cpp -+++ b/src/xmlgen.cpp -@@ -1818,10 +1818,10 @@ static void generateXMLForPage(PageDef *pd,FTextStream &ti,bool isExample) - } - } - writeInnerPages(pd->getSubPages(),t); -- if (pd->localToc().isXmlEnabled()) -+ SectionDict *sectionDict = pd->getSectionDict(); -+ if (pd->localToc().isXmlEnabled() && sectionDict) - { - t << " " << endl; -- SectionDict *sectionDict = pd->getSectionDict(); - SDict::Iterator li(*sectionDict); - SectionInfo *si; - int level=1,l; diff --git a/doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch b/doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch deleted file mode 100644 index 01c3df7..0000000 --- a/doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch +++ /dev/null @@ -1,48 +0,0 @@ -commit e54ccc0e6eb12a0720860d863a89cb3f1a83f2a2 -Author: Dimitri van Heesch -Date: Sun Feb 3 14:33:35 2019 +0100 - - Issue 6814: Inconsistent whitespace removal for operators in 1.8.15 - -diff --git a/src/util.cpp b/src/util.cpp -index 9a0e513b..3a3bfd38 100644 ---- a/src/util.cpp -+++ b/src/util.cpp -@@ -1895,7 +1895,7 @@ QCString removeRedundantWhiteSpace(const QCString &s) - if (g_charAroundSpace.charMap[(uchar)pc].before && - g_charAroundSpace.charMap[(uchar)nc].after && - !(pc==',' && nc=='.') && -- (osp<8 || (osp>=8 && pc!='"' && isId(nc)) || (osp>=8 && pc!='"' && nc!='"')) -+ (osp<8 || (osp>=8 && isId(pc) && isId(nc))) - // e.g. 'operator >>' -> 'operator>>', - // 'operator "" _x' -> 'operator""_x', - // but not 'operator int' -> 'operatorint' -commit 2802e2b4ee8158dba3f3584037e99907c6db7ec4 -Author: Dimitri van Heesch -Date: Mon Feb 4 22:19:56 2019 +0100 - - Issue 6814: Further finetuning for inconsistent whitespace removal for operators in 1.8.15 - -diff --git a/src/util.cpp b/src/util.cpp -index 3a3bfd38..53b176d4 100644 ---- a/src/util.cpp -+++ b/src/util.cpp -@@ -1847,7 +1847,8 @@ QCString removeRedundantWhiteSpace(const QCString &s) - case '*': - if (i>0 && pc!=' ' && pc!='\t' && pc!=':' && - pc!='*' && pc!='&' && pc!='(' && pc!='/' && -- pc!='.' && (osp<9 || !(pc=='>' && osp==11))) -+ pc!='.' && osp<9 -+ ) - // avoid splitting &&, **, .*, operator*, operator->* - { - *dst++=' '; -@@ -1855,7 +1856,7 @@ QCString removeRedundantWhiteSpace(const QCString &s) - *dst++=c; - break; - case '&': -- if (i>0 && isId(pc)) -+ if (i>0 && isId(pc) && osp<9) - { - if (nc != '=') - // avoid splitting operator&= diff --git a/doxygen-1.8.15-multilib.patch b/doxygen-1.8.15-multilib.patch deleted file mode 100644 index 329ce72..0000000 --- a/doxygen-1.8.15-multilib.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff -up doxygen-1.8.15/src/dirdef.cpp.me doxygen-1.8.15/src/dirdef.cpp ---- doxygen-1.8.15/src/dirdef.cpp.me 2019-02-14 22:57:29.709491363 +0100 -+++ doxygen-1.8.15/src/dirdef.cpp 2019-02-14 22:59:10.922169840 +0100 -@@ -936,14 +936,14 @@ void buildDirectories() - for (;(fd=fni.current());++fni) - { - //printf("buildDirectories %s\n",fd->name().data()); -- if (fd->getReference().isEmpty()) -+ if (fd->getReference().isEmpty() && !fd->isDocumentationFile()) - { - DirDef *dir; - if ((dir=Doxygen::directories->find(fd->getPath()))==0) // new directory - { - dir = DirDef::mergeDirectoryInTree(fd->getPath()); - } -- if (dir && !fd->isDocumentationFile()) dir->addFile(fd); -+ if (dir) dir->addFile(fd); - } - else - { diff --git a/doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch b/doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch deleted file mode 100644 index afa039d..0000000 --- a/doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch +++ /dev/null @@ -1,42 +0,0 @@ -commit e26a5b8eed8a012e6a400f1ed6baf27980668b53 -Author: Vladimír Vondruš -Date: Sat Dec 29 21:30:51 2018 +0100 - - testing: add a test for XML output with an empty TOC. - - Fails, in particular causes Doxygen to produce an empty (or truncated) - XML file but returning with a success error code. - -diff --git a/testing/079/empty.xml b/testing/079/empty.xml -new file mode 100644 -index 00000000..3e1d6915 ---- /dev/null -+++ b/testing/079/empty.xml -@@ -0,0 +1,12 @@ -+ -+ -+ -+ empty -+ An empty page -+ -+ -+ -+With an empty TOC. -+ -+ -+ -diff --git a/testing/079_tableofcontents.dox b/testing/079_tableofcontents.dox -new file mode 100644 -index 00000000..499771d7 ---- /dev/null -+++ b/testing/079_tableofcontents.dox -@@ -0,0 +1,9 @@ -+// objective: test TOC generation for an empty page -+// check: empty.xml -+/** -+@page empty An empty page -+ -+@tableofcontents -+ -+With an empty TOC. -+*/ diff --git a/doxygen.spec b/doxygen.spec index 3f8f05d..4bde72a 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -7,8 +7,8 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.8.15 -Release: 10%{?dist} +Version: 1.8.16 +Release: 1%{?dist} # No version is specified. License: GPL+ @@ -19,12 +19,6 @@ Source1: doxywizard.png Source2: doxywizard.desktop # upstream patches -Patch0: doxygen-1.8.15-handle_empty_TOC_in_XML_output.patch -Patch1: doxygen-1.8.15-test_for_XML_output_with_an_empty_TOC.patch -Patch2: doxygen-1.8.15-inconsistent_whitespace_removal_for_operators.patch -Patch3: doxygen-1.8.15-crash.patch -Patch4: doxygen-1.8.15-multilib.patch -Patch5: https://github.com/doxygen/doxygen/pull/6893.patch BuildRequires: %{_bindir}/python3 @@ -193,6 +187,9 @@ make tests -C %{_target_platform} %endif %changelog +* Wed Sep 11 2019 Than Ngo - 1.8.16-1 +- resolves #1742614, update to 1.8.16 + * Wed Jul 24 2019 Fedora Release Engineering - 1:1.8.15-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild diff --git a/sources b/sources index 0c7f9ec..d350a87 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard.png) = 42a7e5903bf27463d3b072cf043aef071b519b53054bbe647c522d5e499e02f554867ab5e9971b06493769cc17b9d1588462aeade284de1f9d579cf9f99e8851 -SHA512 (doxygen-1.8.15.src.tar.gz) = a5512e78be66c1591d8ec7e284d5d25c92a97218c79e6fed3c538c723a8dfef4ff7085970bf271a6b639e907157cd4df9fb55d3c975f8d3302fb1012a4d92079 +SHA512 (doxygen-1.8.16.src.tar.gz) = 46a0189aa82d5a687bdd99a904f0c061fccca407d15867d14c8c4d13e8b21a8989e7ccd6af30840803b589ed20dd86084a4db880fba0d3bfa1fdcdd8d23e12de From b8e030a12dc09aa359a9407e98fbe0e737705490 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 11 Sep 2019 12:23:55 +0200 Subject: [PATCH 028/117] add BR on git --- doxygen.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/doxygen.spec b/doxygen.spec index 4bde72a..d33ad46 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -47,6 +47,7 @@ BuildRequires: zlib-devel BuildRequires: flex BuildRequires: bison BuildRequires: cmake +BuildRequires: git %if %{xapian_core_support} == "ON" BuildRequires: xapian-core-devel BuildRequires: zlib-devel From 054d45a4022cce25084bc810147daa8f97768ecf Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 16 Sep 2019 20:57:17 +0200 Subject: [PATCH 029/117] backpored upstream patch to fix #7248 --- doxygen-1.8.16-#7248.patch | 36 ++++++++++++++++++++++++++++++++++++ doxygen.spec | 8 ++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 doxygen-1.8.16-#7248.patch diff --git a/doxygen-1.8.16-#7248.patch b/doxygen-1.8.16-#7248.patch new file mode 100644 index 0000000..6a79b65 --- /dev/null +++ b/doxygen-1.8.16-#7248.patch @@ -0,0 +1,36 @@ +diff -up doxygen-1.8.16/src/tagreader.cpp.me doxygen-1.8.16/src/tagreader.cpp +--- doxygen-1.8.16/src/tagreader.cpp.me 2019-09-16 20:47:16.428896400 +0200 ++++ doxygen-1.8.16/src/tagreader.cpp 2019-09-16 20:48:53.426648016 +0200 +@@ -494,6 +494,23 @@ class TagFileParser : public QXmlDefault + + void endDocAnchor() + { ++ // Check whether or not the tag is automatically generate, in that case ignore the tag. ++ switch(m_state) ++ { ++ case InClass: ++ case InFile: ++ case InNamespace: ++ case InGroup: ++ case InPage: ++ case InMember: ++ case InPackage: ++ case InDir: ++ if (QString(m_curString).startsWith("autotoc_md")) return; ++ break; ++ default: ++ warn("Unexpected tag 'docanchor' found"); ++ return; ++ } + switch(m_state) + { + case InClass: m_curClass->docAnchors.append(new TagAnchorInfo(m_fileName,m_curString,m_title)); break; +@@ -504,7 +521,7 @@ class TagFileParser : public QXmlDefault + case InMember: m_curMember->docAnchors.append(new TagAnchorInfo(m_fileName,m_curString,m_title)); break; + case InPackage: m_curPackage->docAnchors.append(new TagAnchorInfo(m_fileName,m_curString,m_title)); break; + case InDir: m_curDir->docAnchors.append(new TagAnchorInfo(m_fileName,m_curString,m_title)); break; +- default: warn("Unexpected tag 'docanchor' found"); break; ++ default: warn("Unexpected tag 'docanchor' found"); break; // Not really necessary anymore + } + } + diff --git a/doxygen.spec b/doxygen.spec index d33ad46..5498712 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.16 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -19,6 +19,7 @@ Source1: doxywizard.png Source2: doxywizard.desktop # upstream patches +Patch0: doxygen-1.8.16-#7248.patch BuildRequires: %{_bindir}/python3 @@ -188,7 +189,10 @@ make tests -C %{_target_platform} %endif %changelog -* Wed Sep 11 2019 Than Ngo - 1.8.16-1 +* Mon Sep 16 2019 Than Ngo - 1:1.8.16-2 +- backpored upstream patch to fix #7248 + +* Wed Sep 11 2019 Than Ngo - 1:1.8.16-1 - resolves #1742614, update to 1.8.16 * Wed Jul 24 2019 Fedora Release Engineering - 1:1.8.15-10 From 31d4fa495af722a436c924899fdfdb773c2908c6 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 10 Dec 2019 14:17:50 +0100 Subject: [PATCH 030/117] fixed covscan issues --- doxygen-1.8.16-covscan.patch | 700 +++++++++++++++++++++++++++++++++++ doxygen.spec | 6 +- 2 files changed, 705 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.8.16-covscan.patch diff --git a/doxygen-1.8.16-covscan.patch b/doxygen-1.8.16-covscan.patch new file mode 100644 index 0000000..c6ec936 --- /dev/null +++ b/doxygen-1.8.16-covscan.patch @@ -0,0 +1,700 @@ +diff -up doxygen-1.8.16/addon/doxywizard/wizard.h.orig doxygen-1.8.16/addon/doxywizard/wizard.h +--- doxygen-1.8.16/addon/doxywizard/wizard.h.orig 2017-10-31 20:36:00.000000000 +0100 ++++ doxygen-1.8.16/addon/doxywizard/wizard.h 2019-12-10 11:45:32.750260467 +0100 +@@ -52,11 +52,11 @@ class TuneColorDialog : public QDialog + void updateImage(int hue,int sat,int val); + + private: +- QImage *m_image; +- QLabel *m_imageLab; +- int m_hue; +- int m_sat; +- int m_gam; ++ QImage *m_image = 0; ++ QLabel *m_imageLab = 0; ++ int m_hue = 0; ++ int m_sat = 0; ++ int m_gam = 0; + }; + + class ColorPicker : public QWidget +@@ -91,11 +91,11 @@ private: + void setSat(int v); + void setGam(int v); + +- QPixmap *m_pix; +- Mode m_mode; +- int m_gam; +- int m_hue; +- int m_sat; ++ QPixmap *m_pix = 0; ++ Mode m_mode = Hue; ++ int m_gam = 0; ++ int m_hue = 0; ++ int m_sat = 0; + + }; + +@@ -120,16 +120,16 @@ class Step1 : public QWidget + void setRecursiveScan(int); + + private: +- QLineEdit *m_projName; +- QLineEdit *m_projBrief; +- QLineEdit *m_projNumber; +- QLineEdit *m_sourceDir; +- QLineEdit *m_destDir; +- QLabel *m_projIconLab; +- QCheckBox *m_recursive; +- QPushButton *m_srcSelectDir; +- QPushButton *m_dstSelectDir; +- Wizard *m_wizard; ++ QLineEdit *m_projName = 0; ++ QLineEdit *m_projBrief = 0; ++ QLineEdit *m_projNumber = 0; ++ QLineEdit *m_sourceDir = 0; ++ QLineEdit *m_destDir = 0; ++ QLabel *m_projIconLab = 0; ++ QCheckBox *m_recursive = 0; ++ QPushButton *m_srcSelectDir = 0; ++ QPushButton *m_dstSelectDir = 0; ++ Wizard *m_wizard = 0; + const QHash &m_modelData; + }; + +@@ -146,12 +146,12 @@ class Step2 : public QWidget + void changeCrossRefState(int choice); + + private: +- QGroupBox *m_extractMode; +- QGroupBox *m_optimizeLang; +- QButtonGroup *m_extractModeGroup; +- QButtonGroup *m_optimizeLangGroup; +- QCheckBox *m_crossRef; +- Wizard *m_wizard; ++ QGroupBox *m_extractMode = 0; ++ QGroupBox *m_optimizeLang = 0; ++ QButtonGroup *m_extractModeGroup = 0; ++ QButtonGroup *m_optimizeLangGroup = 0; ++ QCheckBox *m_crossRef = 0; ++ Wizard *m_wizard = 0; + const QHash &m_modelData; + }; + +@@ -175,18 +175,18 @@ class Step3 : public QWidget + void tuneColorDialog(); + + private: +- QGroupBox *m_texOptions; +- QButtonGroup *m_texOptionsGroup; +- QGroupBox *m_htmlOptions; +- QButtonGroup *m_htmlOptionsGroup; +- QCheckBox *m_htmlEnabled; +- QCheckBox *m_latexEnabled; +- QCheckBox *m_manEnabled; +- QCheckBox *m_rtfEnabled; +- QCheckBox *m_xmlEnabled; +- QCheckBox *m_searchEnabled; +- QPushButton *m_tuneColor; +- Wizard *m_wizard; ++ QGroupBox *m_texOptions = 0; ++ QButtonGroup *m_texOptionsGroup = 0; ++ QGroupBox *m_htmlOptions = 0; ++ QButtonGroup *m_htmlOptionsGroup = 0; ++ QCheckBox *m_htmlEnabled = 0; ++ QCheckBox *m_latexEnabled = 0; ++ QCheckBox *m_manEnabled = 0; ++ QCheckBox *m_rtfEnabled = 0; ++ QCheckBox *m_xmlEnabled = 0; ++ QCheckBox *m_searchEnabled = 0; ++ QPushButton *m_tuneColor = 0; ++ Wizard *m_wizard = 0; + const QHash &m_modelData; + }; + +@@ -209,17 +209,17 @@ class Step4 : public QWidget + void setCallerGraphEnabled(int state); + + private: +- QGroupBox *m_diagramMode; +- QButtonGroup *m_diagramModeGroup; +- QGroupBox *m_dotGroup; +- QCheckBox *m_dotClass; +- QCheckBox *m_dotCollaboration; +- QCheckBox *m_dotInclude; +- QCheckBox *m_dotIncludedBy; +- QCheckBox *m_dotInheritance; +- QCheckBox *m_dotCall; +- QCheckBox *m_dotCaller; +- Wizard *m_wizard; ++ QGroupBox *m_diagramMode = 0; ++ QButtonGroup *m_diagramModeGroup = 0; ++ QGroupBox *m_dotGroup = 0; ++ QCheckBox *m_dotClass = 0; ++ QCheckBox *m_dotCollaboration = 0; ++ QCheckBox *m_dotInclude = 0; ++ QCheckBox *m_dotIncludedBy = 0; ++ QCheckBox *m_dotInheritance = 0; ++ QCheckBox *m_dotCall = 0; ++ QCheckBox *m_dotCaller = 0; ++ Wizard *m_wizard = 0; + const QHash &m_modelData; + }; + +@@ -243,14 +243,14 @@ class Wizard : public QSplitter + + private: + const QHash &m_modelData; +- QTreeWidget *m_treeWidget; +- QStackedWidget *m_topicStack; +- Step1 *m_step1; +- Step2 *m_step2; +- Step3 *m_step3; +- Step4 *m_step4; +- QPushButton *m_next; +- QPushButton *m_prev; ++ QTreeWidget *m_treeWidget = 0; ++ QStackedWidget *m_topicStack = 0; ++ Step1 *m_step1 = 0; ++ Step2 *m_step2 = 0; ++ Step3 *m_step3 = 0; ++ Step4 *m_step4 = 0; ++ QPushButton *m_next = 0; ++ QPushButton *m_prev = 0; + }; + + #endif +diff -up doxygen-1.8.16/src/classdef.cpp.orig doxygen-1.8.16/src/classdef.cpp +--- doxygen-1.8.16/src/classdef.cpp.orig 2019-08-04 19:04:55.000000000 +0200 ++++ doxygen-1.8.16/src/classdef.cpp 2019-12-10 11:52:17.184826531 +0100 +@@ -265,7 +265,7 @@ class ClassDefImpl : public DefinitionIm + + // PIMPL idiom + class IMPL; +- IMPL *m_impl; ++ IMPL *m_impl = 0; + }; + + ClassDef *createClassDef( +@@ -525,7 +525,7 @@ class ClassDefAliasImpl : public Definit + QPtrDict *visitedClasses=0) const {} + + private: +- mutable bool m_visited; ++ mutable bool m_visited = false; + }; + + +@@ -563,27 +563,27 @@ class ClassDefImpl::IMPL + /*! Include information about the header file should be included + * in the documentation. 0 by default, set by setIncludeFile(). + */ +- IncludeInfo *incInfo; ++ IncludeInfo *incInfo = 0; + + /*! List of base class (or super-classes) from which this class derives + * directly. + */ +- BaseClassList *inherits; ++ BaseClassList *inherits = 0; + + /*! List of sub-classes that directly derive from this class + */ +- BaseClassList *inheritedBy; ++ BaseClassList *inheritedBy = 0; + + /*! Namespace this class is part of + * (this is the inner most namespace in case of nested namespaces) + */ +- NamespaceDef *nspace; ++ NamespaceDef *nspace = 0; + + /*! File this class is defined in */ +- FileDef *fileDef; ++ FileDef *fileDef = 0; + + /*! List of all members (including inherited members) */ +- MemberNameInfoSDict *allMemberNameInfoSDict; ++ MemberNameInfoSDict *allMemberNameInfoSDict = 0; + + /*! Template arguments of this class */ + ArgumentList *tempArgs; +@@ -595,7 +595,7 @@ class ClassDefImpl::IMPL + FileList files; + + /*! Examples that use this class */ +- ExampleSDict *exampleSDict; ++ ExampleSDict *exampleSDict = 0; + + /*! Holds the kind of "class" this is. */ + ClassDef::CompoundType compType; +@@ -609,30 +609,30 @@ class ClassDefImpl::IMPL + /*! The inner classes contained in this class. Will be 0 if there are + * no inner classes. + */ +- ClassSDict *innerClasses; ++ ClassSDict *innerClasses = 0; + + /* classes for the collaboration diagram */ +- UsesClassDict *usesImplClassDict; +- UsesClassDict *usedByImplClassDict; +- UsesClassDict *usesIntfClassDict; ++ UsesClassDict *usesImplClassDict = 0; ++ UsesClassDict *usedByImplClassDict = 0; ++ UsesClassDict *usesIntfClassDict = 0; + +- ConstraintClassDict *constraintClassDict; ++ ConstraintClassDict *constraintClassDict = 0; + + /*! Template instances that exists of this class, the key in the + * dictionary is the template argument list. + */ +- mutable QDict *templateInstances; ++ mutable QDict *templateInstances = 0; + + /*! Template instances that exists of this class, as defined by variables. + * We do NOT want to document these individually. The key in the + * dictionary is the template argument list. + */ +- mutable QDict *variableInstances; ++ mutable QDict *variableInstances = 0; + +- QDict *templBaseClassNames; ++ QDict *templBaseClassNames = 0; + + /*! The class this class is an instance of. */ +- const ClassDef *templateMaster; ++ const ClassDef *templateMaster = 0; + + /*! local class name which could be a typedef'ed alias name. */ + QCString className; +@@ -640,56 +640,56 @@ class ClassDefImpl::IMPL + /*! If this class is a Objective-C category, then this points to the + * class which is extended. + */ +- ClassDef *categoryOf; ++ ClassDef *categoryOf = 0; + + QList memberLists; + + /* user defined member groups */ +- MemberGroupSDict *memberGroupSDict; ++ MemberGroupSDict *memberGroupSDict = 0; + + /*! Is this an abstract class? */ +- bool isAbstract; ++ bool isAbstract = false; + + /*! Is the class part of an unnamed namespace? */ +- bool isStatic; ++ bool isStatic = false; + + /*! TRUE if classes members are merged with those of the base classes. */ +- bool membersMerged; ++ bool membersMerged = false; + + /*! TRUE if the class is defined in a source file rather than a header file. */ +- bool isLocal; ++ bool isLocal = false; + +- bool isTemplArg; ++ bool isTemplArg = false; + + /*! Does this class group its user-grouped members + * as a sub-section of the normal (public/protected/..) + * groups? + */ +- bool subGrouping; ++ bool subGrouping = false; + + /** Reason of existence is a "use" relation */ +- bool usedOnly; ++ bool usedOnly = false; + + /** List of titles to use for the summary */ + SDict vhdlSummaryTitles; + + /** Is this a simple (non-nested) C structure? */ +- bool isSimple; ++ bool isSimple = false; + + /** Does this class overloaded the -> operator? */ +- MemberDef *arrowOperator; ++ MemberDef *arrowOperator = 0; + +- ClassList *taggedInnerClasses; +- ClassDef *tagLessRef; ++ ClassList *taggedInnerClasses = 0; ++ ClassDef *tagLessRef = 0; + + /** Does this class represent a Java style enum? */ +- bool isJavaEnum; ++ bool isJavaEnum = false; + +- bool isGeneric; ++ bool isGeneric = false; + +- bool isAnonymous; ++ bool isAnonymous = false; + +- uint64 spec; ++ uint64 spec = 0; + + QCString metaData; + }; +diff -up doxygen-1.8.16/src/docgroup.h.orig doxygen-1.8.16/src/docgroup.h +--- doxygen-1.8.16/src/docgroup.h.orig 2019-08-02 18:43:41.000000000 +0200 ++++ doxygen-1.8.16/src/docgroup.h 2019-12-10 11:45:32.752260485 +0100 +@@ -42,9 +42,9 @@ class DocGroup + + private: + int findExistingGroup(int &groupId,const MemberGroupInfo *info); +- int m_openCount; ++ int m_openCount = 0; + QCString m_memberGroupHeader; +- int m_memberGroupId; ++ int m_memberGroupId = 0; + QCString m_memberGroupRelates; + QCString m_memberGroupDocs; + QStack m_autoGroupStack; +diff -up doxygen-1.8.16/src/doctokenizer.h.orig doxygen-1.8.16/src/doctokenizer.h +--- doxygen-1.8.16/src/doctokenizer.h.orig 2019-06-10 10:17:24.000000000 +0200 ++++ doxygen-1.8.16/src/doctokenizer.h 2019-12-10 11:45:32.752260485 +0100 +@@ -81,8 +81,8 @@ struct TokenInfo + // comment blocks + + // list token info +- bool isEnumList; +- int indent; ++ bool isEnumList = false; ++ int indent = 0; + + // sections + QCString sectionId; +@@ -95,22 +95,22 @@ struct TokenInfo + QCString verb; + + // xrefitem +- int id; ++ int id = -1; + + // html tag + HtmlAttribList attribs; +- bool endTag; +- bool emptyTag; ++ bool endTag = false; ++ bool emptyTag = false; + + // whitespace + QCString chars; + + // url +- bool isEMailAddr; ++ bool isEMailAddr = false; + + // param attributes + enum ParamDir { In=1, Out=2, InOut=3, Unspecified=0 }; +- ParamDir paramDir; ++ ParamDir paramDir = Unspecified; + }; + + // globals +diff -up doxygen-1.8.16/src/dotgraph.h.orig doxygen-1.8.16/src/dotgraph.h +--- doxygen-1.8.16/src/dotgraph.h.orig 2019-06-13 21:36:00.000000000 +0200 ++++ doxygen-1.8.16/src/dotgraph.h 2019-12-10 11:45:32.752260485 +0100 +@@ -83,22 +83,22 @@ class DotGraph + QCString relImgName() const { return m_relPath + imgName(); } + + // the following variables are used while writing the graph to a .dot file +- GraphOutputFormat m_graphFormat; +- EmbeddedOutputFormat m_textFormat; ++ GraphOutputFormat m_graphFormat = GOF_BITMAP; ++ EmbeddedOutputFormat m_textFormat = EOF_Html; + QDir m_dir; + QCString m_fileName; + QCString m_relPath; +- bool m_generateImageMap; +- int m_graphId; ++ bool m_generateImageMap = false; ++ int m_graphId = 0; + + QCString m_absPath; + QCString m_baseName; + QGString m_theGraph; +- bool m_regenerate; +- bool m_doNotAddImageToIndex; +- bool m_noDivTag; +- bool m_zoomable; +- bool m_urlOnly; ++ bool m_regenerate = false; ++ bool m_doNotAddImageToIndex = false; ++ bool m_noDivTag = false; ++ bool m_zoomable = true; ++ bool m_urlOnly = false; + + private: + DotGraph(const DotGraph &); +diff -up doxygen-1.8.16/src/memberdef.cpp.orig doxygen-1.8.16/src/memberdef.cpp +--- doxygen-1.8.16/src/memberdef.cpp.orig 2019-08-06 20:32:27.000000000 +0200 ++++ doxygen-1.8.16/src/memberdef.cpp 2019-12-10 11:45:32.753260493 +0100 +@@ -1299,32 +1299,32 @@ class MemberDefImpl::IMPL + const ArgumentList *al,const char *meta + ); + +- ClassDef *classDef; // member of or related to +- FileDef *fileDef; // member of file definition +- NamespaceDef *nspace; // the namespace this member is in. +- +- MemberDef *enumScope; // the enclosing scope, if this is an enum field +- bool livesInsideEnum; +- const MemberDef *annEnumType; // the anonymous enum that is the type of this member +- MemberList *enumFields; // enumeration fields +- +- MemberDef *redefines; // the members that this member redefines +- MemberList *redefinedBy; // the list of members that redefine this one +- +- MemberDef *memDef; // member definition for this declaration +- MemberDef *memDec; // member declaration for this definition +- ClassDef *relatedAlso; // points to class marked by relatedAlso ++ ClassDef *classDef = 0; // member of or related to ++ FileDef *fileDef = 0; // member of file definition ++ NamespaceDef *nspace = 0; // the namespace this member is in. ++ ++ MemberDef *enumScope = 0; // the enclosing scope, if this is an enum field ++ bool livesInsideEnum = false; ++ const MemberDef *annEnumType = 0; // the anonymous enum that is the type of this member ++ MemberList *enumFields = 0; // enumeration fields ++ ++ MemberDef *redefines = 0; // the members that this member redefines ++ MemberList *redefinedBy = 0; // the list of members that redefine this one ++ ++ MemberDef *memDef = 0; // member definition for this declaration ++ MemberDef *memDec = 0; // member declaration for this definition ++ ClassDef *relatedAlso = 0; // points to class marked by relatedAlso + +- ExampleSDict *exampleSDict; // a dictionary of all examples for quick access ++ ExampleSDict *exampleSDict = 0; // a dictionary of all examples for quick access + + QCString type; // return actual type + QCString accessorType; // return type that tell how to get to this member +- ClassDef *accessorClass; // class that this member accesses (for anonymous types) ++ ClassDef *accessorClass = 0; // class that this member accesses (for anonymous types) + QCString args; // function arguments/variable array specifiers + QCString def; // member definition in code (fully qualified name) + QCString anc; // HTML anchor name +- Specifier virt; // normal/virtual/pure virtual +- Protection prot; // protection type [Public/Protected/Private] ++ Specifier virt = Normal; // normal/virtual/pure virtual ++ Protection prot = Public; // protection type [Public/Protected/Private] + QCString decl; // member declaration in class + + QCString bitfields; // struct member bitfields +@@ -1334,13 +1334,13 @@ class MemberDefImpl::IMPL + QCString initializer; // initializer + QCString extraTypeChars; // extra type info found after the argument list + QCString enumBaseType; // base type of the enum (C++11) +- int initLines; // number of lines in the initializer ++ int initLines = 0; // number of lines in the initializer + +- uint64 memSpec; // The specifiers present for this member +- MemberType mtype; // returns the kind of member +- int maxInitLines; // when the initializer will be displayed +- int userInitLines; // result of explicit \hideinitializer or \showinitializer +- MemberDef *annMemb; ++ uint64 memSpec = 0; // The specifiers present for this member ++ MemberType mtype = MemberType_Define; // returns the kind of member ++ int maxInitLines = 0; // when the initializer will be displayed ++ int userInitLines = 0; // result of explicit \hideinitializer or \showinitializer ++ MemberDef *annMemb = 0; + + ArgumentList *defArgList; // argument list of this member definition + ArgumentList *declArgList; // argument list of this member declaration +@@ -1357,19 +1357,19 @@ class MemberDefImpl::IMPL + // as its type then this is computed by + // getClassDefOfAnonymousType() and + // cached here. +- SDict *classSectionSDict; // not accessible ++ SDict *classSectionSDict = 0; // not accessible + +- const MemberDef *groupAlias; // Member containing the definition +- int grpId; // group id +- MemberGroup *memberGroup; // group's member definition +- GroupDef *group; // group in which this member is in ++ const MemberDef *groupAlias = 0; // Member containing the definition ++ int grpId = 0; // group id ++ MemberGroup *memberGroup = 0; // group's member definition ++ GroupDef *group = 0; // group in which this member is in + Grouping::GroupPri_t grouppri; // priority of this definition + QCString groupFileName; // file where this grouping was defined +- int groupStartLine; // line " " " " " +- MemberDef *groupMember; ++ int groupStartLine = 0; // line " " " " " ++ MemberDef *groupMember = 0; + +- bool isTypedefValCached; +- const ClassDef *cachedTypedefValue; ++ bool isTypedefValCached = false; ++ const ClassDef *cachedTypedefValue = 0; + QCString cachedTypedefTemplSpec; + QCString cachedResolvedType; + +@@ -1379,41 +1379,41 @@ class MemberDefImpl::IMPL + //QCString inbodyDocs; + + // documentation inheritance +- MemberDef *docProvider; ++ MemberDef *docProvider = 0; + + // to store the output file base from tag files + QCString explicitOutputFileBase; + + // objective-c +- bool implOnly; // function found in implementation but not +- // in the interface +- mutable bool hasDocumentedParams; +- mutable bool hasDocumentedReturnType; +- bool isDMember; +- Relationship related; // relationship of this to the class +- bool stat; // is it a static function? +- bool proto; // is it a prototype; +- bool docEnumValues; // is an enum with documented enum values. +- +- mutable bool annScope; // member is part of an anonymous scope +- mutable bool annUsed; // ugly: needs to be mutable to allow setAnonymousUsed to act as a +- // const member. +- bool hasCallGraph; +- bool hasCallerGraph; +- bool hasReferencedByRelation; +- bool hasReferencesRelation; +- bool explExt; // member was explicitly declared external +- bool tspec; // member is a template specialization +- bool groupHasDocs; // true if the entry that caused the grouping was documented +- bool docsForDefinition; // TRUE => documentation block is put before +- // definition. +- // FALSE => block is put before declaration. +- ClassDef *category; +- MemberDef *categoryRelation; ++ bool implOnly = false; // function found in implementation but not ++ // in the interface ++ mutable bool hasDocumentedParams = false; ++ mutable bool hasDocumentedReturnType = false; ++ bool isDMember = false; ++ Relationship related = Member; // relationship of this to the class ++ bool stat = false; // is it a static function? ++ bool proto = false; // is it a prototype? ++ bool docEnumValues = false; // is an enum with documented enum values. ++ ++ mutable bool annScope = false; // member is part of an anonymous scope ++ mutable bool annUsed = false; // ugly: needs to be mutable to allow setAnonymousUsed to act as a ++ // const member. ++ bool hasCallGraph = false; ++ bool hasCallerGraph = false; ++ bool hasReferencedByRelation = false; ++ bool hasReferencesRelation = false; ++ bool explExt = false; // member was explicitly declared external ++ bool tspec = false; // member is a template specialization ++ bool groupHasDocs = false; // true if the entry that caused the grouping was documented ++ bool docsForDefinition = false; // TRUE => documentation block is put before ++ // definition. ++ // FALSE => block is put before declaration. ++ ClassDef *category = 0; ++ MemberDef *categoryRelation = 0; + QCString declFileName; +- int declLine; +- int declColumn; +- int numberOfFlowKW; ++ int declLine = 0; ++ int declColumn = 0; ++ int numberOfFlowKW = 0; + }; + + MemberDefImpl::IMPL::IMPL() : +diff -up doxygen-1.8.16/src/membergroup.h.orig doxygen-1.8.16/src/membergroup.h +--- doxygen-1.8.16/src/membergroup.h.orig 2019-12-10 11:45:32.754260502 +0100 ++++ doxygen-1.8.16/src/membergroup.h 2019-12-10 11:54:06.767797449 +0100 +@@ -101,18 +101,18 @@ class MemberGroup + int docLine() const { return m_docLine; } + + private: +- MemberList *memberList; // list of all members in the group +- MemberList *inDeclSection; +- int grpId; ++ MemberList *memberList = 0; // list of all members in the group ++ MemberList *inDeclSection = 0; ++ int grpId = 0; + QCString grpHeader; + QCString fileName; // base name of the generated file + QCString doc; +- bool inSameSection; +- int m_numDecMembers; +- int m_numDocMembers; +- const Definition *m_parent; ++ bool inSameSection = false; ++ int m_numDecMembers = 0; ++ int m_numDocMembers = 0; ++ const Definition *m_parent = 0; + QCString m_docFile; +- int m_docLine; ++ int m_docLine = 0; + QList *m_xrefListItems; + }; + +diff -up doxygen-1.8.16/src/scanner.l.orig doxygen-1.8.16/src/scanner.l +--- doxygen-1.8.16/src/scanner.l.orig 2019-12-10 11:45:32.756260520 +0100 ++++ doxygen-1.8.16/src/scanner.l 2019-12-10 11:54:52.099199108 +0100 +@@ -191,7 +191,7 @@ static QCString g_delimiter; + static int g_column; + + static int g_fencedSize=0; +-static bool g_nestedComment=0; ++static bool g_nestedComment=false; + + //----------------------------------------------------------------------------- + +diff -up doxygen-1.8.16/src/tclscanner.l.orig doxygen-1.8.16/src/tclscanner.l +--- doxygen-1.8.16/src/tclscanner.l.orig 2019-08-04 19:05:12.000000000 +0200 ++++ doxygen-1.8.16/src/tclscanner.l 2019-12-10 11:45:32.757260529 +0100 +@@ -1492,7 +1492,7 @@ tcl_inf("-> %s\n",(const char *)tcl.stri + { + tcl_inf("-> %s\n",(const char *)tcl.string_comment); + int myPos=0; +- bool myNew=0; ++ bool myNew=false; + int myLine=tcl.line_comment; + BufStr myI(1024); + BufStr myO(1024); +diff -up doxygen-1.8.16/src/vhdldocgen.h.orig doxygen-1.8.16/src/vhdldocgen.h +--- doxygen-1.8.16/src/vhdldocgen.h.orig 2019-06-10 10:17:24.000000000 +0200 ++++ doxygen-1.8.16/src/vhdldocgen.h 2019-12-10 11:45:32.757260529 +0100 +@@ -310,11 +310,11 @@ class FlowChart + ~FlowChart(); + + private: +- int id; +- int stamp; +- int type; ++ int id = 0; ++ int stamp = 0; ++ int type = 0; + +- int line; ++ int line = 0; + + QCString label; + QCString text; +diff -up doxygen-1.8.16/src/vhdljjparser.h.orig doxygen-1.8.16/src/vhdljjparser.h +--- doxygen-1.8.16/src/vhdljjparser.h.orig 2019-06-10 10:17:24.000000000 +0200 ++++ doxygen-1.8.16/src/vhdljjparser.h 2019-12-10 11:45:32.758260538 +0100 +@@ -87,9 +87,9 @@ struct VhdlConfNode + QCString arch; + QCString binding; + QCString compSpec; +- int level; +- bool isLeaf; +- bool isInlineConf; ++ int level = 0; ++ bool isLeaf = false; ++ bool isInlineConf = false; + + }; + diff --git a/doxygen.spec b/doxygen.spec index 5498712..0dcf1aa 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,7 +8,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.16 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -20,6 +20,7 @@ Source2: doxywizard.desktop # upstream patches Patch0: doxygen-1.8.16-#7248.patch +Patch1: doxygen-1.8.16-covscan.patch BuildRequires: %{_bindir}/python3 @@ -189,6 +190,9 @@ make tests -C %{_target_platform} %endif %changelog +* Tue Dec 10 2019 Than Ngo - 1:1.8.16-3 +- fixed covscan issues + * Mon Sep 16 2019 Than Ngo - 1:1.8.16-2 - backpored upstream patch to fix #7248 From 7d44dfcd922c33d750bd24366c9a7a988bc73e3d Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 10 Dec 2019 14:20:47 +0100 Subject: [PATCH 031/117] more coverity fixes --- doxygen-1.8.16-covscan.patch | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doxygen-1.8.16-covscan.patch b/doxygen-1.8.16-covscan.patch index c6ec936..18688ea 100644 --- a/doxygen-1.8.16-covscan.patch +++ b/doxygen-1.8.16-covscan.patch @@ -698,3 +698,27 @@ diff -up doxygen-1.8.16/src/vhdljjparser.h.orig doxygen-1.8.16/src/vhdljjparser. }; +diff -up doxygen-1.8.16/src/clangparser.cpp.me doxygen-1.8.16/src/clangparser.cpp +--- doxygen-1.8.16/src/clangparser.cpp.me 2019-12-10 12:08:46.334638776 +0100 ++++ doxygen-1.8.16/src/clangparser.cpp 2019-12-10 12:08:59.291755101 +0100 +@@ -174,7 +174,7 @@ void ClangParser::start(const char *file + std::string error; + // load a clang compilation database (https://clang.llvm.org/docs/JSONCompilationDatabase.html) + // this only needs to be loaded once, and could be refactored to a higher level function +- static std::unique_ptr db = ++ static std::shared_ptr db = + clang::tooling::CompilationDatabase::loadFromDirectory(clangCompileDatabase.data(), error); + int clang_option_len = 0; + std::vector command; +diff -up doxygen-1.8.16/src/doxygen.cpp.me doxygen-1.8.16/src/doxygen.cpp +--- doxygen-1.8.16/src/doxygen.cpp.me 2019-12-10 12:05:44.254007471 +0100 ++++ doxygen-1.8.16/src/doxygen.cpp 2019-12-10 12:07:24.286903381 +0100 +@@ -520,7 +520,7 @@ static void addSTLClasses(Entry *root) + addSTLMember(classEntry,info->templType2,info->templName2); + } + if (fullName=="std::auto_ptr" || fullName=="std::smart_ptr" || fullName=="std::shared_ptr" || +- fullName=="std::unique_ptr" || fullName=="std::weak_ptr") ++ fullName=="std::shared_ptr" || fullName=="std::weak_ptr") + { + Entry *memEntry = new Entry; + memEntry->name = "operator->"; From d1c4879feb7fa8944810d997c4752acc40627911 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 14 Jan 2020 11:50:27 +0100 Subject: [PATCH 032/117] - update to 1.8.17 - fixes test suite is failing - fixes broken urls in the xml output --- .gitignore | 1 + ...1.8.17-broken-urls-in-the-xml-output.patch | 102 +++ doxygen-1.8.16-#7248.patch | 36 - doxygen-1.8.16-covscan.patch | 724 ------------------ doxygen-1.8.17-test-suite-is-failing.patch | 78 ++ doxygen.spec | 43 +- sources | 3 +- 7 files changed, 209 insertions(+), 778 deletions(-) create mode 100644 doxgen-1.8.17-broken-urls-in-the-xml-output.patch delete mode 100644 doxygen-1.8.16-#7248.patch delete mode 100644 doxygen-1.8.16-covscan.patch create mode 100644 doxygen-1.8.17-test-suite-is-failing.patch diff --git a/.gitignore b/.gitignore index 0125476..abde3a8 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.14.src.tar.gz /doxygen-1.8.15.src.tar.gz /doxygen-1.8.16.src.tar.gz +/doxygen-1.8.17.src.tar.gz diff --git a/doxgen-1.8.17-broken-urls-in-the-xml-output.patch b/doxgen-1.8.17-broken-urls-in-the-xml-output.patch new file mode 100644 index 0000000..6376a8e --- /dev/null +++ b/doxgen-1.8.17-broken-urls-in-the-xml-output.patch @@ -0,0 +1,102 @@ +commit 2f79c6938c6d969f3d4ebc9ed0f2648668434502 +Author: albert-github +Date: Sat Jan 4 13:24:16 2020 +0100 + + issue #7477 Broken urls in the xml output + + Made code analogous to HTML code. + Also the doxygen internal tests suffered from this problem. + +diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp +index 409c2fe6..1e6becbe 100644 +--- a/src/xmldocvisitor.cpp ++++ b/src/xmldocvisitor.cpp +@@ -824,18 +824,22 @@ void XmlDocVisitor::visitPre(DocImage *img) + { + if (m_hide) return; + +- QCString baseName=img->name(); +- int i; +- if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1) ++ QCString url = img->url(); ++ QCString baseName; ++ if (url.isEmpty()) + { +- baseName=baseName.right(baseName.length()-i-1); ++ baseName = img->relPath()+img->name(); ++ } ++ else ++ { ++ baseName = correctURL(url,img->relPath()); + } + visitPreStart(m_t, "image", FALSE, this, img->children(), baseName, TRUE, img->type(), img->width(), img->height(), img ->isInlineImage()); + + // copy the image to the output dir + FileDef *fd; + bool ambig; +- if ((fd=findFileDef(Doxygen::imageNameDict,img->name(),ambig))) ++ if (url.isEmpty() && (fd=findFileDef(Doxygen::imageNameDict,img->name(),ambig))) + { + QFile inImage(fd->absFilePath()); + QFile outImage(Config_getString(XML_OUTPUT)+"/"+baseName.data()); +diff --git a/testing/031/indexpage.xml b/testing/031/indexpage.xml +index 2d74510a..eaf374b6 100644 +--- a/testing/031/indexpage.xml ++++ b/testing/031/indexpage.xml +@@ -11,42 +11,42 @@ + + More text. + SVG image with caption: +-A caption ++A caption + + PNG image with caption: +-A caption ++A caption + + SVG image without caption: +- ++ + + PNG image without caption: +- ++ + + Inline SVG image with caption: +-This image is inline MIT license ++This image is inline MIT license + within the text. + Inline PNG image with caption: +-This image is inline MIT license ++This image is inline MIT license + within the text. + Markdown style linked SVG image: +- ++ + Markdown style linked PNG image: +- ++ + HTML style linked SVG image: +- ++ + HTML style linked PNG image: +- ++ + HTML style unlinked SVG image: +- ++ + + HTML style unlinked PNG image: +- ++ + + Some markdown image tests +- ++ + Some normal link + +- ++ + Some normal link + + diff --git a/doxygen-1.8.16-#7248.patch b/doxygen-1.8.16-#7248.patch deleted file mode 100644 index 6a79b65..0000000 --- a/doxygen-1.8.16-#7248.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -up doxygen-1.8.16/src/tagreader.cpp.me doxygen-1.8.16/src/tagreader.cpp ---- doxygen-1.8.16/src/tagreader.cpp.me 2019-09-16 20:47:16.428896400 +0200 -+++ doxygen-1.8.16/src/tagreader.cpp 2019-09-16 20:48:53.426648016 +0200 -@@ -494,6 +494,23 @@ class TagFileParser : public QXmlDefault - - void endDocAnchor() - { -+ // Check whether or not the tag is automatically generate, in that case ignore the tag. -+ switch(m_state) -+ { -+ case InClass: -+ case InFile: -+ case InNamespace: -+ case InGroup: -+ case InPage: -+ case InMember: -+ case InPackage: -+ case InDir: -+ if (QString(m_curString).startsWith("autotoc_md")) return; -+ break; -+ default: -+ warn("Unexpected tag 'docanchor' found"); -+ return; -+ } - switch(m_state) - { - case InClass: m_curClass->docAnchors.append(new TagAnchorInfo(m_fileName,m_curString,m_title)); break; -@@ -504,7 +521,7 @@ class TagFileParser : public QXmlDefault - case InMember: m_curMember->docAnchors.append(new TagAnchorInfo(m_fileName,m_curString,m_title)); break; - case InPackage: m_curPackage->docAnchors.append(new TagAnchorInfo(m_fileName,m_curString,m_title)); break; - case InDir: m_curDir->docAnchors.append(new TagAnchorInfo(m_fileName,m_curString,m_title)); break; -- default: warn("Unexpected tag 'docanchor' found"); break; -+ default: warn("Unexpected tag 'docanchor' found"); break; // Not really necessary anymore - } - } - diff --git a/doxygen-1.8.16-covscan.patch b/doxygen-1.8.16-covscan.patch deleted file mode 100644 index 18688ea..0000000 --- a/doxygen-1.8.16-covscan.patch +++ /dev/null @@ -1,724 +0,0 @@ -diff -up doxygen-1.8.16/addon/doxywizard/wizard.h.orig doxygen-1.8.16/addon/doxywizard/wizard.h ---- doxygen-1.8.16/addon/doxywizard/wizard.h.orig 2017-10-31 20:36:00.000000000 +0100 -+++ doxygen-1.8.16/addon/doxywizard/wizard.h 2019-12-10 11:45:32.750260467 +0100 -@@ -52,11 +52,11 @@ class TuneColorDialog : public QDialog - void updateImage(int hue,int sat,int val); - - private: -- QImage *m_image; -- QLabel *m_imageLab; -- int m_hue; -- int m_sat; -- int m_gam; -+ QImage *m_image = 0; -+ QLabel *m_imageLab = 0; -+ int m_hue = 0; -+ int m_sat = 0; -+ int m_gam = 0; - }; - - class ColorPicker : public QWidget -@@ -91,11 +91,11 @@ private: - void setSat(int v); - void setGam(int v); - -- QPixmap *m_pix; -- Mode m_mode; -- int m_gam; -- int m_hue; -- int m_sat; -+ QPixmap *m_pix = 0; -+ Mode m_mode = Hue; -+ int m_gam = 0; -+ int m_hue = 0; -+ int m_sat = 0; - - }; - -@@ -120,16 +120,16 @@ class Step1 : public QWidget - void setRecursiveScan(int); - - private: -- QLineEdit *m_projName; -- QLineEdit *m_projBrief; -- QLineEdit *m_projNumber; -- QLineEdit *m_sourceDir; -- QLineEdit *m_destDir; -- QLabel *m_projIconLab; -- QCheckBox *m_recursive; -- QPushButton *m_srcSelectDir; -- QPushButton *m_dstSelectDir; -- Wizard *m_wizard; -+ QLineEdit *m_projName = 0; -+ QLineEdit *m_projBrief = 0; -+ QLineEdit *m_projNumber = 0; -+ QLineEdit *m_sourceDir = 0; -+ QLineEdit *m_destDir = 0; -+ QLabel *m_projIconLab = 0; -+ QCheckBox *m_recursive = 0; -+ QPushButton *m_srcSelectDir = 0; -+ QPushButton *m_dstSelectDir = 0; -+ Wizard *m_wizard = 0; - const QHash &m_modelData; - }; - -@@ -146,12 +146,12 @@ class Step2 : public QWidget - void changeCrossRefState(int choice); - - private: -- QGroupBox *m_extractMode; -- QGroupBox *m_optimizeLang; -- QButtonGroup *m_extractModeGroup; -- QButtonGroup *m_optimizeLangGroup; -- QCheckBox *m_crossRef; -- Wizard *m_wizard; -+ QGroupBox *m_extractMode = 0; -+ QGroupBox *m_optimizeLang = 0; -+ QButtonGroup *m_extractModeGroup = 0; -+ QButtonGroup *m_optimizeLangGroup = 0; -+ QCheckBox *m_crossRef = 0; -+ Wizard *m_wizard = 0; - const QHash &m_modelData; - }; - -@@ -175,18 +175,18 @@ class Step3 : public QWidget - void tuneColorDialog(); - - private: -- QGroupBox *m_texOptions; -- QButtonGroup *m_texOptionsGroup; -- QGroupBox *m_htmlOptions; -- QButtonGroup *m_htmlOptionsGroup; -- QCheckBox *m_htmlEnabled; -- QCheckBox *m_latexEnabled; -- QCheckBox *m_manEnabled; -- QCheckBox *m_rtfEnabled; -- QCheckBox *m_xmlEnabled; -- QCheckBox *m_searchEnabled; -- QPushButton *m_tuneColor; -- Wizard *m_wizard; -+ QGroupBox *m_texOptions = 0; -+ QButtonGroup *m_texOptionsGroup = 0; -+ QGroupBox *m_htmlOptions = 0; -+ QButtonGroup *m_htmlOptionsGroup = 0; -+ QCheckBox *m_htmlEnabled = 0; -+ QCheckBox *m_latexEnabled = 0; -+ QCheckBox *m_manEnabled = 0; -+ QCheckBox *m_rtfEnabled = 0; -+ QCheckBox *m_xmlEnabled = 0; -+ QCheckBox *m_searchEnabled = 0; -+ QPushButton *m_tuneColor = 0; -+ Wizard *m_wizard = 0; - const QHash &m_modelData; - }; - -@@ -209,17 +209,17 @@ class Step4 : public QWidget - void setCallerGraphEnabled(int state); - - private: -- QGroupBox *m_diagramMode; -- QButtonGroup *m_diagramModeGroup; -- QGroupBox *m_dotGroup; -- QCheckBox *m_dotClass; -- QCheckBox *m_dotCollaboration; -- QCheckBox *m_dotInclude; -- QCheckBox *m_dotIncludedBy; -- QCheckBox *m_dotInheritance; -- QCheckBox *m_dotCall; -- QCheckBox *m_dotCaller; -- Wizard *m_wizard; -+ QGroupBox *m_diagramMode = 0; -+ QButtonGroup *m_diagramModeGroup = 0; -+ QGroupBox *m_dotGroup = 0; -+ QCheckBox *m_dotClass = 0; -+ QCheckBox *m_dotCollaboration = 0; -+ QCheckBox *m_dotInclude = 0; -+ QCheckBox *m_dotIncludedBy = 0; -+ QCheckBox *m_dotInheritance = 0; -+ QCheckBox *m_dotCall = 0; -+ QCheckBox *m_dotCaller = 0; -+ Wizard *m_wizard = 0; - const QHash &m_modelData; - }; - -@@ -243,14 +243,14 @@ class Wizard : public QSplitter - - private: - const QHash &m_modelData; -- QTreeWidget *m_treeWidget; -- QStackedWidget *m_topicStack; -- Step1 *m_step1; -- Step2 *m_step2; -- Step3 *m_step3; -- Step4 *m_step4; -- QPushButton *m_next; -- QPushButton *m_prev; -+ QTreeWidget *m_treeWidget = 0; -+ QStackedWidget *m_topicStack = 0; -+ Step1 *m_step1 = 0; -+ Step2 *m_step2 = 0; -+ Step3 *m_step3 = 0; -+ Step4 *m_step4 = 0; -+ QPushButton *m_next = 0; -+ QPushButton *m_prev = 0; - }; - - #endif -diff -up doxygen-1.8.16/src/classdef.cpp.orig doxygen-1.8.16/src/classdef.cpp ---- doxygen-1.8.16/src/classdef.cpp.orig 2019-08-04 19:04:55.000000000 +0200 -+++ doxygen-1.8.16/src/classdef.cpp 2019-12-10 11:52:17.184826531 +0100 -@@ -265,7 +265,7 @@ class ClassDefImpl : public DefinitionIm - - // PIMPL idiom - class IMPL; -- IMPL *m_impl; -+ IMPL *m_impl = 0; - }; - - ClassDef *createClassDef( -@@ -525,7 +525,7 @@ class ClassDefAliasImpl : public Definit - QPtrDict *visitedClasses=0) const {} - - private: -- mutable bool m_visited; -+ mutable bool m_visited = false; - }; - - -@@ -563,27 +563,27 @@ class ClassDefImpl::IMPL - /*! Include information about the header file should be included - * in the documentation. 0 by default, set by setIncludeFile(). - */ -- IncludeInfo *incInfo; -+ IncludeInfo *incInfo = 0; - - /*! List of base class (or super-classes) from which this class derives - * directly. - */ -- BaseClassList *inherits; -+ BaseClassList *inherits = 0; - - /*! List of sub-classes that directly derive from this class - */ -- BaseClassList *inheritedBy; -+ BaseClassList *inheritedBy = 0; - - /*! Namespace this class is part of - * (this is the inner most namespace in case of nested namespaces) - */ -- NamespaceDef *nspace; -+ NamespaceDef *nspace = 0; - - /*! File this class is defined in */ -- FileDef *fileDef; -+ FileDef *fileDef = 0; - - /*! List of all members (including inherited members) */ -- MemberNameInfoSDict *allMemberNameInfoSDict; -+ MemberNameInfoSDict *allMemberNameInfoSDict = 0; - - /*! Template arguments of this class */ - ArgumentList *tempArgs; -@@ -595,7 +595,7 @@ class ClassDefImpl::IMPL - FileList files; - - /*! Examples that use this class */ -- ExampleSDict *exampleSDict; -+ ExampleSDict *exampleSDict = 0; - - /*! Holds the kind of "class" this is. */ - ClassDef::CompoundType compType; -@@ -609,30 +609,30 @@ class ClassDefImpl::IMPL - /*! The inner classes contained in this class. Will be 0 if there are - * no inner classes. - */ -- ClassSDict *innerClasses; -+ ClassSDict *innerClasses = 0; - - /* classes for the collaboration diagram */ -- UsesClassDict *usesImplClassDict; -- UsesClassDict *usedByImplClassDict; -- UsesClassDict *usesIntfClassDict; -+ UsesClassDict *usesImplClassDict = 0; -+ UsesClassDict *usedByImplClassDict = 0; -+ UsesClassDict *usesIntfClassDict = 0; - -- ConstraintClassDict *constraintClassDict; -+ ConstraintClassDict *constraintClassDict = 0; - - /*! Template instances that exists of this class, the key in the - * dictionary is the template argument list. - */ -- mutable QDict *templateInstances; -+ mutable QDict *templateInstances = 0; - - /*! Template instances that exists of this class, as defined by variables. - * We do NOT want to document these individually. The key in the - * dictionary is the template argument list. - */ -- mutable QDict *variableInstances; -+ mutable QDict *variableInstances = 0; - -- QDict *templBaseClassNames; -+ QDict *templBaseClassNames = 0; - - /*! The class this class is an instance of. */ -- const ClassDef *templateMaster; -+ const ClassDef *templateMaster = 0; - - /*! local class name which could be a typedef'ed alias name. */ - QCString className; -@@ -640,56 +640,56 @@ class ClassDefImpl::IMPL - /*! If this class is a Objective-C category, then this points to the - * class which is extended. - */ -- ClassDef *categoryOf; -+ ClassDef *categoryOf = 0; - - QList memberLists; - - /* user defined member groups */ -- MemberGroupSDict *memberGroupSDict; -+ MemberGroupSDict *memberGroupSDict = 0; - - /*! Is this an abstract class? */ -- bool isAbstract; -+ bool isAbstract = false; - - /*! Is the class part of an unnamed namespace? */ -- bool isStatic; -+ bool isStatic = false; - - /*! TRUE if classes members are merged with those of the base classes. */ -- bool membersMerged; -+ bool membersMerged = false; - - /*! TRUE if the class is defined in a source file rather than a header file. */ -- bool isLocal; -+ bool isLocal = false; - -- bool isTemplArg; -+ bool isTemplArg = false; - - /*! Does this class group its user-grouped members - * as a sub-section of the normal (public/protected/..) - * groups? - */ -- bool subGrouping; -+ bool subGrouping = false; - - /** Reason of existence is a "use" relation */ -- bool usedOnly; -+ bool usedOnly = false; - - /** List of titles to use for the summary */ - SDict vhdlSummaryTitles; - - /** Is this a simple (non-nested) C structure? */ -- bool isSimple; -+ bool isSimple = false; - - /** Does this class overloaded the -> operator? */ -- MemberDef *arrowOperator; -+ MemberDef *arrowOperator = 0; - -- ClassList *taggedInnerClasses; -- ClassDef *tagLessRef; -+ ClassList *taggedInnerClasses = 0; -+ ClassDef *tagLessRef = 0; - - /** Does this class represent a Java style enum? */ -- bool isJavaEnum; -+ bool isJavaEnum = false; - -- bool isGeneric; -+ bool isGeneric = false; - -- bool isAnonymous; -+ bool isAnonymous = false; - -- uint64 spec; -+ uint64 spec = 0; - - QCString metaData; - }; -diff -up doxygen-1.8.16/src/docgroup.h.orig doxygen-1.8.16/src/docgroup.h ---- doxygen-1.8.16/src/docgroup.h.orig 2019-08-02 18:43:41.000000000 +0200 -+++ doxygen-1.8.16/src/docgroup.h 2019-12-10 11:45:32.752260485 +0100 -@@ -42,9 +42,9 @@ class DocGroup - - private: - int findExistingGroup(int &groupId,const MemberGroupInfo *info); -- int m_openCount; -+ int m_openCount = 0; - QCString m_memberGroupHeader; -- int m_memberGroupId; -+ int m_memberGroupId = 0; - QCString m_memberGroupRelates; - QCString m_memberGroupDocs; - QStack m_autoGroupStack; -diff -up doxygen-1.8.16/src/doctokenizer.h.orig doxygen-1.8.16/src/doctokenizer.h ---- doxygen-1.8.16/src/doctokenizer.h.orig 2019-06-10 10:17:24.000000000 +0200 -+++ doxygen-1.8.16/src/doctokenizer.h 2019-12-10 11:45:32.752260485 +0100 -@@ -81,8 +81,8 @@ struct TokenInfo - // comment blocks - - // list token info -- bool isEnumList; -- int indent; -+ bool isEnumList = false; -+ int indent = 0; - - // sections - QCString sectionId; -@@ -95,22 +95,22 @@ struct TokenInfo - QCString verb; - - // xrefitem -- int id; -+ int id = -1; - - // html tag - HtmlAttribList attribs; -- bool endTag; -- bool emptyTag; -+ bool endTag = false; -+ bool emptyTag = false; - - // whitespace - QCString chars; - - // url -- bool isEMailAddr; -+ bool isEMailAddr = false; - - // param attributes - enum ParamDir { In=1, Out=2, InOut=3, Unspecified=0 }; -- ParamDir paramDir; -+ ParamDir paramDir = Unspecified; - }; - - // globals -diff -up doxygen-1.8.16/src/dotgraph.h.orig doxygen-1.8.16/src/dotgraph.h ---- doxygen-1.8.16/src/dotgraph.h.orig 2019-06-13 21:36:00.000000000 +0200 -+++ doxygen-1.8.16/src/dotgraph.h 2019-12-10 11:45:32.752260485 +0100 -@@ -83,22 +83,22 @@ class DotGraph - QCString relImgName() const { return m_relPath + imgName(); } - - // the following variables are used while writing the graph to a .dot file -- GraphOutputFormat m_graphFormat; -- EmbeddedOutputFormat m_textFormat; -+ GraphOutputFormat m_graphFormat = GOF_BITMAP; -+ EmbeddedOutputFormat m_textFormat = EOF_Html; - QDir m_dir; - QCString m_fileName; - QCString m_relPath; -- bool m_generateImageMap; -- int m_graphId; -+ bool m_generateImageMap = false; -+ int m_graphId = 0; - - QCString m_absPath; - QCString m_baseName; - QGString m_theGraph; -- bool m_regenerate; -- bool m_doNotAddImageToIndex; -- bool m_noDivTag; -- bool m_zoomable; -- bool m_urlOnly; -+ bool m_regenerate = false; -+ bool m_doNotAddImageToIndex = false; -+ bool m_noDivTag = false; -+ bool m_zoomable = true; -+ bool m_urlOnly = false; - - private: - DotGraph(const DotGraph &); -diff -up doxygen-1.8.16/src/memberdef.cpp.orig doxygen-1.8.16/src/memberdef.cpp ---- doxygen-1.8.16/src/memberdef.cpp.orig 2019-08-06 20:32:27.000000000 +0200 -+++ doxygen-1.8.16/src/memberdef.cpp 2019-12-10 11:45:32.753260493 +0100 -@@ -1299,32 +1299,32 @@ class MemberDefImpl::IMPL - const ArgumentList *al,const char *meta - ); - -- ClassDef *classDef; // member of or related to -- FileDef *fileDef; // member of file definition -- NamespaceDef *nspace; // the namespace this member is in. -- -- MemberDef *enumScope; // the enclosing scope, if this is an enum field -- bool livesInsideEnum; -- const MemberDef *annEnumType; // the anonymous enum that is the type of this member -- MemberList *enumFields; // enumeration fields -- -- MemberDef *redefines; // the members that this member redefines -- MemberList *redefinedBy; // the list of members that redefine this one -- -- MemberDef *memDef; // member definition for this declaration -- MemberDef *memDec; // member declaration for this definition -- ClassDef *relatedAlso; // points to class marked by relatedAlso -+ ClassDef *classDef = 0; // member of or related to -+ FileDef *fileDef = 0; // member of file definition -+ NamespaceDef *nspace = 0; // the namespace this member is in. -+ -+ MemberDef *enumScope = 0; // the enclosing scope, if this is an enum field -+ bool livesInsideEnum = false; -+ const MemberDef *annEnumType = 0; // the anonymous enum that is the type of this member -+ MemberList *enumFields = 0; // enumeration fields -+ -+ MemberDef *redefines = 0; // the members that this member redefines -+ MemberList *redefinedBy = 0; // the list of members that redefine this one -+ -+ MemberDef *memDef = 0; // member definition for this declaration -+ MemberDef *memDec = 0; // member declaration for this definition -+ ClassDef *relatedAlso = 0; // points to class marked by relatedAlso - -- ExampleSDict *exampleSDict; // a dictionary of all examples for quick access -+ ExampleSDict *exampleSDict = 0; // a dictionary of all examples for quick access - - QCString type; // return actual type - QCString accessorType; // return type that tell how to get to this member -- ClassDef *accessorClass; // class that this member accesses (for anonymous types) -+ ClassDef *accessorClass = 0; // class that this member accesses (for anonymous types) - QCString args; // function arguments/variable array specifiers - QCString def; // member definition in code (fully qualified name) - QCString anc; // HTML anchor name -- Specifier virt; // normal/virtual/pure virtual -- Protection prot; // protection type [Public/Protected/Private] -+ Specifier virt = Normal; // normal/virtual/pure virtual -+ Protection prot = Public; // protection type [Public/Protected/Private] - QCString decl; // member declaration in class - - QCString bitfields; // struct member bitfields -@@ -1334,13 +1334,13 @@ class MemberDefImpl::IMPL - QCString initializer; // initializer - QCString extraTypeChars; // extra type info found after the argument list - QCString enumBaseType; // base type of the enum (C++11) -- int initLines; // number of lines in the initializer -+ int initLines = 0; // number of lines in the initializer - -- uint64 memSpec; // The specifiers present for this member -- MemberType mtype; // returns the kind of member -- int maxInitLines; // when the initializer will be displayed -- int userInitLines; // result of explicit \hideinitializer or \showinitializer -- MemberDef *annMemb; -+ uint64 memSpec = 0; // The specifiers present for this member -+ MemberType mtype = MemberType_Define; // returns the kind of member -+ int maxInitLines = 0; // when the initializer will be displayed -+ int userInitLines = 0; // result of explicit \hideinitializer or \showinitializer -+ MemberDef *annMemb = 0; - - ArgumentList *defArgList; // argument list of this member definition - ArgumentList *declArgList; // argument list of this member declaration -@@ -1357,19 +1357,19 @@ class MemberDefImpl::IMPL - // as its type then this is computed by - // getClassDefOfAnonymousType() and - // cached here. -- SDict *classSectionSDict; // not accessible -+ SDict *classSectionSDict = 0; // not accessible - -- const MemberDef *groupAlias; // Member containing the definition -- int grpId; // group id -- MemberGroup *memberGroup; // group's member definition -- GroupDef *group; // group in which this member is in -+ const MemberDef *groupAlias = 0; // Member containing the definition -+ int grpId = 0; // group id -+ MemberGroup *memberGroup = 0; // group's member definition -+ GroupDef *group = 0; // group in which this member is in - Grouping::GroupPri_t grouppri; // priority of this definition - QCString groupFileName; // file where this grouping was defined -- int groupStartLine; // line " " " " " -- MemberDef *groupMember; -+ int groupStartLine = 0; // line " " " " " -+ MemberDef *groupMember = 0; - -- bool isTypedefValCached; -- const ClassDef *cachedTypedefValue; -+ bool isTypedefValCached = false; -+ const ClassDef *cachedTypedefValue = 0; - QCString cachedTypedefTemplSpec; - QCString cachedResolvedType; - -@@ -1379,41 +1379,41 @@ class MemberDefImpl::IMPL - //QCString inbodyDocs; - - // documentation inheritance -- MemberDef *docProvider; -+ MemberDef *docProvider = 0; - - // to store the output file base from tag files - QCString explicitOutputFileBase; - - // objective-c -- bool implOnly; // function found in implementation but not -- // in the interface -- mutable bool hasDocumentedParams; -- mutable bool hasDocumentedReturnType; -- bool isDMember; -- Relationship related; // relationship of this to the class -- bool stat; // is it a static function? -- bool proto; // is it a prototype; -- bool docEnumValues; // is an enum with documented enum values. -- -- mutable bool annScope; // member is part of an anonymous scope -- mutable bool annUsed; // ugly: needs to be mutable to allow setAnonymousUsed to act as a -- // const member. -- bool hasCallGraph; -- bool hasCallerGraph; -- bool hasReferencedByRelation; -- bool hasReferencesRelation; -- bool explExt; // member was explicitly declared external -- bool tspec; // member is a template specialization -- bool groupHasDocs; // true if the entry that caused the grouping was documented -- bool docsForDefinition; // TRUE => documentation block is put before -- // definition. -- // FALSE => block is put before declaration. -- ClassDef *category; -- MemberDef *categoryRelation; -+ bool implOnly = false; // function found in implementation but not -+ // in the interface -+ mutable bool hasDocumentedParams = false; -+ mutable bool hasDocumentedReturnType = false; -+ bool isDMember = false; -+ Relationship related = Member; // relationship of this to the class -+ bool stat = false; // is it a static function? -+ bool proto = false; // is it a prototype? -+ bool docEnumValues = false; // is an enum with documented enum values. -+ -+ mutable bool annScope = false; // member is part of an anonymous scope -+ mutable bool annUsed = false; // ugly: needs to be mutable to allow setAnonymousUsed to act as a -+ // const member. -+ bool hasCallGraph = false; -+ bool hasCallerGraph = false; -+ bool hasReferencedByRelation = false; -+ bool hasReferencesRelation = false; -+ bool explExt = false; // member was explicitly declared external -+ bool tspec = false; // member is a template specialization -+ bool groupHasDocs = false; // true if the entry that caused the grouping was documented -+ bool docsForDefinition = false; // TRUE => documentation block is put before -+ // definition. -+ // FALSE => block is put before declaration. -+ ClassDef *category = 0; -+ MemberDef *categoryRelation = 0; - QCString declFileName; -- int declLine; -- int declColumn; -- int numberOfFlowKW; -+ int declLine = 0; -+ int declColumn = 0; -+ int numberOfFlowKW = 0; - }; - - MemberDefImpl::IMPL::IMPL() : -diff -up doxygen-1.8.16/src/membergroup.h.orig doxygen-1.8.16/src/membergroup.h ---- doxygen-1.8.16/src/membergroup.h.orig 2019-12-10 11:45:32.754260502 +0100 -+++ doxygen-1.8.16/src/membergroup.h 2019-12-10 11:54:06.767797449 +0100 -@@ -101,18 +101,18 @@ class MemberGroup - int docLine() const { return m_docLine; } - - private: -- MemberList *memberList; // list of all members in the group -- MemberList *inDeclSection; -- int grpId; -+ MemberList *memberList = 0; // list of all members in the group -+ MemberList *inDeclSection = 0; -+ int grpId = 0; - QCString grpHeader; - QCString fileName; // base name of the generated file - QCString doc; -- bool inSameSection; -- int m_numDecMembers; -- int m_numDocMembers; -- const Definition *m_parent; -+ bool inSameSection = false; -+ int m_numDecMembers = 0; -+ int m_numDocMembers = 0; -+ const Definition *m_parent = 0; - QCString m_docFile; -- int m_docLine; -+ int m_docLine = 0; - QList *m_xrefListItems; - }; - -diff -up doxygen-1.8.16/src/scanner.l.orig doxygen-1.8.16/src/scanner.l ---- doxygen-1.8.16/src/scanner.l.orig 2019-12-10 11:45:32.756260520 +0100 -+++ doxygen-1.8.16/src/scanner.l 2019-12-10 11:54:52.099199108 +0100 -@@ -191,7 +191,7 @@ static QCString g_delimiter; - static int g_column; - - static int g_fencedSize=0; --static bool g_nestedComment=0; -+static bool g_nestedComment=false; - - //----------------------------------------------------------------------------- - -diff -up doxygen-1.8.16/src/tclscanner.l.orig doxygen-1.8.16/src/tclscanner.l ---- doxygen-1.8.16/src/tclscanner.l.orig 2019-08-04 19:05:12.000000000 +0200 -+++ doxygen-1.8.16/src/tclscanner.l 2019-12-10 11:45:32.757260529 +0100 -@@ -1492,7 +1492,7 @@ tcl_inf("-> %s\n",(const char *)tcl.stri - { - tcl_inf("-> %s\n",(const char *)tcl.string_comment); - int myPos=0; -- bool myNew=0; -+ bool myNew=false; - int myLine=tcl.line_comment; - BufStr myI(1024); - BufStr myO(1024); -diff -up doxygen-1.8.16/src/vhdldocgen.h.orig doxygen-1.8.16/src/vhdldocgen.h ---- doxygen-1.8.16/src/vhdldocgen.h.orig 2019-06-10 10:17:24.000000000 +0200 -+++ doxygen-1.8.16/src/vhdldocgen.h 2019-12-10 11:45:32.757260529 +0100 -@@ -310,11 +310,11 @@ class FlowChart - ~FlowChart(); - - private: -- int id; -- int stamp; -- int type; -+ int id = 0; -+ int stamp = 0; -+ int type = 0; - -- int line; -+ int line = 0; - - QCString label; - QCString text; -diff -up doxygen-1.8.16/src/vhdljjparser.h.orig doxygen-1.8.16/src/vhdljjparser.h ---- doxygen-1.8.16/src/vhdljjparser.h.orig 2019-06-10 10:17:24.000000000 +0200 -+++ doxygen-1.8.16/src/vhdljjparser.h 2019-12-10 11:45:32.758260538 +0100 -@@ -87,9 +87,9 @@ struct VhdlConfNode - QCString arch; - QCString binding; - QCString compSpec; -- int level; -- bool isLeaf; -- bool isInlineConf; -+ int level = 0; -+ bool isLeaf = false; -+ bool isInlineConf = false; - - }; - -diff -up doxygen-1.8.16/src/clangparser.cpp.me doxygen-1.8.16/src/clangparser.cpp ---- doxygen-1.8.16/src/clangparser.cpp.me 2019-12-10 12:08:46.334638776 +0100 -+++ doxygen-1.8.16/src/clangparser.cpp 2019-12-10 12:08:59.291755101 +0100 -@@ -174,7 +174,7 @@ void ClangParser::start(const char *file - std::string error; - // load a clang compilation database (https://clang.llvm.org/docs/JSONCompilationDatabase.html) - // this only needs to be loaded once, and could be refactored to a higher level function -- static std::unique_ptr db = -+ static std::shared_ptr db = - clang::tooling::CompilationDatabase::loadFromDirectory(clangCompileDatabase.data(), error); - int clang_option_len = 0; - std::vector command; -diff -up doxygen-1.8.16/src/doxygen.cpp.me doxygen-1.8.16/src/doxygen.cpp ---- doxygen-1.8.16/src/doxygen.cpp.me 2019-12-10 12:05:44.254007471 +0100 -+++ doxygen-1.8.16/src/doxygen.cpp 2019-12-10 12:07:24.286903381 +0100 -@@ -520,7 +520,7 @@ static void addSTLClasses(Entry *root) - addSTLMember(classEntry,info->templType2,info->templName2); - } - if (fullName=="std::auto_ptr" || fullName=="std::smart_ptr" || fullName=="std::shared_ptr" || -- fullName=="std::unique_ptr" || fullName=="std::weak_ptr") -+ fullName=="std::shared_ptr" || fullName=="std::weak_ptr") - { - Entry *memEntry = new Entry; - memEntry->name = "operator->"; diff --git a/doxygen-1.8.17-test-suite-is-failing.patch b/doxygen-1.8.17-test-suite-is-failing.patch new file mode 100644 index 0000000..b41002e --- /dev/null +++ b/doxygen-1.8.17-test-suite-is-failing.patch @@ -0,0 +1,78 @@ +commit cd9dee013dc749a10bbe019c350e0e62b6635795 +Author: albert-github +Date: Wed Jan 1 17:51:53 2020 +0100 + + issue #7464 1.8.17: test suite is failing + + On Windows the syntax with the command and arguments in one string worked but on *nix (and Cygwin) it didn't. + - changed calls to Popen to split command (see also: https://docs.python.org/3/library/subprocess.html). + - explicitly specify files to check for xhtml + - changed call to xmllint for xhtml and docbook (due to stdout overflow in some cases, we are not really interested in the, formatted, output of xmllint). + - in the update part a `read` was left, should have been removed. + +diff --git a/testing/runtests.py b/testing/runtests.py +index a4118b86..10fe5021 100755 +--- a/testing/runtests.py ++++ b/testing/runtests.py +@@ -3,6 +3,7 @@ + from __future__ import print_function + import argparse, glob, itertools, re, shutil, os, sys + import subprocess ++import shlex + + config_reg = re.compile('.*\/\/\s*(?P\S+):\s*(?P.*)$') + +@@ -28,10 +29,10 @@ def xpopen(cmd, cmd1="",encoding='utf-8-sig', getStderr=False): + return os.popen(cmd).read() # Python 2 without encoding + else: + if (getStderr): +- proc = subprocess.run(cmd1,encoding=encoding,capture_output=True) # Python 3 with encoding +- return proc.stderr ++ proc = subprocess.Popen(shlex.split(cmd1),stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding ++ return proc.stderr.read() + else: +- proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding ++ proc = subprocess.Popen(shlex.split(cmd),stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding + return proc.stdout.read() + + class Tester: +@@ -137,7 +138,7 @@ class Tester: + print('GENERATE_DOCBOOK=NO', file=f) + if (self.args.xhtml): + print('GENERATE_HTML=YES', file=f) +- # HTML_OUTPUT can also be set locally ++ # HTML_OUTPUT can also have been set locally + print('HTML_OUTPUT=%s/html' % self.test_out, file=f) + print('HTML_FILE_EXTENSION=.xhtml', file=f) + if (self.args.pdf): +@@ -184,7 +185,7 @@ class Tester: + print('Non-existing file %s after \'check:\' statement' % check_file) + return + # convert output to canonical form +- data = xpopen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read() ++ data = xpopen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)) + if data: + # strip version + data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n') +@@ -326,7 +327,7 @@ class Tester: + tests.append(glob.glob('%s/*.xml' % (docbook_output))) + tests.append(glob.glob('%s/*/*/*.xml' % (docbook_output))) + tests = ' '.join(list(itertools.chain.from_iterable(tests))).replace(self.args.outputdir +'/','').replace('\\','/') +- exe_string = '%s --nonet --postvalid %s' % (self.args.xmllint,tests) ++ exe_string = '%s --noout --nonet --postvalid %s' % (self.args.xmllint,tests) + exe_string1 = exe_string + exe_string += ' %s' % (redirx) + exe_string += ' %s more "%s/temp"' % (separ,docbook_output) +@@ -346,7 +347,11 @@ class Tester: + redirx=' 2> %s/temp >nul:'%html_output + else: + redirx='2>%s/temp >/dev/null'%html_output +- exe_string = '%s --path dtd --nonet --postvalid %s/*xhtml' % (self.args.xmllint,html_output) ++ check_file = [] ++ check_file.append(glob.glob('%s/*.xhtml' % (html_output))) ++ check_file.append(glob.glob('%s/*/*/*.xhtml' % (html_output))) ++ check_file = ' '.join(list(itertools.chain.from_iterable(check_file))).replace(self.args.outputdir +'/','').replace('\\','/') ++ exe_string = '%s --noout --path dtd --nonet --postvalid %s' % (self.args.xmllint,check_file) + exe_string1 = exe_string + exe_string += ' %s' % (redirx) + exe_string += ' %s more "%s/temp"' % (separ,html_output) diff --git a/doxygen.spec b/doxygen.spec index 0dcf1aa..799bc7a 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -3,27 +3,27 @@ %else %global xapian_core_support OFF %endif +%global BuildDir Out Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.8.16 -Release: 3%{?dist} +Version: 1.8.17 +Release: 1%{?dist} # No version is specified. License: GPL+ Url: http://www.doxygen.nl Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk -Source1: doxywizard.png -Source2: doxywizard.desktop +Source1: doxywizard.desktop # upstream patches -Patch0: doxygen-1.8.16-#7248.patch -Patch1: doxygen-1.8.16-covscan.patch +Patch0: doxgen-1.8.17-broken-urls-in-the-xml-output.patch +Patch1: doxygen-1.8.17-test-suite-is-failing.patch BuildRequires: %{_bindir}/python3 - +BuildRequires: ImageMagick BuildRequires: gcc-c++ gcc BuildRequires: perl-interpreter %if ! 0%{?_module_build} @@ -105,9 +105,8 @@ mv LANGUAGE.HOWTO.new LANGUAGE.HOWTO %build - -mkdir -p %{_target_platform} -pushd %{_target_platform} +mkdir -p %{BuildDir} +pushd %{BuildDir} %if ! 0%{?_module_build} %cmake \ -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ @@ -133,12 +132,21 @@ pushd %{_target_platform} %endif popd -make %{?_smp_mflags} -C %{_target_platform} +make %{?_smp_mflags} -C %{BuildDir} %install -make install DESTDIR=%{buildroot} -C %{_target_platform} +make install DESTDIR=%{buildroot} -C %{BuildDir} -install -m644 -p -D %{SOURCE1} %{buildroot}%{_datadir}/pixmaps/doxywizard.png +# convert icons +convert addon/doxywizard/doxywizard.ico doxywizard.png + +# install icons +icondir=%{buildroot}%{_datadir}/icons/hicolor +mkdir -m755 -p $icondir/{16x16,32x32,48x48,128x128}/apps +install -m644 -p -D doxywizard-6.png $icondir/16x16/apps/doxywizard.png +install -m644 -p -D doxywizard-5.png $icondir/32x32/apps/doxywizard.png +install -m644 -p -D doxywizard-4.png $icondir/48x48/apps/doxywizard.png +install -m644 -p -D doxywizard-3.png $icondir/128x128/apps/doxywizard.png # install man pages mkdir -p %{buildroot}/%{_mandir}/man1 @@ -155,11 +163,11 @@ rm -f %{buildroot}/%{_mandir}/man1/doxyindexer.1* %{buildroot}/%{_mandir}/man1/d rm -rf %{buildroot}/%{_docdir}/packages %if ! 0%{?_module_build} -desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE2} +desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %check -make tests -C %{_target_platform} +make tests -C %{BuildDir} %files %doc LANGUAGE.HOWTO README.md @@ -182,7 +190,7 @@ make tests -C %{_target_platform} %{_mandir}/man1/doxywizard* %{_datadir}/applications/doxywizard.desktop %endif -%{_datadir}/pixmaps/doxywizard.png +%{_datadir}/icons/hicolor/*/apps/doxywizard.png %if ! 0%{?_module_build} %files latex @@ -190,6 +198,9 @@ make tests -C %{_target_platform} %endif %changelog +* Tue Jan 14 2020 Than Ngo - 1:1.8.17-1 +- resolves #1786799, update to 1.8.17 + * Tue Dec 10 2019 Than Ngo - 1:1.8.16-3 - fixed covscan issues diff --git a/sources b/sources index d350a87..f30c052 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (doxywizard.png) = 42a7e5903bf27463d3b072cf043aef071b519b53054bbe647c522d5e499e02f554867ab5e9971b06493769cc17b9d1588462aeade284de1f9d579cf9f99e8851 -SHA512 (doxygen-1.8.16.src.tar.gz) = 46a0189aa82d5a687bdd99a904f0c061fccca407d15867d14c8c4d13e8b21a8989e7ccd6af30840803b589ed20dd86084a4db880fba0d3bfa1fdcdd8d23e12de +SHA512 (doxygen-1.8.17.src.tar.gz) = 98869f60eb1eeb48a7d75993de7e19151665797441364532f86382dc19a9db6b71049cf697592cb321391991120868f4e25b4c3e80f2a0f2b3c70b71d90be7b6 From 47ae7fd9b246df743515922a95d207d0dbf18181 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 28 Jan 2020 16:12:51 +0000 Subject: [PATCH 033/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 799bc7a..9628f5c 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -9,7 +9,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.17 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -198,6 +198,9 @@ make tests -C %{BuildDir} %endif %changelog +* Tue Jan 28 2020 Fedora Release Engineering - 1:1.8.17-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Tue Jan 14 2020 Than Ngo - 1:1.8.17-1 - resolves #1786799, update to 1.8.17 From 68d9099e5df9c30dfcb43e36206f31c7f6655b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Thu, 2 Apr 2020 12:47:13 +0200 Subject: [PATCH 034/117] Fix string quoting for rpm >= 4.16 --- doxygen.spec | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index 9628f5c..a8cb7f6 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -50,7 +50,7 @@ BuildRequires: flex BuildRequires: bison BuildRequires: cmake BuildRequires: git -%if %{xapian_core_support} == "ON" +%if "x%{?xapian_core_support}" == "xON" BuildRequires: xapian-core-devel BuildRequires: zlib-devel %endif @@ -155,7 +155,7 @@ cp doc/*.1 %{buildroot}/%{_mandir}/man1/ rm -f %{buildroot}/%{_mandir}/man1/doxywizard.1* %endif -%if %{xapian_core_support} == "OFF" +%if "x%{?xapian_core_support}" == "xOFF" rm -f %{buildroot}/%{_mandir}/man1/doxyindexer.1* %{buildroot}/%{_mandir}/man1/doxysearch.1* %endif @@ -180,7 +180,7 @@ make tests -C %{BuildDir} %endif %{_bindir}/doxygen %{_mandir}/man1/doxygen.1* -%if %{xapian_core_support} == "ON" +%if "x%{?xapian_core_support}" == "xON" %{_mandir}/man1/doxyindexer.1* %{_mandir}/man1/doxysearch.1* %endif From 95b97f2a9e3613b292a8fffd78b26dc5d62d5bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Thu, 2 Apr 2020 13:27:46 +0200 Subject: [PATCH 035/117] Bump release --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index a8cb7f6..9b63ce1 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -9,7 +9,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.17 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -198,6 +198,9 @@ make tests -C %{BuildDir} %endif %changelog +* Thu Apr 02 2020 Björn Esser - 1:1.8.17-3 +- Fix string quoting for rpm >= 4.16 + * Tue Jan 28 2020 Fedora Release Engineering - 1:1.8.17-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From e43b9abe4afd29ec6ed4a8684812c56cfae3069b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Sat, 4 Apr 2020 16:42:18 +0200 Subject: [PATCH 036/117] Another string quoting fix --- doxygen.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 9b63ce1..161085b 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -173,7 +173,7 @@ make tests -C %{BuildDir} %doc LANGUAGE.HOWTO README.md %license LICENSE %if ! 0%{?_module_build} -%if %{xapian_core_support} == "ON" +%if "x%{?xapian_core_support}" == "xON" %{_bindir}/doxyindexer %{_bindir}/doxysearch* %endif From 39bce8852991276387e18b85dfde79df2f9a0033 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 25 May 2020 16:41:13 +0200 Subject: [PATCH 037/117] update to 1.8.18 backport fixes: buffer-overflow, memory leeks and md5 hash does not match for2 diffferent runs --- .gitignore | 1 + ...1.8.17-broken-urls-in-the-xml-output.patch | 102 ---- doxygen-1.8.17-buffer-overflow.patch | 53 +++ doxygen-1.8.17-test-suite-is-failing.patch | 78 ---- ...oes-not-match-for-two-different-runs.patch | 441 ++++++++++++++++++ doxygen-1.8.18-memory-leaks.patch | 66 +++ doxygen.spec | 14 +- sources | 2 +- 8 files changed, 572 insertions(+), 185 deletions(-) delete mode 100644 doxgen-1.8.17-broken-urls-in-the-xml-output.patch create mode 100644 doxygen-1.8.17-buffer-overflow.patch delete mode 100644 doxygen-1.8.17-test-suite-is-failing.patch create mode 100644 doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch create mode 100644 doxygen-1.8.18-memory-leaks.patch diff --git a/.gitignore b/.gitignore index abde3a8..c209cab 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.15.src.tar.gz /doxygen-1.8.16.src.tar.gz /doxygen-1.8.17.src.tar.gz +/doxygen-1.8.18.src.tar.gz diff --git a/doxgen-1.8.17-broken-urls-in-the-xml-output.patch b/doxgen-1.8.17-broken-urls-in-the-xml-output.patch deleted file mode 100644 index 6376a8e..0000000 --- a/doxgen-1.8.17-broken-urls-in-the-xml-output.patch +++ /dev/null @@ -1,102 +0,0 @@ -commit 2f79c6938c6d969f3d4ebc9ed0f2648668434502 -Author: albert-github -Date: Sat Jan 4 13:24:16 2020 +0100 - - issue #7477 Broken urls in the xml output - - Made code analogous to HTML code. - Also the doxygen internal tests suffered from this problem. - -diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp -index 409c2fe6..1e6becbe 100644 ---- a/src/xmldocvisitor.cpp -+++ b/src/xmldocvisitor.cpp -@@ -824,18 +824,22 @@ void XmlDocVisitor::visitPre(DocImage *img) - { - if (m_hide) return; - -- QCString baseName=img->name(); -- int i; -- if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1) -+ QCString url = img->url(); -+ QCString baseName; -+ if (url.isEmpty()) - { -- baseName=baseName.right(baseName.length()-i-1); -+ baseName = img->relPath()+img->name(); -+ } -+ else -+ { -+ baseName = correctURL(url,img->relPath()); - } - visitPreStart(m_t, "image", FALSE, this, img->children(), baseName, TRUE, img->type(), img->width(), img->height(), img ->isInlineImage()); - - // copy the image to the output dir - FileDef *fd; - bool ambig; -- if ((fd=findFileDef(Doxygen::imageNameDict,img->name(),ambig))) -+ if (url.isEmpty() && (fd=findFileDef(Doxygen::imageNameDict,img->name(),ambig))) - { - QFile inImage(fd->absFilePath()); - QFile outImage(Config_getString(XML_OUTPUT)+"/"+baseName.data()); -diff --git a/testing/031/indexpage.xml b/testing/031/indexpage.xml -index 2d74510a..eaf374b6 100644 ---- a/testing/031/indexpage.xml -+++ b/testing/031/indexpage.xml -@@ -11,42 +11,42 @@ - - More text. - SVG image with caption: --A caption -+A caption - - PNG image with caption: --A caption -+A caption - - SVG image without caption: -- -+ - - PNG image without caption: -- -+ - - Inline SVG image with caption: --This image is inline MIT license -+This image is inline MIT license - within the text. - Inline PNG image with caption: --This image is inline MIT license -+This image is inline MIT license - within the text. - Markdown style linked SVG image: -- -+ - Markdown style linked PNG image: -- -+ - HTML style linked SVG image: -- -+ - HTML style linked PNG image: -- -+ - HTML style unlinked SVG image: -- -+ - - HTML style unlinked PNG image: -- -+ - - Some markdown image tests -- -+ - Some normal link - -- -+ - Some normal link - - diff --git a/doxygen-1.8.17-buffer-overflow.patch b/doxygen-1.8.17-buffer-overflow.patch new file mode 100644 index 0000000..abcad1b --- /dev/null +++ b/doxygen-1.8.17-buffer-overflow.patch @@ -0,0 +1,53 @@ +commit 81cda478974e4198b10054a5ef49bc250c1a3cf7 +Author: albert-github +Date: Sat May 2 20:24:38 2020 +0200 + + Input buffer overflow in php input code (#7745) + + When having a very long initialization line in php code we get the message: + ``` + input buffer overflow, can't enlarge buffer because scanner uses REJECT + ``` + + In this case the, easy, solution is to split, in the lexer, the input based on the commas. + +diff --git a/src/scanner.l b/src/scanner.l +index 8ceb4adb..e9cad5f8 100644 +--- a/src/scanner.l ++++ b/src/scanner.l +@@ -2898,7 +2898,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + *yyextra->pCopyRoundString+=yytext; + } + } +-[^"'()\n]+ { ++[^"'()\n,]+ { + *yyextra->pCopyRoundString+=yytext; + } + . { +@@ -2948,7 +2948,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + *yyextra->pCopyRoundGString+=yytext; + } + } +-[^"'()\n/]+ { ++[^"'()\n\/,]+ { + *yyextra->pCopyRoundGString+=yytext; + } + . { +@@ -2998,7 +2998,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + *yyextra->pCopySquareGString+=yytext; + } + } +-[^"\[\]\n/]+ { ++[^"\[\]\n\/,]+ { + *yyextra->pCopySquareGString+=yytext; + } + . { +@@ -3039,7 +3039,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + *yyextra->pCopyCurlyString+=yytext; + } + } +-[^"'{}\/\n]+ { ++[^"'{}\/\n,]+ { + *yyextra->pCopyCurlyString+=yytext; + } + "/" { *yyextra->pCopyCurlyString+=yytext; } diff --git a/doxygen-1.8.17-test-suite-is-failing.patch b/doxygen-1.8.17-test-suite-is-failing.patch deleted file mode 100644 index b41002e..0000000 --- a/doxygen-1.8.17-test-suite-is-failing.patch +++ /dev/null @@ -1,78 +0,0 @@ -commit cd9dee013dc749a10bbe019c350e0e62b6635795 -Author: albert-github -Date: Wed Jan 1 17:51:53 2020 +0100 - - issue #7464 1.8.17: test suite is failing - - On Windows the syntax with the command and arguments in one string worked but on *nix (and Cygwin) it didn't. - - changed calls to Popen to split command (see also: https://docs.python.org/3/library/subprocess.html). - - explicitly specify files to check for xhtml - - changed call to xmllint for xhtml and docbook (due to stdout overflow in some cases, we are not really interested in the, formatted, output of xmllint). - - in the update part a `read` was left, should have been removed. - -diff --git a/testing/runtests.py b/testing/runtests.py -index a4118b86..10fe5021 100755 ---- a/testing/runtests.py -+++ b/testing/runtests.py -@@ -3,6 +3,7 @@ - from __future__ import print_function - import argparse, glob, itertools, re, shutil, os, sys - import subprocess -+import shlex - - config_reg = re.compile('.*\/\/\s*(?P\S+):\s*(?P.*)$') - -@@ -28,10 +29,10 @@ def xpopen(cmd, cmd1="",encoding='utf-8-sig', getStderr=False): - return os.popen(cmd).read() # Python 2 without encoding - else: - if (getStderr): -- proc = subprocess.run(cmd1,encoding=encoding,capture_output=True) # Python 3 with encoding -- return proc.stderr -+ proc = subprocess.Popen(shlex.split(cmd1),stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding -+ return proc.stderr.read() - else: -- proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding -+ proc = subprocess.Popen(shlex.split(cmd),stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding - return proc.stdout.read() - - class Tester: -@@ -137,7 +138,7 @@ class Tester: - print('GENERATE_DOCBOOK=NO', file=f) - if (self.args.xhtml): - print('GENERATE_HTML=YES', file=f) -- # HTML_OUTPUT can also be set locally -+ # HTML_OUTPUT can also have been set locally - print('HTML_OUTPUT=%s/html' % self.test_out, file=f) - print('HTML_FILE_EXTENSION=.xhtml', file=f) - if (self.args.pdf): -@@ -184,7 +185,7 @@ class Tester: - print('Non-existing file %s after \'check:\' statement' % check_file) - return - # convert output to canonical form -- data = xpopen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read() -+ data = xpopen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)) - if data: - # strip version - data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n') -@@ -326,7 +327,7 @@ class Tester: - tests.append(glob.glob('%s/*.xml' % (docbook_output))) - tests.append(glob.glob('%s/*/*/*.xml' % (docbook_output))) - tests = ' '.join(list(itertools.chain.from_iterable(tests))).replace(self.args.outputdir +'/','').replace('\\','/') -- exe_string = '%s --nonet --postvalid %s' % (self.args.xmllint,tests) -+ exe_string = '%s --noout --nonet --postvalid %s' % (self.args.xmllint,tests) - exe_string1 = exe_string - exe_string += ' %s' % (redirx) - exe_string += ' %s more "%s/temp"' % (separ,docbook_output) -@@ -346,7 +347,11 @@ class Tester: - redirx=' 2> %s/temp >nul:'%html_output - else: - redirx='2>%s/temp >/dev/null'%html_output -- exe_string = '%s --path dtd --nonet --postvalid %s/*xhtml' % (self.args.xmllint,html_output) -+ check_file = [] -+ check_file.append(glob.glob('%s/*.xhtml' % (html_output))) -+ check_file.append(glob.glob('%s/*/*/*.xhtml' % (html_output))) -+ check_file = ' '.join(list(itertools.chain.from_iterable(check_file))).replace(self.args.outputdir +'/','').replace('\\','/') -+ exe_string = '%s --noout --path dtd --nonet --postvalid %s' % (self.args.xmllint,check_file) - exe_string1 = exe_string - exe_string += ' %s' % (redirx) - exe_string += ' %s more "%s/temp"' % (separ,html_output) diff --git a/doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch b/doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch new file mode 100644 index 0000000..d5ac6b5 --- /dev/null +++ b/doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch @@ -0,0 +1,441 @@ +commit f3ebc866c88b31ab393637e30189d41ddb7f84f0 +Author: Dimitri van Heesch +Date: Fri Apr 17 21:39:13 2020 +0200 + + issue #7706: Md5 hash does not match for two different runs + +diff --git a/src/memberlist.cpp b/src/memberlist.cpp +index 8a76a1d7..b5377a49 100644 +--- a/src/memberlist.cpp ++++ b/src/memberlist.cpp +@@ -1,12 +1,12 @@ + /****************************************************************************** + * +- * ++ * + * + * Copyright (C) 1997-2015 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its +- * documentation under the terms of the GNU General Public License is hereby +- * granted. No representations are made about the suitability of this software ++ * documentation under the terms of the GNU General Public License is hereby ++ * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * +@@ -63,10 +63,11 @@ MemberList::~MemberList() + delete memberGroupList; + } + +-int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const ++static int genericCompareMembers(const MemberDef *c1,const MemberDef *c2) + { +- static bool sortConstructorsFirst = Config_getBool(SORT_MEMBERS_CTORS_1ST); +- if (sortConstructorsFirst) { ++ bool sortConstructorsFirst = Config_getBool(SORT_MEMBERS_CTORS_1ST); ++ if (sortConstructorsFirst) ++ { + int ord1 = c1->isConstructor() ? 2 : (c1->isDestructor() ? 1 : 0); + int ord2 = c2->isConstructor() ? 2 : (c2->isDestructor() ? 1 : 0); + if (ord1 > ord2) +@@ -74,11 +75,19 @@ int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const + else if (ord2 > ord1) + return 1; + } ++ // sort on name + int cmp = qstricmp(c1->name(),c2->name()); ++ // then on argument list + if (cmp==0 && c1->argsString() && c2->argsString()) + { + cmp = qstricmp(c1->argsString(),c2->argsString()); + } ++ // then on file in which the item is defined ++ if (cmp==0) ++ { ++ cmp = qstricmp(c1->getDefFileName(),c2->getDefFileName()); ++ } ++ // then on line number at which the member is defined + if (cmp==0) + { + cmp = c1->getDefLine()-c2->getDefLine(); +@@ -86,6 +95,11 @@ int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const + return cmp; + } + ++int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const ++{ ++ return genericCompareMembers(c1,c2); ++} ++ + int MemberList::countInheritableMembers(const ClassDef *inheritedFrom) const + { + int count=0; +@@ -295,7 +309,7 @@ MemberDef *MemberList::take(uint index) + } + + MemberListIterator::MemberListIterator(const MemberList &l) : +- QListIterator(l) ++ QListIterator(l) + { + } + +@@ -385,9 +399,9 @@ bool MemberList::declVisible() const + case MemberType_Service: // fall through + case MemberType_Sequence: // fall through + case MemberType_Dictionary: // fall through +- case MemberType_Event: ++ case MemberType_Event: + return TRUE; +- case MemberType_Enumeration: ++ case MemberType_Enumeration: + { + // if this is an anonymous enum and there are variables of this + // enum type (i.e. enumVars>0), then we do not show the enum here. +@@ -399,7 +413,7 @@ bool MemberList::declVisible() const + break; + case MemberType_Friend: + return TRUE; +- case MemberType_EnumValue: ++ case MemberType_EnumValue: + { + if (m_inGroup) + { +@@ -431,7 +445,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, + } + //printf(" --> writePlainDeclaration() numDecMembers()=%d\n", + // numDecMembers()); +- ++ + ol.pushGeneratorState(); + + bool first=TRUE; +@@ -460,13 +474,13 @@ void MemberList::writePlainDeclarations(OutputList &ol, + case MemberType_Service: // fall through + case MemberType_Sequence: // fall through + case MemberType_Dictionary: // fall through +- case MemberType_Event: ++ case MemberType_Event: + { + if (first) ol.startMemberList(),first=FALSE; + md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId); + break; + } +- case MemberType_Enumeration: ++ case MemberType_Enumeration: + { + // if this is an anonymous enum and there are variables of this + // enum type (i.e. enumVars>0), then we do not show the enum here. +@@ -531,7 +545,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, + case MemberType_Friend: + if (inheritedFrom==0) + { +- if (first) ++ if (first) + { + ol.startMemberList(); + first=FALSE; +@@ -539,7 +553,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, + md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId); + break; + } +- case MemberType_EnumValue: ++ case MemberType_EnumValue: + { + if (m_inGroup) + { +@@ -565,7 +579,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, + //printf("anonymous compound members\n"); + if (md->isBriefSectionVisible()) + { +- if (first) ++ if (first) + { + ol.startMemberList(); + first=FALSE; +@@ -576,10 +590,10 @@ void MemberList::writePlainDeclarations(OutputList &ol, + } + } + } +- +- if (!first) ++ ++ if (!first) + { +- ol.endMemberList(); ++ ol.endMemberList(); + } + + ol.popGeneratorState(); +@@ -635,7 +649,7 @@ void MemberList::writeDeclarations(OutputList &ol, + if (title) + { + ol.writeInheritedSectionTitle(inheritId,cd->getReference(), +- cd->getOutputFileBase(), ++ cd->getOutputFileBase(), + cd->anchor(),title,cd->displayName()); + } + ol.popGeneratorState(); +@@ -643,7 +657,7 @@ void MemberList::writeDeclarations(OutputList &ol, + } + else if (num>numEnumValues) + { +- if (title) ++ if (title) + { + if (showInline) + { +@@ -663,7 +677,7 @@ void MemberList::writeDeclarations(OutputList &ol, + ol.endMemberHeader(); + } + } +- if (subtitle) ++ if (subtitle) + { + QCString st=subtitle; + st = st.stripWhiteSpace(); +@@ -728,7 +742,7 @@ void MemberList::writeDeclarations(OutputList &ol, + } + } + } +- if (inheritedFrom && cd) ++ if (inheritedFrom && cd) + { + // also add members that of this list type, that are grouped together + // in a separate list in class 'inheritedFrom' +@@ -772,7 +786,7 @@ void MemberList::writeDocumentation(OutputList &ol, + overloadCountDict.setAutoDelete(TRUE); + for (mli.toFirst() ; (md=mli.current()) ; ++mli) + { +- if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) && ++ if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) && + !(md->isEnumValue() && !showInline)) + { + uint *pCount = overloadTotalDict.find(md->name()); +@@ -790,7 +804,7 @@ void MemberList::writeDocumentation(OutputList &ol, + + for (mli.toFirst() ; (md=mli.current()) ; ++mli) + { +- if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) && ++ if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) && + !(md->isEnumValue() && !showInline)) + { + uint overloadCount = *overloadTotalDict.find(md->name()); +@@ -949,7 +963,7 @@ void MemberList::addListReferences(Definition *def) + MemberDef *vmd; + for ( ; (vmd=vmli.current()) ; ++vmli) + { +- //printf(" adding %s\n",vmd->name().data()); ++ //printf(" adding %s\n",vmd->name().data()); + vmd->addListReference(def); + } + } +@@ -990,7 +1004,7 @@ void MemberList::setNeedsSorting(bool b) + m_needsSorting = b; + } + +-QCString MemberList::listTypeAsString(MemberListType type) ++QCString MemberList::listTypeAsString(MemberListType type) + { + switch(type) + { +@@ -1087,16 +1101,7 @@ void MemberList::writeTagFile(FTextStream &tagFile) + + int MemberSDict::compareValues(const MemberDef *c1, const MemberDef *c2) const + { +- //printf("MemberSDict::compareValues(%s,%s)\n",c1->name().data(),c2->name().data()); +- int cmp = qstricmp(c1->name(),c2->name()); +- if (cmp) +- { +- return cmp; +- } +- else +- { +- return c1->getDefLine()-c2->getDefLine(); +- } ++ return genericCompareMembers(c1,c2); + } + + +commit cd581388f3d013c501e3cefbaf3e81cf93d46fcb +Author: Dimitri van Heesch +Date: Sun Apr 19 14:21:18 2020 +0200 + + issue #7706: Md5 hash does not match for two different runs (part 2) + +diff --git a/src/dotfilepatcher.cpp b/src/dotfilepatcher.cpp +index e386af98..20ce4c1b 100644 +--- a/src/dotfilepatcher.cpp ++++ b/src/dotfilepatcher.cpp +@@ -132,7 +132,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, + //bool isXLink=FALSE; + int len = 6; + int indexS = buf.find("href=\""), indexE; +- bool setTarget = FALSE; ++ bool targetAlreadySet = buf.find("target=")!=-1; + if (indexS>5 && buf.find("xlink:href=\"")!=-1) // XLink href (for SVG) + { + indexS-=6; +@@ -152,9 +152,9 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, + // fake ref node to resolve the url + DocRef *df = new DocRef( (DocNode*) 0, link.mid(5), context ); + result+=externalRef(relPath,df->ref(),TRUE); +- if (!df->file().isEmpty()) ++ if (!df->file().isEmpty()) + result += df->file().data() + Doxygen::htmlFileExtension; +- if (!df->anchor().isEmpty()) ++ if (!df->anchor().isEmpty()) + result += "#" + df->anchor(); + delete df; + result += "\""; +@@ -174,7 +174,6 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, + if (!ref.isEmpty()) + { + result = externalLinkTarget(true); +- if (result != "") setTarget = TRUE; + } + result+= href+"=\""; + result+=externalRef(relPath,ref,TRUE); +@@ -185,12 +184,14 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, + result = href+"=\"" + link + "\""; + } + } +- if (!target.isEmpty() && !setTarget) ++ if (!target.isEmpty() && !targetAlreadySet) + { + result+=" target=\""+target+"\""; + } + QCString leftPart = buf.left(indexS); + QCString rightPart = buf.mid(indexE+1); ++ //printf("replaceRef(\n'%s'\n)->\n'%s+%s+%s'\n", ++ // buf.data(),leftPart.data(),result.data(),rightPart.data()); + return leftPart + result + rightPart; + } + else +@@ -215,7 +216,7 @@ bool DotFilePatcher::convertMapFile(FTextStream &t,const char *mapName, + const QCString &context) + { + QFile f(mapName); +- if (!f.open(IO_ReadOnly)) ++ if (!f.open(IO_ReadOnly)) + { + err("problems opening map file %s for inclusion in the docs!\n" + "If you installed Graphviz/dot after a previous failing run, \n" +@@ -250,7 +251,7 @@ bool DotFilePatcher::convertMapFile(FTextStream &t,const char *mapName, + return TRUE; + } + +-DotFilePatcher::DotFilePatcher(const char *patchFile) ++DotFilePatcher::DotFilePatcher(const char *patchFile) + : m_patchFile(patchFile) + { + m_maps.setAutoDelete(TRUE); +@@ -346,7 +347,7 @@ bool DotFilePatcher::run() const + } + QFile fi(tmpName); + QFile fo(patchFile); +- if (!fi.open(IO_ReadOnly)) ++ if (!fi.open(IO_ReadOnly)) + { + err("problem opening file %s for patching!\n",tmpName.data()); + QDir::current().rename(tmpName,patchFile); +@@ -380,7 +381,7 @@ bool DotFilePatcher::run() const + ASSERT(numBytes600) height=600; // clip to maximum height of 600 pixels + out << "
    "; +- //out << ""; + } + else + { +- //out << ""; + } + writeSVGNotSupported(out); +@@ -650,7 +651,7 @@ bool DotFilePatcher::writeVecGfxFigure(FTextStream &out,const QCString &baseName + } + //printf("Got PDF/EPS size %d,%d\n",width,height); + int maxWidth = 350; /* approx. page width in points, excl. margins */ +- int maxHeight = 550; /* approx. page height in points, excl. margins */ ++ int maxHeight = 550; /* approx. page height in points, excl. margins */ + out << "\\nopagebreak\n" + "\\begin{figure}[H]\n" + "\\begin{center}\n" +diff --git a/src/dotgraph.cpp b/src/dotgraph.cpp +index e622dd4f..c0cc4fdf 100644 +--- a/src/dotgraph.cpp ++++ b/src/dotgraph.cpp +@@ -74,15 +74,6 @@ static bool checkDeliverables(const QCString &file1, + return file1Ok && file2Ok; + } + +-static void removeDotGraph(const QCString &dotName) +-{ +- if (Config_getBool(DOT_CLEANUP)) +- { +- QDir d; +- d.remove(dotName); +- } +-} +- + static bool insertMapFile(FTextStream &out,const QCString &mapFile, + const QCString &relPath,const QCString &mapLabel) + { +@@ -108,7 +99,7 @@ static bool insertMapFile(FTextStream &out,const QCString &mapFile, + QCString DotGraph::imgName() const + { + return m_baseName + ((m_graphFormat == GOF_BITMAP) ? +- ("." + getDotImageExtension()) : (Config_getBool(USE_PDFLATEX) ? ".pdf" : ".eps")); ++ ("." + getDotImageExtension()) : (Config_getBool(USE_PDFLATEX) ? ".pdf" : ".eps")); + } + + QCString DotGraph::writeGraph( +@@ -166,7 +157,6 @@ bool DotGraph::prepareDotFile() + ) + { + // all needed files are there +- removeDotGraph(absDotName()); + return FALSE; + } + diff --git a/doxygen-1.8.18-memory-leaks.patch b/doxygen-1.8.18-memory-leaks.patch new file mode 100644 index 0000000..b45895a --- /dev/null +++ b/doxygen-1.8.18-memory-leaks.patch @@ -0,0 +1,66 @@ +commit 30f8609975062896b0cd43b739310ab8d667ea82 +Author: Dimitri van Heesch +Date: Sun Apr 26 20:44:17 2020 +0200 + + Fixed 2 small memory leaks + +diff --git a/src/doxygen.cpp b/src/doxygen.cpp +index 1d15a91b..2ceece91 100644 +--- a/src/doxygen.cpp ++++ b/src/doxygen.cpp +@@ -1900,25 +1900,22 @@ static void findUsingDeclImports(const Entry *root) + if (md && md->protection()!=Private) + { + //printf("found member %s\n",mni->memberName()); +- MemberDef *newMd = 0; ++ QCString fileName = root->fileName; ++ if (fileName.isEmpty() && root->tagInfo()) + { +- QCString fileName = root->fileName; +- if (fileName.isEmpty() && root->tagInfo()) +- { +- fileName = root->tagInfo()->tagName; +- } +- const ArgumentList &templAl = md->templateArguments(); +- const ArgumentList &al = md->templateArguments(); +- newMd = createMemberDef( +- fileName,root->startLine,root->startColumn, +- md->typeString(),memName,md->argsString(), +- md->excpString(),root->protection,root->virt, +- md->isStatic(),Member,md->memberType(), +- templAl,al,root->metaData +- ); ++ fileName = root->tagInfo()->tagName; + } ++ const ArgumentList &templAl = md->templateArguments(); ++ const ArgumentList &al = md->templateArguments(); ++ std::unique_ptr newMd { createMemberDef( ++ fileName,root->startLine,root->startColumn, ++ md->typeString(),memName,md->argsString(), ++ md->excpString(),root->protection,root->virt, ++ md->isStatic(),Member,md->memberType(), ++ templAl,al,root->metaData ++ ) }; + newMd->setMemberClass(cd); +- cd->insertMember(newMd); ++ cd->insertMember(newMd.get()); + if (!root->doc.isEmpty() || !root->brief.isEmpty()) + { + newMd->setDocumentation(root->doc,root->docFile,root->docLine); +@@ -1946,6 +1943,8 @@ static void findUsingDeclImports(const Entry *root) + newMd->setMemberSpecifiers(md->getMemberSpecifiers()); + newMd->setLanguage(root->lang); + newMd->setId(root->id); ++ MemberName *mn = Doxygen::memberNameLinkedMap->add(memName); ++ mn->push_back(std::move(newMd)); + } + } + } +@@ -9739,6 +9738,7 @@ void initDoxygen() + Doxygen::exampleSDict->setAutoDelete(TRUE); + Doxygen::memGrpInfoDict.setAutoDelete(TRUE); + Doxygen::tagDestinationDict.setAutoDelete(TRUE); ++ Doxygen::namespaceAliasDict.setAutoDelete(TRUE); + Doxygen::dirRelations.setAutoDelete(TRUE); + Doxygen::genericsDict = new GenericsSDict; + Doxygen::indexList = new IndexList; diff --git a/doxygen.spec b/doxygen.spec index 161085b..d5af7a8 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,8 +8,8 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.8.17 -Release: 3%{?dist} +Version: 1.8.18 +Release: 1%{?dist} # No version is specified. License: GPL+ @@ -19,8 +19,9 @@ Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz Source1: doxywizard.desktop # upstream patches -Patch0: doxgen-1.8.17-broken-urls-in-the-xml-output.patch -Patch1: doxygen-1.8.17-test-suite-is-failing.patch +Patch0: doxygen-1.8.17-buffer-overflow.patch +Patch1: doxygen-1.8.18-memory-leaks.patch +Patch3: doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick @@ -198,6 +199,11 @@ make tests -C %{BuildDir} %endif %changelog +* Mon May 25 2020 Than Ngo - 1.8.18-1 +- update to 1.8.18 +- backport fixes: buffer-overflow, memory leeks and md5 hash does not match for + 2 diffferent runs + * Thu Apr 02 2020 Björn Esser - 1:1.8.17-3 - Fix string quoting for rpm >= 4.16 diff --git a/sources b/sources index f30c052..bc67412 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (doxygen-1.8.17.src.tar.gz) = 98869f60eb1eeb48a7d75993de7e19151665797441364532f86382dc19a9db6b71049cf697592cb321391991120868f4e25b4c3e80f2a0f2b3c70b71d90be7b6 +SHA512 (doxygen-1.8.18.src.tar.gz) = 0be26f58e33e564318629bedefb1257f478bfcb78f6a363b066d46ff6e457c15e79fe8d5c36032ee3f9b200cca91690166c388234ba6a28b6669f19af364eed5 From 8aeb518c06a9ee068cc1ae9cb270899e4b8d8eb6 Mon Sep 17 00:00:00 2001 From: Tom Callaway Date: Wed, 27 May 2020 10:26:19 -0400 Subject: [PATCH 038/117] update tex dependencies --- doxygen.spec | 122 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 112 insertions(+), 10 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index d5af7a8..11d4418 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -9,7 +9,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.18 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -30,14 +30,60 @@ BuildRequires: perl-interpreter %if ! 0%{?_module_build} BuildRequires: tex(dvips) BuildRequires: tex(latex) -BuildRequires: tex(multirow.sty) +# From doc/manual.sty +BuildRequires: tex(helvet.sty) BuildRequires: tex(sectsty.sty) BuildRequires: tex(tocloft.sty) -BuildRequires: tex(xtab.sty) -BuildRequires: tex(import.sty) -BuildRequires: tex(tabu.sty) -BuildRequires: tex(appendix.sty) +BuildRequires: tex(fontenc.sty) +BuildRequires: tex(fancyhdr.sty) +# From templates/latex/doxygen.sty +BuildRequires: tex(alltt.sty) +BuildRequires: tex(calc.sty) +BuildRequires: tex(float.sty) +BuildRequires: tex(verbatim.sty) +BuildRequires: tex(xcolor.sty) +BuildRequires: tex(fancyvrb.sty) +BuildRequires: tex(tabularx.sty) +BuildRequires: tex(multirow.sty) +BuildRequires: tex(hanging.sty) +BuildRequires: tex(ifpdf.sty) BuildRequires: tex(adjustbox.sty) +BuildRequires: tex(amssymb.sty) +BuildRequires: tex(stackengine.sty) +BuildRequires: tex(ulem.sty) +# From doc/doxygen_manual.tex +BuildRequires: tex(ifthen.sty) +BuildRequires: tex(array.sty) +BuildRequires: tex(geometry.sty) +BuildRequires: tex(makeidx.sty) +BuildRequires: tex(natbib.sty) +BuildRequires: tex(graphicx.sty) +BuildRequires: tex(multicol.sty) +BuildRequires: tex(float.sty) +BuildRequires: tex(geometry.sty) +BuildRequires: tex(listings.sty) +BuildRequires: tex(color.sty) +BuildRequires: tex(xcolor.sty) +BuildRequires: tex(textcomp.sty) +BuildRequires: tex(wasysym.sty) +BuildRequires: tex(import.sty) +BuildRequires: tex(appendix.sty) +BuildRequires: tex(hyperref.sty) +BuildRequires: tex(pspicture.sty) +BuildRequires: tex(inputenc.sty) +BuildRequires: tex(mathptmx.sty) +BuildRequires: tex(courier.sty) +# From src/latexgen.cpp +BuildRequires: tex(fixltx2e.sty) +BuildRequires: tex(ifxetex.sty) +BuildRequires: tex(caption.sty) +BuildRequires: tex(etoc.sty) +# From src/util.cpp +BuildRequires: tex(newunicodechar.sty) +# From templates/latex/tabu_doxygen.sty +BuildRequires: tex(varwidth.sty) +BuildRequires: tex(xtab.sty) +BuildRequires: tex(tabu.sty) BuildRequires: /usr/bin/epstopdf BuildRequires: texlive-epstopdf BuildRequires: ghostscript @@ -79,16 +125,69 @@ are used by doxygen. Summary: Support for producing latex/pdf output from doxygen Requires: %{name} = %{epoch}:%{version}-%{release} Requires: tex(latex) +Requires: tex(dvips) %if 0%{?fedora} > 17 || 0%{?rhel} > 6 -Requires: tex(multirow.sty) +# From doc/manual.sty +Requires: tex(helvet.sty) Requires: tex(sectsty.sty) Requires: tex(tocloft.sty) -Requires: tex(xtab.sty) +Requires: tex(fontenc.sty) +Requires: tex(fancyhdr.sty) +# From templates/latex/doxygen.sty +Requires: tex(alltt.sty) +Requires: tex(calc.sty) +Requires: tex(float.sty) +Requires: tex(verbatim.sty) +Requires: tex(xcolor.sty) +Requires: tex(fancyvrb.sty) +Requires: tex(tabularx.sty) +Requires: tex(multirow.sty) +Requires: tex(hanging.sty) +Requires: tex(ifpdf.sty) +Requires: tex(adjustbox.sty) +Requires: tex(amssymb.sty) +Requires: tex(stackengine.sty) +Requires: tex(ulem.sty) +# From doc/doxygen_manual.tex +Requires: tex(ifthen.sty) +Requires: tex(array.sty) +Requires: tex(geometry.sty) +Requires: tex(makeidx.sty) +Requires: tex(natbib.sty) +Requires: tex(graphicx.sty) +Requires: tex(multicol.sty) +Requires: tex(float.sty) +Requires: tex(geometry.sty) +Requires: tex(listings.sty) +Requires: tex(color.sty) +Requires: tex(xcolor.sty) +Requires: tex(textcomp.sty) +Requires: tex(wasysym.sty) Requires: tex(import.sty) -Requires: tex(tabu.sty) Requires: tex(appendix.sty) +Requires: tex(hyperref.sty) +Requires: tex(pspicture.sty) +Requires: tex(inputenc.sty) +Requires: tex(mathptmx.sty) +Requires: tex(courier.sty) +# From src/latexgen.cpp +Requires: tex(fixltx2e.sty) +Requires: tex(ifxetex.sty) +Requires: tex(caption.sty) +Requires: tex(etoc.sty) +# From src/util.cpp Requires: tex(newunicodechar.sty) -Requires: texlive-epstopdf-bin +# From templates/latex/tabu_doxygen.sty +Requires: tex(varwidth.sty) +# I'm 99% sure this isn't needed anymore since +# doxygen has a local fork of tabu... but it doesn't seem to be hurting anything. +Requires: tex(tabu.sty) +# There also does not seem to be any references to xtab in the code... but eh. +Requires: tex(xtab.sty) +# Explicitly called binaries +Requires: texlive-bibtex +Requires: texlive-makeindex +Requires: texlive-epstopdf %endif %description latex @@ -199,6 +298,9 @@ make tests -C %{BuildDir} %endif %changelog +* Wed May 27 2020 Tom Callaway - 1.8.18-2 +- update tex dependencies + * Mon May 25 2020 Than Ngo - 1.8.18-1 - update to 1.8.18 - backport fixes: buffer-overflow, memory leeks and md5 hash does not match for From 4374fcf0ded14a862700ec9886742bbf7843fc77 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Thu, 18 Jun 2020 17:21:22 +0200 Subject: [PATCH 039/117] fixed bz#1834591, enable clang support in fedora --- doxygen.spec | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 11d4418..2e6c282 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -1,7 +1,9 @@ %if 0%{?fedora} %global xapian_core_support ON +%global clang_support ON %else %global xapian_core_support OFF +%global clang_support OFF %endif %global BuildDir Out @@ -9,7 +11,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.18 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -101,6 +103,9 @@ BuildRequires: git BuildRequires: xapian-core-devel BuildRequires: zlib-devel %endif +%if "x%{?clang_support}" == "xON" +BuildRequires: llvm-devel +%endif Requires: perl-interpreter Requires: graphviz @@ -210,6 +215,7 @@ pushd %{BuildDir} %if ! 0%{?_module_build} %cmake \ -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ + -Duse_libclang=%{clang_support} \ -Dbuild_doc=OFF \ -Dbuild_wizard=ON \ -Dbuild_xmlparser=ON \ @@ -221,6 +227,7 @@ pushd %{BuildDir} %else %cmake \ -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ + -Duse_libclang=%{clang_support} \ -Dbuild_doc=OFF \ -Dbuild_wizard=OFF \ -Dbuild_xmlparser=ON \ @@ -298,6 +305,9 @@ make tests -C %{BuildDir} %endif %changelog +* Thu Jun 18 2020 Than Ngo - 1.8.18-3 +- fixed bz#1834591, enable clang support in fedora + * Wed May 27 2020 Tom Callaway - 1.8.18-2 - update tex dependencies From 551b0a2a0e20efe9515bc788d7da4f4c21d02a50 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 8 Jul 2020 14:25:56 +0200 Subject: [PATCH 040/117] fixed link issue against new clang --- doxygen-1.8.18-clang.patch | 13 +++++++++++++ doxygen.spec | 16 +++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 doxygen-1.8.18-clang.patch diff --git a/doxygen-1.8.18-clang.patch b/doxygen-1.8.18-clang.patch new file mode 100644 index 0000000..49f7252 --- /dev/null +++ b/doxygen-1.8.18-clang.patch @@ -0,0 +1,13 @@ +diff -up doxygen-1.8.18/CMakeLists.txt.old doxygen-1.8.18/CMakeLists.txt +diff -up doxygen-1.8.18/src/CMakeLists.txt.old doxygen-1.8.18/src/CMakeLists.txt +--- doxygen-1.8.18/src/CMakeLists.txt.old 2020-07-08 13:37:31.646148957 +0200 ++++ doxygen-1.8.18/src/CMakeLists.txt 2020-07-08 13:45:53.470517795 +0200 +@@ -308,7 +308,7 @@ if (use_libclang) + add_definitions(${LLVM_DEFINITIONS}) + llvm_map_components_to_libnames(llvm_libs support core option) + target_compile_definitions(doxygen PRIVATE ${LLVM_DEFINITIONS}) +- set(CLANG_LIBS libclang clangTooling ${llvm_libs}) ++ set(CLANG_LIBS libclang clang-cpp -lLLVM-10) + endif() + + target_link_libraries(doxygen diff --git a/doxygen.spec b/doxygen.spec index 2e6c282..2fc51bd 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -11,7 +11,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.18 -Release: 3%{?dist} +Release: 4%{?dist} # No version is specified. License: GPL+ @@ -19,11 +19,13 @@ Url: http://www.doxygen.nl Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop - +%if 0%{?fedora} >= 32 +Patch0: doxygen-1.8.18-clang.patch +%endif # upstream patches -Patch0: doxygen-1.8.17-buffer-overflow.patch -Patch1: doxygen-1.8.18-memory-leaks.patch -Patch3: doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch +Patch100: doxygen-1.8.17-buffer-overflow.patch +Patch101: doxygen-1.8.18-memory-leaks.patch +Patch103: doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick @@ -105,6 +107,7 @@ BuildRequires: zlib-devel %endif %if "x%{?clang_support}" == "xON" BuildRequires: llvm-devel +BuildRequires: clang-devel %endif Requires: perl-interpreter Requires: graphviz @@ -305,6 +308,9 @@ make tests -C %{BuildDir} %endif %changelog +* Wed Jul 08 2020 Than Ngo - 1.8.18-4 +- fixed link issue against new clang + * Thu Jun 18 2020 Than Ngo - 1.8.18-3 - fixed bz#1834591, enable clang support in fedora From 01e34d6bf8eff8e0fdd7947b9a0fecf8d9efed63 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Mon, 27 Jul 2020 15:42:13 +0000 Subject: [PATCH 041/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 2fc51bd..37531bd 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -11,7 +11,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.18 -Release: 4%{?dist} +Release: 5%{?dist} # No version is specified. License: GPL+ @@ -308,6 +308,9 @@ make tests -C %{BuildDir} %endif %changelog +* Mon Jul 27 2020 Fedora Release Engineering - 1:1.8.18-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Wed Jul 08 2020 Than Ngo - 1.8.18-4 - fixed link issue against new clang From ef5673b15dc47b2118ef9b056d4fc81a43769109 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 1 Aug 2020 00:40:38 +0000 Subject: [PATCH 042/117] - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 37531bd..b114dac 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -11,7 +11,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.18 -Release: 5%{?dist} +Release: 6%{?dist} # No version is specified. License: GPL+ @@ -308,6 +308,10 @@ make tests -C %{BuildDir} %endif %changelog +* Sat Aug 01 2020 Fedora Release Engineering - 1:1.8.18-6 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Mon Jul 27 2020 Fedora Release Engineering - 1:1.8.18-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From 34ef01770663b54a1c846f5db85d11d37275cf4b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 25 Aug 2020 14:26:47 +0200 Subject: [PATCH 043/117] update to 1.8.2 --- doxygen-1.8.17-buffer-overflow.patch | 53 --- doxygen-1.8.18-clang.patch | 13 - ...oes-not-match-for-two-different-runs.patch | 441 ------------------ doxygen-1.8.18-memory-leaks.patch | 66 --- doxygen.spec | 31 +- sources | 2 +- 6 files changed, 15 insertions(+), 591 deletions(-) delete mode 100644 doxygen-1.8.17-buffer-overflow.patch delete mode 100644 doxygen-1.8.18-clang.patch delete mode 100644 doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch delete mode 100644 doxygen-1.8.18-memory-leaks.patch diff --git a/doxygen-1.8.17-buffer-overflow.patch b/doxygen-1.8.17-buffer-overflow.patch deleted file mode 100644 index abcad1b..0000000 --- a/doxygen-1.8.17-buffer-overflow.patch +++ /dev/null @@ -1,53 +0,0 @@ -commit 81cda478974e4198b10054a5ef49bc250c1a3cf7 -Author: albert-github -Date: Sat May 2 20:24:38 2020 +0200 - - Input buffer overflow in php input code (#7745) - - When having a very long initialization line in php code we get the message: - ``` - input buffer overflow, can't enlarge buffer because scanner uses REJECT - ``` - - In this case the, easy, solution is to split, in the lexer, the input based on the commas. - -diff --git a/src/scanner.l b/src/scanner.l -index 8ceb4adb..e9cad5f8 100644 ---- a/src/scanner.l -+++ b/src/scanner.l -@@ -2898,7 +2898,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - *yyextra->pCopyRoundString+=yytext; - } - } --[^"'()\n]+ { -+[^"'()\n,]+ { - *yyextra->pCopyRoundString+=yytext; - } - . { -@@ -2948,7 +2948,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - *yyextra->pCopyRoundGString+=yytext; - } - } --[^"'()\n/]+ { -+[^"'()\n\/,]+ { - *yyextra->pCopyRoundGString+=yytext; - } - . { -@@ -2998,7 +2998,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - *yyextra->pCopySquareGString+=yytext; - } - } --[^"\[\]\n/]+ { -+[^"\[\]\n\/,]+ { - *yyextra->pCopySquareGString+=yytext; - } - . { -@@ -3039,7 +3039,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - *yyextra->pCopyCurlyString+=yytext; - } - } --[^"'{}\/\n]+ { -+[^"'{}\/\n,]+ { - *yyextra->pCopyCurlyString+=yytext; - } - "/" { *yyextra->pCopyCurlyString+=yytext; } diff --git a/doxygen-1.8.18-clang.patch b/doxygen-1.8.18-clang.patch deleted file mode 100644 index 49f7252..0000000 --- a/doxygen-1.8.18-clang.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up doxygen-1.8.18/CMakeLists.txt.old doxygen-1.8.18/CMakeLists.txt -diff -up doxygen-1.8.18/src/CMakeLists.txt.old doxygen-1.8.18/src/CMakeLists.txt ---- doxygen-1.8.18/src/CMakeLists.txt.old 2020-07-08 13:37:31.646148957 +0200 -+++ doxygen-1.8.18/src/CMakeLists.txt 2020-07-08 13:45:53.470517795 +0200 -@@ -308,7 +308,7 @@ if (use_libclang) - add_definitions(${LLVM_DEFINITIONS}) - llvm_map_components_to_libnames(llvm_libs support core option) - target_compile_definitions(doxygen PRIVATE ${LLVM_DEFINITIONS}) -- set(CLANG_LIBS libclang clangTooling ${llvm_libs}) -+ set(CLANG_LIBS libclang clang-cpp -lLLVM-10) - endif() - - target_link_libraries(doxygen diff --git a/doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch b/doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch deleted file mode 100644 index d5ac6b5..0000000 --- a/doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch +++ /dev/null @@ -1,441 +0,0 @@ -commit f3ebc866c88b31ab393637e30189d41ddb7f84f0 -Author: Dimitri van Heesch -Date: Fri Apr 17 21:39:13 2020 +0200 - - issue #7706: Md5 hash does not match for two different runs - -diff --git a/src/memberlist.cpp b/src/memberlist.cpp -index 8a76a1d7..b5377a49 100644 ---- a/src/memberlist.cpp -+++ b/src/memberlist.cpp -@@ -1,12 +1,12 @@ - /****************************************************************************** - * -- * -+ * - * - * Copyright (C) 1997-2015 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its -- * documentation under the terms of the GNU General Public License is hereby -- * granted. No representations are made about the suitability of this software -+ * documentation under the terms of the GNU General Public License is hereby -+ * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * -@@ -63,10 +63,11 @@ MemberList::~MemberList() - delete memberGroupList; - } - --int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const -+static int genericCompareMembers(const MemberDef *c1,const MemberDef *c2) - { -- static bool sortConstructorsFirst = Config_getBool(SORT_MEMBERS_CTORS_1ST); -- if (sortConstructorsFirst) { -+ bool sortConstructorsFirst = Config_getBool(SORT_MEMBERS_CTORS_1ST); -+ if (sortConstructorsFirst) -+ { - int ord1 = c1->isConstructor() ? 2 : (c1->isDestructor() ? 1 : 0); - int ord2 = c2->isConstructor() ? 2 : (c2->isDestructor() ? 1 : 0); - if (ord1 > ord2) -@@ -74,11 +75,19 @@ int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const - else if (ord2 > ord1) - return 1; - } -+ // sort on name - int cmp = qstricmp(c1->name(),c2->name()); -+ // then on argument list - if (cmp==0 && c1->argsString() && c2->argsString()) - { - cmp = qstricmp(c1->argsString(),c2->argsString()); - } -+ // then on file in which the item is defined -+ if (cmp==0) -+ { -+ cmp = qstricmp(c1->getDefFileName(),c2->getDefFileName()); -+ } -+ // then on line number at which the member is defined - if (cmp==0) - { - cmp = c1->getDefLine()-c2->getDefLine(); -@@ -86,6 +95,11 @@ int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const - return cmp; - } - -+int MemberList::compareValues(const MemberDef *c1, const MemberDef *c2) const -+{ -+ return genericCompareMembers(c1,c2); -+} -+ - int MemberList::countInheritableMembers(const ClassDef *inheritedFrom) const - { - int count=0; -@@ -295,7 +309,7 @@ MemberDef *MemberList::take(uint index) - } - - MemberListIterator::MemberListIterator(const MemberList &l) : -- QListIterator(l) -+ QListIterator(l) - { - } - -@@ -385,9 +399,9 @@ bool MemberList::declVisible() const - case MemberType_Service: // fall through - case MemberType_Sequence: // fall through - case MemberType_Dictionary: // fall through -- case MemberType_Event: -+ case MemberType_Event: - return TRUE; -- case MemberType_Enumeration: -+ case MemberType_Enumeration: - { - // if this is an anonymous enum and there are variables of this - // enum type (i.e. enumVars>0), then we do not show the enum here. -@@ -399,7 +413,7 @@ bool MemberList::declVisible() const - break; - case MemberType_Friend: - return TRUE; -- case MemberType_EnumValue: -+ case MemberType_EnumValue: - { - if (m_inGroup) - { -@@ -431,7 +445,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, - } - //printf(" --> writePlainDeclaration() numDecMembers()=%d\n", - // numDecMembers()); -- -+ - ol.pushGeneratorState(); - - bool first=TRUE; -@@ -460,13 +474,13 @@ void MemberList::writePlainDeclarations(OutputList &ol, - case MemberType_Service: // fall through - case MemberType_Sequence: // fall through - case MemberType_Dictionary: // fall through -- case MemberType_Event: -+ case MemberType_Event: - { - if (first) ol.startMemberList(),first=FALSE; - md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId); - break; - } -- case MemberType_Enumeration: -+ case MemberType_Enumeration: - { - // if this is an anonymous enum and there are variables of this - // enum type (i.e. enumVars>0), then we do not show the enum here. -@@ -531,7 +545,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, - case MemberType_Friend: - if (inheritedFrom==0) - { -- if (first) -+ if (first) - { - ol.startMemberList(); - first=FALSE; -@@ -539,7 +553,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, - md->writeDeclaration(ol,cd,nd,fd,gd,m_inGroup,inheritedFrom,inheritId); - break; - } -- case MemberType_EnumValue: -+ case MemberType_EnumValue: - { - if (m_inGroup) - { -@@ -565,7 +579,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, - //printf("anonymous compound members\n"); - if (md->isBriefSectionVisible()) - { -- if (first) -+ if (first) - { - ol.startMemberList(); - first=FALSE; -@@ -576,10 +590,10 @@ void MemberList::writePlainDeclarations(OutputList &ol, - } - } - } -- -- if (!first) -+ -+ if (!first) - { -- ol.endMemberList(); -+ ol.endMemberList(); - } - - ol.popGeneratorState(); -@@ -635,7 +649,7 @@ void MemberList::writeDeclarations(OutputList &ol, - if (title) - { - ol.writeInheritedSectionTitle(inheritId,cd->getReference(), -- cd->getOutputFileBase(), -+ cd->getOutputFileBase(), - cd->anchor(),title,cd->displayName()); - } - ol.popGeneratorState(); -@@ -643,7 +657,7 @@ void MemberList::writeDeclarations(OutputList &ol, - } - else if (num>numEnumValues) - { -- if (title) -+ if (title) - { - if (showInline) - { -@@ -663,7 +677,7 @@ void MemberList::writeDeclarations(OutputList &ol, - ol.endMemberHeader(); - } - } -- if (subtitle) -+ if (subtitle) - { - QCString st=subtitle; - st = st.stripWhiteSpace(); -@@ -728,7 +742,7 @@ void MemberList::writeDeclarations(OutputList &ol, - } - } - } -- if (inheritedFrom && cd) -+ if (inheritedFrom && cd) - { - // also add members that of this list type, that are grouped together - // in a separate list in class 'inheritedFrom' -@@ -772,7 +786,7 @@ void MemberList::writeDocumentation(OutputList &ol, - overloadCountDict.setAutoDelete(TRUE); - for (mli.toFirst() ; (md=mli.current()) ; ++mli) - { -- if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) && -+ if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) && - !(md->isEnumValue() && !showInline)) - { - uint *pCount = overloadTotalDict.find(md->name()); -@@ -790,7 +804,7 @@ void MemberList::writeDocumentation(OutputList &ol, - - for (mli.toFirst() ; (md=mli.current()) ; ++mli) - { -- if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) && -+ if (md->isDetailedSectionVisible(m_inGroup,container->definitionType()==Definition::TypeFile) && - !(md->isEnumValue() && !showInline)) - { - uint overloadCount = *overloadTotalDict.find(md->name()); -@@ -949,7 +963,7 @@ void MemberList::addListReferences(Definition *def) - MemberDef *vmd; - for ( ; (vmd=vmli.current()) ; ++vmli) - { -- //printf(" adding %s\n",vmd->name().data()); -+ //printf(" adding %s\n",vmd->name().data()); - vmd->addListReference(def); - } - } -@@ -990,7 +1004,7 @@ void MemberList::setNeedsSorting(bool b) - m_needsSorting = b; - } - --QCString MemberList::listTypeAsString(MemberListType type) -+QCString MemberList::listTypeAsString(MemberListType type) - { - switch(type) - { -@@ -1087,16 +1101,7 @@ void MemberList::writeTagFile(FTextStream &tagFile) - - int MemberSDict::compareValues(const MemberDef *c1, const MemberDef *c2) const - { -- //printf("MemberSDict::compareValues(%s,%s)\n",c1->name().data(),c2->name().data()); -- int cmp = qstricmp(c1->name(),c2->name()); -- if (cmp) -- { -- return cmp; -- } -- else -- { -- return c1->getDefLine()-c2->getDefLine(); -- } -+ return genericCompareMembers(c1,c2); - } - - -commit cd581388f3d013c501e3cefbaf3e81cf93d46fcb -Author: Dimitri van Heesch -Date: Sun Apr 19 14:21:18 2020 +0200 - - issue #7706: Md5 hash does not match for two different runs (part 2) - -diff --git a/src/dotfilepatcher.cpp b/src/dotfilepatcher.cpp -index e386af98..20ce4c1b 100644 ---- a/src/dotfilepatcher.cpp -+++ b/src/dotfilepatcher.cpp -@@ -132,7 +132,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, - //bool isXLink=FALSE; - int len = 6; - int indexS = buf.find("href=\""), indexE; -- bool setTarget = FALSE; -+ bool targetAlreadySet = buf.find("target=")!=-1; - if (indexS>5 && buf.find("xlink:href=\"")!=-1) // XLink href (for SVG) - { - indexS-=6; -@@ -152,9 +152,9 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, - // fake ref node to resolve the url - DocRef *df = new DocRef( (DocNode*) 0, link.mid(5), context ); - result+=externalRef(relPath,df->ref(),TRUE); -- if (!df->file().isEmpty()) -+ if (!df->file().isEmpty()) - result += df->file().data() + Doxygen::htmlFileExtension; -- if (!df->anchor().isEmpty()) -+ if (!df->anchor().isEmpty()) - result += "#" + df->anchor(); - delete df; - result += "\""; -@@ -174,7 +174,6 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, - if (!ref.isEmpty()) - { - result = externalLinkTarget(true); -- if (result != "") setTarget = TRUE; - } - result+= href+"=\""; - result+=externalRef(relPath,ref,TRUE); -@@ -185,12 +184,14 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, - result = href+"=\"" + link + "\""; - } - } -- if (!target.isEmpty() && !setTarget) -+ if (!target.isEmpty() && !targetAlreadySet) - { - result+=" target=\""+target+"\""; - } - QCString leftPart = buf.left(indexS); - QCString rightPart = buf.mid(indexE+1); -+ //printf("replaceRef(\n'%s'\n)->\n'%s+%s+%s'\n", -+ // buf.data(),leftPart.data(),result.data(),rightPart.data()); - return leftPart + result + rightPart; - } - else -@@ -215,7 +216,7 @@ bool DotFilePatcher::convertMapFile(FTextStream &t,const char *mapName, - const QCString &context) - { - QFile f(mapName); -- if (!f.open(IO_ReadOnly)) -+ if (!f.open(IO_ReadOnly)) - { - err("problems opening map file %s for inclusion in the docs!\n" - "If you installed Graphviz/dot after a previous failing run, \n" -@@ -250,7 +251,7 @@ bool DotFilePatcher::convertMapFile(FTextStream &t,const char *mapName, - return TRUE; - } - --DotFilePatcher::DotFilePatcher(const char *patchFile) -+DotFilePatcher::DotFilePatcher(const char *patchFile) - : m_patchFile(patchFile) - { - m_maps.setAutoDelete(TRUE); -@@ -346,7 +347,7 @@ bool DotFilePatcher::run() const - } - QFile fi(tmpName); - QFile fo(patchFile); -- if (!fi.open(IO_ReadOnly)) -+ if (!fi.open(IO_ReadOnly)) - { - err("problem opening file %s for patching!\n",tmpName.data()); - QDir::current().rename(tmpName,patchFile); -@@ -380,7 +381,7 @@ bool DotFilePatcher::run() const - ASSERT(numBytes600) height=600; // clip to maximum height of 600 pixels - out << "
    "; -- //out << ""; - } - else - { -- //out << ""; - } - writeSVGNotSupported(out); -@@ -650,7 +651,7 @@ bool DotFilePatcher::writeVecGfxFigure(FTextStream &out,const QCString &baseName - } - //printf("Got PDF/EPS size %d,%d\n",width,height); - int maxWidth = 350; /* approx. page width in points, excl. margins */ -- int maxHeight = 550; /* approx. page height in points, excl. margins */ -+ int maxHeight = 550; /* approx. page height in points, excl. margins */ - out << "\\nopagebreak\n" - "\\begin{figure}[H]\n" - "\\begin{center}\n" -diff --git a/src/dotgraph.cpp b/src/dotgraph.cpp -index e622dd4f..c0cc4fdf 100644 ---- a/src/dotgraph.cpp -+++ b/src/dotgraph.cpp -@@ -74,15 +74,6 @@ static bool checkDeliverables(const QCString &file1, - return file1Ok && file2Ok; - } - --static void removeDotGraph(const QCString &dotName) --{ -- if (Config_getBool(DOT_CLEANUP)) -- { -- QDir d; -- d.remove(dotName); -- } --} -- - static bool insertMapFile(FTextStream &out,const QCString &mapFile, - const QCString &relPath,const QCString &mapLabel) - { -@@ -108,7 +99,7 @@ static bool insertMapFile(FTextStream &out,const QCString &mapFile, - QCString DotGraph::imgName() const - { - return m_baseName + ((m_graphFormat == GOF_BITMAP) ? -- ("." + getDotImageExtension()) : (Config_getBool(USE_PDFLATEX) ? ".pdf" : ".eps")); -+ ("." + getDotImageExtension()) : (Config_getBool(USE_PDFLATEX) ? ".pdf" : ".eps")); - } - - QCString DotGraph::writeGraph( -@@ -166,7 +157,6 @@ bool DotGraph::prepareDotFile() - ) - { - // all needed files are there -- removeDotGraph(absDotName()); - return FALSE; - } - diff --git a/doxygen-1.8.18-memory-leaks.patch b/doxygen-1.8.18-memory-leaks.patch deleted file mode 100644 index b45895a..0000000 --- a/doxygen-1.8.18-memory-leaks.patch +++ /dev/null @@ -1,66 +0,0 @@ -commit 30f8609975062896b0cd43b739310ab8d667ea82 -Author: Dimitri van Heesch -Date: Sun Apr 26 20:44:17 2020 +0200 - - Fixed 2 small memory leaks - -diff --git a/src/doxygen.cpp b/src/doxygen.cpp -index 1d15a91b..2ceece91 100644 ---- a/src/doxygen.cpp -+++ b/src/doxygen.cpp -@@ -1900,25 +1900,22 @@ static void findUsingDeclImports(const Entry *root) - if (md && md->protection()!=Private) - { - //printf("found member %s\n",mni->memberName()); -- MemberDef *newMd = 0; -+ QCString fileName = root->fileName; -+ if (fileName.isEmpty() && root->tagInfo()) - { -- QCString fileName = root->fileName; -- if (fileName.isEmpty() && root->tagInfo()) -- { -- fileName = root->tagInfo()->tagName; -- } -- const ArgumentList &templAl = md->templateArguments(); -- const ArgumentList &al = md->templateArguments(); -- newMd = createMemberDef( -- fileName,root->startLine,root->startColumn, -- md->typeString(),memName,md->argsString(), -- md->excpString(),root->protection,root->virt, -- md->isStatic(),Member,md->memberType(), -- templAl,al,root->metaData -- ); -+ fileName = root->tagInfo()->tagName; - } -+ const ArgumentList &templAl = md->templateArguments(); -+ const ArgumentList &al = md->templateArguments(); -+ std::unique_ptr newMd { createMemberDef( -+ fileName,root->startLine,root->startColumn, -+ md->typeString(),memName,md->argsString(), -+ md->excpString(),root->protection,root->virt, -+ md->isStatic(),Member,md->memberType(), -+ templAl,al,root->metaData -+ ) }; - newMd->setMemberClass(cd); -- cd->insertMember(newMd); -+ cd->insertMember(newMd.get()); - if (!root->doc.isEmpty() || !root->brief.isEmpty()) - { - newMd->setDocumentation(root->doc,root->docFile,root->docLine); -@@ -1946,6 +1943,8 @@ static void findUsingDeclImports(const Entry *root) - newMd->setMemberSpecifiers(md->getMemberSpecifiers()); - newMd->setLanguage(root->lang); - newMd->setId(root->id); -+ MemberName *mn = Doxygen::memberNameLinkedMap->add(memName); -+ mn->push_back(std::move(newMd)); - } - } - } -@@ -9739,6 +9738,7 @@ void initDoxygen() - Doxygen::exampleSDict->setAutoDelete(TRUE); - Doxygen::memGrpInfoDict.setAutoDelete(TRUE); - Doxygen::tagDestinationDict.setAutoDelete(TRUE); -+ Doxygen::namespaceAliasDict.setAutoDelete(TRUE); - Doxygen::dirRelations.setAutoDelete(TRUE); - Doxygen::genericsDict = new GenericsSDict; - Doxygen::indexList = new IndexList; diff --git a/doxygen.spec b/doxygen.spec index b114dac..e708856 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -1,3 +1,9 @@ +# doxygen is known not to work properly with LTO at this point. Some of the issues +# are being worked on upstream and disabling LTO should be re-evaluated as +# we update this change. Until such time... +# Disable LTO +%global _lto_cflags %{nil} + %if 0%{?fedora} %global xapian_core_support ON %global clang_support ON @@ -5,13 +11,12 @@ %global xapian_core_support OFF %global clang_support OFF %endif -%global BuildDir Out Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.8.18 -Release: 6%{?dist} +Version: 1.8.20 +Release: 1%{?dist} # No version is specified. License: GPL+ @@ -19,13 +24,7 @@ Url: http://www.doxygen.nl Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop -%if 0%{?fedora} >= 32 -Patch0: doxygen-1.8.18-clang.patch -%endif # upstream patches -Patch100: doxygen-1.8.17-buffer-overflow.patch -Patch101: doxygen-1.8.18-memory-leaks.patch -Patch103: doxygen-1.8.18-md5-hash-does-not-match-for-two-different-runs.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick @@ -213,8 +212,6 @@ mv LANGUAGE.HOWTO.new LANGUAGE.HOWTO %build -mkdir -p %{BuildDir} -pushd %{BuildDir} %if ! 0%{?_module_build} %cmake \ -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ @@ -226,7 +223,6 @@ pushd %{BuildDir} -DMAN_INSTALL_DIR=%{_mandir}/man1 \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DBUILD_SHARED_LIBS=OFF \ - .. %else %cmake \ -DPYTHON_EXECUTABLE=%{_bindir}/python3 \ @@ -238,14 +234,12 @@ pushd %{BuildDir} -DMAN_INSTALL_DIR=%{_mandir}/man1 \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \ -DBUILD_SHARED_LIBS=OFF \ - .. %endif -popd -make %{?_smp_mflags} -C %{BuildDir} +%cmake_build %{?_smp_mflags} %install -make install DESTDIR=%{buildroot} -C %{BuildDir} +%cmake_install # convert icons convert addon/doxywizard/doxywizard.ico doxywizard.png @@ -277,7 +271,7 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %check -make tests -C %{BuildDir} +%ctests %files %doc LANGUAGE.HOWTO README.md @@ -308,6 +302,9 @@ make tests -C %{BuildDir} %endif %changelog +* Tue Aug 25 2020 Than Ngo - 1.8.20-1 +- update to 1.8.20 + * Sat Aug 01 2020 Fedora Release Engineering - 1:1.8.18-6 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild diff --git a/sources b/sources index bc67412..e875167 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (doxygen-1.8.18.src.tar.gz) = 0be26f58e33e564318629bedefb1257f478bfcb78f6a363b066d46ff6e457c15e79fe8d5c36032ee3f9b200cca91690166c388234ba6a28b6669f19af364eed5 +SHA512 (doxygen-1.8.20.src.tar.gz) = 15dc95850440aed2a56971d8c04bf3bdfac861bcc38c60c7be22fd3b922b9fe2a750ea8877cb0716832bb6ad7901afcdf4950ba985b09890027030bdf828eee3 From 5d96c55069d57666f95a0c97dcca6af7de8610a9 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 25 Aug 2020 15:00:37 +0200 Subject: [PATCH 044/117] fixed typo ctest --- doxygen.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index e708856..d104e77 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -271,7 +271,7 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %check -%ctests +%ctest %files %doc LANGUAGE.HOWTO README.md From 2f055ba6e3c503edf2edc58e72ff4ea6c4b208ac Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Fri, 28 Aug 2020 15:08:13 -0400 Subject: [PATCH 045/117] Fix issue with enums being defined in multiple files This is a regression in 1.8.20 that causes python-wxpython4 to FTBFS. More information about the issue is available here: https://github.com/doxygen/doxygen/issues/7979 --- doxygen-1.8.20-enums-multiple-files.patch | 86 +++++++++++++++++++++++ doxygen.spec | 6 +- 2 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.8.20-enums-multiple-files.patch diff --git a/doxygen-1.8.20-enums-multiple-files.patch b/doxygen-1.8.20-enums-multiple-files.patch new file mode 100644 index 0000000..78cb44c --- /dev/null +++ b/doxygen-1.8.20-enums-multiple-files.patch @@ -0,0 +1,86 @@ +From 9d9d08582ccea7ef90000acebfd09f8c8acc577a Mon Sep 17 00:00:00 2001 +From: Dimitri van Heesch +Date: Fri, 28 Aug 2020 20:22:46 +0200 +Subject: [PATCH] issue #7979: C++ enums being defined in multiple files after + b265433 (multi-thread input processing) + +--- + src/scanner.l | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/scanner.l b/src/scanner.l +index 7c710fa4..70f15d65 100644 +--- a/src/scanner.l ++++ b/src/scanner.l +@@ -60,6 +60,9 @@ + + #define USE_STATE2STRING 0 + ++static AtomicInt anonCount; ++static AtomicInt anonNSCount; ++ + struct scannerYY_state + { + OutlineParserInterface *thisParser; +@@ -105,8 +108,6 @@ struct scannerYY_state + int yyBegLineNr = 1 ; + int yyColNr = 1 ; + int yyBegColNr = 1 ; +- int anonCount = 0 ; +- int anonNSCount = 0 ; + QCString yyFileName; + MethodTypes mtype = Method; + bool stat = false; +@@ -3784,7 +3785,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + BEGIN(MemberSpecSkip); + } + ";" { /* typedef of anonymous type */ +- yyextra->current->name.sprintf("@%d",yyextra->anonCount++); ++ yyextra->current->name.sprintf("@%d",anonCount++); + if ((yyextra->current->section == Entry::ENUM_SEC) || (yyextra->current->spec&Entry::Enum)) + { + yyextra->current->program+=','; // add field terminator +@@ -3859,7 +3860,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + { + // anonymous compound yyextra->inside -> insert dummy variable name + //printf("Adding anonymous variable for scope %s\n",p->name.data()); +- yyextra->msName.sprintf("@%d",yyextra->anonCount++); ++ yyextra->msName.sprintf("@%d",anonCount++); + break; + } + } +@@ -5644,12 +5645,12 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) + } + else // use invisible name + { +- yyextra->current->name.sprintf("@%d",yyextra->anonNSCount); ++ yyextra->current->name.sprintf("@%d",anonNSCount.load()); + } + } + else + { +- yyextra->current->name.sprintf("@%d",yyextra->anonCount++); ++ yyextra->current->name.sprintf("@%d",anonCount++); + } + } + yyextra->curlyCount=0; +@@ -7247,7 +7248,6 @@ static void parseMain(yyscan_t yyscanner, + yyextra->column = 0; + scannerYYrestart(0,yyscanner); + +- //yyextra->anonCount = 0; // don't reset per file + //depthIf = 0; + yyextra->protection = Public; + yyextra->mtype = Method; +@@ -7301,7 +7301,7 @@ static void parseMain(yyscan_t yyscanner, + + parseCompounds(yyscanner,rt); + +- yyextra->anonNSCount++; ++ anonNSCount++; + + // add additional entries that were created during processing + for (auto &kv: yyextra->outerScopeEntries) +-- +2.26.2 + diff --git a/doxygen.spec b/doxygen.spec index d104e77..71aa328 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.20 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -25,6 +25,7 @@ Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop # upstream patches +Patch0: doxygen-1.8.20-enums-multiple-files.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick @@ -302,6 +303,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri Aug 28 2020 Scott Talbert - 1:1.8.20-2 +- Fix issue with enums being defined in multiple files + * Tue Aug 25 2020 Than Ngo - 1.8.20-1 - update to 1.8.20 From f9a41fa6e493437004920753143f6db23bbdbd3e Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Tue, 15 Sep 2020 16:05:42 +0200 Subject: [PATCH 046/117] Fix doxygen producing different results on 32 and 64 bit architectures This is a fix for a regression introduced in version 1.8.17 that causes doxygen to create different results on 32 and 64 bit achitectures. This is a problem in Fedora because koji rejects builds where noarch subpackages built on different architectures contain different sets of files. See: https://bugzilla.redhat.com/show_bug.cgi?id=1814356 https://github.com/doxygen/doxygen/issues/8022 --- ...n-different-results-on-64-and-32-bit.patch | 25 +++++++++++++++++++ doxygen.spec | 6 ++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 doxygen-different-results-on-64-and-32-bit.patch diff --git a/doxygen-different-results-on-64-and-32-bit.patch b/doxygen-different-results-on-64-and-32-bit.patch new file mode 100644 index 0000000..2167f3b --- /dev/null +++ b/doxygen-different-results-on-64-and-32-bit.patch @@ -0,0 +1,25 @@ +From 1fda77f54a2eacba32658001329bd9084f4df1e7 Mon Sep 17 00:00:00 2001 +From: Dimitri van Heesch +Date: Fri, 11 Sep 2020 15:38:01 +0200 +Subject: [PATCH] issue #8022: Different results on 64 and 32 bit + +--- + src/doxygen.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/doxygen.cpp b/src/doxygen.cpp +index b218d382..0832e5c6 100644 +--- a/src/doxygen.cpp ++++ b/src/doxygen.cpp +@@ -164,7 +164,7 @@ DefinesPerFileList Doxygen::macroDefinitions; + bool Doxygen::clangAssistedParsing = FALSE; + + // locally accessible globals +-static std::unordered_map< std::string, const Entry* > g_classEntries; ++static std::map< std::string, const Entry* > g_classEntries; + static StringVector g_inputFiles; + static QDict g_compoundKeywordDict(7); // keywords recognised as compounds + static OutputList *g_outputList = 0; // list of output generating objects +-- +2.26.2 + diff --git a/doxygen.spec b/doxygen.spec index 71aa328..78cad06 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.20 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -26,6 +26,7 @@ Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz Source1: doxywizard.desktop # upstream patches Patch0: doxygen-1.8.20-enums-multiple-files.patch +Patch1: doxygen-different-results-on-64-and-32-bit.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick @@ -303,6 +304,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Tue Sep 15 2020 Mattias Ellert - 1:1.8.20-3 +- Fix doxygen producing different results on 32 and 64 bit architectures + * Fri Aug 28 2020 Scott Talbert - 1:1.8.20-2 - Fix issue with enums being defined in multiple files From b77803a10c162728c0441179c1f0c1d46a610c17 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Thu, 17 Sep 2020 21:13:17 +0200 Subject: [PATCH 047/117] Fix doxygen crash --- doxygen-1.8.20-glibc-assert.patch | 41 +++++++++++++++++++++++++++++++ doxygen.spec | 6 ++++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.8.20-glibc-assert.patch diff --git a/doxygen-1.8.20-glibc-assert.patch b/doxygen-1.8.20-glibc-assert.patch new file mode 100644 index 0000000..ab17398 --- /dev/null +++ b/doxygen-1.8.20-glibc-assert.patch @@ -0,0 +1,41 @@ +commit d067baf495d0415283ce724ad32cb9a08dc17c83 +Author: Dimitri van Heesch +Date: Thu Sep 17 20:14:39 2020 +0200 + + issue #8034: doxygen crashes + +diff --git a/src/definition.cpp b/src/definition.cpp +index 7874a5e4..dc968399 100644 +--- a/src/definition.cpp ++++ b/src/definition.cpp +@@ -176,14 +176,14 @@ static bool matchExcludedSymbols(const char *name) + QRegExp re(substitute(pattern,"*",".*"),TRUE); + int pl; + int i = re.match(symName,0,&pl); +- //printf(" %d = re.match(%s) pattern=%s\n",i,symName.data(),pattern.data()); ++ //printf(" %d = re.match(%s) pattern=%s pl=%d len=%d\n",i,symName.data(),pattern.data(),pl,symName.length()); + if (i!=-1) // wildcard match + { + uint ui=(uint)i; + uint sl=symName.length(); + // check if it is a whole word match +- if ((ui==0 || pattern.at(0)=='*' || (!isId(symName.at(ui-1)) && !forceStart)) && +- (ui+pl==sl || pattern.at(ui+pl)=='*' || (!isId(symName.at(ui+pl)) && !forceEnd)) ++ if ((ui==0 || pattern.at(0)=='*' || (!isId(symName.at(ui-1)) && !forceStart)) && ++ (ui+pl==sl || pattern.at(pattern.length()-1)=='*' || (!isId(symName.at(ui+pl)) && !forceEnd)) + ) + { + //printf("--> name=%s pattern=%s match at %d\n",symName.data(),pattern.data(),i); +diff --git a/src/util.cpp b/src/util.cpp +index 0581b5fa..34df8d7b 100644 +--- a/src/util.cpp ++++ b/src/util.cpp +@@ -5714,7 +5714,7 @@ QCString normalizeNonTemplateArgumentsInString( + result += name.mid(p,i-p); + QCString n = name.mid(i,l); + bool found=FALSE; +- for (const Argument formArg : formalArgs) ++ for (const Argument &formArg : formalArgs) + { + if (formArg.name == n) + { diff --git a/doxygen.spec b/doxygen.spec index 78cad06..ab97e09 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.20 -Release: 3%{?dist} +Release: 4%{?dist} # No version is specified. License: GPL+ @@ -27,6 +27,7 @@ Source1: doxywizard.desktop # upstream patches Patch0: doxygen-1.8.20-enums-multiple-files.patch Patch1: doxygen-different-results-on-64-and-32-bit.patch +Patch2: doxygen-1.8.20-glibc-assert.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick @@ -304,6 +305,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Thu Sep 17 2020 Than Ngo - 1.8.20-4 +- Fix doxygen crash + * Tue Sep 15 2020 Mattias Ellert - 1:1.8.20-3 - Fix doxygen producing different results on 32 and 64 bit architectures From 6f6455a5338c0b43ad1c68ad057ced10f76df93b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 29 Sep 2020 12:27:12 +0200 Subject: [PATCH 048/117] backport upstream patches --- ...gen-1.8.20-broken-ref-for-enum-entry.patch | 49 ++++++++ ...not-handle-simple-example-in-md-file.patch | 58 +++++++++ ...1.8.20-links-using-ref-stopp-working.patch | 117 ++++++++++++++++++ doxygen-1.8.20-python3.patch | 56 +++++++++ doxygen.spec | 9 +- 5 files changed, 288 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.8.20-broken-ref-for-enum-entry.patch create mode 100644 doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch create mode 100644 doxygen-1.8.20-links-using-ref-stopp-working.patch create mode 100644 doxygen-1.8.20-python3.patch diff --git a/doxygen-1.8.20-broken-ref-for-enum-entry.patch b/doxygen-1.8.20-broken-ref-for-enum-entry.patch new file mode 100644 index 0000000..62e8337 --- /dev/null +++ b/doxygen-1.8.20-broken-ref-for-enum-entry.patch @@ -0,0 +1,49 @@ +commit 63dc5b9b1b3e8fb875304a954e4df934b249034b +Author: Dimitri van Heesch +Date: Wed Aug 26 21:23:29 2020 +0200 + + issue #7977: Broken ref for enum entry (doxygen 1.8.18 -> 1.8.19) + +diff --git a/src/doxygen.cpp b/src/doxygen.cpp +index 757e7831..d5512925 100644 +--- a/src/doxygen.cpp ++++ b/src/doxygen.cpp +@@ -6946,7 +6946,14 @@ static void addEnumValuesToEnums(const Entry *root) + MemberName *mn = mnsd->find(name); // for all members with this name + if (mn) + { +- std::vector< std::unique_ptr > extraMembers; ++ struct EnumValueInfo ++ { ++ EnumValueInfo(const QCString &n,std::unique_ptr &md) : ++ name(n), member(std::move(md)) {} ++ QCString name; ++ std::unique_ptr member; ++ }; ++ std::vector< EnumValueInfo > extraMembers; + // for each enum in this list + for (const auto &md : *mn) + { +@@ -7006,8 +7013,7 @@ static void addEnumValuesToEnums(const Entry *root) + fmd->setAnchor(); + md->insertEnumField(fmd.get()); + fmd->setEnumScope(md.get(),TRUE); +- mn=mnsd->add(e->name); +- extraMembers.push_back(std::move(fmd)); ++ extraMembers.push_back(EnumValueInfo(e->name,fmd)); + } + } + else +@@ -7071,9 +7077,10 @@ static void addEnumValuesToEnums(const Entry *root) + } + } + // move the newly added members into mn +- for (auto &md : extraMembers) ++ for (auto &e : extraMembers) + { +- mn->push_back(std::move(md)); ++ MemberName *emn=mnsd->add(e.name); ++ emn->push_back(std::move(e.member)); + } + } + } diff --git a/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch b/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch new file mode 100644 index 0000000..971de82 --- /dev/null +++ b/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch @@ -0,0 +1,58 @@ +commit 7c429806b072dd8bf777d93035ffda817976adc0 +Author: albert-github +Date: Wed Sep 2 11:32:42 2020 +0200 + + issue #7995 Doxygen doesn't handle very simple example in the .md file + + Besides "keep utf8 characters together..." as done for the C-type parser in code.l (commit d3d9dd8540ec159de080859c8f34a2581c4147f0) this also has to be done for the Fortran, SQL and VHDL code lexers. The code lexers for python and xml already didn't give errors as they already handled these cases for the example. + +diff --git a/src/fortrancode.l b/src/fortrancode.l +index 4951001c..5d036e8a 100644 +--- a/src/fortrancode.l ++++ b/src/fortrancode.l +@@ -1272,6 +1272,17 @@ LANGUAGE_BIND_SPEC BIND{BS}"("{BS}C{BS}(,{BS}NAME{BS}"="{BS}"\""(.*)"\""{BS})?") + } + <*>^{BS}"type"{BS}"=" { g_code->codify(yytext); } + ++<*>[\x80-\xFF]* { // keep utf8 characters together... ++ if (g_isFixedForm && yy_my_start > fixedCommentAfter) ++ { ++ startFontClass("comment"); ++ codifyLines(yytext); ++ } ++ else ++ { ++ g_code->codify(yytext); ++ } ++ } + <*>. { + if (g_isFixedForm && yy_my_start > fixedCommentAfter) + { +diff --git a/src/sqlcode.l b/src/sqlcode.l +index 58a2fce9..22a5e170 100644 +--- a/src/sqlcode.l ++++ b/src/sqlcode.l +@@ -190,6 +190,9 @@ commentclose "\*/" + codifyLines(yytext,yyscanner); + } + ++[\x80-\xFF]* { // keep utf8 characters together... ++ codifyLines(yytext,yyscanner); ++ } + . { + codifyLines(yytext,yyscanner); + } +diff --git a/src/vhdlcode.l b/src/vhdlcode.l +index 808e5a29..dcace05d 100644 +--- a/src/vhdlcode.l ++++ b/src/vhdlcode.l +@@ -1497,6 +1497,9 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI + BEGIN(Bases); + } + ++<*>[\x80-\xFF]* { // keep utf8 characters together... ++ g_code->codify(vhdlcodeYYtext); ++ } + <*>. { + g_code->codify(vhdlcodeYYtext); + } diff --git a/doxygen-1.8.20-links-using-ref-stopp-working.patch b/doxygen-1.8.20-links-using-ref-stopp-working.patch new file mode 100644 index 0000000..5ae04fc --- /dev/null +++ b/doxygen-1.8.20-links-using-ref-stopp-working.patch @@ -0,0 +1,117 @@ +commit dfc82af001c56254c6fde0affd009f80e19b1548 +Author: Dimitri van Heesch +Date: Mon Sep 21 12:20:57 2020 +0200 + + issue #8037: Links using @ref stopped working in doxygen 1.8.19 + +diff --git a/src/classdef.cpp b/src/classdef.cpp +index c3cd3ee2..5e2b2fa1 100644 +--- a/src/classdef.cpp ++++ b/src/classdef.cpp +@@ -1248,6 +1248,7 @@ void ClassDefImpl::distributeMemberGroupDocumentation() + + void ClassDefImpl::findSectionsInDocumentation() + { ++ docFindSections(briefDescription(),this,docFile()); + docFindSections(documentation(),this,docFile()); + if (m_impl->memberGroupSDict) + { +diff --git a/src/commentscan.l b/src/commentscan.l +index c151294d..ce495a1c 100644 +--- a/src/commentscan.l ++++ b/src/commentscan.l +@@ -666,6 +666,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" + optList = QCStringList::split(',',optStr); + } + auto it = docCmdMap.find(cmdName.data()); ++ //printf("lookup command '%s' found=%d\n",cmdName.data(),it!=docCmdMap.end()); + if (it!=docCmdMap.end()) // special action is required + { + int i=0; +diff --git a/src/docparser.cpp b/src/docparser.cpp +index 73131f67..b79f8c82 100644 +--- a/src/docparser.cpp ++++ b/src/docparser.cpp +@@ -2448,8 +2448,8 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) : + } + m_isSubPage = pd && pd->hasParentPage(); + if (sec->type()!=SectionType::Page || m_isSubPage) m_anchor = sec->label(); +- //printf("m_text=%s,m_ref=%s,m_file=%s,m_refToAnchor=%d type=%d\n", +- // m_text.data(),m_ref.data(),m_file.data(),m_refToAnchor,sec->type); ++ //printf("m_text=%s,m_ref=%s,m_file=%s,type=%d\n", ++ // m_text.data(),m_ref.data(),m_file.data(),m_refType); + return; + } + else if (resolveLink(context,target,TRUE,&compound,anchor)) +diff --git a/src/filedef.cpp b/src/filedef.cpp +index f07201d4..b74fda9b 100644 +--- a/src/filedef.cpp ++++ b/src/filedef.cpp +@@ -311,6 +311,7 @@ void FileDefImpl::distributeMemberGroupDocumentation() + + void FileDefImpl::findSectionsInDocumentation() + { ++ docFindSections(briefDescription(),this,docFile()); + docFindSections(documentation(),this,docFile()); + if (m_memberGroupSDict) + { +diff --git a/src/groupdef.cpp b/src/groupdef.cpp +index 9b333567..7cd6cf26 100644 +--- a/src/groupdef.cpp ++++ b/src/groupdef.cpp +@@ -228,6 +228,7 @@ void GroupDefImpl::distributeMemberGroupDocumentation() + + void GroupDefImpl::findSectionsInDocumentation() + { ++ docFindSections(briefDescription(),this,docFile()); + docFindSections(documentation(),this,docFile()); + MemberGroupSDict::Iterator mgli(*m_memberGroupSDict); + MemberGroup *mg; +diff --git a/src/markdown.cpp b/src/markdown.cpp +index 3089b8e7..2e6ab3ea 100644 +--- a/src/markdown.cpp ++++ b/src/markdown.cpp +@@ -2662,6 +2662,7 @@ QCString markdownFileNameToId(const QCString &fileName) + int i = baseFn.findRev('.'); + if (i!=-1) baseFn = baseFn.left(i); + QCString baseName = substitute(substitute(substitute(baseFn," ","_"),"/","_"),":","_"); ++ //printf("markdownFileNameToId(%s)=md_%s\n",qPrint(fileName),qPrint(baseName)); + return "md_"+baseName; + } + +diff --git a/src/memberdef.cpp b/src/memberdef.cpp +index 6d179c21..2f92ea01 100644 +--- a/src/memberdef.cpp ++++ b/src/memberdef.cpp +@@ -4838,6 +4838,7 @@ ClassDef *MemberDefImpl::accessorClass() const + + void MemberDefImpl::findSectionsInDocumentation() + { ++ docFindSections(briefDescription(),this,docFile()); + docFindSections(documentation(),this,docFile()); + } + +diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp +index 88eea5d2..65456ac0 100644 +--- a/src/namespacedef.cpp ++++ b/src/namespacedef.cpp +@@ -349,6 +349,7 @@ void NamespaceDefImpl::distributeMemberGroupDocumentation() + + void NamespaceDefImpl::findSectionsInDocumentation() + { ++ docFindSections(briefDescription(),this,docFile()); + docFindSections(documentation(),this,docFile()); + MemberGroupSDict::Iterator mgli(*memberGroupSDict); + MemberGroup *mg; +diff --git a/src/pagedef.cpp b/src/pagedef.cpp +index 09152def..75e50ed1 100644 +--- a/src/pagedef.cpp ++++ b/src/pagedef.cpp +@@ -99,6 +99,7 @@ PageDefImpl::~PageDefImpl() + + void PageDefImpl::findSectionsInDocumentation() + { ++ docFindSections(briefDescription(),this,docFile()); + docFindSections(documentation(),this,docFile()); + } + diff --git a/doxygen-1.8.20-python3.patch b/doxygen-1.8.20-python3.patch new file mode 100644 index 0000000..4eede41 --- /dev/null +++ b/doxygen-1.8.20-python3.patch @@ -0,0 +1,56 @@ +commit 6383a72200df27b0515b6e3d09bfad8934eb5c76 +Author: albert-github +Date: Tue Sep 8 13:31:15 2020 +0200 + + Make testsqlite3.py python script running with python 3 + + The testsqlite3.py didn't run under python 3 (found by means of pylint). + Making it runnable under python 2 and python 3. + +diff --git a/testing/testsqlite3.py b/testing/testsqlite3.py +index b4227b44..1d94f701 100755 +--- a/testing/testsqlite3.py ++++ b/testing/testsqlite3.py +@@ -13,7 +13,7 @@ g_conn=None + val=[] + def print_unprocessed_attributes(node): + for key in node.attrib: +- print "WARNING: '%s' has unprocessed attr '%s'" % (node.tag,key) ++ print("WARNING: '%s' has unprocessed attr '%s'" % (node.tag,key)) + + def extract_attribute(node,attribute,pnl): + if not attribute in node.attrib: +@@ -69,7 +69,7 @@ def process_memberdef(node): + extract_element(node,chld,q) + + for chld in node.getchildren(): +- print "WARNING: '%s' has unprocessed child elem '%s'" % (node.tag,chld.tag) ++ print("WARNING: '%s' has unprocessed child elem '%s'" % (node.tag,chld.tag)) + + extract_attribute(node,"kind",q) + extract_attribute(node,"prot",q) +@@ -90,12 +90,12 @@ def process_memberdef(node): + r=[] + try: + r = g_conn.execute(query,val).fetchall() +- except sqlite3.OperationalError,e: +- print "SQL_ERROR:%s"%e ++ except(sqlite3.OperationalError,e): ++ print("SQL_ERROR:%s"%e) + + del val[:] + if not len(r) > 0: +- print "TEST_ERROR: Member not found in SQL DB" ++ print("TEST_ERROR: Member not found in SQL DB") + + + def load_xml(name): +@@ -104,7 +104,7 @@ def load_xml(name): + for event, elem in context: + if event == "end" and elem.tag == "memberdef": + process_memberdef(elem) +- print "\n== Unprocessed XML ==" ++ print("\n== Unprocessed XML ==") + # ET.dump(root) + + diff --git a/doxygen.spec b/doxygen.spec index ab97e09..da6900c 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.20 -Release: 4%{?dist} +Release: 5%{?dist} # No version is specified. License: GPL+ @@ -28,6 +28,10 @@ Source1: doxywizard.desktop Patch0: doxygen-1.8.20-enums-multiple-files.patch Patch1: doxygen-different-results-on-64-and-32-bit.patch Patch2: doxygen-1.8.20-glibc-assert.patch +Patch3: doxygen-1.8.20-broken-ref-for-enum-entry.patch +Patch4: doxygen-1.8.20-links-using-ref-stopp-working.patch +Patch5: doxygen-1.8.20-python3.patch +Patch6: doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick @@ -305,6 +309,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Tue Sep 29 2020 Than Ngo - 1.8.20-5 +- backport upstream patches + * Thu Sep 17 2020 Than Ngo - 1.8.20-4 - Fix doxygen crash From 6b0c5db74b337b843ad543bf84325b6e1ef5d040 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 29 Sep 2020 12:29:13 +0200 Subject: [PATCH 049/117] attribute target redefined in SVG --- ...20-attribute-target-redefined-in-svg.patch | 20 +++++++++++++++++++ doxygen.spec | 1 + 2 files changed, 21 insertions(+) create mode 100644 doxygen-1.8.20-attribute-target-redefined-in-svg.patch diff --git a/doxygen-1.8.20-attribute-target-redefined-in-svg.patch b/doxygen-1.8.20-attribute-target-redefined-in-svg.patch new file mode 100644 index 0000000..7db3a60 --- /dev/null +++ b/doxygen-1.8.20-attribute-target-redefined-in-svg.patch @@ -0,0 +1,20 @@ +commit ff021223c89995bf2abc4f33befddb1c97cab1d8 +Author: albert-github +Date: Thu Sep 24 19:12:10 2020 +0200 + + issue #8053 error: Attribute target redefined in SVG + + regression on #7706 (although it has nothing to do with double runs in my opinion as indicated in the title of that issue: " Md5 hash does not match for two different runs") looks like this statement should be present. + +diff --git a/src/dotfilepatcher.cpp b/src/dotfilepatcher.cpp +index 099359d9..285c0bb8 100644 +--- a/src/dotfilepatcher.cpp ++++ b/src/dotfilepatcher.cpp +@@ -174,6 +174,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, + if (!ref.isEmpty()) + { + result = externalLinkTarget(true); ++ if (!result.isEmpty())targetAlreadySet=true; + } + result+= href+"=\""; + result+=externalRef(relPath,ref,TRUE); diff --git a/doxygen.spec b/doxygen.spec index da6900c..76598ef 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -32,6 +32,7 @@ Patch3: doxygen-1.8.20-broken-ref-for-enum-entry.patch Patch4: doxygen-1.8.20-links-using-ref-stopp-working.patch Patch5: doxygen-1.8.20-python3.patch Patch6: doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch +Patch7: doxygen-1.8.20-attribute-target-redefined-in-svg.patch BuildRequires: %{_bindir}/python3 BuildRequires: ImageMagick From f96d63d27c0032e22844a47d758e14ba26188623 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 11 Jan 2021 14:55:48 +0100 Subject: [PATCH 050/117] drop BR on ImageMagick in RHEL --- .gitignore | 1 + doxygen.spec | 10 +++++++--- sources | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index c209cab..a84b6bb 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.16.src.tar.gz /doxygen-1.8.17.src.tar.gz /doxygen-1.8.18.src.tar.gz +/doxywizard-icons.tar.xz diff --git a/doxygen.spec b/doxygen.spec index 76598ef..3d50bc5 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.8.20 -Release: 5%{?dist} +Release: 6%{?dist} # No version is specified. License: GPL+ @@ -24,6 +24,8 @@ Url: http://www.doxygen.nl Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop +# these icons are part of doxygen and converted from doxywizard.ico +Source2: doxywizard-icons.tar.xz # upstream patches Patch0: doxygen-1.8.20-enums-multiple-files.patch Patch1: doxygen-different-results-on-64-and-32-bit.patch @@ -35,7 +37,6 @@ Patch6: doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch Patch7: doxygen-1.8.20-attribute-target-redefined-in-svg.patch BuildRequires: %{_bindir}/python3 -BuildRequires: ImageMagick BuildRequires: gcc-c++ gcc BuildRequires: perl-interpreter %if ! 0%{?_module_build} @@ -211,7 +212,7 @@ Requires: texlive-epstopdf %prep -%autosetup -p1 +%autosetup -p1 -a2 # convert into utf-8 iconv --from=ISO-8859-1 --to=UTF-8 LANGUAGE.HOWTO > LANGUAGE.HOWTO.new @@ -310,6 +311,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Mon Jan 11 2021 Than Ngo - 1.8.20-6 +- drop BR on ImageMagick in RHEL + * Tue Sep 29 2020 Than Ngo - 1.8.20-5 - backport upstream patches diff --git a/sources b/sources index e875167..2d15d51 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ SHA512 (doxygen-1.8.20.src.tar.gz) = 15dc95850440aed2a56971d8c04bf3bdfac861bcc38c60c7be22fd3b922b9fe2a750ea8877cb0716832bb6ad7901afcdf4950ba985b09890027030bdf828eee3 +SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad From 4be37ca6b9ef7ab445931fec5144a7bec88418d4 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 11 Jan 2021 14:58:03 +0100 Subject: [PATCH 051/117] remove convert --- doxygen.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index 3d50bc5..9e42a9a 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -250,9 +250,6 @@ mv LANGUAGE.HOWTO.new LANGUAGE.HOWTO %install %cmake_install -# convert icons -convert addon/doxywizard/doxywizard.ico doxywizard.png - # install icons icondir=%{buildroot}%{_datadir}/icons/hicolor mkdir -m755 -p $icondir/{16x16,32x32,48x48,128x128}/apps From b2647be5a187dc4b82cb4c82ade578f9b4553f65 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 11 Jan 2021 17:48:59 +0100 Subject: [PATCH 052/117] rebase to 1.9.1 --- .gitignore | 1 + ...20-attribute-target-redefined-in-svg.patch | 20 --- ...gen-1.8.20-broken-ref-for-enum-entry.patch | 49 -------- ...not-handle-simple-example-in-md-file.patch | 58 --------- doxygen-1.8.20-enums-multiple-files.patch | 86 ------------- doxygen-1.8.20-glibc-assert.patch | 41 ------ ...1.8.20-links-using-ref-stopp-working.patch | 117 ------------------ doxygen-1.8.20-python3.patch | 56 --------- ...n-different-results-on-64-and-32-bit.patch | 25 ---- doxygen.spec | 15 +-- sources | 2 +- 11 files changed, 7 insertions(+), 463 deletions(-) delete mode 100644 doxygen-1.8.20-attribute-target-redefined-in-svg.patch delete mode 100644 doxygen-1.8.20-broken-ref-for-enum-entry.patch delete mode 100644 doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch delete mode 100644 doxygen-1.8.20-enums-multiple-files.patch delete mode 100644 doxygen-1.8.20-glibc-assert.patch delete mode 100644 doxygen-1.8.20-links-using-ref-stopp-working.patch delete mode 100644 doxygen-1.8.20-python3.patch delete mode 100644 doxygen-different-results-on-64-and-32-bit.patch diff --git a/.gitignore b/.gitignore index a84b6bb..8769b24 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.17.src.tar.gz /doxygen-1.8.18.src.tar.gz /doxywizard-icons.tar.xz +/doxygen-1.9.1.src.tar.gz diff --git a/doxygen-1.8.20-attribute-target-redefined-in-svg.patch b/doxygen-1.8.20-attribute-target-redefined-in-svg.patch deleted file mode 100644 index 7db3a60..0000000 --- a/doxygen-1.8.20-attribute-target-redefined-in-svg.patch +++ /dev/null @@ -1,20 +0,0 @@ -commit ff021223c89995bf2abc4f33befddb1c97cab1d8 -Author: albert-github -Date: Thu Sep 24 19:12:10 2020 +0200 - - issue #8053 error: Attribute target redefined in SVG - - regression on #7706 (although it has nothing to do with double runs in my opinion as indicated in the title of that issue: " Md5 hash does not match for two different runs") looks like this statement should be present. - -diff --git a/src/dotfilepatcher.cpp b/src/dotfilepatcher.cpp -index 099359d9..285c0bb8 100644 ---- a/src/dotfilepatcher.cpp -+++ b/src/dotfilepatcher.cpp -@@ -174,6 +174,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, - if (!ref.isEmpty()) - { - result = externalLinkTarget(true); -+ if (!result.isEmpty())targetAlreadySet=true; - } - result+= href+"=\""; - result+=externalRef(relPath,ref,TRUE); diff --git a/doxygen-1.8.20-broken-ref-for-enum-entry.patch b/doxygen-1.8.20-broken-ref-for-enum-entry.patch deleted file mode 100644 index 62e8337..0000000 --- a/doxygen-1.8.20-broken-ref-for-enum-entry.patch +++ /dev/null @@ -1,49 +0,0 @@ -commit 63dc5b9b1b3e8fb875304a954e4df934b249034b -Author: Dimitri van Heesch -Date: Wed Aug 26 21:23:29 2020 +0200 - - issue #7977: Broken ref for enum entry (doxygen 1.8.18 -> 1.8.19) - -diff --git a/src/doxygen.cpp b/src/doxygen.cpp -index 757e7831..d5512925 100644 ---- a/src/doxygen.cpp -+++ b/src/doxygen.cpp -@@ -6946,7 +6946,14 @@ static void addEnumValuesToEnums(const Entry *root) - MemberName *mn = mnsd->find(name); // for all members with this name - if (mn) - { -- std::vector< std::unique_ptr > extraMembers; -+ struct EnumValueInfo -+ { -+ EnumValueInfo(const QCString &n,std::unique_ptr &md) : -+ name(n), member(std::move(md)) {} -+ QCString name; -+ std::unique_ptr member; -+ }; -+ std::vector< EnumValueInfo > extraMembers; - // for each enum in this list - for (const auto &md : *mn) - { -@@ -7006,8 +7013,7 @@ static void addEnumValuesToEnums(const Entry *root) - fmd->setAnchor(); - md->insertEnumField(fmd.get()); - fmd->setEnumScope(md.get(),TRUE); -- mn=mnsd->add(e->name); -- extraMembers.push_back(std::move(fmd)); -+ extraMembers.push_back(EnumValueInfo(e->name,fmd)); - } - } - else -@@ -7071,9 +7077,10 @@ static void addEnumValuesToEnums(const Entry *root) - } - } - // move the newly added members into mn -- for (auto &md : extraMembers) -+ for (auto &e : extraMembers) - { -- mn->push_back(std::move(md)); -+ MemberName *emn=mnsd->add(e.name); -+ emn->push_back(std::move(e.member)); - } - } - } diff --git a/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch b/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch deleted file mode 100644 index 971de82..0000000 --- a/doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch +++ /dev/null @@ -1,58 +0,0 @@ -commit 7c429806b072dd8bf777d93035ffda817976adc0 -Author: albert-github -Date: Wed Sep 2 11:32:42 2020 +0200 - - issue #7995 Doxygen doesn't handle very simple example in the .md file - - Besides "keep utf8 characters together..." as done for the C-type parser in code.l (commit d3d9dd8540ec159de080859c8f34a2581c4147f0) this also has to be done for the Fortran, SQL and VHDL code lexers. The code lexers for python and xml already didn't give errors as they already handled these cases for the example. - -diff --git a/src/fortrancode.l b/src/fortrancode.l -index 4951001c..5d036e8a 100644 ---- a/src/fortrancode.l -+++ b/src/fortrancode.l -@@ -1272,6 +1272,17 @@ LANGUAGE_BIND_SPEC BIND{BS}"("{BS}C{BS}(,{BS}NAME{BS}"="{BS}"\""(.*)"\""{BS})?") - } - <*>^{BS}"type"{BS}"=" { g_code->codify(yytext); } - -+<*>[\x80-\xFF]* { // keep utf8 characters together... -+ if (g_isFixedForm && yy_my_start > fixedCommentAfter) -+ { -+ startFontClass("comment"); -+ codifyLines(yytext); -+ } -+ else -+ { -+ g_code->codify(yytext); -+ } -+ } - <*>. { - if (g_isFixedForm && yy_my_start > fixedCommentAfter) - { -diff --git a/src/sqlcode.l b/src/sqlcode.l -index 58a2fce9..22a5e170 100644 ---- a/src/sqlcode.l -+++ b/src/sqlcode.l -@@ -190,6 +190,9 @@ commentclose "\*/" - codifyLines(yytext,yyscanner); - } - -+[\x80-\xFF]* { // keep utf8 characters together... -+ codifyLines(yytext,yyscanner); -+ } - . { - codifyLines(yytext,yyscanner); - } -diff --git a/src/vhdlcode.l b/src/vhdlcode.l -index 808e5a29..dcace05d 100644 ---- a/src/vhdlcode.l -+++ b/src/vhdlcode.l -@@ -1497,6 +1497,9 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI - BEGIN(Bases); - } - -+<*>[\x80-\xFF]* { // keep utf8 characters together... -+ g_code->codify(vhdlcodeYYtext); -+ } - <*>. { - g_code->codify(vhdlcodeYYtext); - } diff --git a/doxygen-1.8.20-enums-multiple-files.patch b/doxygen-1.8.20-enums-multiple-files.patch deleted file mode 100644 index 78cb44c..0000000 --- a/doxygen-1.8.20-enums-multiple-files.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 9d9d08582ccea7ef90000acebfd09f8c8acc577a Mon Sep 17 00:00:00 2001 -From: Dimitri van Heesch -Date: Fri, 28 Aug 2020 20:22:46 +0200 -Subject: [PATCH] issue #7979: C++ enums being defined in multiple files after - b265433 (multi-thread input processing) - ---- - src/scanner.l | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/src/scanner.l b/src/scanner.l -index 7c710fa4..70f15d65 100644 ---- a/src/scanner.l -+++ b/src/scanner.l -@@ -60,6 +60,9 @@ - - #define USE_STATE2STRING 0 - -+static AtomicInt anonCount; -+static AtomicInt anonNSCount; -+ - struct scannerYY_state - { - OutlineParserInterface *thisParser; -@@ -105,8 +108,6 @@ struct scannerYY_state - int yyBegLineNr = 1 ; - int yyColNr = 1 ; - int yyBegColNr = 1 ; -- int anonCount = 0 ; -- int anonNSCount = 0 ; - QCString yyFileName; - MethodTypes mtype = Method; - bool stat = false; -@@ -3784,7 +3785,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - BEGIN(MemberSpecSkip); - } - ";" { /* typedef of anonymous type */ -- yyextra->current->name.sprintf("@%d",yyextra->anonCount++); -+ yyextra->current->name.sprintf("@%d",anonCount++); - if ((yyextra->current->section == Entry::ENUM_SEC) || (yyextra->current->spec&Entry::Enum)) - { - yyextra->current->program+=','; // add field terminator -@@ -3859,7 +3860,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - { - // anonymous compound yyextra->inside -> insert dummy variable name - //printf("Adding anonymous variable for scope %s\n",p->name.data()); -- yyextra->msName.sprintf("@%d",yyextra->anonCount++); -+ yyextra->msName.sprintf("@%d",anonCount++); - break; - } - } -@@ -5644,12 +5645,12 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) - } - else // use invisible name - { -- yyextra->current->name.sprintf("@%d",yyextra->anonNSCount); -+ yyextra->current->name.sprintf("@%d",anonNSCount.load()); - } - } - else - { -- yyextra->current->name.sprintf("@%d",yyextra->anonCount++); -+ yyextra->current->name.sprintf("@%d",anonCount++); - } - } - yyextra->curlyCount=0; -@@ -7247,7 +7248,6 @@ static void parseMain(yyscan_t yyscanner, - yyextra->column = 0; - scannerYYrestart(0,yyscanner); - -- //yyextra->anonCount = 0; // don't reset per file - //depthIf = 0; - yyextra->protection = Public; - yyextra->mtype = Method; -@@ -7301,7 +7301,7 @@ static void parseMain(yyscan_t yyscanner, - - parseCompounds(yyscanner,rt); - -- yyextra->anonNSCount++; -+ anonNSCount++; - - // add additional entries that were created during processing - for (auto &kv: yyextra->outerScopeEntries) --- -2.26.2 - diff --git a/doxygen-1.8.20-glibc-assert.patch b/doxygen-1.8.20-glibc-assert.patch deleted file mode 100644 index ab17398..0000000 --- a/doxygen-1.8.20-glibc-assert.patch +++ /dev/null @@ -1,41 +0,0 @@ -commit d067baf495d0415283ce724ad32cb9a08dc17c83 -Author: Dimitri van Heesch -Date: Thu Sep 17 20:14:39 2020 +0200 - - issue #8034: doxygen crashes - -diff --git a/src/definition.cpp b/src/definition.cpp -index 7874a5e4..dc968399 100644 ---- a/src/definition.cpp -+++ b/src/definition.cpp -@@ -176,14 +176,14 @@ static bool matchExcludedSymbols(const char *name) - QRegExp re(substitute(pattern,"*",".*"),TRUE); - int pl; - int i = re.match(symName,0,&pl); -- //printf(" %d = re.match(%s) pattern=%s\n",i,symName.data(),pattern.data()); -+ //printf(" %d = re.match(%s) pattern=%s pl=%d len=%d\n",i,symName.data(),pattern.data(),pl,symName.length()); - if (i!=-1) // wildcard match - { - uint ui=(uint)i; - uint sl=symName.length(); - // check if it is a whole word match -- if ((ui==0 || pattern.at(0)=='*' || (!isId(symName.at(ui-1)) && !forceStart)) && -- (ui+pl==sl || pattern.at(ui+pl)=='*' || (!isId(symName.at(ui+pl)) && !forceEnd)) -+ if ((ui==0 || pattern.at(0)=='*' || (!isId(symName.at(ui-1)) && !forceStart)) && -+ (ui+pl==sl || pattern.at(pattern.length()-1)=='*' || (!isId(symName.at(ui+pl)) && !forceEnd)) - ) - { - //printf("--> name=%s pattern=%s match at %d\n",symName.data(),pattern.data(),i); -diff --git a/src/util.cpp b/src/util.cpp -index 0581b5fa..34df8d7b 100644 ---- a/src/util.cpp -+++ b/src/util.cpp -@@ -5714,7 +5714,7 @@ QCString normalizeNonTemplateArgumentsInString( - result += name.mid(p,i-p); - QCString n = name.mid(i,l); - bool found=FALSE; -- for (const Argument formArg : formalArgs) -+ for (const Argument &formArg : formalArgs) - { - if (formArg.name == n) - { diff --git a/doxygen-1.8.20-links-using-ref-stopp-working.patch b/doxygen-1.8.20-links-using-ref-stopp-working.patch deleted file mode 100644 index 5ae04fc..0000000 --- a/doxygen-1.8.20-links-using-ref-stopp-working.patch +++ /dev/null @@ -1,117 +0,0 @@ -commit dfc82af001c56254c6fde0affd009f80e19b1548 -Author: Dimitri van Heesch -Date: Mon Sep 21 12:20:57 2020 +0200 - - issue #8037: Links using @ref stopped working in doxygen 1.8.19 - -diff --git a/src/classdef.cpp b/src/classdef.cpp -index c3cd3ee2..5e2b2fa1 100644 ---- a/src/classdef.cpp -+++ b/src/classdef.cpp -@@ -1248,6 +1248,7 @@ void ClassDefImpl::distributeMemberGroupDocumentation() - - void ClassDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - if (m_impl->memberGroupSDict) - { -diff --git a/src/commentscan.l b/src/commentscan.l -index c151294d..ce495a1c 100644 ---- a/src/commentscan.l -+++ b/src/commentscan.l -@@ -666,6 +666,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" - optList = QCStringList::split(',',optStr); - } - auto it = docCmdMap.find(cmdName.data()); -+ //printf("lookup command '%s' found=%d\n",cmdName.data(),it!=docCmdMap.end()); - if (it!=docCmdMap.end()) // special action is required - { - int i=0; -diff --git a/src/docparser.cpp b/src/docparser.cpp -index 73131f67..b79f8c82 100644 ---- a/src/docparser.cpp -+++ b/src/docparser.cpp -@@ -2448,8 +2448,8 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) : - } - m_isSubPage = pd && pd->hasParentPage(); - if (sec->type()!=SectionType::Page || m_isSubPage) m_anchor = sec->label(); -- //printf("m_text=%s,m_ref=%s,m_file=%s,m_refToAnchor=%d type=%d\n", -- // m_text.data(),m_ref.data(),m_file.data(),m_refToAnchor,sec->type); -+ //printf("m_text=%s,m_ref=%s,m_file=%s,type=%d\n", -+ // m_text.data(),m_ref.data(),m_file.data(),m_refType); - return; - } - else if (resolveLink(context,target,TRUE,&compound,anchor)) -diff --git a/src/filedef.cpp b/src/filedef.cpp -index f07201d4..b74fda9b 100644 ---- a/src/filedef.cpp -+++ b/src/filedef.cpp -@@ -311,6 +311,7 @@ void FileDefImpl::distributeMemberGroupDocumentation() - - void FileDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - if (m_memberGroupSDict) - { -diff --git a/src/groupdef.cpp b/src/groupdef.cpp -index 9b333567..7cd6cf26 100644 ---- a/src/groupdef.cpp -+++ b/src/groupdef.cpp -@@ -228,6 +228,7 @@ void GroupDefImpl::distributeMemberGroupDocumentation() - - void GroupDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - MemberGroupSDict::Iterator mgli(*m_memberGroupSDict); - MemberGroup *mg; -diff --git a/src/markdown.cpp b/src/markdown.cpp -index 3089b8e7..2e6ab3ea 100644 ---- a/src/markdown.cpp -+++ b/src/markdown.cpp -@@ -2662,6 +2662,7 @@ QCString markdownFileNameToId(const QCString &fileName) - int i = baseFn.findRev('.'); - if (i!=-1) baseFn = baseFn.left(i); - QCString baseName = substitute(substitute(substitute(baseFn," ","_"),"/","_"),":","_"); -+ //printf("markdownFileNameToId(%s)=md_%s\n",qPrint(fileName),qPrint(baseName)); - return "md_"+baseName; - } - -diff --git a/src/memberdef.cpp b/src/memberdef.cpp -index 6d179c21..2f92ea01 100644 ---- a/src/memberdef.cpp -+++ b/src/memberdef.cpp -@@ -4838,6 +4838,7 @@ ClassDef *MemberDefImpl::accessorClass() const - - void MemberDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - } - -diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp -index 88eea5d2..65456ac0 100644 ---- a/src/namespacedef.cpp -+++ b/src/namespacedef.cpp -@@ -349,6 +349,7 @@ void NamespaceDefImpl::distributeMemberGroupDocumentation() - - void NamespaceDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - MemberGroupSDict::Iterator mgli(*memberGroupSDict); - MemberGroup *mg; -diff --git a/src/pagedef.cpp b/src/pagedef.cpp -index 09152def..75e50ed1 100644 ---- a/src/pagedef.cpp -+++ b/src/pagedef.cpp -@@ -99,6 +99,7 @@ PageDefImpl::~PageDefImpl() - - void PageDefImpl::findSectionsInDocumentation() - { -+ docFindSections(briefDescription(),this,docFile()); - docFindSections(documentation(),this,docFile()); - } - diff --git a/doxygen-1.8.20-python3.patch b/doxygen-1.8.20-python3.patch deleted file mode 100644 index 4eede41..0000000 --- a/doxygen-1.8.20-python3.patch +++ /dev/null @@ -1,56 +0,0 @@ -commit 6383a72200df27b0515b6e3d09bfad8934eb5c76 -Author: albert-github -Date: Tue Sep 8 13:31:15 2020 +0200 - - Make testsqlite3.py python script running with python 3 - - The testsqlite3.py didn't run under python 3 (found by means of pylint). - Making it runnable under python 2 and python 3. - -diff --git a/testing/testsqlite3.py b/testing/testsqlite3.py -index b4227b44..1d94f701 100755 ---- a/testing/testsqlite3.py -+++ b/testing/testsqlite3.py -@@ -13,7 +13,7 @@ g_conn=None - val=[] - def print_unprocessed_attributes(node): - for key in node.attrib: -- print "WARNING: '%s' has unprocessed attr '%s'" % (node.tag,key) -+ print("WARNING: '%s' has unprocessed attr '%s'" % (node.tag,key)) - - def extract_attribute(node,attribute,pnl): - if not attribute in node.attrib: -@@ -69,7 +69,7 @@ def process_memberdef(node): - extract_element(node,chld,q) - - for chld in node.getchildren(): -- print "WARNING: '%s' has unprocessed child elem '%s'" % (node.tag,chld.tag) -+ print("WARNING: '%s' has unprocessed child elem '%s'" % (node.tag,chld.tag)) - - extract_attribute(node,"kind",q) - extract_attribute(node,"prot",q) -@@ -90,12 +90,12 @@ def process_memberdef(node): - r=[] - try: - r = g_conn.execute(query,val).fetchall() -- except sqlite3.OperationalError,e: -- print "SQL_ERROR:%s"%e -+ except(sqlite3.OperationalError,e): -+ print("SQL_ERROR:%s"%e) - - del val[:] - if not len(r) > 0: -- print "TEST_ERROR: Member not found in SQL DB" -+ print("TEST_ERROR: Member not found in SQL DB") - - - def load_xml(name): -@@ -104,7 +104,7 @@ def load_xml(name): - for event, elem in context: - if event == "end" and elem.tag == "memberdef": - process_memberdef(elem) -- print "\n== Unprocessed XML ==" -+ print("\n== Unprocessed XML ==") - # ET.dump(root) - - diff --git a/doxygen-different-results-on-64-and-32-bit.patch b/doxygen-different-results-on-64-and-32-bit.patch deleted file mode 100644 index 2167f3b..0000000 --- a/doxygen-different-results-on-64-and-32-bit.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1fda77f54a2eacba32658001329bd9084f4df1e7 Mon Sep 17 00:00:00 2001 -From: Dimitri van Heesch -Date: Fri, 11 Sep 2020 15:38:01 +0200 -Subject: [PATCH] issue #8022: Different results on 64 and 32 bit - ---- - src/doxygen.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/doxygen.cpp b/src/doxygen.cpp -index b218d382..0832e5c6 100644 ---- a/src/doxygen.cpp -+++ b/src/doxygen.cpp -@@ -164,7 +164,7 @@ DefinesPerFileList Doxygen::macroDefinitions; - bool Doxygen::clangAssistedParsing = FALSE; - - // locally accessible globals --static std::unordered_map< std::string, const Entry* > g_classEntries; -+static std::map< std::string, const Entry* > g_classEntries; - static StringVector g_inputFiles; - static QDict g_compoundKeywordDict(7); // keywords recognised as compounds - static OutputList *g_outputList = 0; // list of output generating objects --- -2.26.2 - diff --git a/doxygen.spec b/doxygen.spec index 9e42a9a..28a2c72 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -15,8 +15,8 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.8.20 -Release: 6%{?dist} +Version: 1.9.1 +Release: 1%{?dist} # No version is specified. License: GPL+ @@ -27,14 +27,6 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches -Patch0: doxygen-1.8.20-enums-multiple-files.patch -Patch1: doxygen-different-results-on-64-and-32-bit.patch -Patch2: doxygen-1.8.20-glibc-assert.patch -Patch3: doxygen-1.8.20-broken-ref-for-enum-entry.patch -Patch4: doxygen-1.8.20-links-using-ref-stopp-working.patch -Patch5: doxygen-1.8.20-python3.patch -Patch6: doxygen-1.8.20-does-not-handle-simple-example-in-md-file.patch -Patch7: doxygen-1.8.20-attribute-target-redefined-in-svg.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -308,6 +300,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Mon Jan 11 2021 Than Ngo - 1.9.1-1 +- update to 1.9.1 + * Mon Jan 11 2021 Than Ngo - 1.8.20-6 - drop BR on ImageMagick in RHEL diff --git a/sources b/sources index 2d15d51..b0ecdcf 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (doxygen-1.8.20.src.tar.gz) = 15dc95850440aed2a56971d8c04bf3bdfac861bcc38c60c7be22fd3b922b9fe2a750ea8877cb0716832bb6ad7901afcdf4950ba985b09890027030bdf828eee3 SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad +SHA512 (doxygen-1.9.1.src.tar.gz) = a84fbea1874921317b58345c53fc4eac0382c9e593f0e1ee899a31e67ead3fd12b2da8145b37e2e09d665e28d060e6717c92de7e8d0a31fc5f24fdcc4715f54d From 16e4f9c8407591ae3f5bef8ab12554e4ef8527e3 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 19 Jan 2021 09:36:30 +0100 Subject: [PATCH 053/117] fixed bz#1916161, crashes when parsing config file --- ...1.9.1-crash-when-parsing-config-file.patch | 64 +++++++++++++++++++ doxygen.spec | 6 +- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 doxgen-1.9.1-crash-when-parsing-config-file.patch diff --git a/doxgen-1.9.1-crash-when-parsing-config-file.patch b/doxgen-1.9.1-crash-when-parsing-config-file.patch new file mode 100644 index 0000000..848750d --- /dev/null +++ b/doxgen-1.9.1-crash-when-parsing-config-file.patch @@ -0,0 +1,64 @@ +commit 3b15963316b59cd1af3468a43535d90343916ffb +Author: Dimitri van Heesch +Date: Mon Jan 18 19:59:16 2021 +0100 + + issue #8343: doxygen-1.9.1 crashes when parsing config file + +diff --git a/src/configimpl.l b/src/configimpl.l +index 7f73ec01..56a2e108 100644 +--- a/src/configimpl.l ++++ b/src/configimpl.l +@@ -1210,7 +1210,7 @@ static void substEnvVarsInStrList(StringVector &sl) + c=result.at(i); + if (c=='"') // end quote + { +- results.push_back(result.mid(p,i-p).data()); ++ results.push_back(result.mid(p,i-p).str()); + p=i+1; + break; + } +@@ -1222,7 +1222,7 @@ static void substEnvVarsInStrList(StringVector &sl) + } + else if (c==' ' || c=='\t') // separator + { +- if (i>p) results.push_back(result.mid(p,i-p).data()); ++ if (i>p) results.push_back(result.mid(p,i-p).str()); + p=i+1; + } + } +@@ -1234,7 +1234,7 @@ static void substEnvVarsInStrList(StringVector &sl) + } + else // just goto the next element in the list + { +- if (!result.isEmpty()) results.push_back(result.data()); ++ if (!result.isEmpty()) results.push_back(result.str()); + } + } + sl = results; +@@ -1409,7 +1409,7 @@ static void cleanUpPaths(StringVector &str) + QFileInfo fi(path.c_str()); + if (fi.exists() && fi.isDir()) + { +- path = fi.absFilePath().utf8().data(); ++ path = fi.absFilePath().utf8().str(); + if (path[path.size()-1]!='/') path+='/'; + } + } +@@ -1545,7 +1545,7 @@ void Config::checkAndCorrect() + QString p = QDir::currentDirPath(); + if (p.at(p.length()-1)!='/') + p.append('/'); +- stripFromPath.push_back(p.utf8().data()); ++ stripFromPath.push_back(p.utf8().str()); + } + else + { +@@ -1882,7 +1882,7 @@ void Config::checkAndCorrect() + if (inputSources.empty()) + { + // use current dir as the default +- inputSources.push_back(QDir::currentDirPath().utf8().data()); ++ inputSources.push_back(QDir::currentDirPath().utf8().str()); + } + else + { diff --git a/doxygen.spec b/doxygen.spec index 28a2c72..3d86764 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -27,6 +27,7 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches +Patch1: doxgen-1.9.1-crash-when-parsing-config-file.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -300,6 +301,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Tue Jan 19 2021 Than Ngo - 1.9.1-2 +- fixed bz#1916161, crashes when parsing config file + * Mon Jan 11 2021 Than Ngo - 1.9.1-1 - update to 1.9.1 From f1e6af57939125734d06f23ab70e81eec99c2b14 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 19 Jan 2021 20:58:42 +0100 Subject: [PATCH 054/117] fixed doxygen crashes when parsing config file part2 --- doxygen.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 3d86764..b467667 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -28,6 +28,7 @@ Source1: doxywizard.desktop Source2: doxywizard-icons.tar.xz # upstream patches Patch1: doxgen-1.9.1-crash-when-parsing-config-file.patch +Patch2: doxgen-1.9.1-crash-when-parsing-config-file-part2.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -301,6 +302,10 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Tue Jan 19 2021 Than Ngo - 1.9.1-3 +- fixed doxygen crashes when parsing config file part2 + + * Tue Jan 19 2021 Than Ngo - 1.9.1-2 - fixed bz#1916161, crashes when parsing config file From 4ff8429b2cdd863decbca8f8c9629b5d74a54036 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 19 Jan 2021 20:59:07 +0100 Subject: [PATCH 055/117] add doxgen-1.9.1-crash-when-parsing-config-file-part2.patch --- ...crash-when-parsing-config-file-part2.patch | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 doxgen-1.9.1-crash-when-parsing-config-file-part2.patch diff --git a/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch b/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch new file mode 100644 index 0000000..38465ff --- /dev/null +++ b/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch @@ -0,0 +1,22 @@ +diff -up doxygen/src/configimpl.l.orig doxygen/src/configimpl.l +--- doxygen/src/configimpl.l.orig 2021-01-19 17:25:00.933789247 +0100 ++++ doxygen/src/configimpl.l 2021-01-19 17:26:09.704744240 +0100 +@@ -1175,8 +1175,7 @@ static void substEnvVarsInStrList(String + for (const auto &s : sl) + { + QCString result = s.c_str(); +- // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE. +- bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1); ++ bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1) || (result.find('"')!=-1); + // here we strip the quote again + substEnvVarsInString(result); + +@@ -1229,7 +1228,7 @@ static void substEnvVarsInStrList(String + } + if (p!=l) // add the leftover as a string + { +- results.push_back(result.right(l-p).data()); ++ results.push_back(result.right(l-p).str()); + } + } + else // just goto the next element in the list From 1d10ce6df44a719ae776a39d9320d2320bd89374 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 22 Jan 2021 21:42:28 +0000 Subject: [PATCH 056/117] Rebuild for clang-11.1.0 --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index b467667..bef095f 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 3%{?dist} +Release: 4%{?dist} # No version is specified. License: GPL+ @@ -302,6 +302,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri Jan 22 2021 Tom Stellard - 1:1.9.1-4 +- Rebuild for clang-11.1.0 + * Tue Jan 19 2021 Than Ngo - 1.9.1-3 - fixed doxygen crashes when parsing config file part2 From 72520841ea1575e0aa0cf5033e1c03af6507eed7 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 26 Jan 2021 03:43:14 +0000 Subject: [PATCH 057/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index bef095f..00bb735 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 4%{?dist} +Release: 5%{?dist} # No version is specified. License: GPL+ @@ -302,6 +302,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Tue Jan 26 2021 Fedora Release Engineering - 1:1.9.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Fri Jan 22 2021 Tom Stellard - 1:1.9.1-4 - Rebuild for clang-11.1.0 From a5c95acd274d34b9ae12f085bc892bc34d9602d5 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 10 Feb 2021 11:10:11 +0100 Subject: [PATCH 058/117] - fixed Coverity issues - fixed crash in docparser --- doxygen-1.9.1-Coverity_issues.patch | 49 ++++++++++++++++++++++++++ doxygen-1.9.1-crash_in_docparser.patch | 12 +++++++ doxygen.spec | 8 ++++- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 doxygen-1.9.1-Coverity_issues.patch create mode 100644 doxygen-1.9.1-crash_in_docparser.patch diff --git a/doxygen-1.9.1-Coverity_issues.patch b/doxygen-1.9.1-Coverity_issues.patch new file mode 100644 index 0000000..a1848e6 --- /dev/null +++ b/doxygen-1.9.1-Coverity_issues.patch @@ -0,0 +1,49 @@ +diff -up doxygen-1.9.1/src/context.cpp.me doxygen-1.9.1/src/context.cpp +--- doxygen-1.9.1/src/context.cpp.me 2021-02-10 10:56:44.575251899 +0100 ++++ doxygen-1.9.1/src/context.cpp 2021-02-10 10:57:54.522809720 +0100 +@@ -4062,11 +4062,11 @@ class MemberContext::Private : public De + s_inst.addProperty("nameWithContextFor", &Private::nameWithContextFor); + init=TRUE; + } +- if (md && !md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } ++ if (!md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } + + Cachable &cache = getCache(); + cache.propertyAttrs.reset(TemplateList::alloc()); +- if (md && md->isProperty()) ++ if (md->isProperty()) + { + if (md->isGettable()) cache.propertyAttrs->append("get"); + if (md->isPrivateGettable()) cache.propertyAttrs->append("private get"); +@@ -4076,7 +4076,7 @@ class MemberContext::Private : public De + if (md->isProtectedSettable()) cache.propertyAttrs->append("protected set"); + } + cache.eventAttrs.reset(TemplateList::alloc()); +- if (md && md->isEvent()) ++ if (md->isEvent()) + { + if (md->isAddable()) cache.eventAttrs->append("add"); + if (md->isRemovable()) cache.eventAttrs->append("remove"); +diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp +--- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:58:11.491500540 +0100 ++++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 11:00:35.905512597 +0100 +@@ -1524,7 +1524,7 @@ reparsetoken: + { + QCString scope; + doctokenizerYYsetStateSetScope(); +- doctokenizerYYlex(); ++ (void)doctokenizerYYlex(); + scope = g_token->name; + g_context = scope; + //printf("Found scope='%s'\n",scope.data()); +diff -up doxygen-1.9.1/src/dotgroupcollaboration.cpp.me doxygen-1.9.1/src/dotgroupcollaboration.cpp +--- doxygen-1.9.1/src/dotgroupcollaboration.cpp.me 2021-02-10 11:01:10.588530954 +0100 ++++ doxygen-1.9.1/src/dotgroupcollaboration.cpp 2021-02-10 11:02:54.216221350 +0100 +@@ -309,6 +309,7 @@ void DotGroupCollaboration::Edge::write( + { + if (first) first=FALSE; else t << "\\n"; + t << DotNode::convertLabel(link->label); ++ count++; + } + if (count==maxLabels) t << "\\n..."; + t << "\""; diff --git a/doxygen-1.9.1-crash_in_docparser.patch b/doxygen-1.9.1-crash_in_docparser.patch new file mode 100644 index 0000000..f1308fa --- /dev/null +++ b/doxygen-1.9.1-crash_in_docparser.patch @@ -0,0 +1,12 @@ +diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp +--- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:52:09.481086282 +0100 ++++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 10:55:32.418781686 +0100 +@@ -951,7 +951,7 @@ static void handlePendingStyleCommands(D + children.append(new DocStyleChange(parent,g_nodeStack.count(),sc->style(),sc->tagName(),FALSE)); + g_initialStyleStack.push(sc); + g_styleStack.pop(); +- sc = g_styleStack.top(); ++ sc = !g_styleStack.empty() ? g_styleStack.top() : 0; + } + } + } diff --git a/doxygen.spec b/doxygen.spec index 00bb735..d410fdb 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 5%{?dist} +Release: 6%{?dist} # No version is specified. License: GPL+ @@ -29,6 +29,8 @@ Source2: doxywizard-icons.tar.xz # upstream patches Patch1: doxgen-1.9.1-crash-when-parsing-config-file.patch Patch2: doxgen-1.9.1-crash-when-parsing-config-file-part2.patch +Patch3: doxygen-1.9.1-Coverity_issues.patch +Patch4: doxygen-1.9.1-crash_in_docparser.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -302,6 +304,10 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Wed Feb 10 2021 Than Ngo - 1:1.9.1-6 +- fixed Coverity issues +- fixed crash in docparser + * Tue Jan 26 2021 Fedora Release Engineering - 1:1.9.1-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild From 97ec8457c63c3dc6b54a2390e75d6215b88b85f8 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 10 Feb 2021 11:31:02 +0100 Subject: [PATCH 059/117] fix typo --- doxygen-1.9.1-crash_in_docparser.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doxygen-1.9.1-crash_in_docparser.patch b/doxygen-1.9.1-crash_in_docparser.patch index f1308fa..adcd144 100644 --- a/doxygen-1.9.1-crash_in_docparser.patch +++ b/doxygen-1.9.1-crash_in_docparser.patch @@ -6,7 +6,7 @@ diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp g_initialStyleStack.push(sc); g_styleStack.pop(); - sc = g_styleStack.top(); -+ sc = !g_styleStack.empty() ? g_styleStack.top() : 0; ++ sc = !g_styleStack.isEmpty() ? g_styleStack.top() : 0; } } } From c465c5db9cb49a68b104660c217d137d1751605f Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Mon, 22 Feb 2021 17:36:03 +0100 Subject: [PATCH 060/117] drop test-suite --- doxygen.spec | 5 +- gating.yaml | 7 - tests/tests.yml | 12 - tests/upstream-test-suite/001/indexpage.xml | 12 - tests/upstream-test-suite/001_a.dox | 5 - tests/upstream-test-suite/002/indexpage.xml | 17 - tests/upstream-test-suite/002_addindex.dox | 5 - tests/upstream-test-suite/003/indexpage.xml | 12 - tests/upstream-test-suite/003_anchor.dox | 8 - tests/upstream-test-suite/004/indexpage.xml | 15 - tests/upstream-test-suite/004_arg.dox | 15 - tests/upstream-test-suite/005/indexpage.xml | 37 - tests/upstream-test-suite/005_attention.dox | 14 - tests/upstream-test-suite/006/indexpage.xml | 28 - tests/upstream-test-suite/006_author.dox | 9 - tests/upstream-test-suite/007/indexpage.xml | 12 - tests/upstream-test-suite/007_b.dox | 5 - .../upstream-test-suite/008/008__brief_8c.xml | 13 - tests/upstream-test-suite/008_brief.c | 7 - tests/upstream-test-suite/009/bug.xml | 27 - tests/upstream-test-suite/009/class_bug.xml | 43 - .../009/class_deprecated.xml | 41 - .../009/class_reminder.xml | 48 - tests/upstream-test-suite/009/class_test.xml | 48 - tests/upstream-test-suite/009/class_todo.xml | 48 - tests/upstream-test-suite/009/deprecated.xml | 27 - tests/upstream-test-suite/009/reminders.xml | 27 - tests/upstream-test-suite/009/test.xml | 27 - tests/upstream-test-suite/009/todo.xml | 27 - tests/upstream-test-suite/009_bug.cpp | 62 - tests/upstream-test-suite/010/indexpage.xml | 13 - tests/upstream-test-suite/010_c.dox | 7 - .../011/category_integer_07_arithmetic_08.xml | 60 - .../011/interface_integer.xml | 99 -- tests/upstream-test-suite/011_category.m | 30 - tests/upstream-test-suite/012/citelist.xml | 22 - tests/upstream-test-suite/012/indexpage.xml | 12 - tests/upstream-test-suite/012_cite.dox | 7 - tests/upstream-test-suite/013/class_t1.xml | 15 - tests/upstream-test-suite/013/class_t2.xml | 15 - tests/upstream-test-suite/013/class_t3.xml | 15 - tests/upstream-test-suite/013/class_t4.xml | 15 - tests/upstream-test-suite/013_class.h | 37 - tests/upstream-test-suite/014/indexpage.xml | 51 - tests/upstream-test-suite/014_code.dox | 18 - .../upstream-test-suite/015/015__cond_8c.xml | 28 - tests/upstream-test-suite/015_cond.c | 32 - .../016/016__copydoc_8c.xml | 76 - tests/upstream-test-suite/016_copydoc.c | 23 - tests/upstream-test-suite/017/indexpage.xml | 19 - tests/upstream-test-suite/017_copyright.dox | 6 - tests/upstream-test-suite/018/018__def_8c.xml | 126 -- tests/upstream-test-suite/018_def.c | 37 - tests/upstream-test-suite/019/group__g1.xml | 28 - tests/upstream-test-suite/019/group__g2.xml | 29 - tests/upstream-test-suite/019/group__g3.xml | 42 - tests/upstream-test-suite/019_defgroup.c | 48 - tests/upstream-test-suite/020/indexpage.xml | 14 - tests/upstream-test-suite/020_only.dox | 27 - tests/upstream-test-suite/021/indexpage.xml | 12 - tests/upstream-test-suite/021_dontinclude.cpp | 23 - tests/upstream-test-suite/022/indexpage.xml | 20 - tests/upstream-test-suite/022_dot.cpp | 22 - tests/upstream-test-suite/023/indexpage.xml | 12 - tests/upstream-test-suite/023_e.dox | 5 - tests/upstream-test-suite/024/indexpage.xml | 12 - tests/upstream-test-suite/024_if.dox | 21 - tests/upstream-test-suite/025/class_test.xml | 36 - .../025/example_test_8cpp-example.xml | 12 - tests/upstream-test-suite/025_example.cpp | 26 - tests/upstream-test-suite/026/class_test.xml | 52 - tests/upstream-test-suite/026_exception.cpp | 21 - tests/upstream-test-suite/027/struct_car.xml | 95 -- .../upstream-test-suite/027/struct_object.xml | 105 -- .../upstream-test-suite/027/struct_truck.xml | 95 -- .../027/struct_vehicle.xml | 132 -- tests/upstream-test-suite/027_extends.c | 93 - tests/upstream-test-suite/028/indexpage.xml | 13 - tests/upstream-test-suite/028_formula.c | 17 - .../029/029__hideinit_8c.xml | 42 - tests/upstream-test-suite/029_hideinit.c | 12 - tests/upstream-test-suite/030/indexpage.xml | 13 - tests/upstream-test-suite/030_htmlinclude.dox | 7 - tests/upstream-test-suite/031/indexpage.xml | 15 - tests/upstream-test-suite/031_image.dox | 10 - tests/upstream-test-suite/032/indexpage.xml | 12 - tests/upstream-test-suite/032_include.cpp | 10 - tests/upstream-test-suite/033/indexpage.xml | 13 - tests/upstream-test-suite/033_internal.dox | 12 - tests/upstream-test-suite/034/indexpage.xml | 31 - tests/upstream-test-suite/034_internal.dox | 21 - .../035/035__invariant_8c.xml | 45 - tests/upstream-test-suite/035_invariant.c | 15 - .../upstream-test-suite/036/036__link_8c.xml | 33 - tests/upstream-test-suite/036_link.c | 16 - .../037/class_receiver.xml | 43 - .../upstream-test-suite/037/class_sender.xml | 43 - tests/upstream-test-suite/037_msc.cpp | 33 - tests/upstream-test-suite/038/indexpage.xml | 14 - tests/upstream-test-suite/038_n.dox | 7 - tests/upstream-test-suite/039/class_test.xml | 74 - tests/upstream-test-suite/039_name.cpp | 25 - .../upstream-test-suite/040/namespace_n_s.xml | 12 - tests/upstream-test-suite/040_namespace.cpp | 10 - tests/upstream-test-suite/041/class_test.xml | 100 -- tests/upstream-test-suite/041_overload.cpp | 33 - .../042/namespaceorg_1_1doxygen_1_1_test.xml | 12 - tests/upstream-test-suite/042_package.java | 8 - tests/upstream-test-suite/043/another.xml | 12 - tests/upstream-test-suite/043/mypage.xml | 66 - tests/upstream-test-suite/043_page.dox | 26 - tests/upstream-test-suite/044/struct_s.xml | 129 -- tests/upstream-test-suite/044_section.h | 28 - tests/upstream-test-suite/045/indexpage.xml | 23 - tests/upstream-test-suite/045_refitem.dox | 20 - .../046/046__related_8cpp.xml | 28 - tests/upstream-test-suite/046/class_test.xml | 80 - tests/upstream-test-suite/046_related.cpp | 28 - .../047/047__return_8cpp.xml | 58 - tests/upstream-test-suite/047_return.cpp | 20 - .../048/048__showinit_8c.xml | 42 - tests/upstream-test-suite/048_showinit.c | 13 - tests/upstream-test-suite/049/indexpage.xml | 12 - tests/upstream-test-suite/049_snippet.cpp | 12 - tests/upstream-test-suite/050/indexpage.xml | 20 - tests/upstream-test-suite/050_verbatim.dox | 13 - tests/upstream-test-suite/051/indexpage.xml | 12 - tests/upstream-test-suite/051_escape.dox | 20 - tests/upstream-test-suite/052/indexpage.xml | 12 - tests/upstream-test-suite/052_tilde.dox | 9 - tests/upstream-test-suite/053/indexpage.xml | 12 - tests/upstream-test-suite/053_tilde.dox | 10 - .../054/054__parblock_8cpp.xml | 193 --- tests/upstream-test-suite/054_parblock.cpp | 60 - .../055/md_055_markdown.xml | 31 - tests/upstream-test-suite/055_markdown.md | 24 - tests/upstream-test-suite/056/indexpage.xml | 13 - .../upstream-test-suite/056_latexinclude.dox | 7 - .../057/057__caller__graphs_8tcl.xml | 92 - .../057/__057__caller__graphs_8tcl.xml | 28 - tests/upstream-test-suite/057/namespace1.xml | 113 -- .../057/namespace1_1_11.xml | 28 - .../057/namespace1_1_11_1_11.xml | 26 - tests/upstream-test-suite/057/namespace2.xml | 30 - .../057/namespace2_1_12.xml | 29 - .../057/namespace2_1_12_1_12.xml | 29 - .../057/namespace2_1_12_1_12_1_12.xml | 29 - .../057/namespace2_1_12_1_12_1_12_1_12.xml | 28 - .../upstream-test-suite/057/namespacebar.xml | 57 - .../upstream-test-suite/057/namespacefoo.xml | 27 - .../upstream-test-suite/057_caller_graphs.tcl | 155 -- .../058/058__bracket__recursion_8tcl.xml | 384 ----- .../058_bracket_recursion.tcl | 157 -- .../059/059__command__catch_8tcl.xml | 191 --- .../upstream-test-suite/059_command_catch.tcl | 87 - .../060/060__command__switch_8tcl.xml | 326 ---- .../060_command_switch.tcl | 238 --- tests/upstream-test-suite/061/class_test.xml | 70 - tests/upstream-test-suite/061_bug_705503.tcl | 19 - tests/upstream-test-suite/062/namespacen1.xml | 42 - tests/upstream-test-suite/062/namespacen2.xml | 42 - tests/upstream-test-suite/062/namespacen3.xml | 42 - .../062_namespace_resolution.tcl | 68 - tests/upstream-test-suite/063/namespaceoo.xml | 13 - .../063/namespaceoo_1_1_helpers.xml | 27 - .../063/namespaceoo_1_1define.xml | 27 - tests/upstream-test-suite/063_bug_729092.tcl | 43 - tests/upstream-test-suite/064/struct_foo.xml | 112 -- .../upstream-test-suite/064_castoperator.cpp | 25 - tests/upstream-test-suite/065/indexpage.xml | 12 - tests/upstream-test-suite/065_tilde.dox | 12 - .../upstream-test-suite/066/class_class1.xml | 50 - .../066_property_initializer.cs | 7 - .../067/067__link__varargs_8cpp.xml | 54 - .../upstream-test-suite/067_link_varargs.cpp | 20 - .../068/068__ref__varargs_8cpp.xml | 54 - tests/upstream-test-suite/068_ref_varargs.cpp | 20 - .../069__link__variadic__template_8cpp.xml | 309 ---- .../069_link_variadic_template.cpp | 95 -- .../070/070__ref__variadic__template_8cpp.xml | 309 ---- .../070_ref_variadic_template.cpp | 95 -- .../071/namespace_a_namespace_1_1_0D0.xml | 45 - .../071_enum_in_anon_ns.cpp | 12 - .../072/072__using_8cpp.xml | 32 - tests/upstream-test-suite/072_using.cpp | 7 - .../073/073__typed__enum_8cpp.xml | 25 - tests/upstream-test-suite/073_typed_enum.cpp | 7 - tests/upstream-test-suite/074/struct_foo.xml | 287 ---- tests/upstream-test-suite/074_ref.cpp | 49 - tests/upstream-test-suite/075/struct_foo.xml | 148 -- tests/upstream-test-suite/075_argmatch.cpp | 30 - tests/upstream-test-suite/076/indexpage.xml | 1500 ----------------- tests/upstream-test-suite/076_emojis.cpp | 1493 ---------------- ...namespace__members__in__file__scope_8h.xml | 12 - ...7_no_xml_namespace_members_in_file_scope.h | 16 - ...namespace__members__in__file__scope_8h.xml | 43 - .../078_xml_namespace_members_in_file_scope.h | 17 - tests/upstream-test-suite/Doxyfile | 7 - tests/upstream-test-suite/Makefile | 64 - tests/upstream-test-suite/PURPOSE | 8 - tests/upstream-test-suite/README.txt | 66 - .../_057_caller_graphs.tcl | 4 - tests/upstream-test-suite/dtd/xhtml-lat1.ent | 196 --- .../upstream-test-suite/dtd/xhtml-special.ent | 80 - .../upstream-test-suite/dtd/xhtml-symbol.ent | 237 --- .../upstream-test-suite/dtd/xhtml1-strict.dtd | 978 ----------- .../dtd/xhtml1-transitional.dtd | 1220 -------------- tests/upstream-test-suite/example_test.cpp | 8 - tests/upstream-test-suite/runtest.sh | 61 - tests/upstream-test-suite/runtests.py | 424 ----- tests/upstream-test-suite/sample.bib | 7 - tests/upstream-test-suite/sample.html | 1 - tests/upstream-test-suite/sample.png | Bin 2560 -> 0 bytes tests/upstream-test-suite/sample.tex | 1 - tests/upstream-test-suite/snippet_test.cpp | 41 - 215 files changed, 4 insertions(+), 14935 deletions(-) delete mode 100644 gating.yaml delete mode 100644 tests/tests.yml delete mode 100644 tests/upstream-test-suite/001/indexpage.xml delete mode 100644 tests/upstream-test-suite/001_a.dox delete mode 100644 tests/upstream-test-suite/002/indexpage.xml delete mode 100644 tests/upstream-test-suite/002_addindex.dox delete mode 100644 tests/upstream-test-suite/003/indexpage.xml delete mode 100644 tests/upstream-test-suite/003_anchor.dox delete mode 100644 tests/upstream-test-suite/004/indexpage.xml delete mode 100644 tests/upstream-test-suite/004_arg.dox delete mode 100644 tests/upstream-test-suite/005/indexpage.xml delete mode 100644 tests/upstream-test-suite/005_attention.dox delete mode 100644 tests/upstream-test-suite/006/indexpage.xml delete mode 100644 tests/upstream-test-suite/006_author.dox delete mode 100644 tests/upstream-test-suite/007/indexpage.xml delete mode 100644 tests/upstream-test-suite/007_b.dox delete mode 100644 tests/upstream-test-suite/008/008__brief_8c.xml delete mode 100644 tests/upstream-test-suite/008_brief.c delete mode 100644 tests/upstream-test-suite/009/bug.xml delete mode 100644 tests/upstream-test-suite/009/class_bug.xml delete mode 100644 tests/upstream-test-suite/009/class_deprecated.xml delete mode 100644 tests/upstream-test-suite/009/class_reminder.xml delete mode 100644 tests/upstream-test-suite/009/class_test.xml delete mode 100644 tests/upstream-test-suite/009/class_todo.xml delete mode 100644 tests/upstream-test-suite/009/deprecated.xml delete mode 100644 tests/upstream-test-suite/009/reminders.xml delete mode 100644 tests/upstream-test-suite/009/test.xml delete mode 100644 tests/upstream-test-suite/009/todo.xml delete mode 100644 tests/upstream-test-suite/009_bug.cpp delete mode 100644 tests/upstream-test-suite/010/indexpage.xml delete mode 100644 tests/upstream-test-suite/010_c.dox delete mode 100644 tests/upstream-test-suite/011/category_integer_07_arithmetic_08.xml delete mode 100644 tests/upstream-test-suite/011/interface_integer.xml delete mode 100644 tests/upstream-test-suite/011_category.m delete mode 100644 tests/upstream-test-suite/012/citelist.xml delete mode 100644 tests/upstream-test-suite/012/indexpage.xml delete mode 100644 tests/upstream-test-suite/012_cite.dox delete mode 100644 tests/upstream-test-suite/013/class_t1.xml delete mode 100644 tests/upstream-test-suite/013/class_t2.xml delete mode 100644 tests/upstream-test-suite/013/class_t3.xml delete mode 100644 tests/upstream-test-suite/013/class_t4.xml delete mode 100644 tests/upstream-test-suite/013_class.h delete mode 100644 tests/upstream-test-suite/014/indexpage.xml delete mode 100644 tests/upstream-test-suite/014_code.dox delete mode 100644 tests/upstream-test-suite/015/015__cond_8c.xml delete mode 100644 tests/upstream-test-suite/015_cond.c delete mode 100644 tests/upstream-test-suite/016/016__copydoc_8c.xml delete mode 100644 tests/upstream-test-suite/016_copydoc.c delete mode 100644 tests/upstream-test-suite/017/indexpage.xml delete mode 100644 tests/upstream-test-suite/017_copyright.dox delete mode 100644 tests/upstream-test-suite/018/018__def_8c.xml delete mode 100644 tests/upstream-test-suite/018_def.c delete mode 100644 tests/upstream-test-suite/019/group__g1.xml delete mode 100644 tests/upstream-test-suite/019/group__g2.xml delete mode 100644 tests/upstream-test-suite/019/group__g3.xml delete mode 100644 tests/upstream-test-suite/019_defgroup.c delete mode 100644 tests/upstream-test-suite/020/indexpage.xml delete mode 100644 tests/upstream-test-suite/020_only.dox delete mode 100644 tests/upstream-test-suite/021/indexpage.xml delete mode 100644 tests/upstream-test-suite/021_dontinclude.cpp delete mode 100644 tests/upstream-test-suite/022/indexpage.xml delete mode 100644 tests/upstream-test-suite/022_dot.cpp delete mode 100644 tests/upstream-test-suite/023/indexpage.xml delete mode 100644 tests/upstream-test-suite/023_e.dox delete mode 100644 tests/upstream-test-suite/024/indexpage.xml delete mode 100644 tests/upstream-test-suite/024_if.dox delete mode 100644 tests/upstream-test-suite/025/class_test.xml delete mode 100644 tests/upstream-test-suite/025/example_test_8cpp-example.xml delete mode 100644 tests/upstream-test-suite/025_example.cpp delete mode 100644 tests/upstream-test-suite/026/class_test.xml delete mode 100644 tests/upstream-test-suite/026_exception.cpp delete mode 100644 tests/upstream-test-suite/027/struct_car.xml delete mode 100644 tests/upstream-test-suite/027/struct_object.xml delete mode 100644 tests/upstream-test-suite/027/struct_truck.xml delete mode 100644 tests/upstream-test-suite/027/struct_vehicle.xml delete mode 100644 tests/upstream-test-suite/027_extends.c delete mode 100644 tests/upstream-test-suite/028/indexpage.xml delete mode 100644 tests/upstream-test-suite/028_formula.c delete mode 100644 tests/upstream-test-suite/029/029__hideinit_8c.xml delete mode 100644 tests/upstream-test-suite/029_hideinit.c delete mode 100644 tests/upstream-test-suite/030/indexpage.xml delete mode 100644 tests/upstream-test-suite/030_htmlinclude.dox delete mode 100644 tests/upstream-test-suite/031/indexpage.xml delete mode 100644 tests/upstream-test-suite/031_image.dox delete mode 100644 tests/upstream-test-suite/032/indexpage.xml delete mode 100644 tests/upstream-test-suite/032_include.cpp delete mode 100644 tests/upstream-test-suite/033/indexpage.xml delete mode 100644 tests/upstream-test-suite/033_internal.dox delete mode 100644 tests/upstream-test-suite/034/indexpage.xml delete mode 100644 tests/upstream-test-suite/034_internal.dox delete mode 100644 tests/upstream-test-suite/035/035__invariant_8c.xml delete mode 100644 tests/upstream-test-suite/035_invariant.c delete mode 100644 tests/upstream-test-suite/036/036__link_8c.xml delete mode 100644 tests/upstream-test-suite/036_link.c delete mode 100644 tests/upstream-test-suite/037/class_receiver.xml delete mode 100644 tests/upstream-test-suite/037/class_sender.xml delete mode 100644 tests/upstream-test-suite/037_msc.cpp delete mode 100644 tests/upstream-test-suite/038/indexpage.xml delete mode 100644 tests/upstream-test-suite/038_n.dox delete mode 100644 tests/upstream-test-suite/039/class_test.xml delete mode 100644 tests/upstream-test-suite/039_name.cpp delete mode 100644 tests/upstream-test-suite/040/namespace_n_s.xml delete mode 100644 tests/upstream-test-suite/040_namespace.cpp delete mode 100644 tests/upstream-test-suite/041/class_test.xml delete mode 100644 tests/upstream-test-suite/041_overload.cpp delete mode 100644 tests/upstream-test-suite/042/namespaceorg_1_1doxygen_1_1_test.xml delete mode 100644 tests/upstream-test-suite/042_package.java delete mode 100644 tests/upstream-test-suite/043/another.xml delete mode 100644 tests/upstream-test-suite/043/mypage.xml delete mode 100644 tests/upstream-test-suite/043_page.dox delete mode 100644 tests/upstream-test-suite/044/struct_s.xml delete mode 100644 tests/upstream-test-suite/044_section.h delete mode 100644 tests/upstream-test-suite/045/indexpage.xml delete mode 100644 tests/upstream-test-suite/045_refitem.dox delete mode 100644 tests/upstream-test-suite/046/046__related_8cpp.xml delete mode 100644 tests/upstream-test-suite/046/class_test.xml delete mode 100644 tests/upstream-test-suite/046_related.cpp delete mode 100644 tests/upstream-test-suite/047/047__return_8cpp.xml delete mode 100644 tests/upstream-test-suite/047_return.cpp delete mode 100644 tests/upstream-test-suite/048/048__showinit_8c.xml delete mode 100644 tests/upstream-test-suite/048_showinit.c delete mode 100644 tests/upstream-test-suite/049/indexpage.xml delete mode 100644 tests/upstream-test-suite/049_snippet.cpp delete mode 100644 tests/upstream-test-suite/050/indexpage.xml delete mode 100644 tests/upstream-test-suite/050_verbatim.dox delete mode 100644 tests/upstream-test-suite/051/indexpage.xml delete mode 100644 tests/upstream-test-suite/051_escape.dox delete mode 100644 tests/upstream-test-suite/052/indexpage.xml delete mode 100644 tests/upstream-test-suite/052_tilde.dox delete mode 100644 tests/upstream-test-suite/053/indexpage.xml delete mode 100644 tests/upstream-test-suite/053_tilde.dox delete mode 100644 tests/upstream-test-suite/054/054__parblock_8cpp.xml delete mode 100644 tests/upstream-test-suite/054_parblock.cpp delete mode 100644 tests/upstream-test-suite/055/md_055_markdown.xml delete mode 100644 tests/upstream-test-suite/055_markdown.md delete mode 100644 tests/upstream-test-suite/056/indexpage.xml delete mode 100644 tests/upstream-test-suite/056_latexinclude.dox delete mode 100644 tests/upstream-test-suite/057/057__caller__graphs_8tcl.xml delete mode 100644 tests/upstream-test-suite/057/__057__caller__graphs_8tcl.xml delete mode 100644 tests/upstream-test-suite/057/namespace1.xml delete mode 100644 tests/upstream-test-suite/057/namespace1_1_11.xml delete mode 100644 tests/upstream-test-suite/057/namespace1_1_11_1_11.xml delete mode 100644 tests/upstream-test-suite/057/namespace2.xml delete mode 100644 tests/upstream-test-suite/057/namespace2_1_12.xml delete mode 100644 tests/upstream-test-suite/057/namespace2_1_12_1_12.xml delete mode 100644 tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12.xml delete mode 100644 tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12_1_12.xml delete mode 100644 tests/upstream-test-suite/057/namespacebar.xml delete mode 100644 tests/upstream-test-suite/057/namespacefoo.xml delete mode 100644 tests/upstream-test-suite/057_caller_graphs.tcl delete mode 100644 tests/upstream-test-suite/058/058__bracket__recursion_8tcl.xml delete mode 100644 tests/upstream-test-suite/058_bracket_recursion.tcl delete mode 100644 tests/upstream-test-suite/059/059__command__catch_8tcl.xml delete mode 100644 tests/upstream-test-suite/059_command_catch.tcl delete mode 100644 tests/upstream-test-suite/060/060__command__switch_8tcl.xml delete mode 100644 tests/upstream-test-suite/060_command_switch.tcl delete mode 100644 tests/upstream-test-suite/061/class_test.xml delete mode 100644 tests/upstream-test-suite/061_bug_705503.tcl delete mode 100644 tests/upstream-test-suite/062/namespacen1.xml delete mode 100644 tests/upstream-test-suite/062/namespacen2.xml delete mode 100644 tests/upstream-test-suite/062/namespacen3.xml delete mode 100644 tests/upstream-test-suite/062_namespace_resolution.tcl delete mode 100644 tests/upstream-test-suite/063/namespaceoo.xml delete mode 100644 tests/upstream-test-suite/063/namespaceoo_1_1_helpers.xml delete mode 100644 tests/upstream-test-suite/063/namespaceoo_1_1define.xml delete mode 100644 tests/upstream-test-suite/063_bug_729092.tcl delete mode 100644 tests/upstream-test-suite/064/struct_foo.xml delete mode 100644 tests/upstream-test-suite/064_castoperator.cpp delete mode 100644 tests/upstream-test-suite/065/indexpage.xml delete mode 100644 tests/upstream-test-suite/065_tilde.dox delete mode 100644 tests/upstream-test-suite/066/class_class1.xml delete mode 100644 tests/upstream-test-suite/066_property_initializer.cs delete mode 100644 tests/upstream-test-suite/067/067__link__varargs_8cpp.xml delete mode 100644 tests/upstream-test-suite/067_link_varargs.cpp delete mode 100644 tests/upstream-test-suite/068/068__ref__varargs_8cpp.xml delete mode 100644 tests/upstream-test-suite/068_ref_varargs.cpp delete mode 100644 tests/upstream-test-suite/069/069__link__variadic__template_8cpp.xml delete mode 100644 tests/upstream-test-suite/069_link_variadic_template.cpp delete mode 100644 tests/upstream-test-suite/070/070__ref__variadic__template_8cpp.xml delete mode 100644 tests/upstream-test-suite/070_ref_variadic_template.cpp delete mode 100644 tests/upstream-test-suite/071/namespace_a_namespace_1_1_0D0.xml delete mode 100644 tests/upstream-test-suite/071_enum_in_anon_ns.cpp delete mode 100644 tests/upstream-test-suite/072/072__using_8cpp.xml delete mode 100644 tests/upstream-test-suite/072_using.cpp delete mode 100644 tests/upstream-test-suite/073/073__typed__enum_8cpp.xml delete mode 100644 tests/upstream-test-suite/073_typed_enum.cpp delete mode 100644 tests/upstream-test-suite/074/struct_foo.xml delete mode 100644 tests/upstream-test-suite/074_ref.cpp delete mode 100644 tests/upstream-test-suite/075/struct_foo.xml delete mode 100644 tests/upstream-test-suite/075_argmatch.cpp delete mode 100644 tests/upstream-test-suite/076/indexpage.xml delete mode 100644 tests/upstream-test-suite/076_emojis.cpp delete mode 100644 tests/upstream-test-suite/077/077__no__xml__namespace__members__in__file__scope_8h.xml delete mode 100644 tests/upstream-test-suite/077_no_xml_namespace_members_in_file_scope.h delete mode 100644 tests/upstream-test-suite/078/078__xml__namespace__members__in__file__scope_8h.xml delete mode 100644 tests/upstream-test-suite/078_xml_namespace_members_in_file_scope.h delete mode 100644 tests/upstream-test-suite/Doxyfile delete mode 100644 tests/upstream-test-suite/Makefile delete mode 100644 tests/upstream-test-suite/PURPOSE delete mode 100644 tests/upstream-test-suite/README.txt delete mode 100644 tests/upstream-test-suite/_057_caller_graphs.tcl delete mode 100755 tests/upstream-test-suite/dtd/xhtml-lat1.ent delete mode 100755 tests/upstream-test-suite/dtd/xhtml-special.ent delete mode 100755 tests/upstream-test-suite/dtd/xhtml-symbol.ent delete mode 100755 tests/upstream-test-suite/dtd/xhtml1-strict.dtd delete mode 100755 tests/upstream-test-suite/dtd/xhtml1-transitional.dtd delete mode 100644 tests/upstream-test-suite/example_test.cpp delete mode 100755 tests/upstream-test-suite/runtest.sh delete mode 100644 tests/upstream-test-suite/runtests.py delete mode 100644 tests/upstream-test-suite/sample.bib delete mode 100644 tests/upstream-test-suite/sample.html delete mode 100644 tests/upstream-test-suite/sample.png delete mode 100644 tests/upstream-test-suite/sample.tex delete mode 100644 tests/upstream-test-suite/snippet_test.cpp diff --git a/doxygen.spec b/doxygen.spec index d410fdb..3e46bfb 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 6%{?dist} +Release: 7%{?dist} # No version is specified. License: GPL+ @@ -304,6 +304,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Mon Feb 22 2021 Than Ngo - 1:1.9.1-7 +- drop test-suite + * Wed Feb 10 2021 Than Ngo - 1:1.9.1-6 - fixed Coverity issues - fixed crash in docparser diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index 4a1c38a..0000000 --- a/gating.yaml +++ /dev/null @@ -1,7 +0,0 @@ ---- !Policy -product_versions: - - fedora-* -decision_context: bodhi_update_push_testing -rules: - - !PassingTestCaseRule {test_case_name: dist.depcheck} - - !PassingTestCaseRule {test_case_name: dist.abicheck} diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 5826238..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# Run tests in all contexts -- hosts: localhost - tags: - - classic - roles: - - role: standard-test-beakerlib - tests: - - upstream-test-suite - required_packages: - - doxygen - - python3 diff --git a/tests/upstream-test-suite/001/indexpage.xml b/tests/upstream-test-suite/001/indexpage.xml deleted file mode 100644 index 0d567f5..0000000 --- a/tests/upstream-test-suite/001/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - Text argument more text. - - - diff --git a/tests/upstream-test-suite/001_a.dox b/tests/upstream-test-suite/001_a.dox deleted file mode 100644 index c37136b..0000000 --- a/tests/upstream-test-suite/001_a.dox +++ /dev/null @@ -1,5 +0,0 @@ -// objective: test the \a and \mainpage commands -// check: indexpage.xml -/** \mainpage - * Text \a argument more text. - */ diff --git a/tests/upstream-test-suite/002/indexpage.xml b/tests/upstream-test-suite/002/indexpage.xml deleted file mode 100644 index 25a731b..0000000 --- a/tests/upstream-test-suite/002/indexpage.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - index - My Project - - - - - - keyword - - - - - - diff --git a/tests/upstream-test-suite/002_addindex.dox b/tests/upstream-test-suite/002_addindex.dox deleted file mode 100644 index b1c941f..0000000 --- a/tests/upstream-test-suite/002_addindex.dox +++ /dev/null @@ -1,5 +0,0 @@ -// objective: test \addindex command -// check: indexpage.xml -/** \mainpage - * \addindex keyword - */ diff --git a/tests/upstream-test-suite/003/indexpage.xml b/tests/upstream-test-suite/003/indexpage.xml deleted file mode 100644 index dbd1559..0000000 --- a/tests/upstream-test-suite/003/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - See Anchor Some text. More text. - - - diff --git a/tests/upstream-test-suite/003_anchor.dox b/tests/upstream-test-suite/003_anchor.dox deleted file mode 100644 index b28fc5e..0000000 --- a/tests/upstream-test-suite/003_anchor.dox +++ /dev/null @@ -1,8 +0,0 @@ -// objective: test \anchor command -// check: indexpage.xml -/** \mainpage - * \ref myanchor "See Anchor" - * Some text. - * \anchor myanchor - * More text. - */ diff --git a/tests/upstream-test-suite/004/indexpage.xml b/tests/upstream-test-suite/004/indexpage.xml deleted file mode 100644 index fdaea0d..0000000 --- a/tests/upstream-test-suite/004/indexpage.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - index - My Project - - - - AlignLeft left alignment. AlignCenter center alignment. AlignRight right alignment -No other types of alignment are supported. - AlignLeft left alignment. AlignCenter center alignment. AlignRight right alignment -No other types of alignment are supported. - - - diff --git a/tests/upstream-test-suite/004_arg.dox b/tests/upstream-test-suite/004_arg.dox deleted file mode 100644 index c6ea8e5..0000000 --- a/tests/upstream-test-suite/004_arg.dox +++ /dev/null @@ -1,15 +0,0 @@ -// objective: test \arg and \li commands -// check: indexpage.xml -/** \mainpage - \arg \c AlignLeft left alignment. - \arg \c AlignCenter center alignment. - \arg \c AlignRight right alignment - - No other types of alignment are supported. - - \li \c AlignLeft left alignment. - \li \c AlignCenter center alignment. - \li \c AlignRight right alignment - - No other types of alignment are supported. -*/ diff --git a/tests/upstream-test-suite/005/indexpage.xml b/tests/upstream-test-suite/005/indexpage.xml deleted file mode 100644 index 4a12dfd..0000000 --- a/tests/upstream-test-suite/005/indexpage.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - index - My Project - - - - - - Attention message. - - - Something to note. - - - A remark. - - - A warning message. - - - - <para>Second paragraph </para> - </simplesect> - <simplesect kind="par"> - <title>User defined paragraph. - Contents of paragraph. - - - - <para>More text in a new paragraph. </para> - </simplesect> - </para> - </detaileddescription> - </compounddef> -</doxygen> diff --git a/tests/upstream-test-suite/005_attention.dox b/tests/upstream-test-suite/005_attention.dox deleted file mode 100644 index 90f67f5..0000000 --- a/tests/upstream-test-suite/005_attention.dox +++ /dev/null @@ -1,14 +0,0 @@ -// objective: test \attention, \note, \remark, \warning, and \par commands -// check: indexpage.xml -/** \mainpage - * \attention Attention message. - * \note Something to note. - * \remark A remark. - * \warning A warning message. - * \par - * Second paragraph - * \par User defined paragraph. - * Contents of paragraph. - * \par - * More text in a new paragraph. - */ diff --git a/tests/upstream-test-suite/006/indexpage.xml b/tests/upstream-test-suite/006/indexpage.xml deleted file mode 100644 index 162aac0..0000000 --- a/tests/upstream-test-suite/006/indexpage.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version=""> - <compounddef id="indexpage" kind="page"> - <compoundname>index</compoundname> - <title>My Project - - - - - - John Doe - - - Jane Doe - - - David, Steven - - - version 1.2 - - - 1.8-beta2 - - - - - diff --git a/tests/upstream-test-suite/006_author.dox b/tests/upstream-test-suite/006_author.dox deleted file mode 100644 index ba07c1e..0000000 --- a/tests/upstream-test-suite/006_author.dox +++ /dev/null @@ -1,9 +0,0 @@ -// objective: test the \author, \since, and \version command -// check: indexpage.xml -/** \mainpage - * \author John Doe - * \author Jane Doe - * \authors David, Steven - * \since version 1.2 - * \version 1.8-beta2 - */ diff --git a/tests/upstream-test-suite/007/indexpage.xml b/tests/upstream-test-suite/007/indexpage.xml deleted file mode 100644 index 8e85063..0000000 --- a/tests/upstream-test-suite/007/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - Text bold normal text. - - - diff --git a/tests/upstream-test-suite/007_b.dox b/tests/upstream-test-suite/007_b.dox deleted file mode 100644 index 887c19f..0000000 --- a/tests/upstream-test-suite/007_b.dox +++ /dev/null @@ -1,5 +0,0 @@ -// objective: test the \b command -// check: indexpage.xml -/** \mainpage - * Text \b bold normal text. - */ diff --git a/tests/upstream-test-suite/008/008__brief_8c.xml b/tests/upstream-test-suite/008/008__brief_8c.xml deleted file mode 100644 index 4fcf6a6..0000000 --- a/tests/upstream-test-suite/008/008__brief_8c.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - 008_brief.c - - A brief description. - - - More details. - - - - diff --git a/tests/upstream-test-suite/008_brief.c b/tests/upstream-test-suite/008_brief.c deleted file mode 100644 index 773eaf1..0000000 --- a/tests/upstream-test-suite/008_brief.c +++ /dev/null @@ -1,7 +0,0 @@ -// objective: test \brief and \file command -// check: 008__brief_8c.xml -/** \file - * \brief A brief description. - * - * More details. - */ diff --git a/tests/upstream-test-suite/009/bug.xml b/tests/upstream-test-suite/009/bug.xml deleted file mode 100644 index 34a411b..0000000 --- a/tests/upstream-test-suite/009/bug.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - bug - Bug List - - - - - - - Class Bug - - - Class bug. - - - Member Bug::foo () - - - Function buglist item 1 in buglist item 2 in bug - - - - - - diff --git a/tests/upstream-test-suite/009/class_bug.xml b/tests/upstream-test-suite/009/class_bug.xml deleted file mode 100644 index 5a770bb..0000000 --- a/tests/upstream-test-suite/009/class_bug.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Bug - - - void - void Bug::foo - () - foo - - - - Description BugFunction buglist item 1 in buglist item 2 in bug - - More text. - - - - - - - - - - - - Bug - - Class bug. - - - - - - - - Bug - foo - - - - diff --git a/tests/upstream-test-suite/009/class_deprecated.xml b/tests/upstream-test-suite/009/class_deprecated.xml deleted file mode 100644 index 5d44aaf..0000000 --- a/tests/upstream-test-suite/009/class_deprecated.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - Deprecated - - - void - void Deprecated::deprecated - () - deprecated - - - - Do deprecated things. DeprecatedNo not use this function anymore. - - - - - - - - - - - - Deprecated - - This class is deprecated - - - - - - - - Deprecated - deprecated - - - - diff --git a/tests/upstream-test-suite/009/class_reminder.xml b/tests/upstream-test-suite/009/class_reminder.xml deleted file mode 100644 index 379b3e7..0000000 --- a/tests/upstream-test-suite/009/class_reminder.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - Reminder - - - void - void Reminder::reminder - () - reminder - - - - - - Reminder - - Need to rework this before the next release. - - - - - - - - - - - - - - - Reminder - - A reminder - - - - - - - - Reminder - reminder - - - - diff --git a/tests/upstream-test-suite/009/class_test.xml b/tests/upstream-test-suite/009/class_test.xml deleted file mode 100644 index 9f1b126..0000000 --- a/tests/upstream-test-suite/009/class_test.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - Test - - - void - void Test::test - () - test - - - - - - Test - - more things to test. - - - - - - - - - - - - - - - Test - - This is part of testing - - - - - - - - Test - test - - - - diff --git a/tests/upstream-test-suite/009/class_todo.xml b/tests/upstream-test-suite/009/class_todo.xml deleted file mode 100644 index 8657d60..0000000 --- a/tests/upstream-test-suite/009/class_todo.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - Todo - - - void - void Todo::todo - () - todo - - - - - - Todo - - more things to do here - - - - - - - - - - - - - - - Todo - - This still needs to be done. - - - - - - - - Todo - todo - - - - diff --git a/tests/upstream-test-suite/009/deprecated.xml b/tests/upstream-test-suite/009/deprecated.xml deleted file mode 100644 index a787015..0000000 --- a/tests/upstream-test-suite/009/deprecated.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - deprecated - Deprecated List - - - - - - - Class Deprecated - - - This class is deprecated - - - Member Deprecated::deprecated () - - - No not use this function anymore. - - - - - - diff --git a/tests/upstream-test-suite/009/reminders.xml b/tests/upstream-test-suite/009/reminders.xml deleted file mode 100644 index f848e3c..0000000 --- a/tests/upstream-test-suite/009/reminders.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - reminders - Reminders - - - - - - - Class Reminder - - - A reminder - - - Member Reminder::reminder () - - - Need to rework this before the next release. - - - - - - diff --git a/tests/upstream-test-suite/009/test.xml b/tests/upstream-test-suite/009/test.xml deleted file mode 100644 index 828316d..0000000 --- a/tests/upstream-test-suite/009/test.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - test - Test List - - - - - - - Class Test - - - This is part of testing - - - Member Test::test () - - - more things to test. - - - - - - diff --git a/tests/upstream-test-suite/009/todo.xml b/tests/upstream-test-suite/009/todo.xml deleted file mode 100644 index 394f07d..0000000 --- a/tests/upstream-test-suite/009/todo.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - todo - Todo List - - - - - - - Class Todo - - - This still needs to be done. - - - Member Todo::todo () - - - more things to do here - - - - - - diff --git a/tests/upstream-test-suite/009_bug.cpp b/tests/upstream-test-suite/009_bug.cpp deleted file mode 100644 index 285c77e..0000000 --- a/tests/upstream-test-suite/009_bug.cpp +++ /dev/null @@ -1,62 +0,0 @@ -// objective: test the \bug, \deprecated, \todo, \test, and \xrefitem commands -// check: class_bug.xml -// check: class_deprecated.xml -// check: class_todo.xml -// check: class_test.xml -// check: class_reminder.xml -// check: bug.xml -// check: deprecated.xml -// check: todo.xml -// check: test.xml -// check: reminders.xml -// config: ALIASES = "reminder=\xrefitem reminders \"Reminder\" \"Reminders\"" - -/** \bug Class bug. */ -class Bug -{ - public: - /** Description - * \bug Function bug - * - list item 1 in bug - * - list item 2 in bug - * - * More text. - */ - void foo(); -}; - -/** \deprecated This class is deprecated */ -class Deprecated -{ - public: - /** Do deprecated things. - * \deprecated No not use this function anymore. - */ - void deprecated(); -}; - -/** \todo This still needs to be done. */ -class Todo -{ - public: - /** \todo more things to do here */ - void todo(); -}; - -/** \test This is part of testing */ -class Test -{ - public: - /** \test more things to test. */ - void test(); -}; - -/** \reminder A reminder */ -class Reminder -{ - public: - /** \reminder Need to rework this before the next release. */ - void reminder(); -}; - - diff --git a/tests/upstream-test-suite/010/indexpage.xml b/tests/upstream-test-suite/010/indexpage.xml deleted file mode 100644 index 05c297e..0000000 --- a/tests/upstream-test-suite/010/indexpage.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - index - My Project - - - - Text code normal text. - Text code normal text. - - - diff --git a/tests/upstream-test-suite/010_c.dox b/tests/upstream-test-suite/010_c.dox deleted file mode 100644 index a26b5fd..0000000 --- a/tests/upstream-test-suite/010_c.dox +++ /dev/null @@ -1,7 +0,0 @@ -// objective: test the \c and \p commands -// check: indexpage.xml -/** \mainpage - * Text \c code normal text. - * - * Text \p code normal text. - */ diff --git a/tests/upstream-test-suite/011/category_integer_07_arithmetic_08.xml b/tests/upstream-test-suite/011/category_integer_07_arithmetic_08.xml deleted file mode 100644 index 78a8c0e..0000000 --- a/tests/upstream-test-suite/011/category_integer_07_arithmetic_08.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - Integer(Arithmetic) - - - id - id Integer(Arithmetic)::add: - (Integer *addend) - add: - - Integer * - addend - - - - - add operation - - - - - - - id - id Integer(Arithmetic)::sub: - (Integer *subtrahend) - sub: - - Integer * - subtrahend - - - - - subtract operation - - - - - - - - - - A category - - - - - Integer(Arithmetic) - add: - - - Integer(Arithmetic) - sub: - - - - diff --git a/tests/upstream-test-suite/011/interface_integer.xml b/tests/upstream-test-suite/011/interface_integer.xml deleted file mode 100644 index 429c6a0..0000000 --- a/tests/upstream-test-suite/011/interface_integer.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - Integer - Object - - - int - int Integer::integer - - integer - - - - data member - - - - - - - - - int - int Integer::integer - () - integer - - - - getter - - - - - - - id - id Integer::integer: - (int _integer) - integer: - - int - _integer - - - - - setter - - - - - - - - - - An interface - - - - - - - - - - - - - - - - - - - - - - - - - - - Integer - integer - - - Integer - integer - - - Integer - integer: - - - - diff --git a/tests/upstream-test-suite/011_category.m b/tests/upstream-test-suite/011_category.m deleted file mode 100644 index f57c1d1..0000000 --- a/tests/upstream-test-suite/011_category.m +++ /dev/null @@ -1,30 +0,0 @@ -// objective: test the \interface and \category command -// check: category_integer_07_arithmetic_08.xml -// check: interface_integer.xml -# import - -@interface Integer : Object { - /** data member */ - int integer; -} - -/** getter */ -- (int) integer; -/** setter */ -- (id) integer: (int) _integer; -@end - -@interface Integer (Arithmetic) -/** add operation */ -- (id) add: (Integer *) addend; -/** subtract operation */ -- (id) sub: (Integer *) subtrahend; -@end - -/** \interface Integer - * An interface - */ - -/** \category Integer(Arithmetic) - * A category - */ diff --git a/tests/upstream-test-suite/012/citelist.xml b/tests/upstream-test-suite/012/citelist.xml deleted file mode 100644 index f415968..0000000 --- a/tests/upstream-test-suite/012/citelist.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - citelist - Bibliography - - - - - - - [1] - - - DonaldE. Knuth. Tex and Metafont, New Directions in Typesetting. American Mathematical Society and Digital Press, Stanford, 1979. - - - - - - - diff --git a/tests/upstream-test-suite/012/indexpage.xml b/tests/upstream-test-suite/012/indexpage.xml deleted file mode 100644 index 73fb669..0000000 --- a/tests/upstream-test-suite/012/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - See [1] for more info. - - - diff --git a/tests/upstream-test-suite/012_cite.dox b/tests/upstream-test-suite/012_cite.dox deleted file mode 100644 index 94be5e7..0000000 --- a/tests/upstream-test-suite/012_cite.dox +++ /dev/null @@ -1,7 +0,0 @@ -// objective: test the \cite command -// check: indexpage.xml -// check: citelist.xml -// config: CITE_BIB_FILES = $INPUTDIR/sample.bib -/** \mainpage - * See \cite knuth79 for more info. - */ diff --git a/tests/upstream-test-suite/013/class_t1.xml b/tests/upstream-test-suite/013/class_t1.xml deleted file mode 100644 index ba91621..0000000 --- a/tests/upstream-test-suite/013/class_t1.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - T1 - inc/013_class.h - - - - A class - - - - - - diff --git a/tests/upstream-test-suite/013/class_t2.xml b/tests/upstream-test-suite/013/class_t2.xml deleted file mode 100644 index 9df47e2..0000000 --- a/tests/upstream-test-suite/013/class_t2.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - T2 - 013_class.h - - - - class T2 - - - - - - diff --git a/tests/upstream-test-suite/013/class_t3.xml b/tests/upstream-test-suite/013/class_t3.xml deleted file mode 100644 index dc0cd3f..0000000 --- a/tests/upstream-test-suite/013/class_t3.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - T3 - 013_class.h - - - - class T3 - - - - - - diff --git a/tests/upstream-test-suite/013/class_t4.xml b/tests/upstream-test-suite/013/class_t4.xml deleted file mode 100644 index 52955d2..0000000 --- a/tests/upstream-test-suite/013/class_t4.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - T4 - inc/013_class.h - - - - class T4 - - - - - - diff --git a/tests/upstream-test-suite/013_class.h b/tests/upstream-test-suite/013_class.h deleted file mode 100644 index 346250b..0000000 --- a/tests/upstream-test-suite/013_class.h +++ /dev/null @@ -1,37 +0,0 @@ -// objective: test the \class and \headerfile commands -// check: class_t1.xml -// check: class_t2.xml -// check: class_t3.xml -// check: class_t4.xml - -/** A class - * \headerfile 013_class.h "inc/013_class.h" - */ -class T1 -{ -}; - -class T2 -{ -}; - -class T3 -{ -}; - -class T4 -{ -}; - -/** \class T2 - * \headerfile <> - * class T2 - */ - -/** \class T3 013_class.h - * class T3 - */ - -/** \class T4 013_class.h "inc/013_class.h" - * class T4 - */ diff --git a/tests/upstream-test-suite/014/indexpage.xml b/tests/upstream-test-suite/014/indexpage.xml deleted file mode 100644 index 7cbc82f..0000000 --- a/tests/upstream-test-suite/014/indexpage.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - index - My Project - - - - - - - #commentinPython - - - - - class - Python: - - - - - - - pass - - - - - - - //commentinacodeblock - - - - - class - Cpp{}; - - - - - - - //implicitcodelanguage - - - - - - diff --git a/tests/upstream-test-suite/014_code.dox b/tests/upstream-test-suite/014_code.dox deleted file mode 100644 index 56597cc..0000000 --- a/tests/upstream-test-suite/014_code.dox +++ /dev/null @@ -1,18 +0,0 @@ -// objective: test the \code command -// check: indexpage.xml -/** \mainpage - * \code{.py} - * # comment in Python - * class Python: - * pass - * \endcode - * - * \code{.cpp} - * // comment in a code block - * class Cpp {}; - * \endcode - * - * \code - * // implicit code language - * \endcode - */ diff --git a/tests/upstream-test-suite/015/015__cond_8c.xml b/tests/upstream-test-suite/015/015__cond_8c.xml deleted file mode 100644 index bcc18b5..0000000 --- a/tests/upstream-test-suite/015/015__cond_8c.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - 015_cond.c - - - void - void cond_enabled - () - cond_enabled - - - - Function to be shown. - - - - - - - - - - Text argument more text. - - - - diff --git a/tests/upstream-test-suite/015_cond.c b/tests/upstream-test-suite/015_cond.c deleted file mode 100644 index 0ac209d..0000000 --- a/tests/upstream-test-suite/015_cond.c +++ /dev/null @@ -1,32 +0,0 @@ -// objective: test the `cond` command -// check: 015__cond_8c.xml -// config: ENABLED_SECTIONS = COND_ENABLED - -/** \file - * Text \a argument more text. - */ - -/// \cond - -/** A function */ -void func(); - -/** A macro */ -#define MACRO 42 - -/// \endcond - -/// \cond COND_ENABLED -/// Function to be shown. -void cond_enabled() -{ -} -/// \endcond - -/** \cond COND_DISABLED */ - Function not to be shown. -void cond_disabled() -{ -} -/** \endcond */ - diff --git a/tests/upstream-test-suite/016/016__copydoc_8c.xml b/tests/upstream-test-suite/016/016__copydoc_8c.xml deleted file mode 100644 index 992122d..0000000 --- a/tests/upstream-test-suite/016/016__copydoc_8c.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - 016_copydoc.c - - - void - void func - (int i) - func - - int - i - - - Brief description. - - - Detailed description. - - - - - - - void - void func_brief - () - func_brief - - Brief description. - - - - - - - - - void - void func_details - () - func_details - - - - Detailed description. - - - - - - - void - void func_doc - () - func_doc - - Brief description. - - - Detailed description. More text. - - - - - - - - - - Text argument more text. - - - - diff --git a/tests/upstream-test-suite/016_copydoc.c b/tests/upstream-test-suite/016_copydoc.c deleted file mode 100644 index bb8b1bb..0000000 --- a/tests/upstream-test-suite/016_copydoc.c +++ /dev/null @@ -1,23 +0,0 @@ -// objective: test the \copydoc, \copybrief, \copydetails, and \details commands -// check: 016__copydoc_8c.xml - -/** \file - * Text \a argument more text. - */ - -/** \brief Brief description. - * \details Detailed description. - */ -void func(int i); - -/** \copybrief func(int) */ -void func_brief(); - -/** \copydetails func(int) */ -void func_details(); - -/** \copydoc func(int) - * More text. - */ -void func_doc(); - diff --git a/tests/upstream-test-suite/017/indexpage.xml b/tests/upstream-test-suite/017/indexpage.xml deleted file mode 100644 index 3326ee8..0000000 --- a/tests/upstream-test-suite/017/indexpage.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - index - My Project - - - - - - Dimitri van Heesch - - - July 13 2013 - - - - - diff --git a/tests/upstream-test-suite/017_copyright.dox b/tests/upstream-test-suite/017_copyright.dox deleted file mode 100644 index 2351180..0000000 --- a/tests/upstream-test-suite/017_copyright.dox +++ /dev/null @@ -1,6 +0,0 @@ -// objective: test \copyright and \date commands -// check: indexpage.xml -/** \mainpage - * \copyright Dimitri van Heesch - * \date July 13 2013 - */ diff --git a/tests/upstream-test-suite/018/018__def_8c.xml b/tests/upstream-test-suite/018/018__def_8c.xml deleted file mode 100644 index 5f42767..0000000 --- a/tests/upstream-test-suite/018/018__def_8c.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - 018_def.c - - - MACRO - 42 - - - - A macro definition - - - - - - - - - - E - - E1 - - - - - - - E2 - - - - - - - - - An enum - - - - - - - - - int - Type - - Type - - - - A type definition. - - - - - - - - - int - var - - var - = 10 - - - - A variable - - - - - - - - - void - func - (int) - func - - int - - - - - A function with one parameter. - - - - - - - void - func - (int, const char *) - func - - int - - - const char * - - - - - A function with two parameters - - - - - - - - - - Text argument more text. - - - - diff --git a/tests/upstream-test-suite/018_def.c b/tests/upstream-test-suite/018_def.c deleted file mode 100644 index dadc71c..0000000 --- a/tests/upstream-test-suite/018_def.c +++ /dev/null @@ -1,37 +0,0 @@ -// objective: test the \def, \var, \fn, and \typedef commands -// check: 018__def_8c.xml - -/** \file - * Text \a argument more text. - */ - -#define MACRO 42 -int var = 10; -void func(int) {} -void func(int,const char *) {} -typedef int Type; -enum E { E1, E2 }; - -/** \def MACRO - * A macro definition - */ - -/** \var var - * A variable - */ - -/** \fn func(int) - * A function with one parameter. - */ - -/** \fn func(int,const char *) - * A function with two parameters - */ - -/** \typedef Type - * A type definition. - */ - -/** \enum E - * An enum - */ diff --git a/tests/upstream-test-suite/019/group__g1.xml b/tests/upstream-test-suite/019/group__g1.xml deleted file mode 100644 index 23d9c31..0000000 --- a/tests/upstream-test-suite/019/group__g1.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - g1 - First Group - - - void - void func_g1 - () - func_g1 - - - - A function in the first group. - - - - - - - - - - Text for first group. - - - diff --git a/tests/upstream-test-suite/019/group__g2.xml b/tests/upstream-test-suite/019/group__g2.xml deleted file mode 100644 index 51df509..0000000 --- a/tests/upstream-test-suite/019/group__g2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - g2 - Second Group - Third Group - - - void - void func_g2 - () - func_g2 - - - - A function in the second group - - - - - - - - - - Text for second group. - - - diff --git a/tests/upstream-test-suite/019/group__g3.xml b/tests/upstream-test-suite/019/group__g3.xml deleted file mode 100644 index 1c2b33b..0000000 --- a/tests/upstream-test-suite/019/group__g3.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - g3 - Third Group - - - void - void func_g3 - () - func_g3 - - - - A function in the third group - - - - - - - void - void func_g3_add - () - func_g3_add - - - - Another function added to the third group - - - - - - - - - - Text for third group. - - - diff --git a/tests/upstream-test-suite/019_defgroup.c b/tests/upstream-test-suite/019_defgroup.c deleted file mode 100644 index d42d63e..0000000 --- a/tests/upstream-test-suite/019_defgroup.c +++ /dev/null @@ -1,48 +0,0 @@ -// objective: test the \defgroup, \addtogroup, and \ingroup command. -// check: group__g1.xml -// check: group__g2.xml -// check: group__g3.xml - -/** \defgroup g1 First Group - * Text for first group. - */ - -/** A function in the first group. - * \ingroup g1 - */ -void func_g1(); - -//-------------------------------- - -/** \defgroup g2 Second Group - * Text for second group. - */ -/// \{ - -/** A function in the second group */ -void func_g2(); - -/// \} - -/** \defgroup g3 Third Group - * Text for third group. - * \ingroup g2 - * \{ - */ - -//-------------------------------- - -/** A function in the third group */ -void func_g3(); - -/** \} */ - -/** \addtogroup g3 - * \{ - */ - -/** Another function added to the third group */ -void func_g3_add(); - -/** \} */ - diff --git a/tests/upstream-test-suite/020/indexpage.xml b/tests/upstream-test-suite/020/indexpage.xml deleted file mode 100644 index 3171e13..0000000 --- a/tests/upstream-test-suite/020/indexpage.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - index - My Project - - - - Text. -XML -More text. - - - diff --git a/tests/upstream-test-suite/020_only.dox b/tests/upstream-test-suite/020_only.dox deleted file mode 100644 index f8e2ce1..0000000 --- a/tests/upstream-test-suite/020_only.dox +++ /dev/null @@ -1,27 +0,0 @@ -// objective: test the \*only and \*endonly commands -// check: indexpage.xml -/** \mainpage - * Text. - * \htmlonly - * HTML - * \endhtmlonly - * \htmlonly[block] - * HTML with block - * \endhtmlonly - * \rtfonly - * RTF - * \endrtfonly - * \manonly - * Man - * \endmanonly - * \latexonly - * LaTeX - * \endlatexonly - * \xmlonly - * XML - * \endxmlonly - * \docbookonly - * DocBook - * \enddocbookonly - * More text. - */ diff --git a/tests/upstream-test-suite/021/indexpage.xml b/tests/upstream-test-suite/021/indexpage.xml deleted file mode 100644 index 7c93a78..0000000 --- a/tests/upstream-test-suite/021/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - Our main function starts like this: voidmain(){ First we create a object t of the Test class. Testt; Then we call the example member function t.example(); After that our little test routine ends. } - - - diff --git a/tests/upstream-test-suite/021_dontinclude.cpp b/tests/upstream-test-suite/021_dontinclude.cpp deleted file mode 100644 index eeb95c5..0000000 --- a/tests/upstream-test-suite/021_dontinclude.cpp +++ /dev/null @@ -1,23 +0,0 @@ -// objective: test the \dontinclude, \skip, \until, \skipline, \line commands -// check: indexpage.xml -/*! A test class. */ - -class Test -{ - public: - /// a member function - void example(); -}; - -/*! \mainpage - * \dontinclude example_test.cpp - * Our main function starts like this: - * \skip main - * \until { - * First we create a object \c t of the Test class. - * \skipline Test - * Then we call the example member function - * \line example - * After that our little test routine ends. - * \line } - */ diff --git a/tests/upstream-test-suite/022/indexpage.xml b/tests/upstream-test-suite/022/indexpage.xml deleted file mode 100644 index 0fcee9c..0000000 --- a/tests/upstream-test-suite/022/indexpage.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - index - My Project - - - - Class relations expressed via an inline dot graph: -digraph example { - node [shape=record, fontname=Helvetica, fontsize=10]; - b [ label="class B" URL="\ref B"]; - c [ label="class C" URL="\ref C"]; - b -> c [ arrowhead="open", style="dashed" ]; -} - - - - - diff --git a/tests/upstream-test-suite/022_dot.cpp b/tests/upstream-test-suite/022_dot.cpp deleted file mode 100644 index 74d3f7a..0000000 --- a/tests/upstream-test-suite/022_dot.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// objective: test the \dot and \enddot commands -// check: indexpage.xml -// config: HAVE_DOT = YES -// config: DOTFILE_DIRS = $INPUTDIR - -/*! class B */ -class B {}; -/*! class C */ -class C {}; - -/*! \mainpage -Class relations expressed via an inline dot graph: -\dot -digraph example { - node [shape=record, fontname=Helvetica, fontsize=10]; - b [ label="class B" URL="\ref B"]; - c [ label="class C" URL="\ref C"]; - b -> c [ arrowhead="open", style="dashed" ]; -} -\enddot -*/ - diff --git a/tests/upstream-test-suite/023/indexpage.xml b/tests/upstream-test-suite/023/indexpage.xml deleted file mode 100644 index c87860c..0000000 --- a/tests/upstream-test-suite/023/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - Normal emphasis and more emphasis back to normal. - - - diff --git a/tests/upstream-test-suite/023_e.dox b/tests/upstream-test-suite/023_e.dox deleted file mode 100644 index 5f787b7..0000000 --- a/tests/upstream-test-suite/023_e.dox +++ /dev/null @@ -1,5 +0,0 @@ -// objective: test the \e, \em commands -// check: indexpage.xml -/** \mainpage - * Normal \e emphasis and more \em emphasis back to normal. - */ diff --git a/tests/upstream-test-suite/024/indexpage.xml b/tests/upstream-test-suite/024/indexpage.xml deleted file mode 100644 index 7396177..0000000 --- a/tests/upstream-test-suite/024/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - Unconditional (start) Enabled (if). Enabled (else). Unconditional (middle) Enabled (else). Unconditional (end) - - - diff --git a/tests/upstream-test-suite/024_if.dox b/tests/upstream-test-suite/024_if.dox deleted file mode 100644 index f24be43..0000000 --- a/tests/upstream-test-suite/024_if.dox +++ /dev/null @@ -1,21 +0,0 @@ -// objective: test the \if, \ifnot, \elsif, \else, and \endif commands -// check: indexpage.xml -// config: ENABLED_SECTIONS = GUARD_ENABLED -/** \mainpage - * Unconditional (start) - * \if GUARD_ENABLED - * Enabled (if). - * \if (!GUARD_ENABLED) Disabled (if).\else Enabled (else). \endif - * \else - * Disabled. - * \endif - * Unconditional (middle) - * \ifnot GUARD_ENABLED - * Disabled (ifnot). - * \elseif GUARD_DISABLED - * Disabled (elseif). - * \else - * Enabled (else). - * \endif - * Unconditional (end) - */ diff --git a/tests/upstream-test-suite/025/class_test.xml b/tests/upstream-test-suite/025/class_test.xml deleted file mode 100644 index c19341a..0000000 --- a/tests/upstream-test-suite/025/class_test.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - Test - - - void - void Test::example - () - example - - An example member function. - - - More details about this function. - - - - - - - - A Test class. - - - More details about this class. - - - - - Test - example - - - - diff --git a/tests/upstream-test-suite/025/example_test_8cpp-example.xml b/tests/upstream-test-suite/025/example_test_8cpp-example.xml deleted file mode 100644 index 6bcee68..0000000 --- a/tests/upstream-test-suite/025/example_test_8cpp-example.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - example_test.cpp - - - - This is an example of how to use the Test class. - More details about this example. voidmain(){constchar*a="Somespecialcharacterhere:";Testt;t.example();} - - - diff --git a/tests/upstream-test-suite/025_example.cpp b/tests/upstream-test-suite/025_example.cpp deleted file mode 100644 index 817a47f..0000000 --- a/tests/upstream-test-suite/025_example.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// objective: test the \example command -// check: example_test_8cpp-example.xml -// check: class_test.xml - - -/** \brief A Test class. - * - * More details about this class. - */ -class Test -{ - public: - /** \brief An example member function. - * - * More details about this function. - */ - void example(); -}; - -void Test::example() {} - -/** \example example_test.cpp - * This is an example of how to use the Test class. - * - * More details about this example. - */ diff --git a/tests/upstream-test-suite/026/class_test.xml b/tests/upstream-test-suite/026/class_test.xml deleted file mode 100644 index 582d509..0000000 --- a/tests/upstream-test-suite/026/class_test.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - Test - - - class T - - - - - int - int Test< T >::example - (int p1, int p2) - example - - int - p1 - - - int - p2 - - throw (std::out_of_range) - - - - An example member function. p1First parameter. p2Second parameter. -std::out_of_rangeparameter is out of range. -0if p1 and p2 are equal -1if p1 is smaller than p2 1if p1 is bigger than p2 - - - - - - - - - - - A Test class. More details about this class. TA template parameter. - - - - - - Test - example - - - - diff --git a/tests/upstream-test-suite/026_exception.cpp b/tests/upstream-test-suite/026_exception.cpp deleted file mode 100644 index cabb128..0000000 --- a/tests/upstream-test-suite/026_exception.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// objective: test the \exception, \param, and \tparam commands -// check: class_test.xml - -/** A Test class. - * More details about this class. - * @tparam T A template parameter. - */ -template class Test -{ - public: - /** An example member function. - * \param p1 First parameter. - * \param p2 Second parameter. - * \exception std::out_of_range parameter is out of range. - * \retval 0 if p1 and p2 are equal - * \retval -1 if p1 is smaller than p2 - * \retval 1 if p1 is bigger than p2 - */ - int example(int p1,int p2) throw(std::out_of_range); -}; - diff --git a/tests/upstream-test-suite/027/struct_car.xml b/tests/upstream-test-suite/027/struct_car.xml deleted file mode 100644 index 9027597..0000000 --- a/tests/upstream-test-suite/027/struct_car.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - Car - Vehicle - - - - Vehicle - - Vehicle Car::base - - base - - Base class. - - - - - - - - - - - - Car class. - - - - - - - - - - - - - - - - - - - - - - - - - - - base - - - - - - - - - - - - - base - - - - - - - Car - base - - - Car - objRef - - - Car - objUnref - - - Car - vehicleStart - - - Car - vehicleStop - - - - diff --git a/tests/upstream-test-suite/027/struct_object.xml b/tests/upstream-test-suite/027/struct_object.xml deleted file mode 100644 index e14caa5..0000000 --- a/tests/upstream-test-suite/027/struct_object.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - Object - Vehicle - - - int - int Object::ref - - ref - - Reference count. - - - - - - - - - - - Object * - static Object * objRef - (Object *obj) - objRef - - Object * - obj - - - - - Increments object reference count by one. - - - - - - - Object * - static Object * objUnref - (Object *obj) - objUnref - - Object * - obj - - - - - Decrements object reference count by one. - - - - - - - - - - Base object class. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Object - objRef - - - Object - objUnref - - - Object - ref - - - - diff --git a/tests/upstream-test-suite/027/struct_truck.xml b/tests/upstream-test-suite/027/struct_truck.xml deleted file mode 100644 index c5009d4..0000000 --- a/tests/upstream-test-suite/027/struct_truck.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - - Truck - Vehicle - - - - Vehicle - - Vehicle Truck::base - - base - - Base class. - - - - - - - - - - - - Truck class. - - - - - - - - - - - - - - - - - - - - - - - - - - - base - - - - - - - - - base - - - - - - - - - - - Truck - base - - - Truck - objRef - - - Truck - objUnref - - - Truck - vehicleStart - - - Truck - vehicleStop - - - - diff --git a/tests/upstream-test-suite/027/struct_vehicle.xml b/tests/upstream-test-suite/027/struct_vehicle.xml deleted file mode 100644 index acf10a0..0000000 --- a/tests/upstream-test-suite/027/struct_vehicle.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - Vehicle - Object - Car - Truck - - - - Object - - Object Vehicle::base - - base - - Base class. - - - - - - - - - - - void - void vehicleStart - (Vehicle *obj) - vehicleStart - - Vehicle * - obj - - - - - Starts the vehicle. - - - - - - - void - void vehicleStop - (Vehicle *obj) - vehicleStop - - Vehicle * - obj - - - - - Stops the vehicle. - - - - - - - - - - Vehicle class. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - base - - - - - - - - - - - Vehicle - base - - - Vehicle - objRef - - - Vehicle - objUnref - - - Vehicle - vehicleStart - - - Vehicle - vehicleStop - - - - diff --git a/tests/upstream-test-suite/027_extends.c b/tests/upstream-test-suite/027_extends.c deleted file mode 100644 index 7860abd..0000000 --- a/tests/upstream-test-suite/027_extends.c +++ /dev/null @@ -1,93 +0,0 @@ -// objective: test the \extends, \implements, \memberof, \private, and \public commands -// check: struct_object.xml -// check: struct_vehicle.xml -// check: struct_car.xml -// check: struct_truck.xml - -/** - * \file - */ - -typedef struct Object Object; //!< Object type -typedef struct Vehicle Vehicle; //!< Vehicle type -typedef struct Car Car; //!< Car type -typedef struct Truck Truck; //!< Truck type - -/*! - * Base object class. - */ -struct Object -{ - int ref; //!< \private Reference count. -}; - - -/*! - * Increments object reference count by one. - * \public \memberof Object - */ -static Object * objRef(Object *obj); - - -/*! - * Decrements object reference count by one. - * \public \memberof Object - */ -static Object * objUnref(Object *obj); - - -/*! - * Vehicle class. - * \extends Object - */ -struct Vehicle -{ - Object base; //!< \protected Base class. -}; - - -/*! - * Starts the vehicle. - * \public \memberof Vehicle - */ -void vehicleStart(Vehicle *obj); - - -/*! - * Stops the vehicle. - * \public \memberof Vehicle - */ -void vehicleStop(Vehicle *obj); - - -/*! - * Car class. - * \implements Vehicle - */ -struct Car -{ - Vehicle base; //!< \protected Base class. -}; - - -/*! - * Truck class. - * \implements Vehicle - */ -struct Truck -{ - Vehicle base; //!< \protected Base class. -}; - - -/*! - * Main function. - * - * Ref vehicleStart(), objRef(), objUnref(). - */ -int main(void) -{ - Car c; - vehicleStart((Vehicle*) &c); -} - diff --git a/tests/upstream-test-suite/028/indexpage.xml b/tests/upstream-test-suite/028/indexpage.xml deleted file mode 100644 index c13e1b2..0000000 --- a/tests/upstream-test-suite/028/indexpage.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - index - My Project - - - - Here are some formulas:The distance between $(x_1,y_1)$ and $(x_2,y_2)$ is $\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}$.Unnumbered formula: \[ |I_2|=\left| \int_{0}^T \psi(t) \left\{ u(a,t)- \int_{\gamma(t)}^a \frac{d\theta}{k(\theta,t)} \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi \right\} dt \right| \]Formula in different environment \begin{eqnarray*} g &=& \frac{Gm_2}{r^2} \\ &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\, \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ &=& 9.82066032\,\mbox{m/s}^2 \end{eqnarray*} - - - - diff --git a/tests/upstream-test-suite/028_formula.c b/tests/upstream-test-suite/028_formula.c deleted file mode 100644 index 2a4c5cb..0000000 --- a/tests/upstream-test-suite/028_formula.c +++ /dev/null @@ -1,17 +0,0 @@ -// objective: test the \f$, \f[, \f], \f{, and \f} commands -// check: indexpage.xml - -/** @mainpage -Here are some formulas: --# The distance between \f$(x_1,y_1)\f$ and \f$(x_2,y_2)\f$ is - \f$\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}\f$. --# Unnumbered formula: - \f[ |I_2|=\left| \int_{0}^T \psi(t) \left\{ u(a,t)- \int_{\gamma(t)}^a - \frac{d\theta}{k(\theta,t)} \int_{a}^\theta c(\xi)u_t(\xi,t)\,d\xi \right\} dt \right| \f] --# Formula in different environment - \f{eqnarray*}{ g &=& \frac{Gm_2}{r^2} \\ - &=& \frac{(6.673 \times 10^{-11}\,\mbox{m}^3\,\mbox{kg}^{-1}\, - \mbox{s}^{-2})(5.9736 \times 10^{24}\,\mbox{kg})}{(6371.01\,\mbox{km})^2} \\ - &=& 9.82066032\,\mbox{m/s}^2 - \f} -*/ diff --git a/tests/upstream-test-suite/029/029__hideinit_8c.xml b/tests/upstream-test-suite/029/029__hideinit_8c.xml deleted file mode 100644 index 4caf092..0000000 --- a/tests/upstream-test-suite/029/029__hideinit_8c.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - 029_hideinit.c - - - int - int var1 - - var1 - = 10 - - - - a variable with initializer visible - - - - - - - int - int var2 - - var2 - - - - a variable without initializer visible - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/029_hideinit.c b/tests/upstream-test-suite/029_hideinit.c deleted file mode 100644 index da3f4a5..0000000 --- a/tests/upstream-test-suite/029_hideinit.c +++ /dev/null @@ -1,12 +0,0 @@ -// objective: test the \hideinitializer command -// check: 029__hideinit_8c.xml - -/** \file */ - -/** a variable with initializer visible */ -int var1 = 10; - -/** a variable without initializer visible - * \hideinitializer - */ -int var2 = 20; diff --git a/tests/upstream-test-suite/030/indexpage.xml b/tests/upstream-test-suite/030/indexpage.xml deleted file mode 100644 index a45eb8d..0000000 --- a/tests/upstream-test-suite/030/indexpage.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - index - My Project - - - - Some text. <h1>Hello world</h1> - More text. - - - diff --git a/tests/upstream-test-suite/030_htmlinclude.dox b/tests/upstream-test-suite/030_htmlinclude.dox deleted file mode 100644 index 17d934d..0000000 --- a/tests/upstream-test-suite/030_htmlinclude.dox +++ /dev/null @@ -1,7 +0,0 @@ -// objective: test the \htmlinclude command -// check: indexpage.xml -/** \mainpage - * Some text. - * \htmlinclude[block] sample.html - * More text. - */ diff --git a/tests/upstream-test-suite/031/indexpage.xml b/tests/upstream-test-suite/031/indexpage.xml deleted file mode 100644 index 2c1dfd7..0000000 --- a/tests/upstream-test-suite/031/indexpage.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - index - My Project - - - - Some text. - Doxygen logo - - More text. - - - diff --git a/tests/upstream-test-suite/031_image.dox b/tests/upstream-test-suite/031_image.dox deleted file mode 100644 index 8ba47b7..0000000 --- a/tests/upstream-test-suite/031_image.dox +++ /dev/null @@ -1,10 +0,0 @@ -// objective: test the \image command -// check: indexpage.xml -// config: IMAGE_PATH = $INPUTDIR -/** \mainpage - * Some text. - * \image html sample.png - * \image latex sample.png "Doxygen logo" width=5cm - * \image docbook sample.png - * More text. - */ diff --git a/tests/upstream-test-suite/032/indexpage.xml b/tests/upstream-test-suite/032/indexpage.xml deleted file mode 100644 index 89d8c1f..0000000 --- a/tests/upstream-test-suite/032/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - Some text. voidmain(){constchar*a="Somespecialcharacterhere:";Testt;t.example();} More text. voidmain(){constchar*a="Somespecialcharacterhere:";Testt;t.example();} End. - - - diff --git a/tests/upstream-test-suite/032_include.cpp b/tests/upstream-test-suite/032_include.cpp deleted file mode 100644 index 2eddc57..0000000 --- a/tests/upstream-test-suite/032_include.cpp +++ /dev/null @@ -1,10 +0,0 @@ -// objective: test the \include and \includelineno commands -// check: indexpage.xml - -/** \mainpage - * Some text. - * \include example_test.cpp - * More text. - * \includelineno example_test.cpp - * End. - */ diff --git a/tests/upstream-test-suite/033/indexpage.xml b/tests/upstream-test-suite/033/indexpage.xml deleted file mode 100644 index 652e5de..0000000 --- a/tests/upstream-test-suite/033/indexpage.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - index - My Project - - - - Some text. - More visible text. - - - diff --git a/tests/upstream-test-suite/033_internal.dox b/tests/upstream-test-suite/033_internal.dox deleted file mode 100644 index 6e28f22..0000000 --- a/tests/upstream-test-suite/033_internal.dox +++ /dev/null @@ -1,12 +0,0 @@ -// objective: test the \internal and \endinternal commands (1) -// check: indexpage.xml - -/** \mainpage - * Some text. - * \internal - * Internal text. - * \endinternal - * More visible text. - * \internal - * More internal text. - */ diff --git a/tests/upstream-test-suite/034/indexpage.xml b/tests/upstream-test-suite/034/indexpage.xml deleted file mode 100644 index 0252b3c..0000000 --- a/tests/upstream-test-suite/034/indexpage.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - index - My Project - - - - Some text. - - Internal text. - - - A Section - Some text in the section 1. - - Internal text. - - A Subsection - Some text in the subsection. - - - Visible text in section 1. - - - Another Section - Visible text. - - - - diff --git a/tests/upstream-test-suite/034_internal.dox b/tests/upstream-test-suite/034_internal.dox deleted file mode 100644 index 01587a9..0000000 --- a/tests/upstream-test-suite/034_internal.dox +++ /dev/null @@ -1,21 +0,0 @@ -// objective: test the \internal and \endinternal commands (2) -// check: indexpage.xml -// config: INTERNAL_DOCS = YES - -/** \mainpage - * Some text. - * \internal - * Internal text. - * \endinternal - * \section s1 A Section - * Some text in the section 1. - * \internal - * Internal text. - * \subsection ss1 A Subsection - * Some text in the subsection. - * \endinternal - * Visible text in section 1. - * \section s2 Another Section - * Visible text. - */ - diff --git a/tests/upstream-test-suite/035/035__invariant_8c.xml b/tests/upstream-test-suite/035/035__invariant_8c.xml deleted file mode 100644 index b3d74bc..0000000 --- a/tests/upstream-test-suite/035/035__invariant_8c.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - 035_invariant.c - - - void - void func - (int p, int *q) - func - - int - p - - - int * - q - - - - - - - i+j=p - - - p>=0 - - - *q=2^(p+1) - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/035_invariant.c b/tests/upstream-test-suite/035_invariant.c deleted file mode 100644 index 28c08f8..0000000 --- a/tests/upstream-test-suite/035_invariant.c +++ /dev/null @@ -1,15 +0,0 @@ -// objective: test \invariant, \pre and \post commands -// check: 035__invariant_8c.xml - -/** \file */ - -/** \invariant i+j=p - * \pre p\>=0 - * \post *q=2^(p+1) - */ -void func(int p,int *q) -{ - int j = p, k=1, i; - for (i=0; i<=p; i++) j--,k=k*2; - *q = k; -} diff --git a/tests/upstream-test-suite/036/036__link_8c.xml b/tests/upstream-test-suite/036/036__link_8c.xml deleted file mode 100644 index c0dea58..0000000 --- a/tests/upstream-test-suite/036/036__link_8c.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - 036_link.c - Test - - - void - void func - (int p) - func - - int - p - - - - - A function - - - - - - - - - - See the function for more info. See the test class. - - - - diff --git a/tests/upstream-test-suite/036_link.c b/tests/upstream-test-suite/036_link.c deleted file mode 100644 index 901f660..0000000 --- a/tests/upstream-test-suite/036_link.c +++ /dev/null @@ -1,16 +0,0 @@ -// objective: test \link command -// check: 036__link_8c.xml - -/** \file - * See \link func() the function\endlink for more info. - * See the \link Test test\endlink class. - */ - -/** A function - */ -void func(int p); - -/** A test */ -class Test -{ -}; diff --git a/tests/upstream-test-suite/037/class_receiver.xml b/tests/upstream-test-suite/037/class_receiver.xml deleted file mode 100644 index edb688a..0000000 --- a/tests/upstream-test-suite/037/class_receiver.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Receiver - - - void - void Receiver::Command - (int commandId) - Command - - int - commandId - - - - - Executable a command on the server - - - - - - - - - - Receiver class. Can be used to receive and execute commands. After execution of a command, the receiver will send an acknowledgement - Receiver,Sender; - Receiver<-Sender [label="Command()", URL="\ref Command()"]; - Receiver->Sender [label="Ack()", URL="\ref Sender::Ack()", ID="1"]; - - - - - - - Receiver - Command - - - - diff --git a/tests/upstream-test-suite/037/class_sender.xml b/tests/upstream-test-suite/037/class_sender.xml deleted file mode 100644 index 0f1996d..0000000 --- a/tests/upstream-test-suite/037/class_sender.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Sender - - - void - void Sender::Ack - (bool ok) - Ack - - bool - ok - - - - - Acknowledgement from server - - - - - - - - - - Sender class. Can be used to send a command to the server. The receiver will acknowledge the command by calling Ack(). - Sender,Receiver; - Sender->Receiver [label="Command()", URL="\ref Receiver::Command()"]; - Sender<-Receiver [label="Ack()", URL="\ref Ack()", ID="1"]; - - - - - - - Sender - Ack - - - - diff --git a/tests/upstream-test-suite/037_msc.cpp b/tests/upstream-test-suite/037_msc.cpp deleted file mode 100644 index 84ffc55..0000000 --- a/tests/upstream-test-suite/037_msc.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// objective: test the \msc and \endmsc commands -// check: class_sender.xml -// check: class_receiver.xml - -/** Sender class. Can be used to send a command to the server. - * The receiver will acknowledge the command by calling Ack(). - * \msc - * Sender,Receiver; - * Sender->Receiver [label="Command()", URL="\ref Receiver::Command()"]; - * Sender<-Receiver [label="Ack()", URL="\ref Ack()", ID="1"]; - * \endmsc - */ -class Sender -{ - public: - /** Acknowledgement from server */ - void Ack(bool ok); -}; - -/** Receiver class. Can be used to receive and execute commands. - * After execution of a command, the receiver will send an acknowledgement - * \msc - * Receiver,Sender; - * Receiver<-Sender [label="Command()", URL="\ref Command()"]; - * Receiver->Sender [label="Ack()", URL="\ref Sender::Ack()", ID="1"]; - * \endmsc - */ -class Receiver -{ - public: - /** Executable a command on the server */ - void Command(int commandId); -}; diff --git a/tests/upstream-test-suite/038/indexpage.xml b/tests/upstream-test-suite/038/indexpage.xml deleted file mode 100644 index 2258113..0000000 --- a/tests/upstream-test-suite/038/indexpage.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - index - My Project - - - - Text -New line -Another line - - - diff --git a/tests/upstream-test-suite/038_n.dox b/tests/upstream-test-suite/038_n.dox deleted file mode 100644 index 617743c..0000000 --- a/tests/upstream-test-suite/038_n.dox +++ /dev/null @@ -1,7 +0,0 @@ -// objective: test the \n command -// check: indexpage.xml -/** \mainpage -Text\n -New line\n -Another line -*/ diff --git a/tests/upstream-test-suite/039/class_test.xml b/tests/upstream-test-suite/039/class_test.xml deleted file mode 100644 index 2a4796a..0000000 --- a/tests/upstream-test-suite/039/class_test.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - Test - -
    A group of functions.
    - - void - void Test::foo - () - foo - - - - foo function - - - - - - - void - void Test::bar - () - bar - - - - bar function - - - - - -
    - - - void - void Test::ungrouped - () - ungrouped - - - - ungrouped function - - - - - - - - A Test class. - - - More details about this class. - - - - - Test - bar - - - Test - foo - - - Test - ungrouped - - -
    -
    diff --git a/tests/upstream-test-suite/039_name.cpp b/tests/upstream-test-suite/039_name.cpp deleted file mode 100644 index f07b45c..0000000 --- a/tests/upstream-test-suite/039_name.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// objective: test the \name and \short commands -// check: class_test.xml - -/** \short A Test class. - * - * More details about this class. - */ -class Test -{ - public: - /** \name A group of functions. - * \{ - */ - - /** foo function */ - void foo(); - /** bar function */ - void bar(); - - /** \} */ - - /** ungrouped function */ - void ungrouped(); -}; - diff --git a/tests/upstream-test-suite/040/namespace_n_s.xml b/tests/upstream-test-suite/040/namespace_n_s.xml deleted file mode 100644 index 64beb23..0000000 --- a/tests/upstream-test-suite/040/namespace_n_s.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - NS - - - - A namespace - - - - diff --git a/tests/upstream-test-suite/040_namespace.cpp b/tests/upstream-test-suite/040_namespace.cpp deleted file mode 100644 index a90f377..0000000 --- a/tests/upstream-test-suite/040_namespace.cpp +++ /dev/null @@ -1,10 +0,0 @@ -// objective: test the \namespace command -// check: namespace_n_s.xml - -namespace NS -{ -} - -/** @namespace NS - * A namespace - */ diff --git a/tests/upstream-test-suite/041/class_test.xml b/tests/upstream-test-suite/041/class_test.xml deleted file mode 100644 index 57dbe37..0000000 --- a/tests/upstream-test-suite/041/class_test.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - Test - - - void - void Test::drawRect - (int, int, int, int) - drawRect - - int - x - - - int - y - - - int - w - - - int - h - - - - - This command draws a rectangle with a left upper corner at ( x , y ), width w and height h. - - - - - - - void - void Test::drawRect - (const Rect &r) - drawRect - - const Rect & - r - - - - - This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. - - - - - - - void - void Test::drawRect - (const Point &topLeft, const Point &bottomRight) - drawRect - - const Point & - topLeft - - - const Point & - bottomRight - - - - - This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. - More text. - - - - - - - - A short description. - - - More text. - - - - - Test - drawRect - - - Test - drawRect - - - Test - drawRect - - - - diff --git a/tests/upstream-test-suite/041_overload.cpp b/tests/upstream-test-suite/041_overload.cpp deleted file mode 100644 index e206acf..0000000 --- a/tests/upstream-test-suite/041_overload.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// objective: test the \overload command -// check: class_test.xml - -class Test -{ - public: - void drawRect(int,int,int,int); - void drawRect(const Rect &r); - void drawRect(const Point &topLeft,const Point &bottomRight); -}; - -void Test::drawRect(int x,int y,int w,int h) {} -void Test::drawRect(const Rect &r) {} -/*! \overload - * - * More text. - */ -void Test::drawRect(const Point &topLeft,const Point &bottomRight) {} - -/*! \class Test - * \brief A short description. - * - * More text. - */ - -/*! \fn void Test::drawRect(int x,int y,int w,int h) - * This command draws a rectangle with a left upper corner at ( \a x , \a y ), - * width \a w and height \a h. - */ - -/*! - * \overload void Test::drawRect(const Rect &r) - */ diff --git a/tests/upstream-test-suite/042/namespaceorg_1_1doxygen_1_1_test.xml b/tests/upstream-test-suite/042/namespaceorg_1_1doxygen_1_1_test.xml deleted file mode 100644 index 7ed33d5..0000000 --- a/tests/upstream-test-suite/042/namespaceorg_1_1doxygen_1_1_test.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - org::doxygen::Test - - - - A test package. - - - - diff --git a/tests/upstream-test-suite/042_package.java b/tests/upstream-test-suite/042_package.java deleted file mode 100644 index f46d55c..0000000 --- a/tests/upstream-test-suite/042_package.java +++ /dev/null @@ -1,8 +0,0 @@ -// objective: test the \package command -// check: namespaceorg_1_1doxygen_1_1_test.xml - -package org.doxygen.Test; - -/** @package org.doxygen.Test - * A test package. - */ diff --git a/tests/upstream-test-suite/043/another.xml b/tests/upstream-test-suite/043/another.xml deleted file mode 100644 index 2c2e61b..0000000 --- a/tests/upstream-test-suite/043/another.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - another - Another Page - - - - Another page's text. - - - diff --git a/tests/upstream-test-suite/043/mypage.xml b/tests/upstream-test-suite/043/mypage.xml deleted file mode 100644 index c9bd6d0..0000000 --- a/tests/upstream-test-suite/043/mypage.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - mypage - Page Title - Another Page - - - Section Title. - mypage_1mysect - - - Subsection Title. - mypage_1mysubsect - - - Subsubsection Title. - mypage_1mysubsubsect - - - Paragraph Title. - mypage_1mypara - - - - - - - - - Another Section Title. - mypage_1mysect2 - - - - Page brief description. - - - Page brief description. - Text at page level. See Section Title. for more. - - Section Title. - Text at section level. See Subsection Title. for more. - - Subsection Title. - Text at subsection level. see Subsubsection Title. for more. - - Subsubsection Title. - Text at subsubsection level. Paragraph Title. for more. - - Paragraph Title. - Text at paragraph level. Another Section Title. for more. - - - - - - Another Section Title. - Text at section level. - - Another Page - - - - - diff --git a/tests/upstream-test-suite/043_page.dox b/tests/upstream-test-suite/043_page.dox deleted file mode 100644 index 9ac5c0e..0000000 --- a/tests/upstream-test-suite/043_page.dox +++ /dev/null @@ -1,26 +0,0 @@ -// objective: test \page, \subpage, \*section, \paragraph, and \ref commands -// check: mypage.xml -// check: another.xml -/** \page mypage Page Title - * \brief Page brief description. - * - * @tableofcontents{xml,html,latex,docbook} - * - * Text at page level. See \ref mysect for more. - * \section mysect Section Title. - * Text at section level. See \ref mysubsect for more. - * \subsection mysubsect Subsection Title. - * Text at subsection level. see \ref mysubsubsect for more. - * \subsubsection mysubsubsect Subsubsection Title. - * Text at subsubsection level. \ref mypara for more. - * \paragraph mypara Paragraph Title. - * Text at paragraph level. \ref mysect2 for more. - * \section mysect2 Another Section Title. - * Text at section level. - * - * \subpage another - */ - -/** \page another Another Page - * Another page's text. - */ diff --git a/tests/upstream-test-suite/044/struct_s.xml b/tests/upstream-test-suite/044/struct_s.xml deleted file mode 100644 index aefd50d..0000000 --- a/tests/upstream-test-suite/044/struct_s.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - - S - 044_section.h - - - int - int S::pub1 - - pub1 - - - - public field - - - - - - - int - int S::pub2 - - pub2 - - - - another public field - - - - - - - - - int - int S::pro1 - - pro1 - - - - protected field - - - - - - - int - int S::pro2 - - pro2 - - - - another protected field - - - - - - - - - int - int S::pri1 - - pri1 - - - - private field - - - - - - - int - int S::pri2 - - pri2 - - - - another private field - - - - - - - - - - A struct - - - - - S - pri1 - - - S - pri2 - - - S - pro1 - - - S - pro2 - - - S - pub1 - - - S - pub2 - - - - diff --git a/tests/upstream-test-suite/044_section.h b/tests/upstream-test-suite/044_section.h deleted file mode 100644 index ef48051..0000000 --- a/tests/upstream-test-suite/044_section.h +++ /dev/null @@ -1,28 +0,0 @@ -// objective: test the \(public|protected|private)section commands -// check: struct_s.xml - -/** A struct */ -struct S -{ - /** \publicsection */ - - /** public field */ - int pub1; - /** another public field */ - int pub2; - - /** \protectedsection */ - - /** protected field */ - int pro1; - /** another protected field */ - int pro2; - - /** \privatesection */ - - /** private field */ - int pri1; - /** another private field */ - int pri2; -}; - diff --git a/tests/upstream-test-suite/045/indexpage.xml b/tests/upstream-test-suite/045/indexpage.xml deleted file mode 100644 index 294ceb8..0000000 --- a/tests/upstream-test-suite/045/indexpage.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - index - My Project - - - - - - First Item - Second Item - Third Item - - - Some filler text. - - First Section - Section 1 text. - - - - diff --git a/tests/upstream-test-suite/045_refitem.dox b/tests/upstream-test-suite/045_refitem.dox deleted file mode 100644 index a6ba13b..0000000 --- a/tests/upstream-test-suite/045_refitem.dox +++ /dev/null @@ -1,20 +0,0 @@ -// objective: test \refitem, \secreflist, \endsecreflist -// check: indexpage.xml -/** \mainpage - * \secreflist - * \refitem item1 First Item - * \refitem item2 Second Item - * \refitem item3 Third Item - * \endsecreflist - * - * Some filler text. - * - * \section item1 First Section - * Section 1 text. - */ - -/** \page item2 A page - * Some text. - * \section item3 Another Section. - * Section 2 text. - */ diff --git a/tests/upstream-test-suite/046/046__related_8cpp.xml b/tests/upstream-test-suite/046/046__related_8cpp.xml deleted file mode 100644 index 9f5eab6..0000000 --- a/tests/upstream-test-suite/046/046__related_8cpp.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - 046_related.cpp - Test - - - void - void another - () - another - - - - Another function - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/046/class_test.xml b/tests/upstream-test-suite/046/class_test.xml deleted file mode 100644 index 9a1bd9c..0000000 --- a/tests/upstream-test-suite/046/class_test.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - Test - - - void - void Test::method - () - method - - - - A method - - - - - - - - - void - void function - () - function - - - - A function. - - - - another() - - - - - - - - - - void - void another - () - another - - - - Another function - - - - - - - - - - A test class Test::method() - - - - - - Test - another - - - Test - function - - - Test - method - - - - diff --git a/tests/upstream-test-suite/046_related.cpp b/tests/upstream-test-suite/046_related.cpp deleted file mode 100644 index a8deb5a..0000000 --- a/tests/upstream-test-suite/046_related.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// objective: test the \related, \relatedalso, \see, and \sa commands -// check: class_test.xml -// check: 046__related_8cpp.xml - -/** @file */ - -/** A test class - * @see Test::method() - */ -class Test -{ - public: - /** A method */ - void method(); -}; - -/*! - * A function. - * \related Test - * \sa another() - */ -void function(); - -/*! - * Another function - * \relatedalso Test - */ -void another(); diff --git a/tests/upstream-test-suite/047/047__return_8cpp.xml b/tests/upstream-test-suite/047/047__return_8cpp.xml deleted file mode 100644 index b57a0c3..0000000 --- a/tests/upstream-test-suite/047/047__return_8cpp.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - 047_return.cpp - - - int - int func1 - () - func1 - - - - Test function 1. A integer. - - - - - - - - int - int func2 - () - func2 - - - - Test function 2. A integer. - - - - - - - - int - int func3 - () - func3 - - - - Test function 3. A integer. - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/047_return.cpp b/tests/upstream-test-suite/047_return.cpp deleted file mode 100644 index 7585986..0000000 --- a/tests/upstream-test-suite/047_return.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// objective: test the \result, \return, and \returns commands -// check: 047__return_8cpp.xml - -/** \file */ - -/** Test function 1. - * \result A integer. - */ -int func1(); - -/** Test function 2. - * \return A integer. - */ -int func2(); - -/** Test function 3. - * \returns A integer. - */ -int func3(); - diff --git a/tests/upstream-test-suite/048/048__showinit_8c.xml b/tests/upstream-test-suite/048/048__showinit_8c.xml deleted file mode 100644 index 4cc5717..0000000 --- a/tests/upstream-test-suite/048/048__showinit_8c.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - 048_showinit.c - - - int - int var1 - - var1 - - - - a variable with initializer hidden due to MAX_INITIALIZER_LINES - - - - - - - int - int var2 - - var2 - = 20 - - - - a variable with initializer visible - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/048_showinit.c b/tests/upstream-test-suite/048_showinit.c deleted file mode 100644 index a37865d..0000000 --- a/tests/upstream-test-suite/048_showinit.c +++ /dev/null @@ -1,13 +0,0 @@ -// objective: test the \showinit command -// check: 048__showinit_8c.xml -// config: MAX_INITIALIZER_LINES = 0 - -/** \file */ - -/** a variable with initializer hidden due to MAX_INITIALIZER_LINES */ -int var1 = 10; - -/** a variable with initializer visible - * \showinitializer - */ -int var2 = 20; diff --git a/tests/upstream-test-suite/049/indexpage.xml b/tests/upstream-test-suite/049/indexpage.xml deleted file mode 100644 index f7cb48c..0000000 --- a/tests/upstream-test-suite/049/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - A bubble sort algorithm First get the inputs for(i=0;i<n;i++){printf("Array[%d]=",i);scanf("%d",&arr[i]);}Then do the bubbling for(i=0;i<n;i++){for(j=0;j<n-i-1;j++){if(arr[j]>arr[j+1])//SwappingConditionisChecked{temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}Then write the result for(i=0;i<n;i++){printf("%4d",arr[i]);} - - - diff --git a/tests/upstream-test-suite/049_snippet.cpp b/tests/upstream-test-suite/049_snippet.cpp deleted file mode 100644 index 9c5f18b..0000000 --- a/tests/upstream-test-suite/049_snippet.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// objective: test the \snippet command -// check: indexpage.xml - -/** \mainpage - * A bubble sort algorithm - * First get the inputs - * \snippet snippet_test.cpp input - * Then do the bubbling - * \snippet snippet_test.cpp bubble - * Then write the result - * \snippet snippet_test.cpp output - */ diff --git a/tests/upstream-test-suite/050/indexpage.xml b/tests/upstream-test-suite/050/indexpage.xml deleted file mode 100644 index 2f183fe..0000000 --- a/tests/upstream-test-suite/050/indexpage.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - index - My Project - - - - Some normal text. A verbatim section with a /* C comment */ in it - Showing a file as verbatim @book{knuth79, - author = "Donald E. Knuth", - title = "Tex and Metafont, New Directions in Typesetting", - year = "1979", - publisher = "American Mathematical Society and Digital Press", - address = "Stanford" -} - More text after the verbatim section. - - - diff --git a/tests/upstream-test-suite/050_verbatim.dox b/tests/upstream-test-suite/050_verbatim.dox deleted file mode 100644 index 40c75a5..0000000 --- a/tests/upstream-test-suite/050_verbatim.dox +++ /dev/null @@ -1,13 +0,0 @@ -// objective: test \verbatim and \verbinclude commands -// check: indexpage.xml -/** -\mainpage -Some normal text. -\verbatim -A verbatim section with a /* C comment */ in it -\endverbatim -Showing a file as verbatim -\verbinclude sample.bib -More text after the verbatim section. - -*/ diff --git a/tests/upstream-test-suite/051/indexpage.xml b/tests/upstream-test-suite/051/indexpage.xml deleted file mode 100644 index 50a6ff8..0000000 --- a/tests/upstream-test-suite/051/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - Dollar $ At @ Backslash \ Ampersand & Less < Greater > Hash # Percent % Quote " Dot . Double colon :: Pipe | Plus + Minus - - - - diff --git a/tests/upstream-test-suite/051_escape.dox b/tests/upstream-test-suite/051_escape.dox deleted file mode 100644 index 2165564..0000000 --- a/tests/upstream-test-suite/051_escape.dox +++ /dev/null @@ -1,20 +0,0 @@ -// objective: test various characters that should be escaped -// check: indexpage.xml -/** -\mainpage -Dollar \$ -At \@ -Backslash \\ -Ampersand \& -Less \< -Greater \> -Hash \# -Percent \% -Quote \" -Dot \. -Double colon \:: -Pipe \| -Plus \+ -Minus \- - -*/ diff --git a/tests/upstream-test-suite/052/indexpage.xml b/tests/upstream-test-suite/052/indexpage.xml deleted file mode 100644 index d952781..0000000 --- a/tests/upstream-test-suite/052/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - This is English. Output for all languages. - - - diff --git a/tests/upstream-test-suite/052_tilde.dox b/tests/upstream-test-suite/052_tilde.dox deleted file mode 100644 index 81a8c9b..0000000 --- a/tests/upstream-test-suite/052_tilde.dox +++ /dev/null @@ -1,9 +0,0 @@ -// objective: test \~ command -// check: indexpage.xml -/** -\mainpage -\~english This is English. -\~dutch Dit is Nederlands. -\~german Dies ist Deutsch. -\~ Output for all languages. -*/ diff --git a/tests/upstream-test-suite/053/indexpage.xml b/tests/upstream-test-suite/053/indexpage.xml deleted file mode 100644 index 211bb9a..0000000 --- a/tests/upstream-test-suite/053/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - Dit is Nederlands. Output for all languages. - - - diff --git a/tests/upstream-test-suite/053_tilde.dox b/tests/upstream-test-suite/053_tilde.dox deleted file mode 100644 index 73cafa3..0000000 --- a/tests/upstream-test-suite/053_tilde.dox +++ /dev/null @@ -1,10 +0,0 @@ -// objective: test \~ command with non default OUTPUT_LANGUAGE -// check: indexpage.xml -// config: OUTPUT_LANGUAGE = Dutch -/** -\mainpage -\~english This is English. -\~dutch Dit is Nederlands. -\~german Dies ist Deutsch. -\~ Output for all languages. -*/ diff --git a/tests/upstream-test-suite/054/054__parblock_8cpp.xml b/tests/upstream-test-suite/054/054__parblock_8cpp.xml deleted file mode 100644 index 5567908..0000000 --- a/tests/upstream-test-suite/054/054__parblock_8cpp.xml +++ /dev/null @@ -1,193 +0,0 @@ - - - - 054_parblock.cpp - - - void - void function - (int client, int *resource, int parblock, int *test, int p) - function - - int - client - - - int * - resource - - - int - parblock - - - int * - test - - - int - p - - - - - call by target-specific code to manage resources required by the client. - - - - - client - - - ID of client requesting resource. - - - - - resource - - - Requested resource - - - - - parblock - - - - - This is a test for the @parblock command. - A list if values for the parblock param:Item 1. This is short one-line description.Item 2. This is a long bullet item; sometimes they wrap on multiple lines like this one. - - This is the second paragraph description for the @parblock parameter. Always end the text inside the @parblock command with an @endparblock command. - - - - - - - test - - - This is a test parameter for this function to see if it is included in the parameter table - - - - - p - - - - - First paragraph of the param description. - Second paragraph of the param description. - - - - - - - - - - - - - void - void function_2 - (int client, int *resource, int parblock, int *test, int p) - function_2 - - int - client - - - int * - resource - - - int - parblock - - - int * - test - - - int - p - - - - - call by target-specific code to manage resources required by the client. - - - - - client - - - ID of client requesting resource. - - - - - resource - - - Requested resource - - - - - parblock - - - - - This is a test for the @parblock command. - A list if values for the parblock param:Item 1. This is short one-line description.Item 2. This is a long bullet item; sometimes they wrap on multiple lines like this one. - - This is the second paragraph description for the @parblock parameter. Always end the text inside the @parblock command with an @endparblock command. - - - - - - - test - - - This is a test parameter for this function to see if it is included in the parameter table - - - - - p - - - - - First paragraph of the param description. Second paragraph of the param description. - - - - - - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/054_parblock.cpp b/tests/upstream-test-suite/054_parblock.cpp deleted file mode 100644 index 4f303c6..0000000 --- a/tests/upstream-test-suite/054_parblock.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// objective: test the \parblock command -// check: 054__parblock_8cpp.xml - -/** @file */ - -/** - call by target-specific code to manage resources required by the client. - - @param[in] client ID of client requesting resource. - @param[out] resource Requested resource - @param[in] parblock @parblock This is a test for the \@parblock - command. - - A list if values for the parblock param: - - Item 1. This is short one-line description. - - Item 2. This is a long bullet item; - sometimes they wrap on multiple lines like this - one. - - This is the second paragraph description for the - \@parblock parameter. Always end the text inside - the \@parblock command with an \@endparblock - command. - @endparblock - @param[out] test This is a test parameter for this function to see if - it is included in the parameter table - @param[in] p - @parblock First paragraph of the param description. - - Second paragraph of the param description. - @endparblock - */ -void function(int client,int *resource,int parblock,int *test,int p); -/** - call by target-specific code to manage resources required by the client. - - @param[in] client ID of client requesting resource. - @param[out] resource Requested resource - @param[in] parblock @parblock This is a test for the \@parblock - command. - - A list if values for the parblock param: - - Item 1. This is short one-line description. - - Item 2. This is a long bullet item; - sometimes they wrap on multiple lines like this - one. - - This is the second paragraph description for the - \@parblock parameter. Always end the text inside - the \@parblock command with an \@endparblock - command. - @endparblock - @param[out] test This is a test parameter for this function to see if - it is included in the parameter table - @param[in] p @parblock First paragraph of the param description. - - Second paragraph of the param description. - @endparblock - */ -void function_2(int client,int *resource,int parblock,int *test,int p); diff --git a/tests/upstream-test-suite/055/md_055_markdown.xml b/tests/upstream-test-suite/055/md_055_markdown.xml deleted file mode 100644 index 4bdd2e2..0000000 --- a/tests/upstream-test-suite/055/md_055_markdown.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - md_055_markdown - 055_markdown - - - - - Foo - - - Bar - - - Inline link - - - Reference link - - - Baz - - More text - - Upper-cased reference link on last line - - Dash - NDash MDash EDash - ENDash -- EMDash --- E3Dash --- - - - diff --git a/tests/upstream-test-suite/055_markdown.md b/tests/upstream-test-suite/055_markdown.md deleted file mode 100644 index 375040e..0000000 --- a/tests/upstream-test-suite/055_markdown.md +++ /dev/null @@ -1,24 +0,0 @@ - - -# Foo - -## Bar - -[Inline link](http://example.com/inline) - -[Reference link][1] - -[1]: http://example.com/reference - -## Baz - -More text - -[Upper-cased reference link on last line][U] - -[U]: http://example.com/last-line - -Dash - NDash -- MDash --- EDash \- ENDash \-- EMDash \--- E3Dash \-\-\- diff --git a/tests/upstream-test-suite/056/indexpage.xml b/tests/upstream-test-suite/056/indexpage.xml deleted file mode 100644 index 55240e9..0000000 --- a/tests/upstream-test-suite/056/indexpage.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - index - My Project - - - - Some text. \section{Hello world} - More text. - - - diff --git a/tests/upstream-test-suite/056_latexinclude.dox b/tests/upstream-test-suite/056_latexinclude.dox deleted file mode 100644 index 021b2f7..0000000 --- a/tests/upstream-test-suite/056_latexinclude.dox +++ /dev/null @@ -1,7 +0,0 @@ -// objective: test the \latexinclude command -// check: indexpage.xml -/** \mainpage - * Some text. - * \latexinclude sample.tex - * More text. - */ diff --git a/tests/upstream-test-suite/057/057__caller__graphs_8tcl.xml b/tests/upstream-test-suite/057/057__caller__graphs_8tcl.xml deleted file mode 100644 index 1046e30..0000000 --- a/tests/upstream-test-suite/057/057__caller__graphs_8tcl.xml +++ /dev/null @@ -1,92 +0,0 @@ - - - - 057_caller_graphs.tcl - bar - foo - 1::1::1 - 1 - 1::1 - 2::2::2::2::2 - 2 - 2::2 - 2::2::2 - 2::2::2::2 - - - - baz - args - baz - - - - - - - - - - - bar - args - bar - - - - - - - - 1::test3 - - - - next - args - next - - - - - - - - 2::next - - - - master - args - master - - - - - - - - inFileB - - - - inFileA - args - inFileA - - - - - - - - inFileB - - - - - - - - - diff --git a/tests/upstream-test-suite/057/__057__caller__graphs_8tcl.xml b/tests/upstream-test-suite/057/__057__caller__graphs_8tcl.xml deleted file mode 100644 index a71e7b5..0000000 --- a/tests/upstream-test-suite/057/__057__caller__graphs_8tcl.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - _057_caller_graphs.tcl - - - - inFileB - args - inFileB - - - - - - - - inFileA - master - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespace1.xml b/tests/upstream-test-suite/057/namespace1.xml deleted file mode 100644 index 33d073d..0000000 --- a/tests/upstream-test-suite/057/namespace1.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - 1 - 1::1 - - - - 1::baz - args - baz - - - - - - - - test1 - test5 - - - - 1::bar - args - bar - - - - - - - - test2 - - - - 1::test1 - args - test1 - - - - - - - - baz - - - - 1::test2 - args - test2 - - - - - - - - bar - - - - 1::test3 - args - test3 - - - - - - - - bar - - - - 1::test4 - args - test4 - - - - - - - - 1::1::bar - - - - 1::test5 - args - test5 - - - - - - - - baz - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespace1_1_11.xml b/tests/upstream-test-suite/057/namespace1_1_11.xml deleted file mode 100644 index e13e261..0000000 --- a/tests/upstream-test-suite/057/namespace1_1_11.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - 1::1 - 1::1::1 - - - - 1::1::bar - args - bar - - - - - - - - 1::test4 - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespace1_1_11_1_11.xml b/tests/upstream-test-suite/057/namespace1_1_11_1_11.xml deleted file mode 100644 index 55b7838..0000000 --- a/tests/upstream-test-suite/057/namespace1_1_11_1_11.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - 1::1::1 - - - - 1::1::1::bar - args - bar - - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespace2.xml b/tests/upstream-test-suite/057/namespace2.xml deleted file mode 100644 index a8a9bc6..0000000 --- a/tests/upstream-test-suite/057/namespace2.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - 2 - 2::2 - - - - 2::next - args - next - - - - - - - - 2::2::next - next - 2::2::2::2::2::next - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespace2_1_12.xml b/tests/upstream-test-suite/057/namespace2_1_12.xml deleted file mode 100644 index a188f00..0000000 --- a/tests/upstream-test-suite/057/namespace2_1_12.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - 2::2 - 2::2::2 - - - - 2::2::next - args - next - - - - - - - - 2::2::2::next - 2::next - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespace2_1_12_1_12.xml b/tests/upstream-test-suite/057/namespace2_1_12_1_12.xml deleted file mode 100644 index e83b3fd..0000000 --- a/tests/upstream-test-suite/057/namespace2_1_12_1_12.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - 2::2::2 - 2::2::2::2 - - - - 2::2::2::next - args - next - - - - - - - - 2::2::2::2::next - 2::2::next - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12.xml b/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12.xml deleted file mode 100644 index 83c2a73..0000000 --- a/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - 2::2::2::2 - 2::2::2::2::2 - - - - 2::2::2::2::next - args - next - - - - - - - - 2::2::2::2::2::next - 2::2::2::next - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12_1_12.xml b/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12_1_12.xml deleted file mode 100644 index 9222625..0000000 --- a/tests/upstream-test-suite/057/namespace2_1_12_1_12_1_12_1_12.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - 2::2::2::2::2 - - - - 2::2::2::2::2::next - args - next - - - - - - - - 2::next - 2::2::2::2::next - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespacebar.xml b/tests/upstream-test-suite/057/namespacebar.xml deleted file mode 100644 index e16966e..0000000 --- a/tests/upstream-test-suite/057/namespacebar.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - bar - - - - bar::slave - - slave - - - - - - - - baz - foo::master - - - - bar::baz - - baz - - - - - - - - bazbaz - slave - - - - bar::bazbaz - - bazbaz - - - - - - - - baz - - - - - - - - - diff --git a/tests/upstream-test-suite/057/namespacefoo.xml b/tests/upstream-test-suite/057/namespacefoo.xml deleted file mode 100644 index 8d0ac75..0000000 --- a/tests/upstream-test-suite/057/namespacefoo.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - foo - - - - foo::master - - master - - - - - - - - bar::slave - - - - - - - - - diff --git a/tests/upstream-test-suite/057_caller_graphs.tcl b/tests/upstream-test-suite/057_caller_graphs.tcl deleted file mode 100644 index 464d8aa..0000000 --- a/tests/upstream-test-suite/057_caller_graphs.tcl +++ /dev/null @@ -1,155 +0,0 @@ -#// objective: test for completeness and correctness of references/referencedby relations -#// check: 057__caller__graphs_8tcl.xml -#// check: __057__caller__graphs_8tcl.xml -#// check: namespacebar.xml -#// check: namespacefoo.xml -#// check: namespace1.xml -#// check: namespace1_1_11.xml -#// check: namespace1_1_11_1_11.xml -#// check: namespace2.xml -#// check: namespace2_1_12.xml -#// check: namespace2_1_12_1_12.xml -#// check: namespace2_1_12_1_12_1_12.xml -#// check: namespace2_1_12_1_12_1_12_1_12.xml -#// config: EXTRACT_ALL = yes -#// config: INLINE_SOURCES = no -#// config: REFERENCED_BY_RELATION = yes -#// config: REFERENCES_RELATION = yes -#// config: INPUT = $INPUTDIR/057_caller_graphs.tcl $INPUTDIR/_057_caller_graphs.tcl -# config: HAVE_DOT = yes -# config: CALLER_GRAPH = yes -# config: CALL_GRAPH = yes -# config: GENERATE_HTML = yes - -# This is a stripped down example from my code. -# Doxygen 1.8.7 generates the correct relations (xml) -# but caller graphs will be incomplete. -# It does not generate any relations at all if INLINE_SOURCES = no. -namespace eval bar {} -proc bar::slave { } { - array set info [info frame 0]; puts -nonewline ->$info(proc) - if {1} then { - bar::baz - } - return -} -proc bar::baz {} { - array set info [info frame 0]; puts -nonewline ->$info(proc) - bar::bazbaz -} -proc bar::bazbaz {} { - array set info [info frame 0]; puts -nonewline ->$info(proc) -} -namespace eval foo {} -proc foo::master { } { - array set info [info frame 0]; puts -nonewline $info(proc) - bar::slave - return -} -# -# now we check tcl's rules: from the help -# NAME RESOLUTION -#... Command names are also always resolved by looking in the current -#namespace first. If not found there, they are searched for in every namespace on -#the current namespace's command path (which is empty by default). If not found -#there, command names are looked up in the global namespace (or, failing that, -#are processed by the unknown command.) ... -# -namespace eval ::1::1::1 {} -proc ::baz args { - array set info [info frame 0]; puts -nonewline ->$info(proc) -} -proc ::1::baz args { - array set info [info frame 0]; puts -nonewline ->$info(proc) -} -proc ::bar args { - array set info [info frame 0]; puts -nonewline ->$info(proc) -} -proc ::1::bar args { - array set info [info frame 0]; puts -nonewline ->$info(proc) -} -proc ::1::1::bar args { - array set info [info frame 0]; puts -nonewline ->$info(proc) -} -proc ::1::1::1::bar args { - array set info [info frame 0]; puts -nonewline ->$info(proc) -} -proc ::1::test1 args { - array set info [info frame 0]; puts -nonewline $info(proc) - baz -} -proc ::1::test2 args { - array set info [info frame 0]; puts -nonewline $info(proc) - bar -} -proc ::1::test3 args { - array set info [info frame 0]; puts -nonewline $info(proc) - ::bar -} -proc ::1::test4 args { - array set info [info frame 0]; puts -nonewline $info(proc) - 1::bar -} -proc ::1::test5 args { - array set info [info frame 0]; puts -nonewline $info(proc) - 1::baz -} -# -# funny example, do you see the infinite loop? -# we stop before the interpreter crashes -set ::countdown 10 -namespace eval ::2::2::2::2::2 {} -proc ::next args { - array set info [info frame 0]; puts $info(proc) - 2::next -} -proc ::2::next args { - array set info [info frame 0]; puts $info(proc) - incr ::countdown -1 - if {$::countdown>0} then { - 2::next - } else { - puts "stop after 10 rounds." - } -} -proc ::2::2::next args { - array set info [info frame 0]; puts $info(proc) - 2::next -} -proc ::2::2::2::next args { - array set info [info frame 0]; puts $info(proc) - 2::next -} -proc ::2::2::2::2::next args { - array set info [info frame 0]; puts $info(proc) - 2::next -} -proc ::2::2::2::2::2::next args { - array set info [info frame 0]; puts $info(proc) - 2::next -} -# -# cross check with two files -# If doxygen did not do two passes, then xrefs would depend on file order -# and would be incomplete. -source _057_caller_graphs.tcl -proc master args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - inFileB - return -} -proc inFileA args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - return -} -# now, check with tcl what is called -foo::master -puts "" -foreach proc [lsort [info procs ::1::test?]] { - $proc - puts "" -} -::next -master -exit - diff --git a/tests/upstream-test-suite/058/058__bracket__recursion_8tcl.xml b/tests/upstream-test-suite/058/058__bracket__recursion_8tcl.xml deleted file mode 100644 index 0381b83..0000000 --- a/tests/upstream-test-suite/058/058__bracket__recursion_8tcl.xml +++ /dev/null @@ -1,384 +0,0 @@ - - - - 058_bracket_recursion.tcl - - - - Invoked - args - Invoked - - should be reference by every proc below - - - - - - - a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p - q - r - s - t - y - z - - - - NotInvoked - args - NotInvoked - - must not be reference by every proc below - - - - - - - - - - a - args - a - - - - - - - - Invoked - - - - b - args - b - - - - - - - - Invoked - - - - c - args - c - - - - - - - - Invoked - - - - d - args - d - - - - - - - - Invoked - - - - e - args - e - - - - - - - - Invoked - - - - f - args - f - - - - - - - - Invoked - - - - g - args - g - - - - - - - - Invoked - - - - h - args - h - - - - - - - - Invoked - - - - i - args - i - - - - - - - - Invoked - - - - j - args - j - - - - - - - - Invoked - - - - k - args - k - - - - - - - - Invoked - - - - l - args - l - - - - - - - - Invoked - - - - m - args - m - - - - - - - - Invoked - - - - n - args - n - - - - - - - - Invoked - - - - o - args - o - - - - - - - - Invoked - - - - $NotInvoked - args - $NotInvoked - - - - - - - - - - - p - args - p - - - - - - - - Invoked - - - - q - args - q - - - - - - - - Invoked - - - - r - args - r - - - - - - - - Invoked - - - - s - args - s - - - - - - - - Invoked - - - - t - args - t - - - - - - - - Invoked - - - - y - - y - - - - - - - - Invoked - - - - z - - z - - - - - - - - Invoked - - - - - - - - - diff --git a/tests/upstream-test-suite/058_bracket_recursion.tcl b/tests/upstream-test-suite/058_bracket_recursion.tcl deleted file mode 100644 index 2ecd673..0000000 --- a/tests/upstream-test-suite/058_bracket_recursion.tcl +++ /dev/null @@ -1,157 +0,0 @@ -#// objective: tests processing of commands inside brackets [], only references/referencedby relations are relevant -#// check: 058__bracket__recursion_8tcl.xml -#// config: REFERENCED_BY_RELATION = yes -#// config: REFERENCES_RELATION = yes -#// config: EXTRACT_ALL = yes -#// config: INLINE_SOURCES = yes - -## -# \brief should be reference by every proc below -proc Invoked args { - puts "Procedure \"Invoked\" is invoked indeed. Ok." - return $args -} -## -# \brief must not be reference by every proc below -proc NotInvoked args { - puts "Procedure \"NotInvoked\" is invoked. Not Ok!" - return $args -} -# -# check if call references work at all -proc a args { - Invoked NotInvoked - return -} -# -# check brackets with various quoting, bracing -proc b args { - set r [Invoked] - set r [list \[NotInvoked \]] - return -} -proc c args { - set r \{[Invoked]\} - set r {[NotInvoked]} - return -} -proc d args { - set r "[Invoked]" - set r "\[NotInvoked \]" - return -} -proc e args { - set r [list \[NotInvoked [Invoked]\]] - return -} -proc f args { - set r [list [Invoked \[NotInvoked \]]] - return -} -proc g args { - set r "{[Invoked]}" - set r "{\[NotInvoked \]}" - return -} -proc h args { - [Invoked set] r {[NotInvoked]} - return -} -# check brackets in tcl commands containing script arguments -# -# example generated according to -# https://groups.google.com/d/msg/comp.lang.tcl/G5-mc3GiIyY/e-AVD9t7xMkJ -proc i args { - foreach item [Invoked] { - return - } -} -proc j args { - foreach [Invoked item] [list one two three] { - } - return -} -proc k args { - while {[Invoked 0]} { - } -} -proc l args { - for {} {[Invoked 0]} {} { - } -} -proc m args { - if {[Invoked 1]} { - } -} -proc n args { - if [Invoked 1] { - } -} -proc o args { - if {0} { - } elseif {[Invoked 0]} { - } -} -# these are really nasty examples -# they shows, that the condition argument may not be parsed as a script -set NotInvoked \$NotInvoked -proc $NotInvoked args { - puts "Procedure \"\$NotInvoked\" is invoked. Not Ok!" - return $args -} -proc p args { - set NotInvoked \$NotInvoked - if {$NotInvoked eq [Invoked 1]} { - } - return -} -proc q args { - set NotInvoked \$NotInvoked - if {0} { - } elseif {$NotInvoked eq [Invoked 1]} { - } - return -} -proc r args { - set NotInvoked \$NotInvoked - while {$NotInvoked eq [Invoked 1]} { - } - return -} -proc s args { - set NotInvoked \$NotInvoked - for {} {$NotInvoked eq [Invoked 1]} {} { - } - return -} -# dangling open brackets should not confuse the scanner -proc t args { - set foo ]]]][Invoked] - return -} -# Example according to -# https://bugzilla.gnome.org/show_bug.cgi?id=729135 -# | -# Note the subtle difference in this | whitespace -# V -proc y {} { - set classifier_state {{bphy} } - if { ($classifier_state == {{bphy} }) } { - Invoked - } -} -proc z {} { - set classifier_state {{bphy} } - if { ($classifier_state == {{bphy} } ) } { - Invoked - } -} -# -# call all single letter procs -# let tcl check what is called and what is not called -foreach p [info procs ?] { - puts "Check procedure \"$p\"" - $p -} -exit - diff --git a/tests/upstream-test-suite/059/059__command__catch_8tcl.xml b/tests/upstream-test-suite/059/059__command__catch_8tcl.xml deleted file mode 100644 index b5e5c96..0000000 --- a/tests/upstream-test-suite/059/059__command__catch_8tcl.xml +++ /dev/null @@ -1,191 +0,0 @@ - - - - 059_command_catch.tcl - - - - Invoked - args - Invoked - - should be reference by every proc below - - - - - - - a - b - c - d - e - f - g - h - i - j - - - - NotInvoked - args - NotInvoked - - must not be reference by every proc below - - - - - - - - - - a - args - a - - - - - - - - Invoked - - - - b - args - b - - - - - - - - Invoked - - - - c - args - c - - - - - - - - Invoked - - - - d - args - d - - - - - - - - Invoked - - - - e - args - e - - - - - - - - Invoked - - - - f - args - f - - - - - - - - Invoked - - - - g - args - g - - - - - - - - Invoked - - - - h - args - h - - - - - - - - Invoked - - - - i - args - i - - - - - - - - Invoked - - - - j - args - j - - - - - - - - Invoked - - - - - - - - - diff --git a/tests/upstream-test-suite/059_command_catch.tcl b/tests/upstream-test-suite/059_command_catch.tcl deleted file mode 100644 index 4227da7..0000000 --- a/tests/upstream-test-suite/059_command_catch.tcl +++ /dev/null @@ -1,87 +0,0 @@ -#// objective: tests processing of catch/eval, only references/referencedby relations are relevant -#// check: 059__command__catch_8tcl.xml -#// config: REFERENCED_BY_RELATION = yes -#// config: REFERENCES_RELATION = yes -#// config: EXTRACT_ALL = yes -#// config: INLINE_SOURCES = no - -## -# \brief should be reference by every proc below -proc Invoked args { - puts "Procedure \"Invoked\" is invoked indeed. Ok." - return $args -} -## -# \brief must not be reference by every proc below -proc NotInvoked args { - puts "Procedure \"NotInvoked\" is invoked. Not Ok!" - return $args -} -# -# check if call references work at all -proc a args { - Invoked NotInvoked - return -} -# -# catch command -# Tcl8.5: catch script ?resultVarName? ?optionsVarName? -proc b args { - catch Invoked - return -} -proc c args { - catch Invoked NotInvoked - return -} -proc d args { - catch Invoked NotInvoked NotInvoked - return -} -proc e args { - set r [catch Invoked NotInvoked NotInvoked] - return -} -proc f args { - set r [catch {Invoked} NotInvoked NotInvoked] - return -} -proc g args { - set r [catch { - set x [Invoked] - } NotInvoked NotInvoked] - return -} -# eval arg ?arg ...? -proc h args { - eval Invoked NotInvoked - return -} -proc i args { - eval set NotInvoked [Invoked NotInvoked] - return -} -# This is a striped down example. Original: -# -# jpeg.tcl -- -# -# Querying and modifying JPEG image files. -# -# Copyright (c) 2004 Aaron Faupell -# -# ... -# eval [list addComment $file] [lreplace $com 0 0 $comment] -# ... -proc j args { - eval [list set] [list NotInvoked] [Invoked NotInvoked] - return -} -# -# call all single letter procs -# let tcl check what is called and what is not called -foreach p [info procs ?] { - puts "Check procedure \"$p\"" - $p -} -exit - diff --git a/tests/upstream-test-suite/060/060__command__switch_8tcl.xml b/tests/upstream-test-suite/060/060__command__switch_8tcl.xml deleted file mode 100644 index 2def3fc..0000000 --- a/tests/upstream-test-suite/060/060__command__switch_8tcl.xml +++ /dev/null @@ -1,326 +0,0 @@ - - - - 060_command_switch.tcl - - - - Invoked - args - Invoked - - should be reference by every proc below - - - - - - - a - b - c - d - e - f - g - h - i - j - k - l - m - n - o - p - q - r - s - - - - NotInvoked - args - NotInvoked - - must not be reference by every proc below - - - - - - - - - - a - args - a - - - - - - - - Invoked - - - - b - args - b - - - - - - - - Invoked - - - - c - args - c - - - - - - - - Invoked - - - - d - args - d - - - - - - - - Invoked - - - - e - args - e - - - - - - - - Invoked - - - - f - args - f - - - - - - - - Invoked - - - - g - args - g - - - - - - - - Invoked - - - - h - args - h - - - - - - - - Invoked - - - - i - args - i - - - - - - - - Invoked - - - - j - args - j - - - - - - - - Invoked - - - - k - args - k - - - - - - - - Invoked - - - - l - args - l - - - - - - - - Invoked - - - - m - args - m - - - - - - - - Invoked - - - - n - args - n - - - - - - - - Invoked - - - - o - args - o - - - - - - - - Invoked - - - - p - args - p - - - - - - - - Invoked - - - - q - args - q - - - - - - - - Invoked - - - - r - args - r - - - - - - - - Invoked - - - - s - args - s - - - - - - - - Invoked - - - - - - - - - diff --git a/tests/upstream-test-suite/060_command_switch.tcl b/tests/upstream-test-suite/060_command_switch.tcl deleted file mode 100644 index 407f2e9..0000000 --- a/tests/upstream-test-suite/060_command_switch.tcl +++ /dev/null @@ -1,238 +0,0 @@ -#// objective: tests processing of switch, only references/referencedby relations are relevant -#// check: 060__command__switch_8tcl.xml -#// config: REFERENCED_BY_RELATION = yes -#// config: REFERENCES_RELATION = yes -#// config: EXTRACT_ALL = yes -#// config: INLINE_SOURCES = no - -## -# \brief should be reference by every proc below -proc Invoked args { - puts "Procedure \"Invoked\" is invoked indeed. Ok." - return $args -} -## -# \brief must not be reference by every proc below -proc NotInvoked args { - puts "Procedure \"NotInvoked\" is invoked. Not Ok!" - return $args -} -# -# check if call references work at all -proc a args { - Invoked NotInvoked - return -} -# -# switch command -# switch ?options? string pattern body ?pattern body ...? -proc b args { - switch value NotInvoked { - } NotInvoked { - } default { - Invoked - } - return -} -proc c args { - switch value NotInvoked { - } [Invoked] { - } default { - } - return -} -proc d args { - switch NotInvoked pattern { - } [Invoked] { - } default { - } - return -} -proc e args { - switch [Invoked] pattern { - } NotInvoked { - } default { - } - return -} -proc f args { - switch -exact value pattern { - } NotInvoked { - } default { - Invoked - } - return -} -proc g args { - switch -exact -- value pattern { - } NotInvoked { - } default { - Invoked - } - return -} -proc h args { - switch -exact -- -value pattern { - } NotInvoked { - } default { - Invoked - } - return -} -# switch ?options? string {pattern body ?pattern body ...?} -proc i args { - switch value { - NotInvoked { - } - NotInvoked { - } - default { - Invoked - } - } - return -} -proc j args { - switch vale { - NotInvoked { - } - [NotInvoked] { - } - default { - Invoked - } - } - return -} -proc k args { - switch NotInvoked { - [NotInvoked] { - } - NotInvoked { - Invoked - } - default { - } - } - return -} -proc l args { - switch [Invoked] { - pattern { - } - NotInvoked { - } - default { - } - } - return -} -proc m args { - switch -exact value { - pattern { - } - NotInvoked { - } - default { - Invoked - } - } - return -} -proc n args { - switch -exact -- value { - pattern { - } - NotInvoked { - } - default { - Invoked - } - } - return -} -proc o args { - switch -exact -- -value { - pattern { - } - NotInvoked { - } - default { - Invoked - } - } - return -} -proc p args { - switch -exact -- inquotes { - "inquotes" { - Invoked - } - default { - } - } - return -} -proc q args { - switch -exact -- "in quotes" { - "in quotes" { - Invoked - } - default { - } - } - return -} -proc r args { - switch -exact -- inbraces { - {inbraces} { - Invoked - } - default { - } - } - return -} -proc s args { - switch -exact -- {in braces} { - {in braces} { - Invoked - } - default { - } - } - return -} -# wrong syntax -#proc x args { -# catch {switch -exact -- [Invoked] pattern1 NotInvoked pattern2} -# return -#} -# The current version does not check the last argument beforehand. -# Therefore, all script elements are evaluated as scripts before -# the parser detects the dangling pattern. It throws a warning, at the very least. -# Anyway, for working code the documentation will be correct. -#proc y args { -# catch {switch -exact -- [Invoked] { -# pattern { -# NotInvoked -# } -# NotInvoked { -# NotInvoked -# } -# default { -# NotInvoked -# } -# pattern -# }} -# return -#} -# -# call all single letter procs -# let tcl check what is called and what is not called -foreach p [info procs ?] { - puts "Check procedure \"$p\"" - $p -} -exit - diff --git a/tests/upstream-test-suite/061/class_test.xml b/tests/upstream-test-suite/061/class_test.xml deleted file mode 100644 index 47e70ac..0000000 --- a/tests/upstream-test-suite/061/class_test.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - Test - - - - Test::testmethod_one - args - testmethod_one - - Test method 1. - - - - - - - - - - Test::constructor - args - constructor - - Construction of class. - - - - - - - - - - Test::testmethod_two - args - testmethod_two - - Test method 2. - - - - - - - - - - Testclass. - - - - - - - Test - constructor - - - Test - testmethod_one - - - Test - testmethod_two - - - - diff --git a/tests/upstream-test-suite/061_bug_705503.tcl b/tests/upstream-test-suite/061_bug_705503.tcl deleted file mode 100644 index ce25d6e..0000000 --- a/tests/upstream-test-suite/061_bug_705503.tcl +++ /dev/null @@ -1,19 +0,0 @@ -#// objective: test for bug 705503 - TCL: Documentation of oo::define is not working -#// check: class_test.xml -#// config: EXTRACT_ALL = yes - -# taken from -# https://bugzilla.gnome.org/show_bug.cgi?id=705503 - -## @class Test -# @brief Testclass -oo::class create Test { - ## @brief Test method 1. - method testmethod_one args {} -} - -## @brief Construction of class -oo::define Test constructor args {} - -## @brief Test method 2 -oo::define Test method testmethod_two args {} diff --git a/tests/upstream-test-suite/062/namespacen1.xml b/tests/upstream-test-suite/062/namespacen1.xml deleted file mode 100644 index 408ef87..0000000 --- a/tests/upstream-test-suite/062/namespacen1.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - n1 - n1::n1 - - - - n1::p1 - args - p1 - - - - - - - - p2 - - - - n1::p2 - args - p2 - - - - - - - - p1 - - - - - - - - - diff --git a/tests/upstream-test-suite/062/namespacen2.xml b/tests/upstream-test-suite/062/namespacen2.xml deleted file mode 100644 index f545576..0000000 --- a/tests/upstream-test-suite/062/namespacen2.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - n2 - n2::n2 - - - - n2::p1 - args - p1 - - - - - - - - p2 - - - - n2::p2 - args - p2 - - - - - - - - p1 - - - - - - - - - diff --git a/tests/upstream-test-suite/062/namespacen3.xml b/tests/upstream-test-suite/062/namespacen3.xml deleted file mode 100644 index f8c2fb5..0000000 --- a/tests/upstream-test-suite/062/namespacen3.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - n3 - n3::n3 - - - - n3::p1 - args - p1 - - - - - - - - p2 - - - - n3::p2 - args - p2 - - - - - - - - p1 - - - - - - - - - diff --git a/tests/upstream-test-suite/062_namespace_resolution.tcl b/tests/upstream-test-suite/062_namespace_resolution.tcl deleted file mode 100644 index dcc6701..0000000 --- a/tests/upstream-test-suite/062_namespace_resolution.tcl +++ /dev/null @@ -1,68 +0,0 @@ -#// objective: tests correct namespace resolution, only references/referencedby relations are relevant -#// check: namespacen1.xml -#// check: namespacen2.xml -#// check: namespacen3.xml -#// config: REFERENCED_BY_RELATION = yes -#// config: REFERENCES_RELATION = yes -#// config: EXTRACT_ALL = yes -#// config: INLINE_SOURCES = yes - -# now: combine namespace eval and qualified names -namespace eval n1 { - proc p1 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - p2 - return - } - proc p2 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - return - } - namespace eval n1 { - proc p1 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - return - } - } -} -# same thing, but fully qualified proc names -namespace eval ::n2 {} -namespace eval ::n2::n2 {} -proc ::n2::p1 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - p2 - return -} -proc ::n2::p2 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - return -} -proc ::n2::n2::p2 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - return -} -# same thing, without leading :: -namespace eval n3 {} -namespace eval n3::n3 {} -proc n3::p1 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - p2 - return -} -proc n3::p2 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - return -} -proc n3::n3::p2 args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - return -} -# now, check with tcl what is called -n1::p1 -puts "" -n2::p1 -puts "" -n3::p1 -puts "" -exit - diff --git a/tests/upstream-test-suite/063/namespaceoo.xml b/tests/upstream-test-suite/063/namespaceoo.xml deleted file mode 100644 index 044c364..0000000 --- a/tests/upstream-test-suite/063/namespaceoo.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - oo - oo::define - oo::Helpers - - - - - - - diff --git a/tests/upstream-test-suite/063/namespaceoo_1_1_helpers.xml b/tests/upstream-test-suite/063/namespaceoo_1_1_helpers.xml deleted file mode 100644 index e9083dc..0000000 --- a/tests/upstream-test-suite/063/namespaceoo_1_1_helpers.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - oo::Helpers - - - - oo::Helpers::classvar - args - classvar - - - - Extension to TclOO to add static variables. Defines variables on the class instead of on the object. Can be used to enforce a limited number of instantiations. - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/063/namespaceoo_1_1define.xml b/tests/upstream-test-suite/063/namespaceoo_1_1define.xml deleted file mode 100644 index c8c8e85..0000000 --- a/tests/upstream-test-suite/063/namespaceoo_1_1define.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - oo::define - - - - oo::define::classmethod - name ?args? ?body? - classmethod - - - - Extension to TclOO to add static methods. Defines the method on the class instead of on the object. Can be used for the creation of megawidgets using TclOO by overriding the unknown method to detect if the user is trying to instantiate a widget (because the method will be unknown and start with a dot). - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/063_bug_729092.tcl b/tests/upstream-test-suite/063_bug_729092.tcl deleted file mode 100644 index a6d3341..0000000 --- a/tests/upstream-test-suite/063_bug_729092.tcl +++ /dev/null @@ -1,43 +0,0 @@ -#// objective: test for bug 729092 - TCL: Full documentation not shown for procs in namespaces. -#// check: namespaceoo.xml -#// check: namespaceoo_1_1_helpers.xml -#// check: namespaceoo_1_1define.xml -#// config: EXTRACT_ALL = yes -#// config: GENERATE_HTML = yes - -# taken from -# https://bugzilla.gnome.org/show_bug.cgi?id=729092 - -## -# Extension to TclOO to add static methods. -# Defines the method on the class instead of on the object. Can be used for -# the creation of megawidgets using TclOO by overriding the unknown method to -# detect if the user is trying to instantiate a widget (because the method -# will be unknown and start with a dot). -# -proc ::oo::define::classmethod {name {args ""} {body ""}} { - # Create the method on the class if the caller gave arguments and body. - if {[llength [info level 0]] == 4} { - uplevel 1 [list self method $name $args $body] - } - # Get the name of the class being defined. - set cls [lindex [info level -1] 1] - # Make connection to private class "my" command by forwarding. - uplevel forward $name [info object namespace $cls]::my $name -} - -## -# Extension to TclOO to add static variables. -# Defines variables on the class instead of on the object. Can be used to -# enforce a limited number of instantiations. -# -proc ::oo::Helpers::classvar {args} { - # Get reference to class's namespace. - set nsCl [info object namespace [uplevel 1 {self class}]] - set nsObj [uplevel 1 {namespace current}] - # Link variables into local (caller's) scope. - foreach v $args { - uplevel "my variable $v" - upvar #0 ${nsCl}::$v ${nsObj}::$v - } -} diff --git a/tests/upstream-test-suite/064/struct_foo.xml b/tests/upstream-test-suite/064/struct_foo.xml deleted file mode 100644 index e228f92..0000000 --- a/tests/upstream-test-suite/064/struct_foo.xml +++ /dev/null @@ -1,112 +0,0 @@ - - - - Foo - - - - Foo::operator int - () - operator int - - Conversion to int. - - - - - - - - - - Foo::operator int - () const - operator int - - Conversion to int const. - - - - - - - - - - Foo. - - - - - - No autolink for operator int() - - - - operator int() - - - - - title - - - - - Foo::operator int() - - - - - Foo::operator int() - - - - - title - - - - No autolink for operator int() const - - - - operator int() const - - - - - title - - - - - Foo::operator int() const - - - - - Foo::operator int() const - - - - - title - - - - - - - - - Foo - operator int - - - Foo - operator int - - - - diff --git a/tests/upstream-test-suite/064_castoperator.cpp b/tests/upstream-test-suite/064_castoperator.cpp deleted file mode 100644 index d6f8006..0000000 --- a/tests/upstream-test-suite/064_castoperator.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// objective: test linking to the cast operator with and without const -// check: struct_foo.xml -/** - * @brief Foo - * - * - No autolink for operator int() - * - @ref operator int() - * - @ref operator int() "title" - * - Foo::operator int() - * - @ref Foo::operator int() - * - @ref Foo::operator int() "title" - * - * - No autolink for operator int() const - * - @ref operator int() const - * - @ref operator int() const "title" - * - Foo::operator int() const - * - @ref Foo::operator int() const - * - @ref Foo::operator int() const "title" - */ -struct Foo { - /** @brief Conversion to int */ - operator int(); - /** @brief Conversion to int const */ - operator int() const; -}; diff --git a/tests/upstream-test-suite/065/indexpage.xml b/tests/upstream-test-suite/065/indexpage.xml deleted file mode 100644 index 09c7f8c..0000000 --- a/tests/upstream-test-suite/065/indexpage.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - index - My Project - - - - これは日本語(en)です. Output for all languages. - - - diff --git a/tests/upstream-test-suite/065_tilde.dox b/tests/upstream-test-suite/065_tilde.dox deleted file mode 100644 index 0b4986f..0000000 --- a/tests/upstream-test-suite/065_tilde.dox +++ /dev/null @@ -1,12 +0,0 @@ -// objective: test \~ command with non default OUTPUT_LANGUAGE which contains '-' letter -// check: indexpage.xml -// config: OUTPUT_LANGUAGE = Japanese-en -/** -\mainpage -\~english This is English. -\~dutch Dit is Nederlands. -\~japanese これは日本語です. -\~japanese-en これは日本語(en)です. -\~german Dies ist Deutsch. -\~ Output for all languages. -*/ diff --git a/tests/upstream-test-suite/066/class_class1.xml b/tests/upstream-test-suite/066/class_class1.xml deleted file mode 100644 index 008bcc6..0000000 --- a/tests/upstream-test-suite/066/class_class1.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - Class1 - - - int - int Class1.Property1 - - Property1 - = 1 - - - - - - - - - - string - string Class1.Property2 - - Property2 - - - - - - - - - - - - - - - - - Class1 - Property1 - - - Class1 - Property2 - - - - diff --git a/tests/upstream-test-suite/066_property_initializer.cs b/tests/upstream-test-suite/066_property_initializer.cs deleted file mode 100644 index d5b5c59..0000000 --- a/tests/upstream-test-suite/066_property_initializer.cs +++ /dev/null @@ -1,7 +0,0 @@ -// objective: C# property initializer -// check: class_class1.xml -class Class1 -{ - public int Property1 { get; } = 1; - public string Property2 { get; set; } -} diff --git a/tests/upstream-test-suite/067/067__link__varargs_8cpp.xml b/tests/upstream-test-suite/067/067__link__varargs_8cpp.xml deleted file mode 100644 index 76eb543..0000000 --- a/tests/upstream-test-suite/067/067__link__varargs_8cpp.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - 067_link_varargs.cpp - Test - - - void - void func - (int p) - func - - int - p - - - - - A function - - - - - - - void - void func - (int p,...) - func - - int - p - - - ... - - - - - Overloaded function taking variadic arguments - - - - - - - - - - See the function for more info. See the test class. - - - - diff --git a/tests/upstream-test-suite/067_link_varargs.cpp b/tests/upstream-test-suite/067_link_varargs.cpp deleted file mode 100644 index 8cf25a2..0000000 --- a/tests/upstream-test-suite/067_link_varargs.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// objective: test \link command with function variadic arguments '...' -// check: 067__link__varargs_8cpp.xml - -/** \file - * See \link func(int,...) the function\endlink for more info. - * See the \link Test test\endlink class. - */ - -/** A function - */ -void func(int p); - -/** Overloaded function taking variadic arguments - */ -void func(int p, ...); - -/** A test */ -class Test -{ -}; diff --git a/tests/upstream-test-suite/068/068__ref__varargs_8cpp.xml b/tests/upstream-test-suite/068/068__ref__varargs_8cpp.xml deleted file mode 100644 index 8e0dc00..0000000 --- a/tests/upstream-test-suite/068/068__ref__varargs_8cpp.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - 068_ref_varargs.cpp - Test - - - void - void func - (int p) - func - - int - p - - - - - A function - - - - - - - void - void func - (int p,...) - func - - int - p - - - ... - - - - - Overloaded function taking variadic arguments - - - - - - - - - - See the function for more info. See the test class. - - - - diff --git a/tests/upstream-test-suite/068_ref_varargs.cpp b/tests/upstream-test-suite/068_ref_varargs.cpp deleted file mode 100644 index c85daa2..0000000 --- a/tests/upstream-test-suite/068_ref_varargs.cpp +++ /dev/null @@ -1,20 +0,0 @@ -// objective: test \ref command with function variadic arguments '...' -// check: 068__ref__varargs_8cpp.xml - -/** \file - * See \ref func(int,...) "the function" for more info. - * See the \ref Test "test" class. - */ - -/** A function - */ -void func(int p); - -/** Overloaded function taking variadic arguments - */ -void func(int p, ...); - -/** A test */ -class Test -{ -}; diff --git a/tests/upstream-test-suite/069/069__link__variadic__template_8cpp.xml b/tests/upstream-test-suite/069/069__link__variadic__template_8cpp.xml deleted file mode 100644 index c93a732..0000000 --- a/tests/upstream-test-suite/069/069__link__variadic__template_8cpp.xml +++ /dev/null @@ -1,309 +0,0 @@ - - - - 069_link_variadic_template.cpp - Test - - - void - void func - (int p) - func - - int - p - - - - - A function - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args &... args) - func - - int - p - - - Args &... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args &&... args) - func - - int - p - - - Args &&... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, const Args &... args) - func - - int - p - - - const Args &... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, const Args &&... args) - func - - int - p - - - const Args &&... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args *... args) - func - - int - p - - - Args *... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args **... args) - func - - int - p - - - Args **... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, const Args *... args) - func - - int - p - - - const Args *... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, const Args **... args) - func - - int - p - - - const Args **... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args... args) - func - - int - p - - - Args... - args - - - - - A variadic template function overload - - - - - - - - - - - - - - At the time of writing, the part between <> is totally ignored: func<Args...>(Args... args) is interpreted as func(Args... args). - Beware that a function parameter with either a & or * operator, e.g. 'const Args&... args', requires \link and \ref to specify such parameter as verbatim, i.e. 'const Args&... args'. At the time of writing, the form func(const Args&...) will fail, unless the function parameter was declared just as 'const Args&...'. - - - - - - variadic template method - - Links to the variadic template function overloads: First overloadSecond overloadThird overloadFourth overloadFifth overloadSixth overloadSeventh overloadEighth overloadNinth overload -The followings are interpreted the same: without template argumentwith template argument -See the test class. - - - - diff --git a/tests/upstream-test-suite/069_link_variadic_template.cpp b/tests/upstream-test-suite/069_link_variadic_template.cpp deleted file mode 100644 index 89ab57c..0000000 --- a/tests/upstream-test-suite/069_link_variadic_template.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// objective: test \link command with a variadic template function -// check: 069__link__variadic__template_8cpp.xml - -/** \file - * - * @attention - * @parblock - * At the time of writing, the part between \<\> is totally ignored: - * %func(Args... args) is interpreted as %func(Args... args). - * - * Beware that a function parameter with either a \& or \* operator, - * e.g. 'const Args&... args', requires \\link and \\ref to specify - * such parameter as verbatim, i.e. 'const Args&... args'. At the - * time of writing, the form %func(const Args&...) will fail, unless - * the function parameter was declared just as 'const Args&...'. - * @endparblock - * - * \link Test::func(int,Args...)const variadic template method\endlink - * - * Links to the variadic template function overloads: - * @li \link func(int,Args&... args) First overload\endlink - * @li \link func(int,Args&&... args) Second overload\endlink - * @li \link func(int,const Args&... args) Third overload\endlink - * @li \link func(int,const Args&&... args) Fourth overload\endlink - * @li \link func(int,Args*... args) Fifth overload\endlink - * @li \link func(int,Args**... args) Sixth overload\endlink - * @li \link func(int,const Args*... args) Seventh overload\endlink - * @li \link func(int,const Args**... args) Eighth overload\endlink - * @li \link func(int,Args...) Ninth overload\endlink - * - * The followings are interpreted the same: - * @li \link func(int,const Args&... args) without template argument\endlink - * @li \link func(int,const Args&... args) with template argument\endlink - * - * See the \link Test test\endlink class. - */ - -/** A function - */ -void func(int p); - -/** A variadic template function overload - */ -template -void func(int p, Args&... args); - -/** A variadic template function overload - */ -template -void func(int p, Args&&... args); - -/** A variadic template function overload - */ -template -void func(int p, const Args&... args); - -/** A variadic template function overload - */ -template -void func(int p, const Args&&... args); - -/** A variadic template function overload - */ -template -void func(int p, Args*... args); - -/** A variadic template function overload - */ -template -void func(int p, Args**... args); - -/** A variadic template function overload - */ -template -void func(int p, const Args*... args); - -/** A variadic template function overload - */ -template -void func(int p, const Args**... args); - -/** A variadic template function overload - */ -template -void func(int p, Args... args); - -/** A test */ -class Test -{ - public: - /** A variadic template method - */ - template - void func(int p, Args... args) const; -}; diff --git a/tests/upstream-test-suite/070/070__ref__variadic__template_8cpp.xml b/tests/upstream-test-suite/070/070__ref__variadic__template_8cpp.xml deleted file mode 100644 index 0f581e5..0000000 --- a/tests/upstream-test-suite/070/070__ref__variadic__template_8cpp.xml +++ /dev/null @@ -1,309 +0,0 @@ - - - - 070_ref_variadic_template.cpp - Test - - - void - void func - (int p) - func - - int - p - - - - - A function - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args &... args) - func - - int - p - - - Args &... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args &&... args) - func - - int - p - - - Args &&... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, const Args &... args) - func - - int - p - - - const Args &... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, const Args &&... args) - func - - int - p - - - const Args &&... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args *... args) - func - - int - p - - - Args *... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args **... args) - func - - int - p - - - Args **... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, const Args *... args) - func - - int - p - - - const Args *... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, const Args **... args) - func - - int - p - - - const Args **... - args - - - - - A variadic template function overload - - - - - - - - - typename... - Args - Args - - - void - void func - (int p, Args... args) - func - - int - p - - - Args... - args - - - - - A variadic template function overload - - - - - - - - - - - - - - At the time of writing, the part between <> is totally ignored: func<Args...>(Args... args) is interpreted as func(Args... args). - Beware that a function parameter with either a & or * operator, e.g. 'const Args&... args', requires \link and \ref to specify such parameter as verbatim, i.e. 'const Args&... args'. At the time of writing, the form func(const Args&...) will fail, unless the function parameter was declared just as 'const Args&...'. - - - - - - variadic template method - - References to the variadic template function overloads: First overloadSecond overloadThird overloadFourth overloadFifth overloadSixth overloadSeventh overloadEighth overloadNinth overload -The followings are interpreted the same: without template argumentwith template argument -See the test class. - - - - diff --git a/tests/upstream-test-suite/070_ref_variadic_template.cpp b/tests/upstream-test-suite/070_ref_variadic_template.cpp deleted file mode 100644 index 376cebe..0000000 --- a/tests/upstream-test-suite/070_ref_variadic_template.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// objective: test \ref command with a variadic template function -// check: 070__ref__variadic__template_8cpp.xml - -/** \file - * - * @attention - * @parblock - * At the time of writing, the part between \<\> is totally ignored: - * %func(Args... args) is interpreted as %func(Args... args). - * - * Beware that a function parameter with either a \& or \* operator, - * e.g. 'const Args&... args', requires \\link and \\ref to specify - * such parameter as verbatim, i.e. 'const Args&... args'. At the - * time of writing, the form %func(const Args&...) will fail, unless - * the function parameter was declared just as 'const Args&...'. - * @endparblock - * - * \ref Test::func(int,Args...)const "variadic template method" - * - * References to the variadic template function overloads: - * @li \ref func(int,Args&... args) "First overload" - * @li \ref func(int,Args&&... args) "Second overload" - * @li \ref func(int,const Args&... args) "Third overload" - * @li \ref func(int,const Args&&... args) "Fourth overload" - * @li \ref func(int,Args*... args) "Fifth overload" - * @li \ref func(int,Args**... args) "Sixth overload" - * @li \ref func(int,const Args*... args) "Seventh overload" - * @li \ref func(int,const Args**... args) "Eighth overload" - * @li \ref func(int,Args...) "Ninth overload" - * - * The followings are interpreted the same: - * @li \ref func(int,const Args&... args) "without template argument" - * @li \ref func(int,const Args&... args) "with template argument" - * - * See the \ref Test "test" class. - */ - -/** A function - */ -void func(int p); - -/** A variadic template function overload - */ -template -void func(int p, Args&... args); - -/** A variadic template function overload - */ -template -void func(int p, Args&&... args); - -/** A variadic template function overload - */ -template -void func(int p, const Args&... args); - -/** A variadic template function overload - */ -template -void func(int p, const Args&&... args); - -/** A variadic template function overload - */ -template -void func(int p, Args*... args); - -/** A variadic template function overload - */ -template -void func(int p, Args**... args); - -/** A variadic template function overload - */ -template -void func(int p, const Args*... args); - -/** A variadic template function overload - */ -template -void func(int p, const Args**... args); - -/** A variadic template function overload - */ -template -void func(int p, Args... args); - -/** A test */ -class Test -{ - public: - /** A variadic template method - */ - template - void func(int p, Args... args) const; -}; diff --git a/tests/upstream-test-suite/071/namespace_a_namespace_1_1_0D0.xml b/tests/upstream-test-suite/071/namespace_a_namespace_1_1_0D0.xml deleted file mode 100644 index 76483ca..0000000 --- a/tests/upstream-test-suite/071/namespace_a_namespace_1_1_0D0.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - ANamespace::@0 - - - - Boolean - - False - - - - - - - True - - - - - - - FileNotFound - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/071_enum_in_anon_ns.cpp b/tests/upstream-test-suite/071_enum_in_anon_ns.cpp deleted file mode 100644 index a5b9ac8..0000000 --- a/tests/upstream-test-suite/071_enum_in_anon_ns.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// objective: test that enum values in anonymous namespaces produce no warning -// check: namespace_a_namespace_1_1_0D0.xml - -namespace ANamespace { namespace { - -enum class Boolean { - False, - True, - FileNotFound -}; - -}} diff --git a/tests/upstream-test-suite/072/072__using_8cpp.xml b/tests/upstream-test-suite/072/072__using_8cpp.xml deleted file mode 100644 index e368966..0000000 --- a/tests/upstream-test-suite/072/072__using_8cpp.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - 072_using.cpp - - - - - class T - - - std::vector< T > - using Vec = std::vector<T> - - Vec - - A vector. - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/072_using.cpp b/tests/upstream-test-suite/072_using.cpp deleted file mode 100644 index ca02902..0000000 --- a/tests/upstream-test-suite/072_using.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// objective: test template parameters for a type alias -// check: 072__using_8cpp.xml - -/** \file */ - -/** @brief A vector */ -template using Vec = std::vector; diff --git a/tests/upstream-test-suite/073/073__typed__enum_8cpp.xml b/tests/upstream-test-suite/073/073__typed__enum_8cpp.xml deleted file mode 100644 index 9dda417..0000000 --- a/tests/upstream-test-suite/073/073__typed__enum_8cpp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - 073_typed_enum.cpp - - - unsigned short - E - - A strongly-typed enum. - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/073_typed_enum.cpp b/tests/upstream-test-suite/073_typed_enum.cpp deleted file mode 100644 index 0818463..0000000 --- a/tests/upstream-test-suite/073_typed_enum.cpp +++ /dev/null @@ -1,7 +0,0 @@ -// objective: test underlying type and strongness for an enum -// check: 073__typed__enum_8cpp.xml - -/** \file */ - -/** @brief A strongly-typed enum */ -enum class E: unsigned short {}; diff --git a/tests/upstream-test-suite/074/struct_foo.xml b/tests/upstream-test-suite/074/struct_foo.xml deleted file mode 100644 index 56a497a..0000000 --- a/tests/upstream-test-suite/074/struct_foo.xml +++ /dev/null @@ -1,287 +0,0 @@ - - - - Foo - - - - Foo::Foo - () - Foo - - - - Constructor - - - - - - - Foo & - Foo& Foo::operator<< - (int i) - operator<< - - int - i - - - - - overloaded less than operator - - - - - - - const Foo & - const Foo& Foo::operator<< - (int i) const - operator<< - - int - i - - - - - overloaded const less than operator - - - - - - - int - int Foo::operator() - (int i) - operator() - - int - i - - - - - overloaded call operator - - - - - - - int - int Foo::operator() - (int i) const - operator() - - int - i - - - - - overloaded call operator - - - - - - - Foo & - Foo& Foo::operator&= - (const Foo &rhs) - operator&= - - const Foo & - rhs - - - - - and equal operator - - - - - - - Foo & - Foo& Foo::operator&= - (const Foo &rhs) - operator&= - - const Foo & - rhs - - - - - and equal operator - - - - - - - int * - int* Foo::operator->* - (int *p) - operator->* - - int * - p - - - - - Member pointer operator - - - - - - - - Foo - - Foo Foo::fun - () const - fun - - Fun with itself. - - - - - - - - - - - - Foo - - static Foo Foo::fun - (Foo a, Foo b) - fun - - - Foo - - a - - - - Foo - - b - - - Fun of two. - - - - - - - fun() const - - - - - fun() const - - - - - title - - - - - - - - - - - - Foo class. - - - - - Foo::Foo() constructor for details. - - - Foo constant. - - - less than operator. - - - const less than operator. - - - call operator. - - - const call operator. - - - and equal operator. - - - member pointer operator. - - - - - - - Foo - Foo - - - Foo - fun - - - Foo - fun - - - Foo - operator&= - - - Foo - operator&= - - - Foo - operator() - - - Foo - operator() - - - Foo - operator->* - - - Foo - operator<< - - - Foo - operator<< - - - - diff --git a/tests/upstream-test-suite/074_ref.cpp b/tests/upstream-test-suite/074_ref.cpp deleted file mode 100644 index 141e2b4..0000000 --- a/tests/upstream-test-suite/074_ref.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// objective: test \ref command in combination with const -// check: struct_foo.xml -/** @brief Foo class. - * - * @see @ref Foo::Foo() constructor for details. - * @see @ref Foo constant. - * @see @ref operator<<(int) "less than operator". - * @see @ref operator<<(int) const "const less than operator". - * @see @ref operator()(int) "call operator". - * @see @ref operator()(int) const "const call operator". - * @see @ref operator&=(const Foo&) "and equal operator". - * @see @ref operator->*(int *) "member pointer operator". - */ -struct Foo { - /** Constructor */ - Foo(); - /** - * @brief Fun of two - * - * - fun() const - * - @ref fun() const - * - @ref fun() const "title" - */ - static Foo fun(Foo a, Foo b); - - /** overloaded less than operator */ - Foo& operator<< (int i); - - /** overloaded const less than operator */ - const Foo& operator<< (int i) const; - - /** overloaded call operator */ - int operator()(int i); - - /** overloaded call operator */ - int operator()(int i) const; - - /** and equal operator */ - Foo& operator&=(const Foo& rhs); - - /** and equal operator */ - Foo& operator&=(const Foo& rhs); - - /** Member pointer operator */ - int* operator->*(int *p); - - /** @brief Fun with itself */ - Foo fun() const; -}; diff --git a/tests/upstream-test-suite/075/struct_foo.xml b/tests/upstream-test-suite/075/struct_foo.xml deleted file mode 100644 index eca791b..0000000 --- a/tests/upstream-test-suite/075/struct_foo.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - Foo - - - void - void Foo::foo - (float value) - foo - - float - value - - - Float. - - - - - - - - - void - void Foo::foo - (unsigned value) - foo - - unsigned - value - - - Unsigned int. - - - - - - - - - void - void Foo::foo - (unsigned long) - foo - - unsigned long - - - Unnamed unsigned long. - - - - - - - - - void - void Foo::foo - (signed long) - foo - - signed long - - - Unnamed signed long. - - - - - - - - - void - void Foo::foo - (const struct Foo) - foo - - const struct Foo - - - Unnamed struct foo. - - - - - - - - - void - void Foo::foo - (const char *const, const double param2) - foo - - const char * const - - - const double - param2 - - - Unnamed const pointer. - - - - - - - - - - Foo. - - - - - - - Foo - foo - - - Foo - foo - - - Foo - foo - - - Foo - foo - - - Foo - foo - - - Foo - foo - - - - diff --git a/tests/upstream-test-suite/075_argmatch.cpp b/tests/upstream-test-suite/075_argmatch.cpp deleted file mode 100644 index 439cdca..0000000 --- a/tests/upstream-test-suite/075_argmatch.cpp +++ /dev/null @@ -1,30 +0,0 @@ -// objective: test argument matching in particular for unnamed types -// check: struct_foo.xml -/** @brief Foo */ -struct Foo { - void foo(float value); - void foo(unsigned value); - void foo(unsigned long); - void foo(signed long); - void foo(const struct Foo); - void foo(const char * const, const double param2); -}; - -/** @brief Float */ -void Foo::foo(float) {} - -/** @brief Unsigned int */ -void Foo::foo(unsigned value) {} - -/** @brief Unnamed unsigned long */ -void Foo::foo(unsigned long) {} - -/** @brief Unnamed signed long */ -void Foo::foo(signed long) {} - -/** @brief Unnamed struct foo */ -void Foo::foo(const struct Foo) {} - -/** @brief Unnamed const pointer */ -void Foo::foo(const char * const, const double param2); - diff --git a/tests/upstream-test-suite/076/indexpage.xml b/tests/upstream-test-suite/076/indexpage.xml deleted file mode 100644 index 5665d9b..0000000 --- a/tests/upstream-test-suite/076/indexpage.xml +++ /dev/null @@ -1,1500 +0,0 @@ - - - - index - Emoji test - - - - from "+1" - from "-1" - from "100" - from "1234" - from "1st_place_medal" - from "2nd_place_medal" - from "3rd_place_medal" - from "8ball" - from "a" - from "ab" - from "abc" - from "abcd" - from "accept" - from "aerial_tramway" - from "afghanistan" - from "airplane" - from "aland_islands" - from "alarm_clock" - from "albania" - from "alembic" - from "algeria" - from "alien" - from "ambulance" - from "american_samoa" - from "amphora" - from "anchor" - from "andorra" - from "angel" - from "anger" - from "angola" - from "angry" - from "anguilla" - from "anguished" - from "ant" - from "antarctica" - from "antigua_barbuda" - from "apple" - from "aquarius" - from "argentina" - from "aries" - from "armenia" - from "arrow_backward" - from "arrow_double_down" - from "arrow_double_up" - from "arrow_down" - from "arrow_down_small" - from "arrow_forward" - from "arrow_heading_down" - from "arrow_heading_up" - from "arrow_left" - from "arrow_lower_left" - from "arrow_lower_right" - from "arrow_right" - from "arrow_right_hook" - from "arrow_up" - from "arrow_up_down" - from "arrow_up_small" - from "arrow_upper_left" - from "arrow_upper_right" - from "arrows_clockwise" - from "arrows_counterclockwise" - from "art" - from "articulated_lorry" - from "artificial_satellite" - from "aruba" - from "asterisk" - from "astonished" - from "athletic_shoe" - from "atm" - from "atom_symbol" - from "australia" - from "austria" - from "avocado" - from "azerbaijan" - from "b" - from "baby" - from "baby_bottle" - from "baby_chick" - from "baby_symbol" - from "back" - from "bacon" - from "badminton" - from "baggage_claim" - from "baguette_bread" - from "bahamas" - from "bahrain" - from "balance_scale" - from "balloon" - from "ballot_box" - from "ballot_box_with_check" - from "bamboo" - from "banana" - from "bangbang" - from "bangladesh" - from "bank" - from "bar_chart" - from "barbados" - from "barber" - from "baseball" - from "basketball" - from "basketball_man" - from "basketball_woman" - from "bat" - from "bath" - from "bathtub" - from "battery" - from "beach_umbrella" - from "bear" - from "bed" - from "bee" - from "beer" - from "beers" - from "beetle" - from "beginner" - from "belarus" - from "belgium" - from "belize" - from "bell" - from "bellhop_bell" - from "benin" - from "bento" - from "bermuda" - from "bhutan" - from "bicyclist" - from "bike" - from "biking_man" - from "biking_woman" - from "bikini" - from "biohazard" - from "bird" - from "birthday" - from "black_circle" - from "black_flag" - from "black_heart" - from "black_joker" - from "black_large_square" - from "black_medium_small_square" - from "black_medium_square" - from "black_nib" - from "black_small_square" - from "black_square_button" - from "blonde_man" - from "blonde_woman" - from "blossom" - from "blowfish" - from "blue_book" - from "blue_car" - from "blue_heart" - from "blush" - from "boar" - from "boat" - from "bolivia" - from "bomb" - from "book" - from "bookmark" - from "bookmark_tabs" - from "books" - from "boom" - from "boot" - from "bosnia_herzegovina" - from "botswana" - from "bouquet" - from "bow" - from "bow_and_arrow" - from "bowing_man" - from "bowing_woman" - from "bowling" - from "boxing_glove" - from "boy" - from "brazil" - from "bread" - from "bride_with_veil" - from "bridge_at_night" - from "briefcase" - from "british_indian_ocean_territory" - from "british_virgin_islands" - from "broken_heart" - from "brunei" - from "bug" - from "building_construction" - from "bulb" - from "bulgaria" - from "bullettrain_front" - from "bullettrain_side" - from "burkina_faso" - from "burrito" - from "burundi" - from "bus" - from "business_suit_levitating" - from "busstop" - from "bust_in_silhouette" - from "busts_in_silhouette" - from "butterfly" - from "cactus" - from "cake" - from "calendar" - from "call_me_hand" - from "calling" - from "cambodia" - from "camel" - from "camera" - from "camera_flash" - from "cameroon" - from "camping" - from "canada" - from "canary_islands" - from "cancer" - from "candle" - from "candy" - from "canoe" - from "cape_verde" - from "capital_abcd" - from "capricorn" - from "car" - from "card_file_box" - from "card_index" - from "card_index_dividers" - from "caribbean_netherlands" - from "carousel_horse" - from "carrot" - from "cat" - from "cat2" - from "cayman_islands" - from "cd" - from "central_african_republic" - from "chad" - from "chains" - from "champagne" - from "chart" - from "chart_with_downwards_trend" - from "chart_with_upwards_trend" - from "checkered_flag" - from "cheese" - from "cherries" - from "cherry_blossom" - from "chestnut" - from "chicken" - from "children_crossing" - from "chile" - from "chipmunk" - from "chocolate_bar" - from "christmas_island" - from "christmas_tree" - from "church" - from "cinema" - from "circus_tent" - from "city_sunrise" - from "city_sunset" - from "cityscape" - from "cl" - from "clamp" - from "clap" - from "clapper" - from "classical_building" - from "clinking_glasses" - from "clipboard" - from "clock1" - from "clock10" - from "clock1030" - from "clock11" - from "clock1130" - from "clock12" - from "clock1230" - from "clock130" - from "clock2" - from "clock230" - from "clock3" - from "clock330" - from "clock4" - from "clock430" - from "clock5" - from "clock530" - from "clock6" - from "clock630" - from "clock7" - from "clock730" - from "clock8" - from "clock830" - from "clock9" - from "clock930" - from "closed_book" - from "closed_lock_with_key" - from "closed_umbrella" - from "cloud" - from "cloud_with_lightning" - from "cloud_with_lightning_and_rain" - from "cloud_with_rain" - from "cloud_with_snow" - from "clown_face" - from "clubs" - from "cn" - from "cocktail" - from "cocos_islands" - from "coffee" - from "coffin" - from "cold_sweat" - from "collision" - from "colombia" - from "comet" - from "comoros" - from "computer" - from "computer_mouse" - from "confetti_ball" - from "confounded" - from "confused" - from "congo_brazzaville" - from "congo_kinshasa" - from "congratulations" - from "construction" - from "construction_worker" - from "construction_worker_man" - from "construction_worker_woman" - from "control_knobs" - from "convenience_store" - from "cook_islands" - from "cookie" - from "cool" - from "cop" - from "copyright" - from "corn" - from "costa_rica" - from "cote_divoire" - from "couch_and_lamp" - from "couple" - from "couple_with_heart" - from "couple_with_heart_man_man" - from "couple_with_heart_woman_man" - from "couple_with_heart_woman_woman" - from "couplekiss_man_man" - from "couplekiss_man_woman" - from "couplekiss_woman_woman" - from "cow" - from "cow2" - from "cowboy_hat_face" - from "crab" - from "crayon" - from "credit_card" - from "crescent_moon" - from "cricket" - from "croatia" - from "crocodile" - from "croissant" - from "crossed_fingers" - from "crossed_flags" - from "crossed_swords" - from "crown" - from "cry" - from "crying_cat_face" - from "crystal_ball" - from "cuba" - from "cucumber" - from "cupid" - from "curacao" - from "curly_loop" - from "currency_exchange" - from "curry" - from "custard" - from "customs" - from "cyclone" - from "cyprus" - from "czech_republic" - from "dagger" - from "dancer" - from "dancers" - from "dancing_men" - from "dancing_women" - from "dango" - from "dark_sunglasses" - from "dart" - from "dash" - from "date" - from "de" - from "deciduous_tree" - from "deer" - from "denmark" - from "department_store" - from "derelict_house" - from "desert" - from "desert_island" - from "desktop_computer" - from "detective" - from "diamond_shape_with_a_dot_inside" - from "diamonds" - from "disappointed" - from "disappointed_relieved" - from "dizzy" - from "dizzy_face" - from "djibouti" - from "do_not_litter" - from "dog" - from "dog2" - from "dollar" - from "dolls" - from "dolphin" - from "dominica" - from "dominican_republic" - from "door" - from "doughnut" - from "dove" - from "dragon" - from "dragon_face" - from "dress" - from "dromedary_camel" - from "drooling_face" - from "droplet" - from "drum" - from "duck" - from "dvd" - from "e-mail" - from "eagle" - from "ear" - from "ear_of_rice" - from "earth_africa" - from "earth_americas" - from "earth_asia" - from "ecuador" - from "egg" - from "eggplant" - from "egypt" - from "eight" - from "eight_pointed_black_star" - from "eight_spoked_asterisk" - from "el_salvador" - from "electric_plug" - from "elephant" - from "email" - from "end" - from "envelope" - from "envelope_with_arrow" - from "equatorial_guinea" - from "eritrea" - from "es" - from "estonia" - from "ethiopia" - from "eu" - from "euro" - from "european_castle" - from "european_post_office" - from "european_union" - from "evergreen_tree" - from "exclamation" - from "expressionless" - from "eye" - from "eye_speech_bubble" - from "eyeglasses" - from "eyes" - from "face_with_head_bandage" - from "face_with_thermometer" - from "facepunch" - from "factory" - from "falkland_islands" - from "fallen_leaf" - from "family" - from "family_man_boy" - from "family_man_boy_boy" - from "family_man_girl" - from "family_man_girl_boy" - from "family_man_girl_girl" - from "family_man_man_boy" - from "family_man_man_boy_boy" - from "family_man_man_girl" - from "family_man_man_girl_boy" - from "family_man_man_girl_girl" - from "family_man_woman_boy" - from "family_man_woman_boy_boy" - from "family_man_woman_girl" - from "family_man_woman_girl_boy" - from "family_man_woman_girl_girl" - from "family_woman_boy" - from "family_woman_boy_boy" - from "family_woman_girl" - from "family_woman_girl_boy" - from "family_woman_girl_girl" - from "family_woman_woman_boy" - from "family_woman_woman_boy_boy" - from "family_woman_woman_girl" - from "family_woman_woman_girl_boy" - from "family_woman_woman_girl_girl" - from "faroe_islands" - from "fast_forward" - from "fax" - from "fearful" - from "feet" - from "female_detective" - from "ferris_wheel" - from "ferry" - from "field_hockey" - from "fiji" - from "file_cabinet" - from "file_folder" - from "film_projector" - from "film_strip" - from "finland" - from "fire" - from "fire_engine" - from "fireworks" - from "first_quarter_moon" - from "first_quarter_moon_with_face" - from "fish" - from "fish_cake" - from "fishing_pole_and_fish" - from "fist" - from "fist_left" - from "fist_oncoming" - from "fist_raised" - from "fist_right" - from "five" - from "flags" - from "flashlight" - from "fleur_de_lis" - from "flight_arrival" - from "flight_departure" - from "flipper" - from "floppy_disk" - from "flower_playing_cards" - from "flushed" - from "fog" - from "foggy" - from "football" - from "footprints" - from "fork_and_knife" - from "fountain" - from "fountain_pen" - from "four" - from "four_leaf_clover" - from "fox_face" - from "fr" - from "framed_picture" - from "free" - from "french_guiana" - from "french_polynesia" - from "french_southern_territories" - from "fried_egg" - from "fried_shrimp" - from "fries" - from "frog" - from "frowning" - from "frowning_face" - from "frowning_man" - from "frowning_woman" - from "fu" - from "fuelpump" - from "full_moon" - from "full_moon_with_face" - from "funeral_urn" - from "gabon" - from "gambia" - from "game_die" - from "gb" - from "gear" - from "gem" - from "gemini" - from "georgia" - from "ghana" - from "ghost" - from "gibraltar" - from "gift" - from "gift_heart" - from "girl" - from "globe_with_meridians" - from "goal_net" - from "goat" - from "golf" - from "golfing_man" - from "golfing_woman" - from "gorilla" - from "grapes" - from "greece" - from "green_apple" - from "green_book" - from "green_heart" - from "green_salad" - from "greenland" - from "grenada" - from "grey_exclamation" - from "grey_question" - from "grimacing" - from "grin" - from "grinning" - from "guadeloupe" - from "guam" - from "guardsman" - from "guardswoman" - from "guatemala" - from "guernsey" - from "guinea" - from "guinea_bissau" - from "guitar" - from "gun" - from "guyana" - from "haircut" - from "haircut_man" - from "haircut_woman" - from "haiti" - from "hamburger" - from "hammer" - from "hammer_and_pick" - from "hammer_and_wrench" - from "hamster" - from "hand" - from "handbag" - from "handshake" - from "hankey" - from "hash" - from "hatched_chick" - from "hatching_chick" - from "headphones" - from "hear_no_evil" - from "heart" - from "heart_decoration" - from "heart_eyes" - from "heart_eyes_cat" - from "heartbeat" - from "heartpulse" - from "hearts" - from "heavy_check_mark" - from "heavy_division_sign" - from "heavy_dollar_sign" - from "heavy_exclamation_mark" - from "heavy_heart_exclamation" - from "heavy_minus_sign" - from "heavy_multiplication_x" - from "heavy_plus_sign" - from "helicopter" - from "herb" - from "hibiscus" - from "high_brightness" - from "high_heel" - from "hocho" - from "hole" - from "honduras" - from "honey_pot" - from "honeybee" - from "hong_kong" - from "horse" - from "horse_racing" - from "hospital" - from "hot_pepper" - from "hotdog" - from "hotel" - from "hotsprings" - from "hourglass" - from "hourglass_flowing_sand" - from "house" - from "house_with_garden" - from "houses" - from "hugs" - from "hungary" - from "hushed" - from "ice_cream" - from "ice_hockey" - from "ice_skate" - from "icecream" - from "iceland" - from "id" - from "ideograph_advantage" - from "imp" - from "inbox_tray" - from "incoming_envelope" - from "india" - from "indonesia" - from "information_desk_person" - from "information_source" - from "innocent" - from "interrobang" - from "iphone" - from "iran" - from "iraq" - from "ireland" - from "isle_of_man" - from "israel" - from "it" - from "izakaya_lantern" - from "jack_o_lantern" - from "jamaica" - from "japan" - from "japanese_castle" - from "japanese_goblin" - from "japanese_ogre" - from "jeans" - from "jersey" - from "jordan" - from "joy" - from "joy_cat" - from "joystick" - from "jp" - from "kaaba" - from "kazakhstan" - from "kenya" - from "key" - from "keyboard" - from "keycap_ten" - from "kick_scooter" - from "kimono" - from "kiribati" - from "kiss" - from "kissing" - from "kissing_cat" - from "kissing_closed_eyes" - from "kissing_heart" - from "kissing_smiling_eyes" - from "kiwi_fruit" - from "knife" - from "koala" - from "koko" - from "kosovo" - from "kr" - from "kuwait" - from "kyrgyzstan" - from "label" - from "lantern" - from "laos" - from "large_blue_circle" - from "large_blue_diamond" - from "large_orange_diamond" - from "last_quarter_moon" - from "last_quarter_moon_with_face" - from "latin_cross" - from "latvia" - from "laughing" - from "leaves" - from "lebanon" - from "ledger" - from "left_luggage" - from "left_right_arrow" - from "leftwards_arrow_with_hook" - from "lemon" - from "leo" - from "leopard" - from "lesotho" - from "level_slider" - from "liberia" - from "libra" - from "libya" - from "liechtenstein" - from "light_rail" - from "link" - from "lion" - from "lips" - from "lipstick" - from "lithuania" - from "lizard" - from "lock" - from "lock_with_ink_pen" - from "lollipop" - from "loop" - from "loud_sound" - from "loudspeaker" - from "love_hotel" - from "love_letter" - from "low_brightness" - from "luxembourg" - from "lying_face" - from "m" - from "macau" - from "macedonia" - from "madagascar" - from "mag" - from "mag_right" - from "mahjong" - from "mailbox" - from "mailbox_closed" - from "mailbox_with_mail" - from "mailbox_with_no_mail" - from "malawi" - from "malaysia" - from "maldives" - from "male_detective" - from "mali" - from "malta" - from "man" - from "man_artist" - from "man_astronaut" - from "man_cartwheeling" - from "man_cook" - from "man_dancing" - from "man_facepalming" - from "man_factory_worker" - from "man_farmer" - from "man_firefighter" - from "man_health_worker" - from "man_in_tuxedo" - from "man_judge" - from "man_juggling" - from "man_mechanic" - from "man_office_worker" - from "man_pilot" - from "man_playing_handball" - from "man_playing_water_polo" - from "man_scientist" - from "man_shrugging" - from "man_singer" - from "man_student" - from "man_teacher" - from "man_technologist" - from "man_with_gua_pi_mao" - from "man_with_turban" - from "mandarin" - from "mans_shoe" - from "mantelpiece_clock" - from "maple_leaf" - from "marshall_islands" - from "martial_arts_uniform" - from "martinique" - from "mask" - from "massage" - from "massage_man" - from "massage_woman" - from "mauritania" - from "mauritius" - from "mayotte" - from "meat_on_bone" - from "medal_military" - from "medal_sports" - from "mega" - from "melon" - from "memo" - from "men_wrestling" - from "menorah" - from "mens" - from "metal" - from "metro" - from "mexico" - from "micronesia" - from "microphone" - from "microscope" - from "middle_finger" - from "milk_glass" - from "milky_way" - from "minibus" - from "minidisc" - from "mobile_phone_off" - from "moldova" - from "monaco" - from "money_mouth_face" - from "money_with_wings" - from "moneybag" - from "mongolia" - from "monkey" - from "monkey_face" - from "monorail" - from "montenegro" - from "montserrat" - from "moon" - from "morocco" - from "mortar_board" - from "mosque" - from "motor_boat" - from "motor_scooter" - from "motorcycle" - from "motorway" - from "mount_fuji" - from "mountain" - from "mountain_bicyclist" - from "mountain_biking_man" - from "mountain_biking_woman" - from "mountain_cableway" - from "mountain_railway" - from "mountain_snow" - from "mouse" - from "mouse2" - from "movie_camera" - from "moyai" - from "mozambique" - from "mrs_claus" - from "muscle" - from "mushroom" - from "musical_keyboard" - from "musical_note" - from "musical_score" - from "mute" - from "myanmar" - from "nail_care" - from "name_badge" - from "namibia" - from "national_park" - from "nauru" - from "nauseated_face" - from "necktie" - from "negative_squared_cross_mark" - from "nepal" - from "nerd_face" - from "netherlands" - from "neutral_face" - from "new" - from "new_caledonia" - from "new_moon" - from "new_moon_with_face" - from "new_zealand" - from "newspaper" - from "newspaper_roll" - from "next_track_button" - from "ng" - from "ng_man" - from "ng_woman" - from "nicaragua" - from "niger" - from "nigeria" - from "night_with_stars" - from "nine" - from "niue" - from "no_bell" - from "no_bicycles" - from "no_entry" - from "no_entry_sign" - from "no_good" - from "no_good_man" - from "no_good_woman" - from "no_mobile_phones" - from "no_mouth" - from "no_pedestrians" - from "no_smoking" - from "non-potable_water" - from "norfolk_island" - from "north_korea" - from "northern_mariana_islands" - from "norway" - from "nose" - from "notebook" - from "notebook_with_decorative_cover" - from "notes" - from "nut_and_bolt" - from "o" - from "o2" - from "ocean" - from "octopus" - from "oden" - from "office" - from "oil_drum" - from "ok" - from "ok_hand" - from "ok_man" - from "ok_woman" - from "old_key" - from "older_man" - from "older_woman" - from "om" - from "oman" - from "on" - from "oncoming_automobile" - from "oncoming_bus" - from "oncoming_police_car" - from "oncoming_taxi" - from "one" - from "open_book" - from "open_file_folder" - from "open_hands" - from "open_mouth" - from "open_umbrella" - from "ophiuchus" - from "orange" - from "orange_book" - from "orthodox_cross" - from "outbox_tray" - from "owl" - from "ox" - from "package" - from "page_facing_up" - from "page_with_curl" - from "pager" - from "paintbrush" - from "pakistan" - from "palau" - from "palestinian_territories" - from "palm_tree" - from "panama" - from "pancakes" - from "panda_face" - from "paperclip" - from "paperclips" - from "papua_new_guinea" - from "paraguay" - from "parasol_on_ground" - from "parking" - from "part_alternation_mark" - from "partly_sunny" - from "passenger_ship" - from "passport_control" - from "pause_button" - from "paw_prints" - from "peace_symbol" - from "peach" - from "peanuts" - from "pear" - from "pen" - from "pencil" - from "pencil2" - from "penguin" - from "pensive" - from "performing_arts" - from "persevere" - from "person_fencing" - from "person_frowning" - from "person_with_blond_hair" - from "person_with_pouting_face" - from "peru" - from "philippines" - from "phone" - from "pick" - from "pig" - from "pig2" - from "pig_nose" - from "pill" - from "pineapple" - from "ping_pong" - from "pisces" - from "pitcairn_islands" - from "pizza" - from "place_of_worship" - from "plate_with_cutlery" - from "play_or_pause_button" - from "point_down" - from "point_left" - from "point_right" - from "point_up" - from "point_up_2" - from "poland" - from "police_car" - from "policeman" - from "policewoman" - from "poodle" - from "poop" - from "popcorn" - from "portugal" - from "post_office" - from "postal_horn" - from "postbox" - from "potable_water" - from "potato" - from "pouch" - from "poultry_leg" - from "pound" - from "pout" - from "pouting_cat" - from "pouting_man" - from "pouting_woman" - from "pray" - from "prayer_beads" - from "pregnant_woman" - from "previous_track_button" - from "prince" - from "princess" - from "printer" - from "puerto_rico" - from "punch" - from "purple_heart" - from "purse" - from "pushpin" - from "put_litter_in_its_place" - from "qatar" - from "question" - from "rabbit" - from "rabbit2" - from "racehorse" - from "racing_car" - from "radio" - from "radio_button" - from "radioactive" - from "rage" - from "railway_car" - from "railway_track" - from "rainbow" - from "rainbow_flag" - from "raised_back_of_hand" - from "raised_hand" - from "raised_hand_with_fingers_splayed" - from "raised_hands" - from "raising_hand" - from "raising_hand_man" - from "raising_hand_woman" - from "ram" - from "ramen" - from "rat" - from "record_button" - from "recycle" - from "red_car" - from "red_circle" - from "registered" - from "relaxed" - from "relieved" - from "reminder_ribbon" - from "repeat" - from "repeat_one" - from "rescue_worker_helmet" - from "restroom" - from "reunion" - from "revolving_hearts" - from "rewind" - from "rhinoceros" - from "ribbon" - from "rice" - from "rice_ball" - from "rice_cracker" - from "rice_scene" - from "right_anger_bubble" - from "ring" - from "robot" - from "rocket" - from "rofl" - from "roll_eyes" - from "roller_coaster" - from "romania" - from "rooster" - from "rose" - from "rosette" - from "rotating_light" - from "round_pushpin" - from "rowboat" - from "rowing_man" - from "rowing_woman" - from "ru" - from "rugby_football" - from "runner" - from "running" - from "running_man" - from "running_shirt_with_sash" - from "running_woman" - from "rwanda" - from "sa" - from "sagittarius" - from "sailboat" - from "sake" - from "samoa" - from "san_marino" - from "sandal" - from "santa" - from "sao_tome_principe" - from "satellite" - from "satisfied" - from "saudi_arabia" - from "saxophone" - from "school" - from "school_satchel" - from "scissors" - from "scorpion" - from "scorpius" - from "scream" - from "scream_cat" - from "scroll" - from "seat" - from "secret" - from "see_no_evil" - from "seedling" - from "selfie" - from "senegal" - from "serbia" - from "seven" - from "seychelles" - from "shallow_pan_of_food" - from "shamrock" - from "shark" - from "shaved_ice" - from "sheep" - from "shell" - from "shield" - from "shinto_shrine" - from "ship" - from "shirt" - from "shit" - from "shoe" - from "shopping" - from "shopping_cart" - from "shower" - from "shrimp" - from "sierra_leone" - from "signal_strength" - from "singapore" - from "sint_maarten" - from "six" - from "six_pointed_star" - from "ski" - from "skier" - from "skull" - from "skull_and_crossbones" - from "sleeping" - from "sleeping_bed" - from "sleepy" - from "slightly_frowning_face" - from "slightly_smiling_face" - from "slot_machine" - from "slovakia" - from "slovenia" - from "small_airplane" - from "small_blue_diamond" - from "small_orange_diamond" - from "small_red_triangle" - from "small_red_triangle_down" - from "smile" - from "smile_cat" - from "smiley" - from "smiley_cat" - from "smiling_imp" - from "smirk" - from "smirk_cat" - from "smoking" - from "snail" - from "snake" - from "sneezing_face" - from "snowboarder" - from "snowflake" - from "snowman" - from "snowman_with_snow" - from "sob" - from "soccer" - from "solomon_islands" - from "somalia" - from "soon" - from "sos" - from "sound" - from "south_africa" - from "south_georgia_south_sandwich_islands" - from "south_sudan" - from "space_invader" - from "spades" - from "spaghetti" - from "sparkle" - from "sparkler" - from "sparkles" - from "sparkling_heart" - from "speak_no_evil" - from "speaker" - from "speaking_head" - from "speech_balloon" - from "speedboat" - from "spider" - from "spider_web" - from "spiral_calendar" - from "spiral_notepad" - from "spoon" - from "squid" - from "sri_lanka" - from "st_barthelemy" - from "st_helena" - from "st_kitts_nevis" - from "st_lucia" - from "st_pierre_miquelon" - from "st_vincent_grenadines" - from "stadium" - from "star" - from "star2" - from "star_and_crescent" - from "star_of_david" - from "stars" - from "station" - from "statue_of_liberty" - from "steam_locomotive" - from "stew" - from "stop_button" - from "stop_sign" - from "stopwatch" - from "straight_ruler" - from "strawberry" - from "stuck_out_tongue" - from "stuck_out_tongue_closed_eyes" - from "stuck_out_tongue_winking_eye" - from "studio_microphone" - from "stuffed_flatbread" - from "sudan" - from "sun_behind_large_cloud" - from "sun_behind_rain_cloud" - from "sun_behind_small_cloud" - from "sun_with_face" - from "sunflower" - from "sunglasses" - from "sunny" - from "sunrise" - from "sunrise_over_mountains" - from "surfer" - from "surfing_man" - from "surfing_woman" - from "suriname" - from "sushi" - from "suspension_railway" - from "swaziland" - from "sweat" - from "sweat_drops" - from "sweat_smile" - from "sweden" - from "sweet_potato" - from "swimmer" - from "swimming_man" - from "swimming_woman" - from "switzerland" - from "symbols" - from "synagogue" - from "syria" - from "syringe" - from "taco" - from "tada" - from "taiwan" - from "tajikistan" - from "tanabata_tree" - from "tangerine" - from "tanzania" - from "taurus" - from "taxi" - from "tea" - from "telephone" - from "telephone_receiver" - from "telescope" - from "tennis" - from "tent" - from "thailand" - from "thermometer" - from "thinking" - from "thought_balloon" - from "three" - from "thumbsdown" - from "thumbsup" - from "ticket" - from "tickets" - from "tiger" - from "tiger2" - from "timer_clock" - from "timor_leste" - from "tipping_hand_man" - from "tipping_hand_woman" - from "tired_face" - from "tm" - from "togo" - from "toilet" - from "tokelau" - from "tokyo_tower" - from "tomato" - from "tonga" - from "tongue" - from "top" - from "tophat" - from "tornado" - from "tr" - from "trackball" - from "tractor" - from "traffic_light" - from "train" - from "train2" - from "tram" - from "triangular_flag_on_post" - from "triangular_ruler" - from "trident" - from "trinidad_tobago" - from "triumph" - from "trolleybus" - from "trophy" - from "tropical_drink" - from "tropical_fish" - from "truck" - from "trumpet" - from "tshirt" - from "tulip" - from "tumbler_glass" - from "tunisia" - from "turkey" - from "turkmenistan" - from "turks_caicos_islands" - from "turtle" - from "tuvalu" - from "tv" - from "twisted_rightwards_arrows" - from "two" - from "two_hearts" - from "two_men_holding_hands" - from "two_women_holding_hands" - from "u5272" - from "u5408" - from "u55b6" - from "u6307" - from "u6708" - from "u6709" - from "u6e80" - from "u7121" - from "u7533" - from "u7981" - from "u7a7a" - from "uganda" - from "uk" - from "ukraine" - from "umbrella" - from "unamused" - from "underage" - from "unicorn" - from "united_arab_emirates" - from "unlock" - from "up" - from "upside_down_face" - from "uruguay" - from "us" - from "us_virgin_islands" - from "uzbekistan" - from "v" - from "vanuatu" - from "vatican_city" - from "venezuela" - from "vertical_traffic_light" - from "vhs" - from "vibration_mode" - from "video_camera" - from "video_game" - from "vietnam" - from "violin" - from "virgo" - from "volcano" - from "volleyball" - from "vs" - from "vulcan_salute" - from "walking" - from "walking_man" - from "walking_woman" - from "wallis_futuna" - from "waning_crescent_moon" - from "waning_gibbous_moon" - from "warning" - from "wastebasket" - from "watch" - from "water_buffalo" - from "watermelon" - from "wave" - from "wavy_dash" - from "waxing_crescent_moon" - from "waxing_gibbous_moon" - from "wc" - from "weary" - from "wedding" - from "weight_lifting_man" - from "weight_lifting_woman" - from "western_sahara" - from "whale" - from "whale2" - from "wheel_of_dharma" - from "wheelchair" - from "white_check_mark" - from "white_circle" - from "white_flag" - from "white_flower" - from "white_large_square" - from "white_medium_small_square" - from "white_medium_square" - from "white_small_square" - from "white_square_button" - from "wilted_flower" - from "wind_chime" - from "wind_face" - from "wine_glass" - from "wink" - from "wolf" - from "woman" - from "woman_artist" - from "woman_astronaut" - from "woman_cartwheeling" - from "woman_cook" - from "woman_facepalming" - from "woman_factory_worker" - from "woman_farmer" - from "woman_firefighter" - from "woman_health_worker" - from "woman_judge" - from "woman_juggling" - from "woman_mechanic" - from "woman_office_worker" - from "woman_pilot" - from "woman_playing_handball" - from "woman_playing_water_polo" - from "woman_scientist" - from "woman_shrugging" - from "woman_singer" - from "woman_student" - from "woman_teacher" - from "woman_technologist" - from "woman_with_turban" - from "womans_clothes" - from "womans_hat" - from "women_wrestling" - from "womens" - from "world_map" - from "worried" - from "wrench" - from "writing_hand" - from "x" - from "yellow_heart" - from "yemen" - from "yen" - from "yin_yang" - from "yum" - from "zambia" - from "zap" - from "zero" - from "zimbabwe" - from "zipper_mouth_face" - from "zzz" - - - - diff --git a/tests/upstream-test-suite/076_emojis.cpp b/tests/upstream-test-suite/076_emojis.cpp deleted file mode 100644 index 0526ebe..0000000 --- a/tests/upstream-test-suite/076_emojis.cpp +++ /dev/null @@ -1,1493 +0,0 @@ -// objective: test all supported emoji characters -// check: indexpage.xml -/** \mainpage Emoji test - - @emoji +1 @emoji :+1: from "+1"
    - @emoji -1 @emoji :-1: from "-1"
    - @emoji 100 @emoji :100: from "100"
    - @emoji 1234 @emoji :1234: from "1234"
    - @emoji 1st_place_medal @emoji :1st_place_medal: from "1st_place_medal"
    - @emoji 2nd_place_medal @emoji :2nd_place_medal: from "2nd_place_medal"
    - @emoji 3rd_place_medal @emoji :3rd_place_medal: from "3rd_place_medal"
    - @emoji 8ball @emoji :8ball: from "8ball"
    - @emoji a @emoji :a: from "a"
    - @emoji ab @emoji :ab: from "ab"
    - @emoji abc @emoji :abc: from "abc"
    - @emoji abcd @emoji :abcd: from "abcd"
    - @emoji accept @emoji :accept: from "accept"
    - @emoji aerial_tramway @emoji :aerial_tramway: from "aerial_tramway"
    - @emoji afghanistan @emoji :afghanistan: from "afghanistan"
    - @emoji airplane @emoji :airplane: from "airplane"
    - @emoji aland_islands @emoji :aland_islands: from "aland_islands"
    - @emoji alarm_clock @emoji :alarm_clock: from "alarm_clock"
    - @emoji albania @emoji :albania: from "albania"
    - @emoji alembic @emoji :alembic: from "alembic"
    - @emoji algeria @emoji :algeria: from "algeria"
    - @emoji alien @emoji :alien: from "alien"
    - @emoji ambulance @emoji :ambulance: from "ambulance"
    - @emoji american_samoa @emoji :american_samoa: from "american_samoa"
    - @emoji amphora @emoji :amphora: from "amphora"
    - @emoji anchor @emoji :anchor: from "anchor"
    - @emoji andorra @emoji :andorra: from "andorra"
    - @emoji angel @emoji :angel: from "angel"
    - @emoji anger @emoji :anger: from "anger"
    - @emoji angola @emoji :angola: from "angola"
    - @emoji angry @emoji :angry: from "angry"
    - @emoji anguilla @emoji :anguilla: from "anguilla"
    - @emoji anguished @emoji :anguished: from "anguished"
    - @emoji ant @emoji :ant: from "ant"
    - @emoji antarctica @emoji :antarctica: from "antarctica"
    - @emoji antigua_barbuda @emoji :antigua_barbuda: from "antigua_barbuda"
    - @emoji apple @emoji :apple: from "apple"
    - @emoji aquarius @emoji :aquarius: from "aquarius"
    - @emoji argentina @emoji :argentina: from "argentina"
    - @emoji aries @emoji :aries: from "aries"
    - @emoji armenia @emoji :armenia: from "armenia"
    - @emoji arrow_backward @emoji :arrow_backward: from "arrow_backward"
    - @emoji arrow_double_down @emoji :arrow_double_down: from "arrow_double_down"
    - @emoji arrow_double_up @emoji :arrow_double_up: from "arrow_double_up"
    - @emoji arrow_down @emoji :arrow_down: from "arrow_down"
    - @emoji arrow_down_small @emoji :arrow_down_small: from "arrow_down_small"
    - @emoji arrow_forward @emoji :arrow_forward: from "arrow_forward"
    - @emoji arrow_heading_down @emoji :arrow_heading_down: from "arrow_heading_down"
    - @emoji arrow_heading_up @emoji :arrow_heading_up: from "arrow_heading_up"
    - @emoji arrow_left @emoji :arrow_left: from "arrow_left"
    - @emoji arrow_lower_left @emoji :arrow_lower_left: from "arrow_lower_left"
    - @emoji arrow_lower_right @emoji :arrow_lower_right: from "arrow_lower_right"
    - @emoji arrow_right @emoji :arrow_right: from "arrow_right"
    - @emoji arrow_right_hook @emoji :arrow_right_hook: from "arrow_right_hook"
    - @emoji arrow_up @emoji :arrow_up: from "arrow_up"
    - @emoji arrow_up_down @emoji :arrow_up_down: from "arrow_up_down"
    - @emoji arrow_up_small @emoji :arrow_up_small: from "arrow_up_small"
    - @emoji arrow_upper_left @emoji :arrow_upper_left: from "arrow_upper_left"
    - @emoji arrow_upper_right @emoji :arrow_upper_right: from "arrow_upper_right"
    - @emoji arrows_clockwise @emoji :arrows_clockwise: from "arrows_clockwise"
    - @emoji arrows_counterclockwise @emoji :arrows_counterclockwise: from "arrows_counterclockwise"
    - @emoji art @emoji :art: from "art"
    - @emoji articulated_lorry @emoji :articulated_lorry: from "articulated_lorry"
    - @emoji artificial_satellite @emoji :artificial_satellite: from "artificial_satellite"
    - @emoji aruba @emoji :aruba: from "aruba"
    - @emoji asterisk @emoji :asterisk: from "asterisk"
    - @emoji astonished @emoji :astonished: from "astonished"
    - @emoji athletic_shoe @emoji :athletic_shoe: from "athletic_shoe"
    - @emoji atm @emoji :atm: from "atm"
    - @emoji atom_symbol @emoji :atom_symbol: from "atom_symbol"
    - @emoji australia @emoji :australia: from "australia"
    - @emoji austria @emoji :austria: from "austria"
    - @emoji avocado @emoji :avocado: from "avocado"
    - @emoji azerbaijan @emoji :azerbaijan: from "azerbaijan"
    - @emoji b @emoji :b: from "b"
    - @emoji baby @emoji :baby: from "baby"
    - @emoji baby_bottle @emoji :baby_bottle: from "baby_bottle"
    - @emoji baby_chick @emoji :baby_chick: from "baby_chick"
    - @emoji baby_symbol @emoji :baby_symbol: from "baby_symbol"
    - @emoji back @emoji :back: from "back"
    - @emoji bacon @emoji :bacon: from "bacon"
    - @emoji badminton @emoji :badminton: from "badminton"
    - @emoji baggage_claim @emoji :baggage_claim: from "baggage_claim"
    - @emoji baguette_bread @emoji :baguette_bread: from "baguette_bread"
    - @emoji bahamas @emoji :bahamas: from "bahamas"
    - @emoji bahrain @emoji :bahrain: from "bahrain"
    - @emoji balance_scale @emoji :balance_scale: from "balance_scale"
    - @emoji balloon @emoji :balloon: from "balloon"
    - @emoji ballot_box @emoji :ballot_box: from "ballot_box"
    - @emoji ballot_box_with_check @emoji :ballot_box_with_check: from "ballot_box_with_check"
    - @emoji bamboo @emoji :bamboo: from "bamboo"
    - @emoji banana @emoji :banana: from "banana"
    - @emoji bangbang @emoji :bangbang: from "bangbang"
    - @emoji bangladesh @emoji :bangladesh: from "bangladesh"
    - @emoji bank @emoji :bank: from "bank"
    - @emoji bar_chart @emoji :bar_chart: from "bar_chart"
    - @emoji barbados @emoji :barbados: from "barbados"
    - @emoji barber @emoji :barber: from "barber"
    - @emoji baseball @emoji :baseball: from "baseball"
    - @emoji basketball @emoji :basketball: from "basketball"
    - @emoji basketball_man @emoji :basketball_man: from "basketball_man"
    - @emoji basketball_woman @emoji :basketball_woman: from "basketball_woman"
    - @emoji bat @emoji :bat: from "bat"
    - @emoji bath @emoji :bath: from "bath"
    - @emoji bathtub @emoji :bathtub: from "bathtub"
    - @emoji battery @emoji :battery: from "battery"
    - @emoji beach_umbrella @emoji :beach_umbrella: from "beach_umbrella"
    - @emoji bear @emoji :bear: from "bear"
    - @emoji bed @emoji :bed: from "bed"
    - @emoji bee @emoji :bee: from "bee"
    - @emoji beer @emoji :beer: from "beer"
    - @emoji beers @emoji :beers: from "beers"
    - @emoji beetle @emoji :beetle: from "beetle"
    - @emoji beginner @emoji :beginner: from "beginner"
    - @emoji belarus @emoji :belarus: from "belarus"
    - @emoji belgium @emoji :belgium: from "belgium"
    - @emoji belize @emoji :belize: from "belize"
    - @emoji bell @emoji :bell: from "bell"
    - @emoji bellhop_bell @emoji :bellhop_bell: from "bellhop_bell"
    - @emoji benin @emoji :benin: from "benin"
    - @emoji bento @emoji :bento: from "bento"
    - @emoji bermuda @emoji :bermuda: from "bermuda"
    - @emoji bhutan @emoji :bhutan: from "bhutan"
    - @emoji bicyclist @emoji :bicyclist: from "bicyclist"
    - @emoji bike @emoji :bike: from "bike"
    - @emoji biking_man @emoji :biking_man: from "biking_man"
    - @emoji biking_woman @emoji :biking_woman: from "biking_woman"
    - @emoji bikini @emoji :bikini: from "bikini"
    - @emoji biohazard @emoji :biohazard: from "biohazard"
    - @emoji bird @emoji :bird: from "bird"
    - @emoji birthday @emoji :birthday: from "birthday"
    - @emoji black_circle @emoji :black_circle: from "black_circle"
    - @emoji black_flag @emoji :black_flag: from "black_flag"
    - @emoji black_heart @emoji :black_heart: from "black_heart"
    - @emoji black_joker @emoji :black_joker: from "black_joker"
    - @emoji black_large_square @emoji :black_large_square: from "black_large_square"
    - @emoji black_medium_small_square @emoji :black_medium_small_square: from "black_medium_small_square"
    - @emoji black_medium_square @emoji :black_medium_square: from "black_medium_square"
    - @emoji black_nib @emoji :black_nib: from "black_nib"
    - @emoji black_small_square @emoji :black_small_square: from "black_small_square"
    - @emoji black_square_button @emoji :black_square_button: from "black_square_button"
    - @emoji blonde_man @emoji :blonde_man: from "blonde_man"
    - @emoji blonde_woman @emoji :blonde_woman: from "blonde_woman"
    - @emoji blossom @emoji :blossom: from "blossom"
    - @emoji blowfish @emoji :blowfish: from "blowfish"
    - @emoji blue_book @emoji :blue_book: from "blue_book"
    - @emoji blue_car @emoji :blue_car: from "blue_car"
    - @emoji blue_heart @emoji :blue_heart: from "blue_heart"
    - @emoji blush @emoji :blush: from "blush"
    - @emoji boar @emoji :boar: from "boar"
    - @emoji boat @emoji :boat: from "boat"
    - @emoji bolivia @emoji :bolivia: from "bolivia"
    - @emoji bomb @emoji :bomb: from "bomb"
    - @emoji book @emoji :book: from "book"
    - @emoji bookmark @emoji :bookmark: from "bookmark"
    - @emoji bookmark_tabs @emoji :bookmark_tabs: from "bookmark_tabs"
    - @emoji books @emoji :books: from "books"
    - @emoji boom @emoji :boom: from "boom"
    - @emoji boot @emoji :boot: from "boot"
    - @emoji bosnia_herzegovina @emoji :bosnia_herzegovina: from "bosnia_herzegovina"
    - @emoji botswana @emoji :botswana: from "botswana"
    - @emoji bouquet @emoji :bouquet: from "bouquet"
    - @emoji bow @emoji :bow: from "bow"
    - @emoji bow_and_arrow @emoji :bow_and_arrow: from "bow_and_arrow"
    - @emoji bowing_man @emoji :bowing_man: from "bowing_man"
    - @emoji bowing_woman @emoji :bowing_woman: from "bowing_woman"
    - @emoji bowling @emoji :bowling: from "bowling"
    - @emoji boxing_glove @emoji :boxing_glove: from "boxing_glove"
    - @emoji boy @emoji :boy: from "boy"
    - @emoji brazil @emoji :brazil: from "brazil"
    - @emoji bread @emoji :bread: from "bread"
    - @emoji bride_with_veil @emoji :bride_with_veil: from "bride_with_veil"
    - @emoji bridge_at_night @emoji :bridge_at_night: from "bridge_at_night"
    - @emoji briefcase @emoji :briefcase: from "briefcase"
    - @emoji british_indian_ocean_territory @emoji :british_indian_ocean_territory: from "british_indian_ocean_territory"
    - @emoji british_virgin_islands @emoji :british_virgin_islands: from "british_virgin_islands"
    - @emoji broken_heart @emoji :broken_heart: from "broken_heart"
    - @emoji brunei @emoji :brunei: from "brunei"
    - @emoji bug @emoji :bug: from "bug"
    - @emoji building_construction @emoji :building_construction: from "building_construction"
    - @emoji bulb @emoji :bulb: from "bulb"
    - @emoji bulgaria @emoji :bulgaria: from "bulgaria"
    - @emoji bullettrain_front @emoji :bullettrain_front: from "bullettrain_front"
    - @emoji bullettrain_side @emoji :bullettrain_side: from "bullettrain_side"
    - @emoji burkina_faso @emoji :burkina_faso: from "burkina_faso"
    - @emoji burrito @emoji :burrito: from "burrito"
    - @emoji burundi @emoji :burundi: from "burundi"
    - @emoji bus @emoji :bus: from "bus"
    - @emoji business_suit_levitating @emoji :business_suit_levitating: from "business_suit_levitating"
    - @emoji busstop @emoji :busstop: from "busstop"
    - @emoji bust_in_silhouette @emoji :bust_in_silhouette: from "bust_in_silhouette"
    - @emoji busts_in_silhouette @emoji :busts_in_silhouette: from "busts_in_silhouette"
    - @emoji butterfly @emoji :butterfly: from "butterfly"
    - @emoji cactus @emoji :cactus: from "cactus"
    - @emoji cake @emoji :cake: from "cake"
    - @emoji calendar @emoji :calendar: from "calendar"
    - @emoji call_me_hand @emoji :call_me_hand: from "call_me_hand"
    - @emoji calling @emoji :calling: from "calling"
    - @emoji cambodia @emoji :cambodia: from "cambodia"
    - @emoji camel @emoji :camel: from "camel"
    - @emoji camera @emoji :camera: from "camera"
    - @emoji camera_flash @emoji :camera_flash: from "camera_flash"
    - @emoji cameroon @emoji :cameroon: from "cameroon"
    - @emoji camping @emoji :camping: from "camping"
    - @emoji canada @emoji :canada: from "canada"
    - @emoji canary_islands @emoji :canary_islands: from "canary_islands"
    - @emoji cancer @emoji :cancer: from "cancer"
    - @emoji candle @emoji :candle: from "candle"
    - @emoji candy @emoji :candy: from "candy"
    - @emoji canoe @emoji :canoe: from "canoe"
    - @emoji cape_verde @emoji :cape_verde: from "cape_verde"
    - @emoji capital_abcd @emoji :capital_abcd: from "capital_abcd"
    - @emoji capricorn @emoji :capricorn: from "capricorn"
    - @emoji car @emoji :car: from "car"
    - @emoji card_file_box @emoji :card_file_box: from "card_file_box"
    - @emoji card_index @emoji :card_index: from "card_index"
    - @emoji card_index_dividers @emoji :card_index_dividers: from "card_index_dividers"
    - @emoji caribbean_netherlands @emoji :caribbean_netherlands: from "caribbean_netherlands"
    - @emoji carousel_horse @emoji :carousel_horse: from "carousel_horse"
    - @emoji carrot @emoji :carrot: from "carrot"
    - @emoji cat @emoji :cat: from "cat"
    - @emoji cat2 @emoji :cat2: from "cat2"
    - @emoji cayman_islands @emoji :cayman_islands: from "cayman_islands"
    - @emoji cd @emoji :cd: from "cd"
    - @emoji central_african_republic @emoji :central_african_republic: from "central_african_republic"
    - @emoji chad @emoji :chad: from "chad"
    - @emoji chains @emoji :chains: from "chains"
    - @emoji champagne @emoji :champagne: from "champagne"
    - @emoji chart @emoji :chart: from "chart"
    - @emoji chart_with_downwards_trend @emoji :chart_with_downwards_trend: from "chart_with_downwards_trend"
    - @emoji chart_with_upwards_trend @emoji :chart_with_upwards_trend: from "chart_with_upwards_trend"
    - @emoji checkered_flag @emoji :checkered_flag: from "checkered_flag"
    - @emoji cheese @emoji :cheese: from "cheese"
    - @emoji cherries @emoji :cherries: from "cherries"
    - @emoji cherry_blossom @emoji :cherry_blossom: from "cherry_blossom"
    - @emoji chestnut @emoji :chestnut: from "chestnut"
    - @emoji chicken @emoji :chicken: from "chicken"
    - @emoji children_crossing @emoji :children_crossing: from "children_crossing"
    - @emoji chile @emoji :chile: from "chile"
    - @emoji chipmunk @emoji :chipmunk: from "chipmunk"
    - @emoji chocolate_bar @emoji :chocolate_bar: from "chocolate_bar"
    - @emoji christmas_island @emoji :christmas_island: from "christmas_island"
    - @emoji christmas_tree @emoji :christmas_tree: from "christmas_tree"
    - @emoji church @emoji :church: from "church"
    - @emoji cinema @emoji :cinema: from "cinema"
    - @emoji circus_tent @emoji :circus_tent: from "circus_tent"
    - @emoji city_sunrise @emoji :city_sunrise: from "city_sunrise"
    - @emoji city_sunset @emoji :city_sunset: from "city_sunset"
    - @emoji cityscape @emoji :cityscape: from "cityscape"
    - @emoji cl @emoji :cl: from "cl"
    - @emoji clamp @emoji :clamp: from "clamp"
    - @emoji clap @emoji :clap: from "clap"
    - @emoji clapper @emoji :clapper: from "clapper"
    - @emoji classical_building @emoji :classical_building: from "classical_building"
    - @emoji clinking_glasses @emoji :clinking_glasses: from "clinking_glasses"
    - @emoji clipboard @emoji :clipboard: from "clipboard"
    - @emoji clock1 @emoji :clock1: from "clock1"
    - @emoji clock10 @emoji :clock10: from "clock10"
    - @emoji clock1030 @emoji :clock1030: from "clock1030"
    - @emoji clock11 @emoji :clock11: from "clock11"
    - @emoji clock1130 @emoji :clock1130: from "clock1130"
    - @emoji clock12 @emoji :clock12: from "clock12"
    - @emoji clock1230 @emoji :clock1230: from "clock1230"
    - @emoji clock130 @emoji :clock130: from "clock130"
    - @emoji clock2 @emoji :clock2: from "clock2"
    - @emoji clock230 @emoji :clock230: from "clock230"
    - @emoji clock3 @emoji :clock3: from "clock3"
    - @emoji clock330 @emoji :clock330: from "clock330"
    - @emoji clock4 @emoji :clock4: from "clock4"
    - @emoji clock430 @emoji :clock430: from "clock430"
    - @emoji clock5 @emoji :clock5: from "clock5"
    - @emoji clock530 @emoji :clock530: from "clock530"
    - @emoji clock6 @emoji :clock6: from "clock6"
    - @emoji clock630 @emoji :clock630: from "clock630"
    - @emoji clock7 @emoji :clock7: from "clock7"
    - @emoji clock730 @emoji :clock730: from "clock730"
    - @emoji clock8 @emoji :clock8: from "clock8"
    - @emoji clock830 @emoji :clock830: from "clock830"
    - @emoji clock9 @emoji :clock9: from "clock9"
    - @emoji clock930 @emoji :clock930: from "clock930"
    - @emoji closed_book @emoji :closed_book: from "closed_book"
    - @emoji closed_lock_with_key @emoji :closed_lock_with_key: from "closed_lock_with_key"
    - @emoji closed_umbrella @emoji :closed_umbrella: from "closed_umbrella"
    - @emoji cloud @emoji :cloud: from "cloud"
    - @emoji cloud_with_lightning @emoji :cloud_with_lightning: from "cloud_with_lightning"
    - @emoji cloud_with_lightning_and_rain @emoji :cloud_with_lightning_and_rain: from "cloud_with_lightning_and_rain"
    - @emoji cloud_with_rain @emoji :cloud_with_rain: from "cloud_with_rain"
    - @emoji cloud_with_snow @emoji :cloud_with_snow: from "cloud_with_snow"
    - @emoji clown_face @emoji :clown_face: from "clown_face"
    - @emoji clubs @emoji :clubs: from "clubs"
    - @emoji cn @emoji :cn: from "cn"
    - @emoji cocktail @emoji :cocktail: from "cocktail"
    - @emoji cocos_islands @emoji :cocos_islands: from "cocos_islands"
    - @emoji coffee @emoji :coffee: from "coffee"
    - @emoji coffin @emoji :coffin: from "coffin"
    - @emoji cold_sweat @emoji :cold_sweat: from "cold_sweat"
    - @emoji collision @emoji :collision: from "collision"
    - @emoji colombia @emoji :colombia: from "colombia"
    - @emoji comet @emoji :comet: from "comet"
    - @emoji comoros @emoji :comoros: from "comoros"
    - @emoji computer @emoji :computer: from "computer"
    - @emoji computer_mouse @emoji :computer_mouse: from "computer_mouse"
    - @emoji confetti_ball @emoji :confetti_ball: from "confetti_ball"
    - @emoji confounded @emoji :confounded: from "confounded"
    - @emoji confused @emoji :confused: from "confused"
    - @emoji congo_brazzaville @emoji :congo_brazzaville: from "congo_brazzaville"
    - @emoji congo_kinshasa @emoji :congo_kinshasa: from "congo_kinshasa"
    - @emoji congratulations @emoji :congratulations: from "congratulations"
    - @emoji construction @emoji :construction: from "construction"
    - @emoji construction_worker @emoji :construction_worker: from "construction_worker"
    - @emoji construction_worker_man @emoji :construction_worker_man: from "construction_worker_man"
    - @emoji construction_worker_woman @emoji :construction_worker_woman: from "construction_worker_woman"
    - @emoji control_knobs @emoji :control_knobs: from "control_knobs"
    - @emoji convenience_store @emoji :convenience_store: from "convenience_store"
    - @emoji cook_islands @emoji :cook_islands: from "cook_islands"
    - @emoji cookie @emoji :cookie: from "cookie"
    - @emoji cool @emoji :cool: from "cool"
    - @emoji cop @emoji :cop: from "cop"
    - @emoji copyright @emoji :copyright: from "copyright"
    - @emoji corn @emoji :corn: from "corn"
    - @emoji costa_rica @emoji :costa_rica: from "costa_rica"
    - @emoji cote_divoire @emoji :cote_divoire: from "cote_divoire"
    - @emoji couch_and_lamp @emoji :couch_and_lamp: from "couch_and_lamp"
    - @emoji couple @emoji :couple: from "couple"
    - @emoji couple_with_heart @emoji :couple_with_heart: from "couple_with_heart"
    - @emoji couple_with_heart_man_man @emoji :couple_with_heart_man_man: from "couple_with_heart_man_man"
    - @emoji couple_with_heart_woman_man @emoji :couple_with_heart_woman_man: from "couple_with_heart_woman_man"
    - @emoji couple_with_heart_woman_woman @emoji :couple_with_heart_woman_woman: from "couple_with_heart_woman_woman"
    - @emoji couplekiss_man_man @emoji :couplekiss_man_man: from "couplekiss_man_man"
    - @emoji couplekiss_man_woman @emoji :couplekiss_man_woman: from "couplekiss_man_woman"
    - @emoji couplekiss_woman_woman @emoji :couplekiss_woman_woman: from "couplekiss_woman_woman"
    - @emoji cow @emoji :cow: from "cow"
    - @emoji cow2 @emoji :cow2: from "cow2"
    - @emoji cowboy_hat_face @emoji :cowboy_hat_face: from "cowboy_hat_face"
    - @emoji crab @emoji :crab: from "crab"
    - @emoji crayon @emoji :crayon: from "crayon"
    - @emoji credit_card @emoji :credit_card: from "credit_card"
    - @emoji crescent_moon @emoji :crescent_moon: from "crescent_moon"
    - @emoji cricket @emoji :cricket: from "cricket"
    - @emoji croatia @emoji :croatia: from "croatia"
    - @emoji crocodile @emoji :crocodile: from "crocodile"
    - @emoji croissant @emoji :croissant: from "croissant"
    - @emoji crossed_fingers @emoji :crossed_fingers: from "crossed_fingers"
    - @emoji crossed_flags @emoji :crossed_flags: from "crossed_flags"
    - @emoji crossed_swords @emoji :crossed_swords: from "crossed_swords"
    - @emoji crown @emoji :crown: from "crown"
    - @emoji cry @emoji :cry: from "cry"
    - @emoji crying_cat_face @emoji :crying_cat_face: from "crying_cat_face"
    - @emoji crystal_ball @emoji :crystal_ball: from "crystal_ball"
    - @emoji cuba @emoji :cuba: from "cuba"
    - @emoji cucumber @emoji :cucumber: from "cucumber"
    - @emoji cupid @emoji :cupid: from "cupid"
    - @emoji curacao @emoji :curacao: from "curacao"
    - @emoji curly_loop @emoji :curly_loop: from "curly_loop"
    - @emoji currency_exchange @emoji :currency_exchange: from "currency_exchange"
    - @emoji curry @emoji :curry: from "curry"
    - @emoji custard @emoji :custard: from "custard"
    - @emoji customs @emoji :customs: from "customs"
    - @emoji cyclone @emoji :cyclone: from "cyclone"
    - @emoji cyprus @emoji :cyprus: from "cyprus"
    - @emoji czech_republic @emoji :czech_republic: from "czech_republic"
    - @emoji dagger @emoji :dagger: from "dagger"
    - @emoji dancer @emoji :dancer: from "dancer"
    - @emoji dancers @emoji :dancers: from "dancers"
    - @emoji dancing_men @emoji :dancing_men: from "dancing_men"
    - @emoji dancing_women @emoji :dancing_women: from "dancing_women"
    - @emoji dango @emoji :dango: from "dango"
    - @emoji dark_sunglasses @emoji :dark_sunglasses: from "dark_sunglasses"
    - @emoji dart @emoji :dart: from "dart"
    - @emoji dash @emoji :dash: from "dash"
    - @emoji date @emoji :date: from "date"
    - @emoji de @emoji :de: from "de"
    - @emoji deciduous_tree @emoji :deciduous_tree: from "deciduous_tree"
    - @emoji deer @emoji :deer: from "deer"
    - @emoji denmark @emoji :denmark: from "denmark"
    - @emoji department_store @emoji :department_store: from "department_store"
    - @emoji derelict_house @emoji :derelict_house: from "derelict_house"
    - @emoji desert @emoji :desert: from "desert"
    - @emoji desert_island @emoji :desert_island: from "desert_island"
    - @emoji desktop_computer @emoji :desktop_computer: from "desktop_computer"
    - @emoji detective @emoji :detective: from "detective"
    - @emoji diamond_shape_with_a_dot_inside @emoji :diamond_shape_with_a_dot_inside: from "diamond_shape_with_a_dot_inside"
    - @emoji diamonds @emoji :diamonds: from "diamonds"
    - @emoji disappointed @emoji :disappointed: from "disappointed"
    - @emoji disappointed_relieved @emoji :disappointed_relieved: from "disappointed_relieved"
    - @emoji dizzy @emoji :dizzy: from "dizzy"
    - @emoji dizzy_face @emoji :dizzy_face: from "dizzy_face"
    - @emoji djibouti @emoji :djibouti: from "djibouti"
    - @emoji do_not_litter @emoji :do_not_litter: from "do_not_litter"
    - @emoji dog @emoji :dog: from "dog"
    - @emoji dog2 @emoji :dog2: from "dog2"
    - @emoji dollar @emoji :dollar: from "dollar"
    - @emoji dolls @emoji :dolls: from "dolls"
    - @emoji dolphin @emoji :dolphin: from "dolphin"
    - @emoji dominica @emoji :dominica: from "dominica"
    - @emoji dominican_republic @emoji :dominican_republic: from "dominican_republic"
    - @emoji door @emoji :door: from "door"
    - @emoji doughnut @emoji :doughnut: from "doughnut"
    - @emoji dove @emoji :dove: from "dove"
    - @emoji dragon @emoji :dragon: from "dragon"
    - @emoji dragon_face @emoji :dragon_face: from "dragon_face"
    - @emoji dress @emoji :dress: from "dress"
    - @emoji dromedary_camel @emoji :dromedary_camel: from "dromedary_camel"
    - @emoji drooling_face @emoji :drooling_face: from "drooling_face"
    - @emoji droplet @emoji :droplet: from "droplet"
    - @emoji drum @emoji :drum: from "drum"
    - @emoji duck @emoji :duck: from "duck"
    - @emoji dvd @emoji :dvd: from "dvd"
    - @emoji e-mail @emoji :e-mail: from "e-mail"
    - @emoji eagle @emoji :eagle: from "eagle"
    - @emoji ear @emoji :ear: from "ear"
    - @emoji ear_of_rice @emoji :ear_of_rice: from "ear_of_rice"
    - @emoji earth_africa @emoji :earth_africa: from "earth_africa"
    - @emoji earth_americas @emoji :earth_americas: from "earth_americas"
    - @emoji earth_asia @emoji :earth_asia: from "earth_asia"
    - @emoji ecuador @emoji :ecuador: from "ecuador"
    - @emoji egg @emoji :egg: from "egg"
    - @emoji eggplant @emoji :eggplant: from "eggplant"
    - @emoji egypt @emoji :egypt: from "egypt"
    - @emoji eight @emoji :eight: from "eight"
    - @emoji eight_pointed_black_star @emoji :eight_pointed_black_star: from "eight_pointed_black_star"
    - @emoji eight_spoked_asterisk @emoji :eight_spoked_asterisk: from "eight_spoked_asterisk"
    - @emoji el_salvador @emoji :el_salvador: from "el_salvador"
    - @emoji electric_plug @emoji :electric_plug: from "electric_plug"
    - @emoji elephant @emoji :elephant: from "elephant"
    - @emoji email @emoji :email: from "email"
    - @emoji end @emoji :end: from "end"
    - @emoji envelope @emoji :envelope: from "envelope"
    - @emoji envelope_with_arrow @emoji :envelope_with_arrow: from "envelope_with_arrow"
    - @emoji equatorial_guinea @emoji :equatorial_guinea: from "equatorial_guinea"
    - @emoji eritrea @emoji :eritrea: from "eritrea"
    - @emoji es @emoji :es: from "es"
    - @emoji estonia @emoji :estonia: from "estonia"
    - @emoji ethiopia @emoji :ethiopia: from "ethiopia"
    - @emoji eu @emoji :eu: from "eu"
    - @emoji euro @emoji :euro: from "euro"
    - @emoji european_castle @emoji :european_castle: from "european_castle"
    - @emoji european_post_office @emoji :european_post_office: from "european_post_office"
    - @emoji european_union @emoji :european_union: from "european_union"
    - @emoji evergreen_tree @emoji :evergreen_tree: from "evergreen_tree"
    - @emoji exclamation @emoji :exclamation: from "exclamation"
    - @emoji expressionless @emoji :expressionless: from "expressionless"
    - @emoji eye @emoji :eye: from "eye"
    - @emoji eye_speech_bubble @emoji :eye_speech_bubble: from "eye_speech_bubble"
    - @emoji eyeglasses @emoji :eyeglasses: from "eyeglasses"
    - @emoji eyes @emoji :eyes: from "eyes"
    - @emoji face_with_head_bandage @emoji :face_with_head_bandage: from "face_with_head_bandage"
    - @emoji face_with_thermometer @emoji :face_with_thermometer: from "face_with_thermometer"
    - @emoji facepunch @emoji :facepunch: from "facepunch"
    - @emoji factory @emoji :factory: from "factory"
    - @emoji falkland_islands @emoji :falkland_islands: from "falkland_islands"
    - @emoji fallen_leaf @emoji :fallen_leaf: from "fallen_leaf"
    - @emoji family @emoji :family: from "family"
    - @emoji family_man_boy @emoji :family_man_boy: from "family_man_boy"
    - @emoji family_man_boy_boy @emoji :family_man_boy_boy: from "family_man_boy_boy"
    - @emoji family_man_girl @emoji :family_man_girl: from "family_man_girl"
    - @emoji family_man_girl_boy @emoji :family_man_girl_boy: from "family_man_girl_boy"
    - @emoji family_man_girl_girl @emoji :family_man_girl_girl: from "family_man_girl_girl"
    - @emoji family_man_man_boy @emoji :family_man_man_boy: from "family_man_man_boy"
    - @emoji family_man_man_boy_boy @emoji :family_man_man_boy_boy: from "family_man_man_boy_boy"
    - @emoji family_man_man_girl @emoji :family_man_man_girl: from "family_man_man_girl"
    - @emoji family_man_man_girl_boy @emoji :family_man_man_girl_boy: from "family_man_man_girl_boy"
    - @emoji family_man_man_girl_girl @emoji :family_man_man_girl_girl: from "family_man_man_girl_girl"
    - @emoji family_man_woman_boy @emoji :family_man_woman_boy: from "family_man_woman_boy"
    - @emoji family_man_woman_boy_boy @emoji :family_man_woman_boy_boy: from "family_man_woman_boy_boy"
    - @emoji family_man_woman_girl @emoji :family_man_woman_girl: from "family_man_woman_girl"
    - @emoji family_man_woman_girl_boy @emoji :family_man_woman_girl_boy: from "family_man_woman_girl_boy"
    - @emoji family_man_woman_girl_girl @emoji :family_man_woman_girl_girl: from "family_man_woman_girl_girl"
    - @emoji family_woman_boy @emoji :family_woman_boy: from "family_woman_boy"
    - @emoji family_woman_boy_boy @emoji :family_woman_boy_boy: from "family_woman_boy_boy"
    - @emoji family_woman_girl @emoji :family_woman_girl: from "family_woman_girl"
    - @emoji family_woman_girl_boy @emoji :family_woman_girl_boy: from "family_woman_girl_boy"
    - @emoji family_woman_girl_girl @emoji :family_woman_girl_girl: from "family_woman_girl_girl"
    - @emoji family_woman_woman_boy @emoji :family_woman_woman_boy: from "family_woman_woman_boy"
    - @emoji family_woman_woman_boy_boy @emoji :family_woman_woman_boy_boy: from "family_woman_woman_boy_boy"
    - @emoji family_woman_woman_girl @emoji :family_woman_woman_girl: from "family_woman_woman_girl"
    - @emoji family_woman_woman_girl_boy @emoji :family_woman_woman_girl_boy: from "family_woman_woman_girl_boy"
    - @emoji family_woman_woman_girl_girl @emoji :family_woman_woman_girl_girl: from "family_woman_woman_girl_girl"
    - @emoji faroe_islands @emoji :faroe_islands: from "faroe_islands"
    - @emoji fast_forward @emoji :fast_forward: from "fast_forward"
    - @emoji fax @emoji :fax: from "fax"
    - @emoji fearful @emoji :fearful: from "fearful"
    - @emoji feet @emoji :feet: from "feet"
    - @emoji female_detective @emoji :female_detective: from "female_detective"
    - @emoji ferris_wheel @emoji :ferris_wheel: from "ferris_wheel"
    - @emoji ferry @emoji :ferry: from "ferry"
    - @emoji field_hockey @emoji :field_hockey: from "field_hockey"
    - @emoji fiji @emoji :fiji: from "fiji"
    - @emoji file_cabinet @emoji :file_cabinet: from "file_cabinet"
    - @emoji file_folder @emoji :file_folder: from "file_folder"
    - @emoji film_projector @emoji :film_projector: from "film_projector"
    - @emoji film_strip @emoji :film_strip: from "film_strip"
    - @emoji finland @emoji :finland: from "finland"
    - @emoji fire @emoji :fire: from "fire"
    - @emoji fire_engine @emoji :fire_engine: from "fire_engine"
    - @emoji fireworks @emoji :fireworks: from "fireworks"
    - @emoji first_quarter_moon @emoji :first_quarter_moon: from "first_quarter_moon"
    - @emoji first_quarter_moon_with_face @emoji :first_quarter_moon_with_face: from "first_quarter_moon_with_face"
    - @emoji fish @emoji :fish: from "fish"
    - @emoji fish_cake @emoji :fish_cake: from "fish_cake"
    - @emoji fishing_pole_and_fish @emoji :fishing_pole_and_fish: from "fishing_pole_and_fish"
    - @emoji fist @emoji :fist: from "fist"
    - @emoji fist_left @emoji :fist_left: from "fist_left"
    - @emoji fist_oncoming @emoji :fist_oncoming: from "fist_oncoming"
    - @emoji fist_raised @emoji :fist_raised: from "fist_raised"
    - @emoji fist_right @emoji :fist_right: from "fist_right"
    - @emoji five @emoji :five: from "five"
    - @emoji flags @emoji :flags: from "flags"
    - @emoji flashlight @emoji :flashlight: from "flashlight"
    - @emoji fleur_de_lis @emoji :fleur_de_lis: from "fleur_de_lis"
    - @emoji flight_arrival @emoji :flight_arrival: from "flight_arrival"
    - @emoji flight_departure @emoji :flight_departure: from "flight_departure"
    - @emoji flipper @emoji :flipper: from "flipper"
    - @emoji floppy_disk @emoji :floppy_disk: from "floppy_disk"
    - @emoji flower_playing_cards @emoji :flower_playing_cards: from "flower_playing_cards"
    - @emoji flushed @emoji :flushed: from "flushed"
    - @emoji fog @emoji :fog: from "fog"
    - @emoji foggy @emoji :foggy: from "foggy"
    - @emoji football @emoji :football: from "football"
    - @emoji footprints @emoji :footprints: from "footprints"
    - @emoji fork_and_knife @emoji :fork_and_knife: from "fork_and_knife"
    - @emoji fountain @emoji :fountain: from "fountain"
    - @emoji fountain_pen @emoji :fountain_pen: from "fountain_pen"
    - @emoji four @emoji :four: from "four"
    - @emoji four_leaf_clover @emoji :four_leaf_clover: from "four_leaf_clover"
    - @emoji fox_face @emoji :fox_face: from "fox_face"
    - @emoji fr @emoji :fr: from "fr"
    - @emoji framed_picture @emoji :framed_picture: from "framed_picture"
    - @emoji free @emoji :free: from "free"
    - @emoji french_guiana @emoji :french_guiana: from "french_guiana"
    - @emoji french_polynesia @emoji :french_polynesia: from "french_polynesia"
    - @emoji french_southern_territories @emoji :french_southern_territories: from "french_southern_territories"
    - @emoji fried_egg @emoji :fried_egg: from "fried_egg"
    - @emoji fried_shrimp @emoji :fried_shrimp: from "fried_shrimp"
    - @emoji fries @emoji :fries: from "fries"
    - @emoji frog @emoji :frog: from "frog"
    - @emoji frowning @emoji :frowning: from "frowning"
    - @emoji frowning_face @emoji :frowning_face: from "frowning_face"
    - @emoji frowning_man @emoji :frowning_man: from "frowning_man"
    - @emoji frowning_woman @emoji :frowning_woman: from "frowning_woman"
    - @emoji fu @emoji :fu: from "fu"
    - @emoji fuelpump @emoji :fuelpump: from "fuelpump"
    - @emoji full_moon @emoji :full_moon: from "full_moon"
    - @emoji full_moon_with_face @emoji :full_moon_with_face: from "full_moon_with_face"
    - @emoji funeral_urn @emoji :funeral_urn: from "funeral_urn"
    - @emoji gabon @emoji :gabon: from "gabon"
    - @emoji gambia @emoji :gambia: from "gambia"
    - @emoji game_die @emoji :game_die: from "game_die"
    - @emoji gb @emoji :gb: from "gb"
    - @emoji gear @emoji :gear: from "gear"
    - @emoji gem @emoji :gem: from "gem"
    - @emoji gemini @emoji :gemini: from "gemini"
    - @emoji georgia @emoji :georgia: from "georgia"
    - @emoji ghana @emoji :ghana: from "ghana"
    - @emoji ghost @emoji :ghost: from "ghost"
    - @emoji gibraltar @emoji :gibraltar: from "gibraltar"
    - @emoji gift @emoji :gift: from "gift"
    - @emoji gift_heart @emoji :gift_heart: from "gift_heart"
    - @emoji girl @emoji :girl: from "girl"
    - @emoji globe_with_meridians @emoji :globe_with_meridians: from "globe_with_meridians"
    - @emoji goal_net @emoji :goal_net: from "goal_net"
    - @emoji goat @emoji :goat: from "goat"
    - @emoji golf @emoji :golf: from "golf"
    - @emoji golfing_man @emoji :golfing_man: from "golfing_man"
    - @emoji golfing_woman @emoji :golfing_woman: from "golfing_woman"
    - @emoji gorilla @emoji :gorilla: from "gorilla"
    - @emoji grapes @emoji :grapes: from "grapes"
    - @emoji greece @emoji :greece: from "greece"
    - @emoji green_apple @emoji :green_apple: from "green_apple"
    - @emoji green_book @emoji :green_book: from "green_book"
    - @emoji green_heart @emoji :green_heart: from "green_heart"
    - @emoji green_salad @emoji :green_salad: from "green_salad"
    - @emoji greenland @emoji :greenland: from "greenland"
    - @emoji grenada @emoji :grenada: from "grenada"
    - @emoji grey_exclamation @emoji :grey_exclamation: from "grey_exclamation"
    - @emoji grey_question @emoji :grey_question: from "grey_question"
    - @emoji grimacing @emoji :grimacing: from "grimacing"
    - @emoji grin @emoji :grin: from "grin"
    - @emoji grinning @emoji :grinning: from "grinning"
    - @emoji guadeloupe @emoji :guadeloupe: from "guadeloupe"
    - @emoji guam @emoji :guam: from "guam"
    - @emoji guardsman @emoji :guardsman: from "guardsman"
    - @emoji guardswoman @emoji :guardswoman: from "guardswoman"
    - @emoji guatemala @emoji :guatemala: from "guatemala"
    - @emoji guernsey @emoji :guernsey: from "guernsey"
    - @emoji guinea @emoji :guinea: from "guinea"
    - @emoji guinea_bissau @emoji :guinea_bissau: from "guinea_bissau"
    - @emoji guitar @emoji :guitar: from "guitar"
    - @emoji gun @emoji :gun: from "gun"
    - @emoji guyana @emoji :guyana: from "guyana"
    - @emoji haircut @emoji :haircut: from "haircut"
    - @emoji haircut_man @emoji :haircut_man: from "haircut_man"
    - @emoji haircut_woman @emoji :haircut_woman: from "haircut_woman"
    - @emoji haiti @emoji :haiti: from "haiti"
    - @emoji hamburger @emoji :hamburger: from "hamburger"
    - @emoji hammer @emoji :hammer: from "hammer"
    - @emoji hammer_and_pick @emoji :hammer_and_pick: from "hammer_and_pick"
    - @emoji hammer_and_wrench @emoji :hammer_and_wrench: from "hammer_and_wrench"
    - @emoji hamster @emoji :hamster: from "hamster"
    - @emoji hand @emoji :hand: from "hand"
    - @emoji handbag @emoji :handbag: from "handbag"
    - @emoji handshake @emoji :handshake: from "handshake"
    - @emoji hankey @emoji :hankey: from "hankey"
    - @emoji hash @emoji :hash: from "hash"
    - @emoji hatched_chick @emoji :hatched_chick: from "hatched_chick"
    - @emoji hatching_chick @emoji :hatching_chick: from "hatching_chick"
    - @emoji headphones @emoji :headphones: from "headphones"
    - @emoji hear_no_evil @emoji :hear_no_evil: from "hear_no_evil"
    - @emoji heart @emoji :heart: from "heart"
    - @emoji heart_decoration @emoji :heart_decoration: from "heart_decoration"
    - @emoji heart_eyes @emoji :heart_eyes: from "heart_eyes"
    - @emoji heart_eyes_cat @emoji :heart_eyes_cat: from "heart_eyes_cat"
    - @emoji heartbeat @emoji :heartbeat: from "heartbeat"
    - @emoji heartpulse @emoji :heartpulse: from "heartpulse"
    - @emoji hearts @emoji :hearts: from "hearts"
    - @emoji heavy_check_mark @emoji :heavy_check_mark: from "heavy_check_mark"
    - @emoji heavy_division_sign @emoji :heavy_division_sign: from "heavy_division_sign"
    - @emoji heavy_dollar_sign @emoji :heavy_dollar_sign: from "heavy_dollar_sign"
    - @emoji heavy_exclamation_mark @emoji :heavy_exclamation_mark: from "heavy_exclamation_mark"
    - @emoji heavy_heart_exclamation @emoji :heavy_heart_exclamation: from "heavy_heart_exclamation"
    - @emoji heavy_minus_sign @emoji :heavy_minus_sign: from "heavy_minus_sign"
    - @emoji heavy_multiplication_x @emoji :heavy_multiplication_x: from "heavy_multiplication_x"
    - @emoji heavy_plus_sign @emoji :heavy_plus_sign: from "heavy_plus_sign"
    - @emoji helicopter @emoji :helicopter: from "helicopter"
    - @emoji herb @emoji :herb: from "herb"
    - @emoji hibiscus @emoji :hibiscus: from "hibiscus"
    - @emoji high_brightness @emoji :high_brightness: from "high_brightness"
    - @emoji high_heel @emoji :high_heel: from "high_heel"
    - @emoji hocho @emoji :hocho: from "hocho"
    - @emoji hole @emoji :hole: from "hole"
    - @emoji honduras @emoji :honduras: from "honduras"
    - @emoji honey_pot @emoji :honey_pot: from "honey_pot"
    - @emoji honeybee @emoji :honeybee: from "honeybee"
    - @emoji hong_kong @emoji :hong_kong: from "hong_kong"
    - @emoji horse @emoji :horse: from "horse"
    - @emoji horse_racing @emoji :horse_racing: from "horse_racing"
    - @emoji hospital @emoji :hospital: from "hospital"
    - @emoji hot_pepper @emoji :hot_pepper: from "hot_pepper"
    - @emoji hotdog @emoji :hotdog: from "hotdog"
    - @emoji hotel @emoji :hotel: from "hotel"
    - @emoji hotsprings @emoji :hotsprings: from "hotsprings"
    - @emoji hourglass @emoji :hourglass: from "hourglass"
    - @emoji hourglass_flowing_sand @emoji :hourglass_flowing_sand: from "hourglass_flowing_sand"
    - @emoji house @emoji :house: from "house"
    - @emoji house_with_garden @emoji :house_with_garden: from "house_with_garden"
    - @emoji houses @emoji :houses: from "houses"
    - @emoji hugs @emoji :hugs: from "hugs"
    - @emoji hungary @emoji :hungary: from "hungary"
    - @emoji hushed @emoji :hushed: from "hushed"
    - @emoji ice_cream @emoji :ice_cream: from "ice_cream"
    - @emoji ice_hockey @emoji :ice_hockey: from "ice_hockey"
    - @emoji ice_skate @emoji :ice_skate: from "ice_skate"
    - @emoji icecream @emoji :icecream: from "icecream"
    - @emoji iceland @emoji :iceland: from "iceland"
    - @emoji id @emoji :id: from "id"
    - @emoji ideograph_advantage @emoji :ideograph_advantage: from "ideograph_advantage"
    - @emoji imp @emoji :imp: from "imp"
    - @emoji inbox_tray @emoji :inbox_tray: from "inbox_tray"
    - @emoji incoming_envelope @emoji :incoming_envelope: from "incoming_envelope"
    - @emoji india @emoji :india: from "india"
    - @emoji indonesia @emoji :indonesia: from "indonesia"
    - @emoji information_desk_person @emoji :information_desk_person: from "information_desk_person"
    - @emoji information_source @emoji :information_source: from "information_source"
    - @emoji innocent @emoji :innocent: from "innocent"
    - @emoji interrobang @emoji :interrobang: from "interrobang"
    - @emoji iphone @emoji :iphone: from "iphone"
    - @emoji iran @emoji :iran: from "iran"
    - @emoji iraq @emoji :iraq: from "iraq"
    - @emoji ireland @emoji :ireland: from "ireland"
    - @emoji isle_of_man @emoji :isle_of_man: from "isle_of_man"
    - @emoji israel @emoji :israel: from "israel"
    - @emoji it @emoji :it: from "it"
    - @emoji izakaya_lantern @emoji :izakaya_lantern: from "izakaya_lantern"
    - @emoji jack_o_lantern @emoji :jack_o_lantern: from "jack_o_lantern"
    - @emoji jamaica @emoji :jamaica: from "jamaica"
    - @emoji japan @emoji :japan: from "japan"
    - @emoji japanese_castle @emoji :japanese_castle: from "japanese_castle"
    - @emoji japanese_goblin @emoji :japanese_goblin: from "japanese_goblin"
    - @emoji japanese_ogre @emoji :japanese_ogre: from "japanese_ogre"
    - @emoji jeans @emoji :jeans: from "jeans"
    - @emoji jersey @emoji :jersey: from "jersey"
    - @emoji jordan @emoji :jordan: from "jordan"
    - @emoji joy @emoji :joy: from "joy"
    - @emoji joy_cat @emoji :joy_cat: from "joy_cat"
    - @emoji joystick @emoji :joystick: from "joystick"
    - @emoji jp @emoji :jp: from "jp"
    - @emoji kaaba @emoji :kaaba: from "kaaba"
    - @emoji kazakhstan @emoji :kazakhstan: from "kazakhstan"
    - @emoji kenya @emoji :kenya: from "kenya"
    - @emoji key @emoji :key: from "key"
    - @emoji keyboard @emoji :keyboard: from "keyboard"
    - @emoji keycap_ten @emoji :keycap_ten: from "keycap_ten"
    - @emoji kick_scooter @emoji :kick_scooter: from "kick_scooter"
    - @emoji kimono @emoji :kimono: from "kimono"
    - @emoji kiribati @emoji :kiribati: from "kiribati"
    - @emoji kiss @emoji :kiss: from "kiss"
    - @emoji kissing @emoji :kissing: from "kissing"
    - @emoji kissing_cat @emoji :kissing_cat: from "kissing_cat"
    - @emoji kissing_closed_eyes @emoji :kissing_closed_eyes: from "kissing_closed_eyes"
    - @emoji kissing_heart @emoji :kissing_heart: from "kissing_heart"
    - @emoji kissing_smiling_eyes @emoji :kissing_smiling_eyes: from "kissing_smiling_eyes"
    - @emoji kiwi_fruit @emoji :kiwi_fruit: from "kiwi_fruit"
    - @emoji knife @emoji :knife: from "knife"
    - @emoji koala @emoji :koala: from "koala"
    - @emoji koko @emoji :koko: from "koko"
    - @emoji kosovo @emoji :kosovo: from "kosovo"
    - @emoji kr @emoji :kr: from "kr"
    - @emoji kuwait @emoji :kuwait: from "kuwait"
    - @emoji kyrgyzstan @emoji :kyrgyzstan: from "kyrgyzstan"
    - @emoji label @emoji :label: from "label"
    - @emoji lantern @emoji :lantern: from "lantern"
    - @emoji laos @emoji :laos: from "laos"
    - @emoji large_blue_circle @emoji :large_blue_circle: from "large_blue_circle"
    - @emoji large_blue_diamond @emoji :large_blue_diamond: from "large_blue_diamond"
    - @emoji large_orange_diamond @emoji :large_orange_diamond: from "large_orange_diamond"
    - @emoji last_quarter_moon @emoji :last_quarter_moon: from "last_quarter_moon"
    - @emoji last_quarter_moon_with_face @emoji :last_quarter_moon_with_face: from "last_quarter_moon_with_face"
    - @emoji latin_cross @emoji :latin_cross: from "latin_cross"
    - @emoji latvia @emoji :latvia: from "latvia"
    - @emoji laughing @emoji :laughing: from "laughing"
    - @emoji leaves @emoji :leaves: from "leaves"
    - @emoji lebanon @emoji :lebanon: from "lebanon"
    - @emoji ledger @emoji :ledger: from "ledger"
    - @emoji left_luggage @emoji :left_luggage: from "left_luggage"
    - @emoji left_right_arrow @emoji :left_right_arrow: from "left_right_arrow"
    - @emoji leftwards_arrow_with_hook @emoji :leftwards_arrow_with_hook: from "leftwards_arrow_with_hook"
    - @emoji lemon @emoji :lemon: from "lemon"
    - @emoji leo @emoji :leo: from "leo"
    - @emoji leopard @emoji :leopard: from "leopard"
    - @emoji lesotho @emoji :lesotho: from "lesotho"
    - @emoji level_slider @emoji :level_slider: from "level_slider"
    - @emoji liberia @emoji :liberia: from "liberia"
    - @emoji libra @emoji :libra: from "libra"
    - @emoji libya @emoji :libya: from "libya"
    - @emoji liechtenstein @emoji :liechtenstein: from "liechtenstein"
    - @emoji light_rail @emoji :light_rail: from "light_rail"
    - @emoji link @emoji :link: from "link"
    - @emoji lion @emoji :lion: from "lion"
    - @emoji lips @emoji :lips: from "lips"
    - @emoji lipstick @emoji :lipstick: from "lipstick"
    - @emoji lithuania @emoji :lithuania: from "lithuania"
    - @emoji lizard @emoji :lizard: from "lizard"
    - @emoji lock @emoji :lock: from "lock"
    - @emoji lock_with_ink_pen @emoji :lock_with_ink_pen: from "lock_with_ink_pen"
    - @emoji lollipop @emoji :lollipop: from "lollipop"
    - @emoji loop @emoji :loop: from "loop"
    - @emoji loud_sound @emoji :loud_sound: from "loud_sound"
    - @emoji loudspeaker @emoji :loudspeaker: from "loudspeaker"
    - @emoji love_hotel @emoji :love_hotel: from "love_hotel"
    - @emoji love_letter @emoji :love_letter: from "love_letter"
    - @emoji low_brightness @emoji :low_brightness: from "low_brightness"
    - @emoji luxembourg @emoji :luxembourg: from "luxembourg"
    - @emoji lying_face @emoji :lying_face: from "lying_face"
    - @emoji m @emoji :m: from "m"
    - @emoji macau @emoji :macau: from "macau"
    - @emoji macedonia @emoji :macedonia: from "macedonia"
    - @emoji madagascar @emoji :madagascar: from "madagascar"
    - @emoji mag @emoji :mag: from "mag"
    - @emoji mag_right @emoji :mag_right: from "mag_right"
    - @emoji mahjong @emoji :mahjong: from "mahjong"
    - @emoji mailbox @emoji :mailbox: from "mailbox"
    - @emoji mailbox_closed @emoji :mailbox_closed: from "mailbox_closed"
    - @emoji mailbox_with_mail @emoji :mailbox_with_mail: from "mailbox_with_mail"
    - @emoji mailbox_with_no_mail @emoji :mailbox_with_no_mail: from "mailbox_with_no_mail"
    - @emoji malawi @emoji :malawi: from "malawi"
    - @emoji malaysia @emoji :malaysia: from "malaysia"
    - @emoji maldives @emoji :maldives: from "maldives"
    - @emoji male_detective @emoji :male_detective: from "male_detective"
    - @emoji mali @emoji :mali: from "mali"
    - @emoji malta @emoji :malta: from "malta"
    - @emoji man @emoji :man: from "man"
    - @emoji man_artist @emoji :man_artist: from "man_artist"
    - @emoji man_astronaut @emoji :man_astronaut: from "man_astronaut"
    - @emoji man_cartwheeling @emoji :man_cartwheeling: from "man_cartwheeling"
    - @emoji man_cook @emoji :man_cook: from "man_cook"
    - @emoji man_dancing @emoji :man_dancing: from "man_dancing"
    - @emoji man_facepalming @emoji :man_facepalming: from "man_facepalming"
    - @emoji man_factory_worker @emoji :man_factory_worker: from "man_factory_worker"
    - @emoji man_farmer @emoji :man_farmer: from "man_farmer"
    - @emoji man_firefighter @emoji :man_firefighter: from "man_firefighter"
    - @emoji man_health_worker @emoji :man_health_worker: from "man_health_worker"
    - @emoji man_in_tuxedo @emoji :man_in_tuxedo: from "man_in_tuxedo"
    - @emoji man_judge @emoji :man_judge: from "man_judge"
    - @emoji man_juggling @emoji :man_juggling: from "man_juggling"
    - @emoji man_mechanic @emoji :man_mechanic: from "man_mechanic"
    - @emoji man_office_worker @emoji :man_office_worker: from "man_office_worker"
    - @emoji man_pilot @emoji :man_pilot: from "man_pilot"
    - @emoji man_playing_handball @emoji :man_playing_handball: from "man_playing_handball"
    - @emoji man_playing_water_polo @emoji :man_playing_water_polo: from "man_playing_water_polo"
    - @emoji man_scientist @emoji :man_scientist: from "man_scientist"
    - @emoji man_shrugging @emoji :man_shrugging: from "man_shrugging"
    - @emoji man_singer @emoji :man_singer: from "man_singer"
    - @emoji man_student @emoji :man_student: from "man_student"
    - @emoji man_teacher @emoji :man_teacher: from "man_teacher"
    - @emoji man_technologist @emoji :man_technologist: from "man_technologist"
    - @emoji man_with_gua_pi_mao @emoji :man_with_gua_pi_mao: from "man_with_gua_pi_mao"
    - @emoji man_with_turban @emoji :man_with_turban: from "man_with_turban"
    - @emoji mandarin @emoji :mandarin: from "mandarin"
    - @emoji mans_shoe @emoji :mans_shoe: from "mans_shoe"
    - @emoji mantelpiece_clock @emoji :mantelpiece_clock: from "mantelpiece_clock"
    - @emoji maple_leaf @emoji :maple_leaf: from "maple_leaf"
    - @emoji marshall_islands @emoji :marshall_islands: from "marshall_islands"
    - @emoji martial_arts_uniform @emoji :martial_arts_uniform: from "martial_arts_uniform"
    - @emoji martinique @emoji :martinique: from "martinique"
    - @emoji mask @emoji :mask: from "mask"
    - @emoji massage @emoji :massage: from "massage"
    - @emoji massage_man @emoji :massage_man: from "massage_man"
    - @emoji massage_woman @emoji :massage_woman: from "massage_woman"
    - @emoji mauritania @emoji :mauritania: from "mauritania"
    - @emoji mauritius @emoji :mauritius: from "mauritius"
    - @emoji mayotte @emoji :mayotte: from "mayotte"
    - @emoji meat_on_bone @emoji :meat_on_bone: from "meat_on_bone"
    - @emoji medal_military @emoji :medal_military: from "medal_military"
    - @emoji medal_sports @emoji :medal_sports: from "medal_sports"
    - @emoji mega @emoji :mega: from "mega"
    - @emoji melon @emoji :melon: from "melon"
    - @emoji memo @emoji :memo: from "memo"
    - @emoji men_wrestling @emoji :men_wrestling: from "men_wrestling"
    - @emoji menorah @emoji :menorah: from "menorah"
    - @emoji mens @emoji :mens: from "mens"
    - @emoji metal @emoji :metal: from "metal"
    - @emoji metro @emoji :metro: from "metro"
    - @emoji mexico @emoji :mexico: from "mexico"
    - @emoji micronesia @emoji :micronesia: from "micronesia"
    - @emoji microphone @emoji :microphone: from "microphone"
    - @emoji microscope @emoji :microscope: from "microscope"
    - @emoji middle_finger @emoji :middle_finger: from "middle_finger"
    - @emoji milk_glass @emoji :milk_glass: from "milk_glass"
    - @emoji milky_way @emoji :milky_way: from "milky_way"
    - @emoji minibus @emoji :minibus: from "minibus"
    - @emoji minidisc @emoji :minidisc: from "minidisc"
    - @emoji mobile_phone_off @emoji :mobile_phone_off: from "mobile_phone_off"
    - @emoji moldova @emoji :moldova: from "moldova"
    - @emoji monaco @emoji :monaco: from "monaco"
    - @emoji money_mouth_face @emoji :money_mouth_face: from "money_mouth_face"
    - @emoji money_with_wings @emoji :money_with_wings: from "money_with_wings"
    - @emoji moneybag @emoji :moneybag: from "moneybag"
    - @emoji mongolia @emoji :mongolia: from "mongolia"
    - @emoji monkey @emoji :monkey: from "monkey"
    - @emoji monkey_face @emoji :monkey_face: from "monkey_face"
    - @emoji monorail @emoji :monorail: from "monorail"
    - @emoji montenegro @emoji :montenegro: from "montenegro"
    - @emoji montserrat @emoji :montserrat: from "montserrat"
    - @emoji moon @emoji :moon: from "moon"
    - @emoji morocco @emoji :morocco: from "morocco"
    - @emoji mortar_board @emoji :mortar_board: from "mortar_board"
    - @emoji mosque @emoji :mosque: from "mosque"
    - @emoji motor_boat @emoji :motor_boat: from "motor_boat"
    - @emoji motor_scooter @emoji :motor_scooter: from "motor_scooter"
    - @emoji motorcycle @emoji :motorcycle: from "motorcycle"
    - @emoji motorway @emoji :motorway: from "motorway"
    - @emoji mount_fuji @emoji :mount_fuji: from "mount_fuji"
    - @emoji mountain @emoji :mountain: from "mountain"
    - @emoji mountain_bicyclist @emoji :mountain_bicyclist: from "mountain_bicyclist"
    - @emoji mountain_biking_man @emoji :mountain_biking_man: from "mountain_biking_man"
    - @emoji mountain_biking_woman @emoji :mountain_biking_woman: from "mountain_biking_woman"
    - @emoji mountain_cableway @emoji :mountain_cableway: from "mountain_cableway"
    - @emoji mountain_railway @emoji :mountain_railway: from "mountain_railway"
    - @emoji mountain_snow @emoji :mountain_snow: from "mountain_snow"
    - @emoji mouse @emoji :mouse: from "mouse"
    - @emoji mouse2 @emoji :mouse2: from "mouse2"
    - @emoji movie_camera @emoji :movie_camera: from "movie_camera"
    - @emoji moyai @emoji :moyai: from "moyai"
    - @emoji mozambique @emoji :mozambique: from "mozambique"
    - @emoji mrs_claus @emoji :mrs_claus: from "mrs_claus"
    - @emoji muscle @emoji :muscle: from "muscle"
    - @emoji mushroom @emoji :mushroom: from "mushroom"
    - @emoji musical_keyboard @emoji :musical_keyboard: from "musical_keyboard"
    - @emoji musical_note @emoji :musical_note: from "musical_note"
    - @emoji musical_score @emoji :musical_score: from "musical_score"
    - @emoji mute @emoji :mute: from "mute"
    - @emoji myanmar @emoji :myanmar: from "myanmar"
    - @emoji nail_care @emoji :nail_care: from "nail_care"
    - @emoji name_badge @emoji :name_badge: from "name_badge"
    - @emoji namibia @emoji :namibia: from "namibia"
    - @emoji national_park @emoji :national_park: from "national_park"
    - @emoji nauru @emoji :nauru: from "nauru"
    - @emoji nauseated_face @emoji :nauseated_face: from "nauseated_face"
    - @emoji necktie @emoji :necktie: from "necktie"
    - @emoji negative_squared_cross_mark @emoji :negative_squared_cross_mark: from "negative_squared_cross_mark"
    - @emoji nepal @emoji :nepal: from "nepal"
    - @emoji nerd_face @emoji :nerd_face: from "nerd_face"
    - @emoji netherlands @emoji :netherlands: from "netherlands"
    - @emoji neutral_face @emoji :neutral_face: from "neutral_face"
    - @emoji new @emoji :new: from "new"
    - @emoji new_caledonia @emoji :new_caledonia: from "new_caledonia"
    - @emoji new_moon @emoji :new_moon: from "new_moon"
    - @emoji new_moon_with_face @emoji :new_moon_with_face: from "new_moon_with_face"
    - @emoji new_zealand @emoji :new_zealand: from "new_zealand"
    - @emoji newspaper @emoji :newspaper: from "newspaper"
    - @emoji newspaper_roll @emoji :newspaper_roll: from "newspaper_roll"
    - @emoji next_track_button @emoji :next_track_button: from "next_track_button"
    - @emoji ng @emoji :ng: from "ng"
    - @emoji ng_man @emoji :ng_man: from "ng_man"
    - @emoji ng_woman @emoji :ng_woman: from "ng_woman"
    - @emoji nicaragua @emoji :nicaragua: from "nicaragua"
    - @emoji niger @emoji :niger: from "niger"
    - @emoji nigeria @emoji :nigeria: from "nigeria"
    - @emoji night_with_stars @emoji :night_with_stars: from "night_with_stars"
    - @emoji nine @emoji :nine: from "nine"
    - @emoji niue @emoji :niue: from "niue"
    - @emoji no_bell @emoji :no_bell: from "no_bell"
    - @emoji no_bicycles @emoji :no_bicycles: from "no_bicycles"
    - @emoji no_entry @emoji :no_entry: from "no_entry"
    - @emoji no_entry_sign @emoji :no_entry_sign: from "no_entry_sign"
    - @emoji no_good @emoji :no_good: from "no_good"
    - @emoji no_good_man @emoji :no_good_man: from "no_good_man"
    - @emoji no_good_woman @emoji :no_good_woman: from "no_good_woman"
    - @emoji no_mobile_phones @emoji :no_mobile_phones: from "no_mobile_phones"
    - @emoji no_mouth @emoji :no_mouth: from "no_mouth"
    - @emoji no_pedestrians @emoji :no_pedestrians: from "no_pedestrians"
    - @emoji no_smoking @emoji :no_smoking: from "no_smoking"
    - @emoji non-potable_water @emoji :non-potable_water: from "non-potable_water"
    - @emoji norfolk_island @emoji :norfolk_island: from "norfolk_island"
    - @emoji north_korea @emoji :north_korea: from "north_korea"
    - @emoji northern_mariana_islands @emoji :northern_mariana_islands: from "northern_mariana_islands"
    - @emoji norway @emoji :norway: from "norway"
    - @emoji nose @emoji :nose: from "nose"
    - @emoji notebook @emoji :notebook: from "notebook"
    - @emoji notebook_with_decorative_cover @emoji :notebook_with_decorative_cover: from "notebook_with_decorative_cover"
    - @emoji notes @emoji :notes: from "notes"
    - @emoji nut_and_bolt @emoji :nut_and_bolt: from "nut_and_bolt"
    - @emoji o @emoji :o: from "o"
    - @emoji o2 @emoji :o2: from "o2"
    - @emoji ocean @emoji :ocean: from "ocean"
    - @emoji octopus @emoji :octopus: from "octopus"
    - @emoji oden @emoji :oden: from "oden"
    - @emoji office @emoji :office: from "office"
    - @emoji oil_drum @emoji :oil_drum: from "oil_drum"
    - @emoji ok @emoji :ok: from "ok"
    - @emoji ok_hand @emoji :ok_hand: from "ok_hand"
    - @emoji ok_man @emoji :ok_man: from "ok_man"
    - @emoji ok_woman @emoji :ok_woman: from "ok_woman"
    - @emoji old_key @emoji :old_key: from "old_key"
    - @emoji older_man @emoji :older_man: from "older_man"
    - @emoji older_woman @emoji :older_woman: from "older_woman"
    - @emoji om @emoji :om: from "om"
    - @emoji oman @emoji :oman: from "oman"
    - @emoji on @emoji :on: from "on"
    - @emoji oncoming_automobile @emoji :oncoming_automobile: from "oncoming_automobile"
    - @emoji oncoming_bus @emoji :oncoming_bus: from "oncoming_bus"
    - @emoji oncoming_police_car @emoji :oncoming_police_car: from "oncoming_police_car"
    - @emoji oncoming_taxi @emoji :oncoming_taxi: from "oncoming_taxi"
    - @emoji one @emoji :one: from "one"
    - @emoji open_book @emoji :open_book: from "open_book"
    - @emoji open_file_folder @emoji :open_file_folder: from "open_file_folder"
    - @emoji open_hands @emoji :open_hands: from "open_hands"
    - @emoji open_mouth @emoji :open_mouth: from "open_mouth"
    - @emoji open_umbrella @emoji :open_umbrella: from "open_umbrella"
    - @emoji ophiuchus @emoji :ophiuchus: from "ophiuchus"
    - @emoji orange @emoji :orange: from "orange"
    - @emoji orange_book @emoji :orange_book: from "orange_book"
    - @emoji orthodox_cross @emoji :orthodox_cross: from "orthodox_cross"
    - @emoji outbox_tray @emoji :outbox_tray: from "outbox_tray"
    - @emoji owl @emoji :owl: from "owl"
    - @emoji ox @emoji :ox: from "ox"
    - @emoji package @emoji :package: from "package"
    - @emoji page_facing_up @emoji :page_facing_up: from "page_facing_up"
    - @emoji page_with_curl @emoji :page_with_curl: from "page_with_curl"
    - @emoji pager @emoji :pager: from "pager"
    - @emoji paintbrush @emoji :paintbrush: from "paintbrush"
    - @emoji pakistan @emoji :pakistan: from "pakistan"
    - @emoji palau @emoji :palau: from "palau"
    - @emoji palestinian_territories @emoji :palestinian_territories: from "palestinian_territories"
    - @emoji palm_tree @emoji :palm_tree: from "palm_tree"
    - @emoji panama @emoji :panama: from "panama"
    - @emoji pancakes @emoji :pancakes: from "pancakes"
    - @emoji panda_face @emoji :panda_face: from "panda_face"
    - @emoji paperclip @emoji :paperclip: from "paperclip"
    - @emoji paperclips @emoji :paperclips: from "paperclips"
    - @emoji papua_new_guinea @emoji :papua_new_guinea: from "papua_new_guinea"
    - @emoji paraguay @emoji :paraguay: from "paraguay"
    - @emoji parasol_on_ground @emoji :parasol_on_ground: from "parasol_on_ground"
    - @emoji parking @emoji :parking: from "parking"
    - @emoji part_alternation_mark @emoji :part_alternation_mark: from "part_alternation_mark"
    - @emoji partly_sunny @emoji :partly_sunny: from "partly_sunny"
    - @emoji passenger_ship @emoji :passenger_ship: from "passenger_ship"
    - @emoji passport_control @emoji :passport_control: from "passport_control"
    - @emoji pause_button @emoji :pause_button: from "pause_button"
    - @emoji paw_prints @emoji :paw_prints: from "paw_prints"
    - @emoji peace_symbol @emoji :peace_symbol: from "peace_symbol"
    - @emoji peach @emoji :peach: from "peach"
    - @emoji peanuts @emoji :peanuts: from "peanuts"
    - @emoji pear @emoji :pear: from "pear"
    - @emoji pen @emoji :pen: from "pen"
    - @emoji pencil @emoji :pencil: from "pencil"
    - @emoji pencil2 @emoji :pencil2: from "pencil2"
    - @emoji penguin @emoji :penguin: from "penguin"
    - @emoji pensive @emoji :pensive: from "pensive"
    - @emoji performing_arts @emoji :performing_arts: from "performing_arts"
    - @emoji persevere @emoji :persevere: from "persevere"
    - @emoji person_fencing @emoji :person_fencing: from "person_fencing"
    - @emoji person_frowning @emoji :person_frowning: from "person_frowning"
    - @emoji person_with_blond_hair @emoji :person_with_blond_hair: from "person_with_blond_hair"
    - @emoji person_with_pouting_face @emoji :person_with_pouting_face: from "person_with_pouting_face"
    - @emoji peru @emoji :peru: from "peru"
    - @emoji philippines @emoji :philippines: from "philippines"
    - @emoji phone @emoji :phone: from "phone"
    - @emoji pick @emoji :pick: from "pick"
    - @emoji pig @emoji :pig: from "pig"
    - @emoji pig2 @emoji :pig2: from "pig2"
    - @emoji pig_nose @emoji :pig_nose: from "pig_nose"
    - @emoji pill @emoji :pill: from "pill"
    - @emoji pineapple @emoji :pineapple: from "pineapple"
    - @emoji ping_pong @emoji :ping_pong: from "ping_pong"
    - @emoji pisces @emoji :pisces: from "pisces"
    - @emoji pitcairn_islands @emoji :pitcairn_islands: from "pitcairn_islands"
    - @emoji pizza @emoji :pizza: from "pizza"
    - @emoji place_of_worship @emoji :place_of_worship: from "place_of_worship"
    - @emoji plate_with_cutlery @emoji :plate_with_cutlery: from "plate_with_cutlery"
    - @emoji play_or_pause_button @emoji :play_or_pause_button: from "play_or_pause_button"
    - @emoji point_down @emoji :point_down: from "point_down"
    - @emoji point_left @emoji :point_left: from "point_left"
    - @emoji point_right @emoji :point_right: from "point_right"
    - @emoji point_up @emoji :point_up: from "point_up"
    - @emoji point_up_2 @emoji :point_up_2: from "point_up_2"
    - @emoji poland @emoji :poland: from "poland"
    - @emoji police_car @emoji :police_car: from "police_car"
    - @emoji policeman @emoji :policeman: from "policeman"
    - @emoji policewoman @emoji :policewoman: from "policewoman"
    - @emoji poodle @emoji :poodle: from "poodle"
    - @emoji poop @emoji :poop: from "poop"
    - @emoji popcorn @emoji :popcorn: from "popcorn"
    - @emoji portugal @emoji :portugal: from "portugal"
    - @emoji post_office @emoji :post_office: from "post_office"
    - @emoji postal_horn @emoji :postal_horn: from "postal_horn"
    - @emoji postbox @emoji :postbox: from "postbox"
    - @emoji potable_water @emoji :potable_water: from "potable_water"
    - @emoji potato @emoji :potato: from "potato"
    - @emoji pouch @emoji :pouch: from "pouch"
    - @emoji poultry_leg @emoji :poultry_leg: from "poultry_leg"
    - @emoji pound @emoji :pound: from "pound"
    - @emoji pout @emoji :pout: from "pout"
    - @emoji pouting_cat @emoji :pouting_cat: from "pouting_cat"
    - @emoji pouting_man @emoji :pouting_man: from "pouting_man"
    - @emoji pouting_woman @emoji :pouting_woman: from "pouting_woman"
    - @emoji pray @emoji :pray: from "pray"
    - @emoji prayer_beads @emoji :prayer_beads: from "prayer_beads"
    - @emoji pregnant_woman @emoji :pregnant_woman: from "pregnant_woman"
    - @emoji previous_track_button @emoji :previous_track_button: from "previous_track_button"
    - @emoji prince @emoji :prince: from "prince"
    - @emoji princess @emoji :princess: from "princess"
    - @emoji printer @emoji :printer: from "printer"
    - @emoji puerto_rico @emoji :puerto_rico: from "puerto_rico"
    - @emoji punch @emoji :punch: from "punch"
    - @emoji purple_heart @emoji :purple_heart: from "purple_heart"
    - @emoji purse @emoji :purse: from "purse"
    - @emoji pushpin @emoji :pushpin: from "pushpin"
    - @emoji put_litter_in_its_place @emoji :put_litter_in_its_place: from "put_litter_in_its_place"
    - @emoji qatar @emoji :qatar: from "qatar"
    - @emoji question @emoji :question: from "question"
    - @emoji rabbit @emoji :rabbit: from "rabbit"
    - @emoji rabbit2 @emoji :rabbit2: from "rabbit2"
    - @emoji racehorse @emoji :racehorse: from "racehorse"
    - @emoji racing_car @emoji :racing_car: from "racing_car"
    - @emoji radio @emoji :radio: from "radio"
    - @emoji radio_button @emoji :radio_button: from "radio_button"
    - @emoji radioactive @emoji :radioactive: from "radioactive"
    - @emoji rage @emoji :rage: from "rage"
    - @emoji railway_car @emoji :railway_car: from "railway_car"
    - @emoji railway_track @emoji :railway_track: from "railway_track"
    - @emoji rainbow @emoji :rainbow: from "rainbow"
    - @emoji rainbow_flag @emoji :rainbow_flag: from "rainbow_flag"
    - @emoji raised_back_of_hand @emoji :raised_back_of_hand: from "raised_back_of_hand"
    - @emoji raised_hand @emoji :raised_hand: from "raised_hand"
    - @emoji raised_hand_with_fingers_splayed @emoji :raised_hand_with_fingers_splayed: from "raised_hand_with_fingers_splayed"
    - @emoji raised_hands @emoji :raised_hands: from "raised_hands"
    - @emoji raising_hand @emoji :raising_hand: from "raising_hand"
    - @emoji raising_hand_man @emoji :raising_hand_man: from "raising_hand_man"
    - @emoji raising_hand_woman @emoji :raising_hand_woman: from "raising_hand_woman"
    - @emoji ram @emoji :ram: from "ram"
    - @emoji ramen @emoji :ramen: from "ramen"
    - @emoji rat @emoji :rat: from "rat"
    - @emoji record_button @emoji :record_button: from "record_button"
    - @emoji recycle @emoji :recycle: from "recycle"
    - @emoji red_car @emoji :red_car: from "red_car"
    - @emoji red_circle @emoji :red_circle: from "red_circle"
    - @emoji registered @emoji :registered: from "registered"
    - @emoji relaxed @emoji :relaxed: from "relaxed"
    - @emoji relieved @emoji :relieved: from "relieved"
    - @emoji reminder_ribbon @emoji :reminder_ribbon: from "reminder_ribbon"
    - @emoji repeat @emoji :repeat: from "repeat"
    - @emoji repeat_one @emoji :repeat_one: from "repeat_one"
    - @emoji rescue_worker_helmet @emoji :rescue_worker_helmet: from "rescue_worker_helmet"
    - @emoji restroom @emoji :restroom: from "restroom"
    - @emoji reunion @emoji :reunion: from "reunion"
    - @emoji revolving_hearts @emoji :revolving_hearts: from "revolving_hearts"
    - @emoji rewind @emoji :rewind: from "rewind"
    - @emoji rhinoceros @emoji :rhinoceros: from "rhinoceros"
    - @emoji ribbon @emoji :ribbon: from "ribbon"
    - @emoji rice @emoji :rice: from "rice"
    - @emoji rice_ball @emoji :rice_ball: from "rice_ball"
    - @emoji rice_cracker @emoji :rice_cracker: from "rice_cracker"
    - @emoji rice_scene @emoji :rice_scene: from "rice_scene"
    - @emoji right_anger_bubble @emoji :right_anger_bubble: from "right_anger_bubble"
    - @emoji ring @emoji :ring: from "ring"
    - @emoji robot @emoji :robot: from "robot"
    - @emoji rocket @emoji :rocket: from "rocket"
    - @emoji rofl @emoji :rofl: from "rofl"
    - @emoji roll_eyes @emoji :roll_eyes: from "roll_eyes"
    - @emoji roller_coaster @emoji :roller_coaster: from "roller_coaster"
    - @emoji romania @emoji :romania: from "romania"
    - @emoji rooster @emoji :rooster: from "rooster"
    - @emoji rose @emoji :rose: from "rose"
    - @emoji rosette @emoji :rosette: from "rosette"
    - @emoji rotating_light @emoji :rotating_light: from "rotating_light"
    - @emoji round_pushpin @emoji :round_pushpin: from "round_pushpin"
    - @emoji rowboat @emoji :rowboat: from "rowboat"
    - @emoji rowing_man @emoji :rowing_man: from "rowing_man"
    - @emoji rowing_woman @emoji :rowing_woman: from "rowing_woman"
    - @emoji ru @emoji :ru: from "ru"
    - @emoji rugby_football @emoji :rugby_football: from "rugby_football"
    - @emoji runner @emoji :runner: from "runner"
    - @emoji running @emoji :running: from "running"
    - @emoji running_man @emoji :running_man: from "running_man"
    - @emoji running_shirt_with_sash @emoji :running_shirt_with_sash: from "running_shirt_with_sash"
    - @emoji running_woman @emoji :running_woman: from "running_woman"
    - @emoji rwanda @emoji :rwanda: from "rwanda"
    - @emoji sa @emoji :sa: from "sa"
    - @emoji sagittarius @emoji :sagittarius: from "sagittarius"
    - @emoji sailboat @emoji :sailboat: from "sailboat"
    - @emoji sake @emoji :sake: from "sake"
    - @emoji samoa @emoji :samoa: from "samoa"
    - @emoji san_marino @emoji :san_marino: from "san_marino"
    - @emoji sandal @emoji :sandal: from "sandal"
    - @emoji santa @emoji :santa: from "santa"
    - @emoji sao_tome_principe @emoji :sao_tome_principe: from "sao_tome_principe"
    - @emoji satellite @emoji :satellite: from "satellite"
    - @emoji satisfied @emoji :satisfied: from "satisfied"
    - @emoji saudi_arabia @emoji :saudi_arabia: from "saudi_arabia"
    - @emoji saxophone @emoji :saxophone: from "saxophone"
    - @emoji school @emoji :school: from "school"
    - @emoji school_satchel @emoji :school_satchel: from "school_satchel"
    - @emoji scissors @emoji :scissors: from "scissors"
    - @emoji scorpion @emoji :scorpion: from "scorpion"
    - @emoji scorpius @emoji :scorpius: from "scorpius"
    - @emoji scream @emoji :scream: from "scream"
    - @emoji scream_cat @emoji :scream_cat: from "scream_cat"
    - @emoji scroll @emoji :scroll: from "scroll"
    - @emoji seat @emoji :seat: from "seat"
    - @emoji secret @emoji :secret: from "secret"
    - @emoji see_no_evil @emoji :see_no_evil: from "see_no_evil"
    - @emoji seedling @emoji :seedling: from "seedling"
    - @emoji selfie @emoji :selfie: from "selfie"
    - @emoji senegal @emoji :senegal: from "senegal"
    - @emoji serbia @emoji :serbia: from "serbia"
    - @emoji seven @emoji :seven: from "seven"
    - @emoji seychelles @emoji :seychelles: from "seychelles"
    - @emoji shallow_pan_of_food @emoji :shallow_pan_of_food: from "shallow_pan_of_food"
    - @emoji shamrock @emoji :shamrock: from "shamrock"
    - @emoji shark @emoji :shark: from "shark"
    - @emoji shaved_ice @emoji :shaved_ice: from "shaved_ice"
    - @emoji sheep @emoji :sheep: from "sheep"
    - @emoji shell @emoji :shell: from "shell"
    - @emoji shield @emoji :shield: from "shield"
    - @emoji shinto_shrine @emoji :shinto_shrine: from "shinto_shrine"
    - @emoji ship @emoji :ship: from "ship"
    - @emoji shirt @emoji :shirt: from "shirt"
    - @emoji shit @emoji :shit: from "shit"
    - @emoji shoe @emoji :shoe: from "shoe"
    - @emoji shopping @emoji :shopping: from "shopping"
    - @emoji shopping_cart @emoji :shopping_cart: from "shopping_cart"
    - @emoji shower @emoji :shower: from "shower"
    - @emoji shrimp @emoji :shrimp: from "shrimp"
    - @emoji sierra_leone @emoji :sierra_leone: from "sierra_leone"
    - @emoji signal_strength @emoji :signal_strength: from "signal_strength"
    - @emoji singapore @emoji :singapore: from "singapore"
    - @emoji sint_maarten @emoji :sint_maarten: from "sint_maarten"
    - @emoji six @emoji :six: from "six"
    - @emoji six_pointed_star @emoji :six_pointed_star: from "six_pointed_star"
    - @emoji ski @emoji :ski: from "ski"
    - @emoji skier @emoji :skier: from "skier"
    - @emoji skull @emoji :skull: from "skull"
    - @emoji skull_and_crossbones @emoji :skull_and_crossbones: from "skull_and_crossbones"
    - @emoji sleeping @emoji :sleeping: from "sleeping"
    - @emoji sleeping_bed @emoji :sleeping_bed: from "sleeping_bed"
    - @emoji sleepy @emoji :sleepy: from "sleepy"
    - @emoji slightly_frowning_face @emoji :slightly_frowning_face: from "slightly_frowning_face"
    - @emoji slightly_smiling_face @emoji :slightly_smiling_face: from "slightly_smiling_face"
    - @emoji slot_machine @emoji :slot_machine: from "slot_machine"
    - @emoji slovakia @emoji :slovakia: from "slovakia"
    - @emoji slovenia @emoji :slovenia: from "slovenia"
    - @emoji small_airplane @emoji :small_airplane: from "small_airplane"
    - @emoji small_blue_diamond @emoji :small_blue_diamond: from "small_blue_diamond"
    - @emoji small_orange_diamond @emoji :small_orange_diamond: from "small_orange_diamond"
    - @emoji small_red_triangle @emoji :small_red_triangle: from "small_red_triangle"
    - @emoji small_red_triangle_down @emoji :small_red_triangle_down: from "small_red_triangle_down"
    - @emoji smile @emoji :smile: from "smile"
    - @emoji smile_cat @emoji :smile_cat: from "smile_cat"
    - @emoji smiley @emoji :smiley: from "smiley"
    - @emoji smiley_cat @emoji :smiley_cat: from "smiley_cat"
    - @emoji smiling_imp @emoji :smiling_imp: from "smiling_imp"
    - @emoji smirk @emoji :smirk: from "smirk"
    - @emoji smirk_cat @emoji :smirk_cat: from "smirk_cat"
    - @emoji smoking @emoji :smoking: from "smoking"
    - @emoji snail @emoji :snail: from "snail"
    - @emoji snake @emoji :snake: from "snake"
    - @emoji sneezing_face @emoji :sneezing_face: from "sneezing_face"
    - @emoji snowboarder @emoji :snowboarder: from "snowboarder"
    - @emoji snowflake @emoji :snowflake: from "snowflake"
    - @emoji snowman @emoji :snowman: from "snowman"
    - @emoji snowman_with_snow @emoji :snowman_with_snow: from "snowman_with_snow"
    - @emoji sob @emoji :sob: from "sob"
    - @emoji soccer @emoji :soccer: from "soccer"
    - @emoji solomon_islands @emoji :solomon_islands: from "solomon_islands"
    - @emoji somalia @emoji :somalia: from "somalia"
    - @emoji soon @emoji :soon: from "soon"
    - @emoji sos @emoji :sos: from "sos"
    - @emoji sound @emoji :sound: from "sound"
    - @emoji south_africa @emoji :south_africa: from "south_africa"
    - @emoji south_georgia_south_sandwich_islands @emoji :south_georgia_south_sandwich_islands: from "south_georgia_south_sandwich_islands"
    - @emoji south_sudan @emoji :south_sudan: from "south_sudan"
    - @emoji space_invader @emoji :space_invader: from "space_invader"
    - @emoji spades @emoji :spades: from "spades"
    - @emoji spaghetti @emoji :spaghetti: from "spaghetti"
    - @emoji sparkle @emoji :sparkle: from "sparkle"
    - @emoji sparkler @emoji :sparkler: from "sparkler"
    - @emoji sparkles @emoji :sparkles: from "sparkles"
    - @emoji sparkling_heart @emoji :sparkling_heart: from "sparkling_heart"
    - @emoji speak_no_evil @emoji :speak_no_evil: from "speak_no_evil"
    - @emoji speaker @emoji :speaker: from "speaker"
    - @emoji speaking_head @emoji :speaking_head: from "speaking_head"
    - @emoji speech_balloon @emoji :speech_balloon: from "speech_balloon"
    - @emoji speedboat @emoji :speedboat: from "speedboat"
    - @emoji spider @emoji :spider: from "spider"
    - @emoji spider_web @emoji :spider_web: from "spider_web"
    - @emoji spiral_calendar @emoji :spiral_calendar: from "spiral_calendar"
    - @emoji spiral_notepad @emoji :spiral_notepad: from "spiral_notepad"
    - @emoji spoon @emoji :spoon: from "spoon"
    - @emoji squid @emoji :squid: from "squid"
    - @emoji sri_lanka @emoji :sri_lanka: from "sri_lanka"
    - @emoji st_barthelemy @emoji :st_barthelemy: from "st_barthelemy"
    - @emoji st_helena @emoji :st_helena: from "st_helena"
    - @emoji st_kitts_nevis @emoji :st_kitts_nevis: from "st_kitts_nevis"
    - @emoji st_lucia @emoji :st_lucia: from "st_lucia"
    - @emoji st_pierre_miquelon @emoji :st_pierre_miquelon: from "st_pierre_miquelon"
    - @emoji st_vincent_grenadines @emoji :st_vincent_grenadines: from "st_vincent_grenadines"
    - @emoji stadium @emoji :stadium: from "stadium"
    - @emoji star @emoji :star: from "star"
    - @emoji star2 @emoji :star2: from "star2"
    - @emoji star_and_crescent @emoji :star_and_crescent: from "star_and_crescent"
    - @emoji star_of_david @emoji :star_of_david: from "star_of_david"
    - @emoji stars @emoji :stars: from "stars"
    - @emoji station @emoji :station: from "station"
    - @emoji statue_of_liberty @emoji :statue_of_liberty: from "statue_of_liberty"
    - @emoji steam_locomotive @emoji :steam_locomotive: from "steam_locomotive"
    - @emoji stew @emoji :stew: from "stew"
    - @emoji stop_button @emoji :stop_button: from "stop_button"
    - @emoji stop_sign @emoji :stop_sign: from "stop_sign"
    - @emoji stopwatch @emoji :stopwatch: from "stopwatch"
    - @emoji straight_ruler @emoji :straight_ruler: from "straight_ruler"
    - @emoji strawberry @emoji :strawberry: from "strawberry"
    - @emoji stuck_out_tongue @emoji :stuck_out_tongue: from "stuck_out_tongue"
    - @emoji stuck_out_tongue_closed_eyes @emoji :stuck_out_tongue_closed_eyes: from "stuck_out_tongue_closed_eyes"
    - @emoji stuck_out_tongue_winking_eye @emoji :stuck_out_tongue_winking_eye: from "stuck_out_tongue_winking_eye"
    - @emoji studio_microphone @emoji :studio_microphone: from "studio_microphone"
    - @emoji stuffed_flatbread @emoji :stuffed_flatbread: from "stuffed_flatbread"
    - @emoji sudan @emoji :sudan: from "sudan"
    - @emoji sun_behind_large_cloud @emoji :sun_behind_large_cloud: from "sun_behind_large_cloud"
    - @emoji sun_behind_rain_cloud @emoji :sun_behind_rain_cloud: from "sun_behind_rain_cloud"
    - @emoji sun_behind_small_cloud @emoji :sun_behind_small_cloud: from "sun_behind_small_cloud"
    - @emoji sun_with_face @emoji :sun_with_face: from "sun_with_face"
    - @emoji sunflower @emoji :sunflower: from "sunflower"
    - @emoji sunglasses @emoji :sunglasses: from "sunglasses"
    - @emoji sunny @emoji :sunny: from "sunny"
    - @emoji sunrise @emoji :sunrise: from "sunrise"
    - @emoji sunrise_over_mountains @emoji :sunrise_over_mountains: from "sunrise_over_mountains"
    - @emoji surfer @emoji :surfer: from "surfer"
    - @emoji surfing_man @emoji :surfing_man: from "surfing_man"
    - @emoji surfing_woman @emoji :surfing_woman: from "surfing_woman"
    - @emoji suriname @emoji :suriname: from "suriname"
    - @emoji sushi @emoji :sushi: from "sushi"
    - @emoji suspension_railway @emoji :suspension_railway: from "suspension_railway"
    - @emoji swaziland @emoji :swaziland: from "swaziland"
    - @emoji sweat @emoji :sweat: from "sweat"
    - @emoji sweat_drops @emoji :sweat_drops: from "sweat_drops"
    - @emoji sweat_smile @emoji :sweat_smile: from "sweat_smile"
    - @emoji sweden @emoji :sweden: from "sweden"
    - @emoji sweet_potato @emoji :sweet_potato: from "sweet_potato"
    - @emoji swimmer @emoji :swimmer: from "swimmer"
    - @emoji swimming_man @emoji :swimming_man: from "swimming_man"
    - @emoji swimming_woman @emoji :swimming_woman: from "swimming_woman"
    - @emoji switzerland @emoji :switzerland: from "switzerland"
    - @emoji symbols @emoji :symbols: from "symbols"
    - @emoji synagogue @emoji :synagogue: from "synagogue"
    - @emoji syria @emoji :syria: from "syria"
    - @emoji syringe @emoji :syringe: from "syringe"
    - @emoji taco @emoji :taco: from "taco"
    - @emoji tada @emoji :tada: from "tada"
    - @emoji taiwan @emoji :taiwan: from "taiwan"
    - @emoji tajikistan @emoji :tajikistan: from "tajikistan"
    - @emoji tanabata_tree @emoji :tanabata_tree: from "tanabata_tree"
    - @emoji tangerine @emoji :tangerine: from "tangerine"
    - @emoji tanzania @emoji :tanzania: from "tanzania"
    - @emoji taurus @emoji :taurus: from "taurus"
    - @emoji taxi @emoji :taxi: from "taxi"
    - @emoji tea @emoji :tea: from "tea"
    - @emoji telephone @emoji :telephone: from "telephone"
    - @emoji telephone_receiver @emoji :telephone_receiver: from "telephone_receiver"
    - @emoji telescope @emoji :telescope: from "telescope"
    - @emoji tennis @emoji :tennis: from "tennis"
    - @emoji tent @emoji :tent: from "tent"
    - @emoji thailand @emoji :thailand: from "thailand"
    - @emoji thermometer @emoji :thermometer: from "thermometer"
    - @emoji thinking @emoji :thinking: from "thinking"
    - @emoji thought_balloon @emoji :thought_balloon: from "thought_balloon"
    - @emoji three @emoji :three: from "three"
    - @emoji thumbsdown @emoji :thumbsdown: from "thumbsdown"
    - @emoji thumbsup @emoji :thumbsup: from "thumbsup"
    - @emoji ticket @emoji :ticket: from "ticket"
    - @emoji tickets @emoji :tickets: from "tickets"
    - @emoji tiger @emoji :tiger: from "tiger"
    - @emoji tiger2 @emoji :tiger2: from "tiger2"
    - @emoji timer_clock @emoji :timer_clock: from "timer_clock"
    - @emoji timor_leste @emoji :timor_leste: from "timor_leste"
    - @emoji tipping_hand_man @emoji :tipping_hand_man: from "tipping_hand_man"
    - @emoji tipping_hand_woman @emoji :tipping_hand_woman: from "tipping_hand_woman"
    - @emoji tired_face @emoji :tired_face: from "tired_face"
    - @emoji tm @emoji :tm: from "tm"
    - @emoji togo @emoji :togo: from "togo"
    - @emoji toilet @emoji :toilet: from "toilet"
    - @emoji tokelau @emoji :tokelau: from "tokelau"
    - @emoji tokyo_tower @emoji :tokyo_tower: from "tokyo_tower"
    - @emoji tomato @emoji :tomato: from "tomato"
    - @emoji tonga @emoji :tonga: from "tonga"
    - @emoji tongue @emoji :tongue: from "tongue"
    - @emoji top @emoji :top: from "top"
    - @emoji tophat @emoji :tophat: from "tophat"
    - @emoji tornado @emoji :tornado: from "tornado"
    - @emoji tr @emoji :tr: from "tr"
    - @emoji trackball @emoji :trackball: from "trackball"
    - @emoji tractor @emoji :tractor: from "tractor"
    - @emoji traffic_light @emoji :traffic_light: from "traffic_light"
    - @emoji train @emoji :train: from "train"
    - @emoji train2 @emoji :train2: from "train2"
    - @emoji tram @emoji :tram: from "tram"
    - @emoji triangular_flag_on_post @emoji :triangular_flag_on_post: from "triangular_flag_on_post"
    - @emoji triangular_ruler @emoji :triangular_ruler: from "triangular_ruler"
    - @emoji trident @emoji :trident: from "trident"
    - @emoji trinidad_tobago @emoji :trinidad_tobago: from "trinidad_tobago"
    - @emoji triumph @emoji :triumph: from "triumph"
    - @emoji trolleybus @emoji :trolleybus: from "trolleybus"
    - @emoji trophy @emoji :trophy: from "trophy"
    - @emoji tropical_drink @emoji :tropical_drink: from "tropical_drink"
    - @emoji tropical_fish @emoji :tropical_fish: from "tropical_fish"
    - @emoji truck @emoji :truck: from "truck"
    - @emoji trumpet @emoji :trumpet: from "trumpet"
    - @emoji tshirt @emoji :tshirt: from "tshirt"
    - @emoji tulip @emoji :tulip: from "tulip"
    - @emoji tumbler_glass @emoji :tumbler_glass: from "tumbler_glass"
    - @emoji tunisia @emoji :tunisia: from "tunisia"
    - @emoji turkey @emoji :turkey: from "turkey"
    - @emoji turkmenistan @emoji :turkmenistan: from "turkmenistan"
    - @emoji turks_caicos_islands @emoji :turks_caicos_islands: from "turks_caicos_islands"
    - @emoji turtle @emoji :turtle: from "turtle"
    - @emoji tuvalu @emoji :tuvalu: from "tuvalu"
    - @emoji tv @emoji :tv: from "tv"
    - @emoji twisted_rightwards_arrows @emoji :twisted_rightwards_arrows: from "twisted_rightwards_arrows"
    - @emoji two @emoji :two: from "two"
    - @emoji two_hearts @emoji :two_hearts: from "two_hearts"
    - @emoji two_men_holding_hands @emoji :two_men_holding_hands: from "two_men_holding_hands"
    - @emoji two_women_holding_hands @emoji :two_women_holding_hands: from "two_women_holding_hands"
    - @emoji u5272 @emoji :u5272: from "u5272"
    - @emoji u5408 @emoji :u5408: from "u5408"
    - @emoji u55b6 @emoji :u55b6: from "u55b6"
    - @emoji u6307 @emoji :u6307: from "u6307"
    - @emoji u6708 @emoji :u6708: from "u6708"
    - @emoji u6709 @emoji :u6709: from "u6709"
    - @emoji u6e80 @emoji :u6e80: from "u6e80"
    - @emoji u7121 @emoji :u7121: from "u7121"
    - @emoji u7533 @emoji :u7533: from "u7533"
    - @emoji u7981 @emoji :u7981: from "u7981"
    - @emoji u7a7a @emoji :u7a7a: from "u7a7a"
    - @emoji uganda @emoji :uganda: from "uganda"
    - @emoji uk @emoji :uk: from "uk"
    - @emoji ukraine @emoji :ukraine: from "ukraine"
    - @emoji umbrella @emoji :umbrella: from "umbrella"
    - @emoji unamused @emoji :unamused: from "unamused"
    - @emoji underage @emoji :underage: from "underage"
    - @emoji unicorn @emoji :unicorn: from "unicorn"
    - @emoji united_arab_emirates @emoji :united_arab_emirates: from "united_arab_emirates"
    - @emoji unlock @emoji :unlock: from "unlock"
    - @emoji up @emoji :up: from "up"
    - @emoji upside_down_face @emoji :upside_down_face: from "upside_down_face"
    - @emoji uruguay @emoji :uruguay: from "uruguay"
    - @emoji us @emoji :us: from "us"
    - @emoji us_virgin_islands @emoji :us_virgin_islands: from "us_virgin_islands"
    - @emoji uzbekistan @emoji :uzbekistan: from "uzbekistan"
    - @emoji v @emoji :v: from "v"
    - @emoji vanuatu @emoji :vanuatu: from "vanuatu"
    - @emoji vatican_city @emoji :vatican_city: from "vatican_city"
    - @emoji venezuela @emoji :venezuela: from "venezuela"
    - @emoji vertical_traffic_light @emoji :vertical_traffic_light: from "vertical_traffic_light"
    - @emoji vhs @emoji :vhs: from "vhs"
    - @emoji vibration_mode @emoji :vibration_mode: from "vibration_mode"
    - @emoji video_camera @emoji :video_camera: from "video_camera"
    - @emoji video_game @emoji :video_game: from "video_game"
    - @emoji vietnam @emoji :vietnam: from "vietnam"
    - @emoji violin @emoji :violin: from "violin"
    - @emoji virgo @emoji :virgo: from "virgo"
    - @emoji volcano @emoji :volcano: from "volcano"
    - @emoji volleyball @emoji :volleyball: from "volleyball"
    - @emoji vs @emoji :vs: from "vs"
    - @emoji vulcan_salute @emoji :vulcan_salute: from "vulcan_salute"
    - @emoji walking @emoji :walking: from "walking"
    - @emoji walking_man @emoji :walking_man: from "walking_man"
    - @emoji walking_woman @emoji :walking_woman: from "walking_woman"
    - @emoji wallis_futuna @emoji :wallis_futuna: from "wallis_futuna"
    - @emoji waning_crescent_moon @emoji :waning_crescent_moon: from "waning_crescent_moon"
    - @emoji waning_gibbous_moon @emoji :waning_gibbous_moon: from "waning_gibbous_moon"
    - @emoji warning @emoji :warning: from "warning"
    - @emoji wastebasket @emoji :wastebasket: from "wastebasket"
    - @emoji watch @emoji :watch: from "watch"
    - @emoji water_buffalo @emoji :water_buffalo: from "water_buffalo"
    - @emoji watermelon @emoji :watermelon: from "watermelon"
    - @emoji wave @emoji :wave: from "wave"
    - @emoji wavy_dash @emoji :wavy_dash: from "wavy_dash"
    - @emoji waxing_crescent_moon @emoji :waxing_crescent_moon: from "waxing_crescent_moon"
    - @emoji waxing_gibbous_moon @emoji :waxing_gibbous_moon: from "waxing_gibbous_moon"
    - @emoji wc @emoji :wc: from "wc"
    - @emoji weary @emoji :weary: from "weary"
    - @emoji wedding @emoji :wedding: from "wedding"
    - @emoji weight_lifting_man @emoji :weight_lifting_man: from "weight_lifting_man"
    - @emoji weight_lifting_woman @emoji :weight_lifting_woman: from "weight_lifting_woman"
    - @emoji western_sahara @emoji :western_sahara: from "western_sahara"
    - @emoji whale @emoji :whale: from "whale"
    - @emoji whale2 @emoji :whale2: from "whale2"
    - @emoji wheel_of_dharma @emoji :wheel_of_dharma: from "wheel_of_dharma"
    - @emoji wheelchair @emoji :wheelchair: from "wheelchair"
    - @emoji white_check_mark @emoji :white_check_mark: from "white_check_mark"
    - @emoji white_circle @emoji :white_circle: from "white_circle"
    - @emoji white_flag @emoji :white_flag: from "white_flag"
    - @emoji white_flower @emoji :white_flower: from "white_flower"
    - @emoji white_large_square @emoji :white_large_square: from "white_large_square"
    - @emoji white_medium_small_square @emoji :white_medium_small_square: from "white_medium_small_square"
    - @emoji white_medium_square @emoji :white_medium_square: from "white_medium_square"
    - @emoji white_small_square @emoji :white_small_square: from "white_small_square"
    - @emoji white_square_button @emoji :white_square_button: from "white_square_button"
    - @emoji wilted_flower @emoji :wilted_flower: from "wilted_flower"
    - @emoji wind_chime @emoji :wind_chime: from "wind_chime"
    - @emoji wind_face @emoji :wind_face: from "wind_face"
    - @emoji wine_glass @emoji :wine_glass: from "wine_glass"
    - @emoji wink @emoji :wink: from "wink"
    - @emoji wolf @emoji :wolf: from "wolf"
    - @emoji woman @emoji :woman: from "woman"
    - @emoji woman_artist @emoji :woman_artist: from "woman_artist"
    - @emoji woman_astronaut @emoji :woman_astronaut: from "woman_astronaut"
    - @emoji woman_cartwheeling @emoji :woman_cartwheeling: from "woman_cartwheeling"
    - @emoji woman_cook @emoji :woman_cook: from "woman_cook"
    - @emoji woman_facepalming @emoji :woman_facepalming: from "woman_facepalming"
    - @emoji woman_factory_worker @emoji :woman_factory_worker: from "woman_factory_worker"
    - @emoji woman_farmer @emoji :woman_farmer: from "woman_farmer"
    - @emoji woman_firefighter @emoji :woman_firefighter: from "woman_firefighter"
    - @emoji woman_health_worker @emoji :woman_health_worker: from "woman_health_worker"
    - @emoji woman_judge @emoji :woman_judge: from "woman_judge"
    - @emoji woman_juggling @emoji :woman_juggling: from "woman_juggling"
    - @emoji woman_mechanic @emoji :woman_mechanic: from "woman_mechanic"
    - @emoji woman_office_worker @emoji :woman_office_worker: from "woman_office_worker"
    - @emoji woman_pilot @emoji :woman_pilot: from "woman_pilot"
    - @emoji woman_playing_handball @emoji :woman_playing_handball: from "woman_playing_handball"
    - @emoji woman_playing_water_polo @emoji :woman_playing_water_polo: from "woman_playing_water_polo"
    - @emoji woman_scientist @emoji :woman_scientist: from "woman_scientist"
    - @emoji woman_shrugging @emoji :woman_shrugging: from "woman_shrugging"
    - @emoji woman_singer @emoji :woman_singer: from "woman_singer"
    - @emoji woman_student @emoji :woman_student: from "woman_student"
    - @emoji woman_teacher @emoji :woman_teacher: from "woman_teacher"
    - @emoji woman_technologist @emoji :woman_technologist: from "woman_technologist"
    - @emoji woman_with_turban @emoji :woman_with_turban: from "woman_with_turban"
    - @emoji womans_clothes @emoji :womans_clothes: from "womans_clothes"
    - @emoji womans_hat @emoji :womans_hat: from "womans_hat"
    - @emoji women_wrestling @emoji :women_wrestling: from "women_wrestling"
    - @emoji womens @emoji :womens: from "womens"
    - @emoji world_map @emoji :world_map: from "world_map"
    - @emoji worried @emoji :worried: from "worried"
    - @emoji wrench @emoji :wrench: from "wrench"
    - @emoji writing_hand @emoji :writing_hand: from "writing_hand"
    - @emoji x @emoji :x: from "x"
    - @emoji yellow_heart @emoji :yellow_heart: from "yellow_heart"
    - @emoji yemen @emoji :yemen: from "yemen"
    - @emoji yen @emoji :yen: from "yen"
    - @emoji yin_yang @emoji :yin_yang: from "yin_yang"
    - @emoji yum @emoji :yum: from "yum"
    - @emoji zambia @emoji :zambia: from "zambia"
    - @emoji zap @emoji :zap: from "zap"
    - @emoji zero @emoji :zero: from "zero"
    - @emoji zimbabwe @emoji :zimbabwe: from "zimbabwe"
    - @emoji zipper_mouth_face @emoji :zipper_mouth_face: from "zipper_mouth_face"
    - @emoji zzz @emoji :zzz: from "zzz"
    - */ diff --git a/tests/upstream-test-suite/077/077__no__xml__namespace__members__in__file__scope_8h.xml b/tests/upstream-test-suite/077/077__no__xml__namespace__members__in__file__scope_8h.xml deleted file mode 100644 index 9825cc1..0000000 --- a/tests/upstream-test-suite/077/077__no__xml__namespace__members__in__file__scope_8h.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - 077_no_xml_namespace_members_in_file_scope.h - Namespace - - - - - - - diff --git a/tests/upstream-test-suite/077_no_xml_namespace_members_in_file_scope.h b/tests/upstream-test-suite/077_no_xml_namespace_members_in_file_scope.h deleted file mode 100644 index bf3dc64..0000000 --- a/tests/upstream-test-suite/077_no_xml_namespace_members_in_file_scope.h +++ /dev/null @@ -1,16 +0,0 @@ -// objective: test that namespace members are not put to file docs by default -// check: 077__no__xml__namespace__members__in__file__scope_8h.xml - -namespace Namespace { - -/** -@brief A function - -Detailed documentation. -*/ -void foo(); - -/** @brief An enum */ -enum class Enum {}; - -} diff --git a/tests/upstream-test-suite/078/078__xml__namespace__members__in__file__scope_8h.xml b/tests/upstream-test-suite/078/078__xml__namespace__members__in__file__scope_8h.xml deleted file mode 100644 index e0a0343..0000000 --- a/tests/upstream-test-suite/078/078__xml__namespace__members__in__file__scope_8h.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - 078_xml_namespace_members_in_file_scope.h - Namespace - - - - Enum - - An enum. - - - - - - - - - - - void - void Namespace::foo - () - foo - - A function. - - - Detailed documentation. - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/078_xml_namespace_members_in_file_scope.h b/tests/upstream-test-suite/078_xml_namespace_members_in_file_scope.h deleted file mode 100644 index f456464..0000000 --- a/tests/upstream-test-suite/078_xml_namespace_members_in_file_scope.h +++ /dev/null @@ -1,17 +0,0 @@ -// objective: test that namespace members are put to file docs when enabled -// check: 078__xml__namespace__members__in__file__scope_8h.xml -// config: XML_NS_MEMB_FILE_SCOPE = YES - -namespace Namespace { - -/** -@brief A function - -Detailed documentation. -*/ -void foo(); - -/** @brief An enum */ -enum class Enum {}; - -} diff --git a/tests/upstream-test-suite/Doxyfile b/tests/upstream-test-suite/Doxyfile deleted file mode 100644 index e1486d3..0000000 --- a/tests/upstream-test-suite/Doxyfile +++ /dev/null @@ -1,7 +0,0 @@ -# start with defaults -QUIET = YES -GENERATE_HTML = NO -GENERATE_LATEX = NO -GENERATE_XML = YES -XML_PROGRAMLISTING = NO -CASE_SENSE_NAMES = NO diff --git a/tests/upstream-test-suite/Makefile b/tests/upstream-test-suite/Makefile deleted file mode 100644 index 30ee4e2..0000000 --- a/tests/upstream-test-suite/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /CoreOS/patch/Sanity/upstream-test-suite -# Description: tests upstream test suite -# Author: Than Ngo -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/CoreOS/patch/Sanity/upstream-test-suite -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Than Ngo " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: Executes upstream test suite" >> $(METADATA) - @echo "Type: Sanity" >> $(METADATA) - @echo "TestTime: 30m" >> $(METADATA) - @echo "RunFor: doxygen" >> $(METADATA) - @echo "Requires: doxygen python3" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/upstream-test-suite/PURPOSE b/tests/upstream-test-suite/PURPOSE deleted file mode 100644 index 62ae14b..0000000 --- a/tests/upstream-test-suite/PURPOSE +++ /dev/null @@ -1,8 +0,0 @@ -PURPOSE of /CoreOS/patch/Sanity/upstream-test-suite -Description: smoke test, funktion test and upstream test suite -Author: Than Ngo - -tests following scenarios: - * smoke test - * funktion test - * run the upstream test suite diff --git a/tests/upstream-test-suite/README.txt b/tests/upstream-test-suite/README.txt deleted file mode 100644 index 39b2345..0000000 --- a/tests/upstream-test-suite/README.txt +++ /dev/null @@ -1,66 +0,0 @@ -Doxygen regression test suite -============================ - -This directory contains a set of regression tests. Each test consists of a -file starting with a 3 digit number and a corresponding directory whose name -has the same 3 digit number. The directory contains one or more reference -files that are compared against the XML output produced by doxygen. If the -result is the same, there is no regression and the test passes. If there is a -difference the test fails and the difference (in diff -u format) will be shown. -It is also possible to see whether or not the test can be built to a xhtml set -of files (and tested against a DTD), it is also possible to create a pdf file -for each test to see if the LaTeX / pdf generation is possible. - -The runtest.py script responsible for running the tests takes a number of -optional parameters: - --updateref update the reference data for a test - --doxygen [DOXYGEN] path/name of the doxygen executable - --xmllint [XMLLINT] path/name of the xmllint executable - --id IDS [IDS ...] id of the test to perform - --start_id START_ID run tests starting with number n - --end_id END_ID run tests ending with number n - --all perform all tests - --inputdir [INPUTDIR] - input directory containing the tests - --outputdir [OUTPUTDIR] - output directory to write the doxygen output to - --noredir disable redirection of doxygen warnings - --xml create xml output and check - --rtf create rtf output - --docbook create docbook output and check with xmllint - --xhtml create xhtml output and check with xmllint - --pdf create LaTeX output and create pdf from it - --subdirs use the configuration parameter CREATE_SUBDIRS=YES - --keep keep result directories - --cfg CFGS [CFGS ...] run test with extra doxygen configuration settings - (the option may be specified multiple times -In case neither --xml, --pdf, --rtf, --docbook or --xhtml is used the default is set to --xml. - -The runtest.pl has the following dependencies on 3rd party tools: -- python to run the script -- xmllint to normalize the XML output -- diff to show the differences in case a test fails - -Each test file can have a number of special comment lines that are extracted by -the runtest.pl script and take the form: -// : 'argument' -Where can be one of: -- objective: 'argument' provides the objective for the test (i.e. its purpose) -- check: 'argument' names a file that is generated by doxygen, which should - be compared against the reference. -- config: 'argument' is a line that is added to the default Doxyfile used to - run doxygen on the test file. - -Example to run all tests: - python runtest.py - -Example to run a test - python runtest.py -id 10 - -Example to update the reference files for a test - python runtest.py -updateref -id 10 - -There is also a CMakeLists.txt, which can be used from the build directory -to run all tests by simply invoking 'make tests', to use the specific options use -the flag TEST_FLAGS with make - e.g. make tests TEST_FLAGS="--id=5 --id=10 --pdf --xhtml" diff --git a/tests/upstream-test-suite/_057_caller_graphs.tcl b/tests/upstream-test-suite/_057_caller_graphs.tcl deleted file mode 100644 index 24b9c20..0000000 --- a/tests/upstream-test-suite/_057_caller_graphs.tcl +++ /dev/null @@ -1,4 +0,0 @@ -proc inFileB args { - array set info [info frame 0]; puts -nonewline ->$info(proc) - inFileA -} diff --git a/tests/upstream-test-suite/dtd/xhtml-lat1.ent b/tests/upstream-test-suite/dtd/xhtml-lat1.ent deleted file mode 100755 index ffee223..0000000 --- a/tests/upstream-test-suite/dtd/xhtml-lat1.ent +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/dtd/xhtml-special.ent b/tests/upstream-test-suite/dtd/xhtml-special.ent deleted file mode 100755 index ca358b2..0000000 --- a/tests/upstream-test-suite/dtd/xhtml-special.ent +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/dtd/xhtml-symbol.ent b/tests/upstream-test-suite/dtd/xhtml-symbol.ent deleted file mode 100755 index 63c2abf..0000000 --- a/tests/upstream-test-suite/dtd/xhtml-symbol.ent +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/dtd/xhtml1-strict.dtd b/tests/upstream-test-suite/dtd/xhtml1-strict.dtd deleted file mode 100755 index 2927b9e..0000000 --- a/tests/upstream-test-suite/dtd/xhtml1-strict.dtd +++ /dev/null @@ -1,978 +0,0 @@ - - - - - -%HTMLlat1; - - -%HTMLsymbol; - - -%HTMLspecial; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/dtd/xhtml1-transitional.dtd b/tests/upstream-test-suite/dtd/xhtml1-transitional.dtd deleted file mode 100755 index 4ac1571..0000000 --- a/tests/upstream-test-suite/dtd/xhtml1-transitional.dtd +++ /dev/null @@ -1,1220 +0,0 @@ - - - - - - -%HTMLlat1; - - -%HTMLsymbol; - - -%HTMLspecial; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/upstream-test-suite/example_test.cpp b/tests/upstream-test-suite/example_test.cpp deleted file mode 100644 index a117b63..0000000 --- a/tests/upstream-test-suite/example_test.cpp +++ /dev/null @@ -1,8 +0,0 @@ -void main() -{ - const char* a = "Some special character here:  "; - - Test t; - t.example(); -} - diff --git a/tests/upstream-test-suite/runtest.sh b/tests/upstream-test-suite/runtest.sh deleted file mode 100755 index 127806b..0000000 --- a/tests/upstream-test-suite/runtest.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /CoreOS/patch/Sanity/upstream-test-suite -# Description: Executes the upstream test suite comming with the package -# Author: Than Ngo -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2010 Red Hat, Inc. All rights reserved. -# -# This copyrighted material is made available to anyone wishing -# to use, modify, copy, or redistribute it subject to the terms -# and conditions of the GNU General Public License version 2. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program; if not, write to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include rhts environment -. /usr/bin/rhts-environment.sh || exit 1 -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="doxygen" - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "cp -a * $TmpDir" 0 "Copy files to $TmpDir" - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest "test --version" - rlRun "VERSION=\$( rpm -q --qf '%{VERSION}' doxygen )" - rlRun -s "doxygen --version" - rlAssertGrep "${VERSION}" $rlRun_LOG - rlPhaseEnd - - rlPhaseStartTest "test upstream test suite" - rlRun "python3 runtests.py >out" 0 "python3 runtests.py" - rlRun "[ -s out ]" 0 "Output should not be empty" - rlRun "cat out" 0 "Output of the test suite" - rlAssertGrep 'All tests passed!' out - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -fr $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/upstream-test-suite/runtests.py b/tests/upstream-test-suite/runtests.py deleted file mode 100644 index 452c36e..0000000 --- a/tests/upstream-test-suite/runtests.py +++ /dev/null @@ -1,424 +0,0 @@ -#!/usr/bin/python - -from __future__ import print_function -import argparse, glob, itertools, re, shutil, os, sys - -config_reg = re.compile('.*\/\/\s*(?P\S+):\s*(?P.*)$') - -class Tester: - def __init__(self,args,test): - self.args = args - self.test = test - self.update = args.updateref - self.config = self.get_config() - self.test_name = '[%s]: %s' % (self.test,self.config['objective'][0]) - self.test_id = self.test.split('_')[0] - if self.update: - self.test_out = self.args.inputdir+'/'+self.test_id - else: - self.test_out = self.args.outputdir+'/test_output_'+self.test_id - self.prepare_test() - - def compare_ok(self,got_file,expected_file,name): - if not os.path.isfile(got_file): - return (True,'%s absent' % got_file) - elif not os.path.isfile(expected_file): - return (True,'%s absent' % expected_file) - else: - diff = os.popen('diff -b -w -u %s %s' % (got_file,expected_file)).read() - if diff and not diff.startswith("No differences"): - return (True,'Difference between generated output and reference:\n%s' % diff) - return (False,'') - - def cleanup_xmllint(self,errmsg): - msg = errmsg.split('\n') - rtnmsg = "" - for o in msg: - if (o): - if (o.startswith("I/O error : Attempt")): - pass - else: - if (rtnmsg): - rtnmsg += '\n' - rtnmsg += o - return rtnmsg - - def cleanup_xmllint_docbook(self,errmsg): - # For future work, first get everything valid XML - msg = self.cleanup_xmllint(errmsg).split('\n') - rtnmsg = "" - cnt = 0 - for o in msg: - if (o): - if (cnt): - cnt -= 1 - pass - elif (o.endswith("does not validate")): - pass - elif (o.find("no DTD found!")!=-1): - pass - elif (o.find("is not an NCName")!=-1): - cnt = 2 - else: - if (rtnmsg): - rtnmsg += '\n' - rtnmsg += o - return rtnmsg - - def get_config(self): - config = {} - with open(self.args.inputdir+'/'+self.test,'r') as f: - for line in f.readlines(): - m = config_reg.match(line) - if m: - key = m.group('name') - value = m.group('value') - if (key=='config'): - value = value.replace('$INPUTDIR',self.args.inputdir) - # print('key=%s value=%s' % (key,value)) - config.setdefault(key, []).append(value) - return config - - def prepare_test(self): - # prepare test environment - shutil.rmtree(self.test_out,ignore_errors=True) - os.mkdir(self.test_out) - shutil.copy(self.args.inputdir+'/Doxyfile',self.test_out) - with open(self.test_out+'/Doxyfile','a') as f: - print('INPUT=%s/%s' % (self.args.inputdir,self.test), file=f) - print('STRIP_FROM_PATH=%s' % self.args.inputdir, file=f) - print('EXAMPLE_PATH=%s' % self.args.inputdir, file=f) - if 'config' in self.config: - for option in self.config['config']: - print(option, file=f) - if (self.args.xml): - print('GENERATE_XML=YES', file=f) - print('XML_OUTPUT=%s/out' % self.test_out, file=f) - else: - print('GENERATE_XML=NO', file=f) - if (self.args.rtf): - print('GENERATE_RTF=YES', file=f) - print('RTF_OUTPUT=%s/rtf' % self.test_out, file=f) - else: - print('GENERATE_RTF=NO', file=f) - if (self.args.docbook): - print('GENERATE_DOCBOOK=YES', file=f) - print('DOCBOOK_OUTPUT=%s/docbook' % self.test_out, file=f) - else: - print('GENERATE_DOCBOOK=NO', file=f) - if (self.args.xhtml): - print('GENERATE_HTML=YES', file=f) - # HTML_OUTPUT can also be set locally - print('HTML_OUTPUT=%s/html' % self.test_out, file=f) - print('HTML_FILE_EXTENSION=.xhtml', file=f) - if (self.args.pdf): - print('GENERATE_LATEX=YES', file=f) - print('LATEX_OUTPUT=%s/latex' % self.test_out, file=f) - if self.args.subdirs: - print('CREATE_SUBDIRS=YES', file=f) - if (self.args.cfgs): - for cfg in list(itertools.chain.from_iterable(self.args.cfgs)): - if cfg.find('=') == -1: - print("Not a doxygen configuration item, missing '=' sign: '%s'."%cfg) - sys.exit(1) - print(cfg, file=f) - - if 'check' not in self.config or not self.config['check']: - print('Test doesn\'t specify any files to check') - sys.exit(1) - - # run doxygen - if (sys.platform == 'win32'): - redir=' > nul:' - else: - redir=' 2> /dev/null > /dev/null' - - if (self.args.noredir): - redir='' - - if os.system('%s %s/Doxyfile %s' % (self.args.doxygen,self.test_out,redir))!=0: - print('Error: failed to run %s on %s/Doxyfile' % (self.args.doxygen,self.test_out)) - sys.exit(1) - - # update the reference data for this test - def update_test(self,testmgr): - print('Updating reference for %s' % self.test_name) - - if 'check' in self.config: - for check in self.config['check']: - check_file='%s/out/%s' % (self.test_out,check) - # check if the file we need to check is actually generated - if not os.path.isfile(check_file): - print('Non-existing file %s after \'check:\' statement' % check_file) - return - # convert output to canonical form - data = os.popen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read() - if data: - # strip version - data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n') - else: - print('Failed to run %s on the doxygen output file %s' % (self.args.xmllint,self.test_out)) - return - out_file='%s/%s' % (self.test_out,check) - with open(out_file,'w') as f: - print(data,file=f) - shutil.rmtree(self.test_out+'/out',ignore_errors=True) - os.remove(self.test_out+'/Doxyfile') - - # check the relevant files of a doxygen run with the reference material - def perform_test(self,testmgr): - if (sys.platform == 'win32'): - redir=' > nul:' - separ='&' - else: - redir=' 2> /dev/null' - separ=';' - - if (self.args.noredir): - redir='' - - failed_xml=False - failed_html=False - failed_latex=False - failed_docbook=False - failed_rtf=False - msg = () - # look for files to check against the reference - if self.args.xml: - failed_xml=True - if 'check' in self.config: - for check in self.config['check']: - check_file='%s/out/%s' % (self.test_out,check) - # check if the file we need to check is actually generated - if not os.path.isfile(check_file): - # try with sub dirs - check_file = glob.glob('%s/out/*/*/%s' % (self.test_out,check)) - if not check_file: - check_file='%s/out/%s' % (self.test_out,check) - msg += ('Non-existing file %s after \'check:\' statement' % check_file,) - break - else: - check_file = check_file[0] - # convert output to canonical form - data = os.popen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read() - if data: - # strip version - data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n') - else: - msg += ('Failed to run %s on the doxygen output file %s' % (self.args.xmllint,self.test_out),) - break - out_file='%s/%s' % (self.test_out,check) - with open(out_file,'w') as f: - print(data,file=f) - ref_file='%s/%s/%s' % (self.args.inputdir,self.test_id,check) - (failed_xml,xml_msg) = self.compare_ok(out_file,ref_file,self.test_name) - if failed_xml: - msg+= (xml_msg,) - break - if not failed_xml and not self.args.keep: - xml_output='%s/out' % self.test_out - shutil.rmtree(xml_output,ignore_errors=True) - - if (self.args.rtf): - # no tests defined yet - pass - - if (self.args.docbook): - docbook_output='%s/docbook' % self.test_out - if (sys.platform == 'win32'): - redirx=' 2> %s/temp >nul:'%docbook_output - else: - redirx='2>%s/temp >/dev/null'%docbook_output - # For future work, first get everything valid XML - # exe_string = '%s --relaxng db/docbook.rng --nonet --postvalid %s/*xml %s % (self.args.xmllint,docbook_output,redirx) - tests = [] - tests.append(glob.glob('%s/*.xml' % (docbook_output))) - tests.append(glob.glob('%s/*/*/*.xml' % (docbook_output))) - tests = ' '.join(list(itertools.chain.from_iterable(tests))).replace(self.args.outputdir +'/','').replace('\\','/') - exe_string = '%s --nonet --postvalid %s %s' % (self.args.xmllint,tests,redirx) - exe_string += ' %s more "%s/temp"' % (separ,docbook_output) - - failed_docbook=False - xmllint_out = os.popen(exe_string).read() - xmllint_out = self.cleanup_xmllint_docbook(xmllint_out) - if xmllint_out: - msg += (xmllint_out,) - failed_docbook=True - elif not self.args.keep: - shutil.rmtree(docbook_output,ignore_errors=True) - - if (self.args.xhtml): - html_output='%s/html' % self.test_out - if (sys.platform == 'win32'): - redirx=' 2> %s/temp >nul:'%html_output - else: - redirx='2>%s/temp >/dev/null'%html_output - exe_string = '%s --path dtd --nonet --postvalid %s/*xhtml %s %s ' % (self.args.xmllint,html_output,redirx,separ) - exe_string += 'more "%s/temp"' % (html_output) - failed_html=False - xmllint_out = os.popen(exe_string).read() - xmllint_out = self.cleanup_xmllint(xmllint_out) - if xmllint_out: - msg += (xmllint_out,) - failed_html=True - elif not self.args.keep: - shutil.rmtree(html_output,ignore_errors=True) - if (self.args.pdf): - failed_latex=False - latex_output='%s/latex' % self.test_out - if (sys.platform == 'win32'): - redirl='>nul: 2>temp' - else: - redirl='>/dev/null 2>temp' - exe_string = 'cd %s %s echo "q" | make %s %s' % (latex_output,separ,redirl,separ) - exe_string += 'more temp' - latex_out = os.popen(exe_string).read() - if latex_out.find("Error")!=-1: - msg += ("PDF generation failed\n For a description of the problem see 'refman.log' in the latex directory of this test",) - failed_html=True - elif open(latex_output + "/refman.log",'r').read().find("Emergency stop")!= -1: - msg += ("PDF generation failed\n For a description of the problem see 'refman.log' in the latex directory of this test",) - failed_html=True - elif not self.args.keep: - shutil.rmtree(latex_output,ignore_errors=True) - - if failed_xml or failed_html or failed_latex or failed_docbook or failed_rtf: - testmgr.ok(False,self.test_name,msg) - return - - testmgr.ok(True,self.test_name) - if not self.args.keep: - shutil.rmtree(self.test_out,ignore_errors=True) - - def run(self,testmgr): - if self.update: - self.update_test(testmgr) - else: - self.perform_test(testmgr) - -class TestManager: - def __init__(self,args,tests): - self.args = args - self.tests = tests - self.num_tests = len(tests) - self.count=1 - self.passed=0 - if self.args.xhtml: - self.prepare_dtd() - print('1..%d' % self.num_tests) - - def ok(self,result,test_name,msg='Ok'): - if result: - print('ok %s - %s' % (self.count,test_name)) - self.passed = self.passed + 1 - else: - print('not ok %s - %s' % (self.count,test_name)) - print('-------------------------------------') - for o in msg: - print(o) - print('-------------------------------------') - self.count = self.count + 1 - - def result(self): - if self.passed==self.num_tests: - print('All tests passed!') - else: - print('%d out of %s tests failed' % (self.num_tests-self.passed,self.num_tests)) - return 0 if self.passed==self.num_tests else 1 - - def perform_tests(self): - for test in self.tests: - tester = Tester(self.args,test) - tester.run(self) - res=self.result() - if self.args.xhtml and not res and not self.args.keep: - shutil.rmtree("dtd",ignore_errors=True) - return 0 if self.args.updateref else res - - def prepare_dtd(self): - shutil.rmtree("dtd",ignore_errors=True) - shutil.copytree(self.args.inputdir+"/dtd", "dtd") - -def main(): - # argument handling - parser = argparse.ArgumentParser(description='run doxygen tests') - parser.add_argument('--updateref',help= - 'update the reference files. Should be used in combination with -id to ' - 'update the reference file(s) for the given test',action="store_true") - parser.add_argument('--doxygen',nargs='?',default='doxygen',help= - 'path/name of the doxygen executable') - parser.add_argument('--xmllint',nargs='?',default='xmllint',help= - 'path/name of the xmllint executable') - parser.add_argument('--id',nargs='+',dest='ids',action='append',type=int,help= - 'run test with number n only (the option can be specified to run test with ' - 'number n only (the option can be specified multiple times') - parser.add_argument('--start_id',dest='start_id',type=int,help= - 'run tests starting with number n') - parser.add_argument('--end_id',dest='end_id',type=int,help= - 'run tests ending with number n') - parser.add_argument('--all',help= - 'can be used in combination with -updateref to update the reference files ' - 'for all tests.',action="store_true") - parser.add_argument('--inputdir',nargs='?',default='.',help= - 'input directory containing the tests') - parser.add_argument('--outputdir',nargs='?',default='.',help= - 'output directory to write the doxygen output to') - parser.add_argument('--noredir',help= - 'disable redirection of doxygen warnings',action="store_true") - parser.add_argument('--xml',help='create xml output and check', - action="store_true") - parser.add_argument('--rtf',help= - 'create rtf output',action="store_true") - parser.add_argument('--docbook',help= - 'create docbook output and check with xmllint',action="store_true") - parser.add_argument('--xhtml',help= - 'create xhtml output and check with xmllint',action="store_true") - parser.add_argument('--pdf',help='create LaTeX output and create pdf from it', - action="store_true") - parser.add_argument('--subdirs',help='use the configuration parameter CREATE_SUBDIRS=YES', - action="store_true") - parser.add_argument('--keep',help='keep result directories', - action="store_true") - parser.add_argument('--cfg',nargs='+',dest='cfgs',action='append',help= - 'run test with extra doxygen configuration settings ' - '(the option may be specified multiple times') - test_flags = os.getenv('TEST_FLAGS', default='').split() - args = parser.parse_args(test_flags + sys.argv[1:]) - - # sanity check - if (not args.xml) and (not args.pdf) and (not args.xhtml) and (not args.docbook and (not args.rtf)): - args.xml=True - if (not args.updateref is None) and (args.ids is None) and (args.all is None): - parser.error('--updateref requires either --id or --all') - - starting_directory = os.getcwd() - os.chdir(args.inputdir) - # find the tests to run - tests = [] - if args.start_id: - if args.end_id: - for id in range(args.start_id, args.end_id + 1): - tests.append(glob.glob('%s_*'%id)) - tests.append(glob.glob('0%s_*'%id)) - tests.append(glob.glob('00%s_*'%id)) - else: - parser.error('--start_id requires --end_id') - elif args.end_id: - parser.error('--end_id requires --start_id') - if args.ids: # test ids are given by user - for id in list(itertools.chain.from_iterable(args.ids)): - tests.append(glob.glob('%s_*'%id)) - tests.append(glob.glob('0%s_*'%id)) - tests.append(glob.glob('00%s_*'%id)) - if (not args.ids and not args.start_id): # find all tests - tests = glob.glob('[0-9][0-9][0-9]_*') - else: - tests = list(itertools.chain.from_iterable(tests)) - os.chdir(starting_directory) - - # create test manager to run the tests - testManager = TestManager(args,tests) - sys.exit(testManager.perform_tests()) - -if __name__ == '__main__': - main() diff --git a/tests/upstream-test-suite/sample.bib b/tests/upstream-test-suite/sample.bib deleted file mode 100644 index 436e8cd..0000000 --- a/tests/upstream-test-suite/sample.bib +++ /dev/null @@ -1,7 +0,0 @@ -@book{knuth79, - author = "Donald E. Knuth", - title = "Tex and Metafont, New Directions in Typesetting", - year = "1979", - publisher = "American Mathematical Society and Digital Press", - address = "Stanford" -} diff --git a/tests/upstream-test-suite/sample.html b/tests/upstream-test-suite/sample.html deleted file mode 100644 index 159202e..0000000 --- a/tests/upstream-test-suite/sample.html +++ /dev/null @@ -1 +0,0 @@ -

    Hello world

    diff --git a/tests/upstream-test-suite/sample.png b/tests/upstream-test-suite/sample.png deleted file mode 100644 index 5c9f51f56cc9b4b7b459646e90843a02d91d196e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2560 zcmaJ?c{mh!AOGdZW`t@tCF4w6GQ%LnqSQ9I->3CH`|SHXyYJ_Z&+|FH-`{_~=bLcS`owlgc}W1kc7mCy zEdan10HE}PC;-54Dr5!#Am(9gWeh-R3S`w;8~~t9HnX(?AnX7DQLz9l0|27l13-lX zFyjOOIuign|LodRh5(50Pg)Xj8yg!?n91te`tr)!x24su!j;88mKGMj&CGwDp8YcU z;WK~g)5!S3Aa9QQX7=^a45$Bnd(XR;uBpb33DzqC6lMa2nV2}=gThQUHa0fj*$g-N z+tTXa?O*z56v;Qfp`w`=mD!HK2YeN-Y*y#Os?!QyV;wU$ZC=H|rm*mNingO2wY?^I zzqt6v68Ft)NyFO|W)~^6I;X7P=lXLf%%r(#1ID z^O8F~J^RI;S~0|*KXAk$IIX3oZ7k~v*Da>r%%kAZv*GIu4(9yr$q%3VM}LRHOw2qU zWEA#Pw(wCWqiNY}yDJs0(RI|6=7Opr%=uf#&)sy1tUY2A**!ed)H!*al=^FFzhguV zr~kb_z46%DltJEH_HTU`!=K?@bFC<)+Sp4_n2C`?5m5UnewJlqcb=3 zEw6gfSlY&3L8&ddRGP@XM!tlKk7C-ov4NJZ0~ueZyEZeZsc-Olc9Y=>VvMT zR(?y@)Q!AOb$$DQ8%=r^A(405H8Jj|0?HdZCJgN3?-cde_?P8Z45Eo~YPz;+y0(fM zxc>@GytQBHrdEMl=@O{lTTQ$brBoGRqo!-CtZj~W%~gS0q3vi_lABd@EdCl+)3sI6 zu~5{+Zzli9Da@|Q7CtGoT3OrtgnPbcEX&Y7p`w{r)ymhi2*I4crE4A(l-hC-eZkVF z81I%BmDwJh^->Gt=@?OC;(RYTzcc%{zC#8V(Zsj|M;!L+*(qw^R1r3CQ_9B1Mr~c+ z_dn1dXlrc;{t4JL;djVhsf-npZ>v18MMVD@2>l0yLZS9?p;OzY{}YPe+2(J-zhe4d z8=+A8|8#%H1D`QBX3DZlVf;!=)^aGTZM9@+CF67>o0i6*+B9R`2|D=l!Lt$ofGsW- zCrm-SIMfUPAQ4Eg!bu3EBp?bq2PU_=0U&NfFf}HcwU3@&3f^VE=l&_%oIt`Z_dQfz zViw`9-V5d>kr#QgS}IisyMH8QWS9+`A0mkr`q*OVdoWCKNs7drV_e+EL)yR!RCI@gg zoCA+y1Ufa1sOvpHfrN%HA`>!rWNzR73)@n^T?FOW$1ZsF2|3k#Y%U&o+Wpq3x1gg@bHE&gx z<#5WFZU)@5p*e-UAKo&IA4^|XQ*XKX03x$}w=Ng@;Tq0;vSaUMs@P5?GKal=_N~G> zDX64CUcD_y>!a)nJidh>wO87(L*RC_uf=|--nz~`(?|pV5+J^WWq3SmGOLV&quZZeLbMSTF)&I@`DHEcI7~QHDspxb}5~k_Y8tNYz-M9_1_DkepaW$s~ zQ*Y&g)L+)}nj;Jjuj*I*67|XevsKPH)$4FKRt3rC9xQttgm{<~&@8|xmxv`riS9fr z8E_~eF_Dg{73(X@k#o(yDYfXI^aNY`f+gXbKDELSf&GkUoq@#twsZU32>^HIchiyJh3S&kPr zW{M(vDOQX>Q&}S=9NG!e$9;U=up$I_Oj#d2nw%xe7hI`tm7!P(Cv%JiLd>S`N5J7g06AtaHCCqKKSSLiDviWXCA_GuQr`1}KL@u`EXCbu{_ zS(;6@ZPDm!Uph#M&t>>wS0BLg^0k@Dsg?S0fl? zJ+{FSweoRpy+R^Hz$%?wZKoyVfTfIByWK{Doc3|KK`Yx3Cuet|QCQdVP6aLWvP6lk_#RkF0?D_^`SC z*VUG`^~438W5Rs_^LH@k -#include - -void main() -{ - int i,n,temp,j,arr[25]; - printf("Enter the number of elements in the Array: "); - scanf("%d",&n); - printf("\nEnter the elements:\n\n"); - - /* [input] */ - for(i=0 ; iarr[j+1]) //Swapping Condition is Checked - { - temp=arr[j]; - arr[j]=arr[j+1]; - arr[j+1]=temp; - } - } - } - // [bubble] - - printf("\nThe Sorted Array is:\n\n"); - /* [output] */ - for(i=0 ; i Date: Sun, 21 Mar 2021 16:38:35 +0100 Subject: [PATCH 061/117] update source --- doxygen.spec | 7 +++++-- sources | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index 3e46bfb..b65fbbe 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,12 +16,12 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 7%{?dist} +Release: 8%{?dist} # No version is specified. License: GPL+ Url: http://www.doxygen.nl -Source0: http://doxygen.nl/files/%{name}-%{version}.src.tar.gz +Source0: https://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico @@ -304,6 +304,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Sun Mar 21 2021 Than Ngo - 1:1.9.1-8 +- update source + * Mon Feb 22 2021 Than Ngo - 1:1.9.1-7 - drop test-suite diff --git a/sources b/sources index b0ecdcf..33c38ae 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.1.src.tar.gz) = a84fbea1874921317b58345c53fc4eac0382c9e593f0e1ee899a31e67ead3fd12b2da8145b37e2e09d665e28d060e6717c92de7e8d0a31fc5f24fdcc4715f54d +SHA512 (doxygen-1.9.1.src.tar.gz) = 637496c549a4a150cfaeb5d4913de512262145ecd7d455d7b7f3dd68f9416e47d931a6c1efd8a17d931e4baf4a8a9f2ed21124664003b123b6f89ca4abf263ed From 0890706d793c54ee11242eb6aad75bb6ecaf47cc Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 30 Mar 2021 19:35:57 +0100 Subject: [PATCH 062/117] Rebuilt for removed libstdc++ symbol (#1937698) --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index b65fbbe..83d30bb 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 8%{?dist} +Release: 9%{?dist} # No version is specified. License: GPL+ @@ -304,6 +304,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Tue Mar 30 2021 Jonathan Wakely - 1:1.9.1-9 +- Rebuilt for removed libstdc++ symbol (#1937698) + * Sun Mar 21 2021 Than Ngo - 1:1.9.1-8 - update source From 73aaa730f4add937fa71c3c0411d2ba7d8efa2fd Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 21 Jul 2021 21:05:29 +0000 Subject: [PATCH 063/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 83d30bb..8b6ba74 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 9%{?dist} +Release: 10%{?dist} # No version is specified. License: GPL+ @@ -304,6 +304,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Wed Jul 21 2021 Fedora Release Engineering - 1:1.9.1-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Tue Mar 30 2021 Jonathan Wakely - 1:1.9.1-9 - Rebuilt for removed libstdc++ symbol (#1937698) From 5f8d9f78000b37a888b7becceda46e63038fcac0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Tue, 17 Aug 2021 19:33:09 +0200 Subject: [PATCH 064/117] Rebuild for clang-13.0.0 --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 8b6ba74..5cc8033 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -16,7 +16,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.1 -Release: 10%{?dist} +Release: 11%{?dist} # No version is specified. License: GPL+ @@ -304,6 +304,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Tue Aug 17 2021 Björn Esser - 1:1.9.1-11 +- Rebuild for clang-13.0.0 + * Wed Jul 21 2021 Fedora Release Engineering - 1:1.9.1-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From 79be305ff0256124b600ecbce47ab10fe59595f4 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Thu, 19 Aug 2021 13:06:43 +0200 Subject: [PATCH 065/117] rebase to 1.9.2 --- .gitignore | 1 + ...crash-when-parsing-config-file-part2.patch | 22 ------- ...1.9.1-crash-when-parsing-config-file.patch | 64 ------------------- doxygen-1.9.1-Coverity_issues.patch | 49 -------------- doxygen-1.9.1-crash_in_docparser.patch | 12 ---- doxygen.spec | 17 ++--- sources | 2 +- 7 files changed, 7 insertions(+), 160 deletions(-) delete mode 100644 doxgen-1.9.1-crash-when-parsing-config-file-part2.patch delete mode 100644 doxgen-1.9.1-crash-when-parsing-config-file.patch delete mode 100644 doxygen-1.9.1-Coverity_issues.patch delete mode 100644 doxygen-1.9.1-crash_in_docparser.patch diff --git a/.gitignore b/.gitignore index 8769b24..20cf28b 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.8.18.src.tar.gz /doxywizard-icons.tar.xz /doxygen-1.9.1.src.tar.gz +/doxygen-1.9.2.src.tar.gz diff --git a/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch b/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch deleted file mode 100644 index 38465ff..0000000 --- a/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -up doxygen/src/configimpl.l.orig doxygen/src/configimpl.l ---- doxygen/src/configimpl.l.orig 2021-01-19 17:25:00.933789247 +0100 -+++ doxygen/src/configimpl.l 2021-01-19 17:26:09.704744240 +0100 -@@ -1175,8 +1175,7 @@ static void substEnvVarsInStrList(String - for (const auto &s : sl) - { - QCString result = s.c_str(); -- // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE. -- bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1); -+ bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1) || (result.find('"')!=-1); - // here we strip the quote again - substEnvVarsInString(result); - -@@ -1229,7 +1228,7 @@ static void substEnvVarsInStrList(String - } - if (p!=l) // add the leftover as a string - { -- results.push_back(result.right(l-p).data()); -+ results.push_back(result.right(l-p).str()); - } - } - else // just goto the next element in the list diff --git a/doxgen-1.9.1-crash-when-parsing-config-file.patch b/doxgen-1.9.1-crash-when-parsing-config-file.patch deleted file mode 100644 index 848750d..0000000 --- a/doxgen-1.9.1-crash-when-parsing-config-file.patch +++ /dev/null @@ -1,64 +0,0 @@ -commit 3b15963316b59cd1af3468a43535d90343916ffb -Author: Dimitri van Heesch -Date: Mon Jan 18 19:59:16 2021 +0100 - - issue #8343: doxygen-1.9.1 crashes when parsing config file - -diff --git a/src/configimpl.l b/src/configimpl.l -index 7f73ec01..56a2e108 100644 ---- a/src/configimpl.l -+++ b/src/configimpl.l -@@ -1210,7 +1210,7 @@ static void substEnvVarsInStrList(StringVector &sl) - c=result.at(i); - if (c=='"') // end quote - { -- results.push_back(result.mid(p,i-p).data()); -+ results.push_back(result.mid(p,i-p).str()); - p=i+1; - break; - } -@@ -1222,7 +1222,7 @@ static void substEnvVarsInStrList(StringVector &sl) - } - else if (c==' ' || c=='\t') // separator - { -- if (i>p) results.push_back(result.mid(p,i-p).data()); -+ if (i>p) results.push_back(result.mid(p,i-p).str()); - p=i+1; - } - } -@@ -1234,7 +1234,7 @@ static void substEnvVarsInStrList(StringVector &sl) - } - else // just goto the next element in the list - { -- if (!result.isEmpty()) results.push_back(result.data()); -+ if (!result.isEmpty()) results.push_back(result.str()); - } - } - sl = results; -@@ -1409,7 +1409,7 @@ static void cleanUpPaths(StringVector &str) - QFileInfo fi(path.c_str()); - if (fi.exists() && fi.isDir()) - { -- path = fi.absFilePath().utf8().data(); -+ path = fi.absFilePath().utf8().str(); - if (path[path.size()-1]!='/') path+='/'; - } - } -@@ -1545,7 +1545,7 @@ void Config::checkAndCorrect() - QString p = QDir::currentDirPath(); - if (p.at(p.length()-1)!='/') - p.append('/'); -- stripFromPath.push_back(p.utf8().data()); -+ stripFromPath.push_back(p.utf8().str()); - } - else - { -@@ -1882,7 +1882,7 @@ void Config::checkAndCorrect() - if (inputSources.empty()) - { - // use current dir as the default -- inputSources.push_back(QDir::currentDirPath().utf8().data()); -+ inputSources.push_back(QDir::currentDirPath().utf8().str()); - } - else - { diff --git a/doxygen-1.9.1-Coverity_issues.patch b/doxygen-1.9.1-Coverity_issues.patch deleted file mode 100644 index a1848e6..0000000 --- a/doxygen-1.9.1-Coverity_issues.patch +++ /dev/null @@ -1,49 +0,0 @@ -diff -up doxygen-1.9.1/src/context.cpp.me doxygen-1.9.1/src/context.cpp ---- doxygen-1.9.1/src/context.cpp.me 2021-02-10 10:56:44.575251899 +0100 -+++ doxygen-1.9.1/src/context.cpp 2021-02-10 10:57:54.522809720 +0100 -@@ -4062,11 +4062,11 @@ class MemberContext::Private : public De - s_inst.addProperty("nameWithContextFor", &Private::nameWithContextFor); - init=TRUE; - } -- if (md && !md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } -+ if (!md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } - - Cachable &cache = getCache(); - cache.propertyAttrs.reset(TemplateList::alloc()); -- if (md && md->isProperty()) -+ if (md->isProperty()) - { - if (md->isGettable()) cache.propertyAttrs->append("get"); - if (md->isPrivateGettable()) cache.propertyAttrs->append("private get"); -@@ -4076,7 +4076,7 @@ class MemberContext::Private : public De - if (md->isProtectedSettable()) cache.propertyAttrs->append("protected set"); - } - cache.eventAttrs.reset(TemplateList::alloc()); -- if (md && md->isEvent()) -+ if (md->isEvent()) - { - if (md->isAddable()) cache.eventAttrs->append("add"); - if (md->isRemovable()) cache.eventAttrs->append("remove"); -diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp ---- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:58:11.491500540 +0100 -+++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 11:00:35.905512597 +0100 -@@ -1524,7 +1524,7 @@ reparsetoken: - { - QCString scope; - doctokenizerYYsetStateSetScope(); -- doctokenizerYYlex(); -+ (void)doctokenizerYYlex(); - scope = g_token->name; - g_context = scope; - //printf("Found scope='%s'\n",scope.data()); -diff -up doxygen-1.9.1/src/dotgroupcollaboration.cpp.me doxygen-1.9.1/src/dotgroupcollaboration.cpp ---- doxygen-1.9.1/src/dotgroupcollaboration.cpp.me 2021-02-10 11:01:10.588530954 +0100 -+++ doxygen-1.9.1/src/dotgroupcollaboration.cpp 2021-02-10 11:02:54.216221350 +0100 -@@ -309,6 +309,7 @@ void DotGroupCollaboration::Edge::write( - { - if (first) first=FALSE; else t << "\\n"; - t << DotNode::convertLabel(link->label); -+ count++; - } - if (count==maxLabels) t << "\\n..."; - t << "\""; diff --git a/doxygen-1.9.1-crash_in_docparser.patch b/doxygen-1.9.1-crash_in_docparser.patch deleted file mode 100644 index adcd144..0000000 --- a/doxygen-1.9.1-crash_in_docparser.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp ---- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:52:09.481086282 +0100 -+++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 10:55:32.418781686 +0100 -@@ -951,7 +951,7 @@ static void handlePendingStyleCommands(D - children.append(new DocStyleChange(parent,g_nodeStack.count(),sc->style(),sc->tagName(),FALSE)); - g_initialStyleStack.push(sc); - g_styleStack.pop(); -- sc = g_styleStack.top(); -+ sc = !g_styleStack.isEmpty() ? g_styleStack.top() : 0; - } - } - } diff --git a/doxygen.spec b/doxygen.spec index 5cc8033..b110ce4 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -1,9 +1,3 @@ -# doxygen is known not to work properly with LTO at this point. Some of the issues -# are being worked on upstream and disabling LTO should be re-evaluated as -# we update this change. Until such time... -# Disable LTO -%global _lto_cflags %{nil} - %if 0%{?fedora} %global xapian_core_support ON %global clang_support ON @@ -15,8 +9,8 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 -Version: 1.9.1 -Release: 11%{?dist} +Version: 1.9.2 +Release: 1%{?dist} # No version is specified. License: GPL+ @@ -27,10 +21,6 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches -Patch1: doxgen-1.9.1-crash-when-parsing-config-file.patch -Patch2: doxgen-1.9.1-crash-when-parsing-config-file-part2.patch -Patch3: doxygen-1.9.1-Coverity_issues.patch -Patch4: doxygen-1.9.1-crash_in_docparser.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -304,6 +294,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Thu Aug 19 2021 Than Ngo - 1:1.9.2-1 +- rebase to 1.9.2 + * Tue Aug 17 2021 Björn Esser - 1:1.9.1-11 - Rebuild for clang-13.0.0 diff --git a/sources b/sources index 33c38ae..50eecc6 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.1.src.tar.gz) = 637496c549a4a150cfaeb5d4913de512262145ecd7d455d7b7f3dd68f9416e47d931a6c1efd8a17d931e4baf4a8a9f2ed21124664003b123b6f89ca4abf263ed +SHA512 (doxygen-1.9.2.src.tar.gz) = 2729d013b0363a919bbf6babd300389b76e95dd9dbb16ac0f57fc5a0392d3e2076ea4fba958a236311513e68e4aa056a77bd22c9c92b410a17eed095e5adccc0 From 5671b82de32b5e12b78b8f420196fda5a7272750 Mon Sep 17 00:00:00 2001 From: Mattias Ellert Date: Mon, 13 Sep 2021 16:43:50 +0200 Subject: [PATCH 066/117] Use predictable and reproducible filenames (rhbz#2000138) --- doxygen.spec | 6 +- predictable-and-reproducible-filenames.patch | 112 +++++++++++++++++++ 2 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 predictable-and-reproducible-filenames.patch diff --git a/doxygen.spec b/doxygen.spec index b110ce4..e6fe5a7 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -10,7 +10,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.2 -Release: 1%{?dist} +Release: 2%{?dist} # No version is specified. License: GPL+ @@ -21,6 +21,7 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches +Patch0: predictable-and-reproducible-filenames.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -294,6 +295,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Sun Sep 12 2021 Mattias Ellert - 1:1.9.2-2 +- Use predictable and reproducible filenames (rhbz#2000138) + * Thu Aug 19 2021 Than Ngo - 1:1.9.2-1 - rebase to 1.9.2 diff --git a/predictable-and-reproducible-filenames.patch b/predictable-and-reproducible-filenames.patch new file mode 100644 index 0000000..6a160d8 --- /dev/null +++ b/predictable-and-reproducible-filenames.patch @@ -0,0 +1,112 @@ +diff -ur doxygen-1.9.2.orig/src/dirdef.cpp doxygen-1.9.2/src/dirdef.cpp +--- doxygen-1.9.2.orig/src/dirdef.cpp 2021-08-17 19:10:43.000000000 +0200 ++++ doxygen-1.9.2/src/dirdef.cpp 2021-09-12 21:25:51.878853938 +0200 +@@ -47,7 +47,7 @@ + virtual bool isLinkableInProject() const; + virtual bool isLinkable() const; + virtual QCString displayName(bool=TRUE) const { return m_dispName; } +- virtual const QCString &shortName() const { return m_shortName; } ++ virtual const QCString shortName() const { return m_shortName; } + virtual void addSubDir(DirDef *subdir); + virtual const FileList &getFiles() const { return m_fileList; } + virtual void addFile(const FileDef *fd); +@@ -66,6 +66,7 @@ + virtual void setDiskName(const QCString &name) { m_diskName = name; } + virtual void sort(); + virtual void setParent(DirDef *parent); ++ virtual void setDirCount(int count); + virtual void setLevel(); + virtual void addUsesDependency(const DirDef *usedDir,const FileDef *srcFd, + const FileDef *dstFd,bool inherited); +@@ -92,7 +93,7 @@ + QCString m_shortName; + QCString m_diskName; + FileList m_fileList; // list of files in the group +- int m_dirCount; ++ int m_dirCount = -1; + int m_level; + DirDef *m_parent; + UsedDirLinkedMap m_usedDirs; +@@ -107,8 +108,6 @@ + //---------------------------------------------------------------------- + // method implementation + +-static int g_dirCount=0; +- + DirDefImpl::DirDefImpl(const QCString &path) : DefinitionMixin(path,1,1,path) + { + bool fullPathNames = Config_getBool(FULL_PATH_NAMES); +@@ -132,7 +131,6 @@ + m_dispName = m_dispName.left(m_dispName.length()-1); + } + +- m_dirCount = g_dirCount++; + m_level=-1; + m_parent=0; + } +@@ -163,6 +161,11 @@ + m_parent=p; + } + ++void DirDefImpl::setDirCount(int count) ++{ ++ m_dirCount=count; ++} ++ + void DirDefImpl::addFile(const FileDef *fd) + { + m_fileList.push_back(fd); +@@ -993,7 +996,6 @@ + { + for (const auto &fd : *fn) + { +- //printf("buildDirectories %s\n",qPrint(fd->name())); + if (fd->getReference().isEmpty()) + { + DirDef *dir; +@@ -1038,7 +1040,24 @@ + std::sort(Doxygen::dirLinkedMap->begin(), + Doxygen::dirLinkedMap->end(), + [](const auto &d1,const auto &d2) +- { return qstricmp(d1->shortName(),d2->shortName()) < 0; }); ++ { ++ QCString s1 = d1->shortName(), s2 = d2->shortName(); ++ int i = qstricmp(s1,s2); ++ if (i==0) // if sort name are equal, sort on full path ++ { ++ QCString n1 = d1->name(), n2 = d2->name(); ++ int n = qstricmp(n1,n2); ++ return n < 0; ++ } ++ return i < 0; ++ }); ++ ++ // set the directory count identifier ++ int dirCount=0; ++ for (const auto &dir : *Doxygen::dirLinkedMap) ++ { ++ dir->setDirCount(dirCount++); ++ } + + computeCommonDirPrefix(); + } +diff -ur doxygen-1.9.2.orig/src/dirdef.h doxygen-1.9.2/src/dirdef.h +--- doxygen-1.9.2.orig/src/dirdef.h 2021-05-12 20:51:20.000000000 +0200 ++++ doxygen-1.9.2/src/dirdef.h 2021-09-12 21:25:42.394830066 +0200 +@@ -95,7 +95,7 @@ + virtual bool isLinkableInProject() const = 0; + virtual bool isLinkable() const = 0; + virtual QCString displayName(bool=TRUE) const = 0; +- virtual const QCString &shortName() const = 0; ++ virtual const QCString shortName() const = 0; + virtual void addSubDir(DirDef *subdir) = 0; + virtual const FileList &getFiles() const = 0; + virtual void addFile(const FileDef *fd) = 0; +@@ -115,6 +115,7 @@ + virtual void writeTagFile(TextStream &t) = 0; + + virtual void setDiskName(const QCString &name) = 0; ++ virtual void setDirCount(int count) = 0; + virtual void sort() = 0; + virtual void setParent(DirDef *parent) = 0; + virtual void setLevel() = 0; From 31148b20478d86e8d80ab4e5cd32029b5b982008 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Thu, 7 Oct 2021 23:28:03 +0000 Subject: [PATCH 067/117] Rebuild for llvm-13.0.0 --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index e6fe5a7..267ced4 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -10,7 +10,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.2 -Release: 2%{?dist} +Release: 3%{?dist} # No version is specified. License: GPL+ @@ -295,6 +295,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Thu Oct 07 2021 Tom Stellard - 1:1.9.2-3 +- Rebuild for llvm-13.0.0 + * Sun Sep 12 2021 Mattias Ellert - 1:1.9.2-2 - Use predictable and reproducible filenames (rhbz#2000138) From 4095f4066e26bdbfcfa24a2b632034d79ed2eee1 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 27 Oct 2021 10:36:59 +0200 Subject: [PATCH 068/117] update --- .gitignore | 1 + doxygen.spec | 9 +- predictable-and-reproducible-filenames.patch | 112 ------------------- sources | 2 +- 4 files changed, 8 insertions(+), 116 deletions(-) delete mode 100644 predictable-and-reproducible-filenames.patch diff --git a/.gitignore b/.gitignore index 20cf28b..c02508c 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ doxygen-1.7.1.src.tar.gz /doxywizard-icons.tar.xz /doxygen-1.9.1.src.tar.gz /doxygen-1.9.2.src.tar.gz +/doxygen-1.9.2-d882240f-git.src.tar.gz diff --git a/doxygen.spec b/doxygen.spec index 267ced4..90d8f4b 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -10,18 +10,18 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 1 Version: 1.9.2 -Release: 3%{?dist} +Release: 4%{?dist} # No version is specified. License: GPL+ Url: http://www.doxygen.nl -Source0: https://doxygen.nl/files/%{name}-%{version}.src.tar.gz +Source0: https://doxygen.nl/files/%{name}-%{version}-d882240f-git.src.tar.gz +#Source0: https://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches -Patch0: predictable-and-reproducible-filenames.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -295,6 +295,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Wed Oct 27 2021 Than Ngo - 1:1.9.2-4 +- update + * Thu Oct 07 2021 Tom Stellard - 1:1.9.2-3 - Rebuild for llvm-13.0.0 diff --git a/predictable-and-reproducible-filenames.patch b/predictable-and-reproducible-filenames.patch deleted file mode 100644 index 6a160d8..0000000 --- a/predictable-and-reproducible-filenames.patch +++ /dev/null @@ -1,112 +0,0 @@ -diff -ur doxygen-1.9.2.orig/src/dirdef.cpp doxygen-1.9.2/src/dirdef.cpp ---- doxygen-1.9.2.orig/src/dirdef.cpp 2021-08-17 19:10:43.000000000 +0200 -+++ doxygen-1.9.2/src/dirdef.cpp 2021-09-12 21:25:51.878853938 +0200 -@@ -47,7 +47,7 @@ - virtual bool isLinkableInProject() const; - virtual bool isLinkable() const; - virtual QCString displayName(bool=TRUE) const { return m_dispName; } -- virtual const QCString &shortName() const { return m_shortName; } -+ virtual const QCString shortName() const { return m_shortName; } - virtual void addSubDir(DirDef *subdir); - virtual const FileList &getFiles() const { return m_fileList; } - virtual void addFile(const FileDef *fd); -@@ -66,6 +66,7 @@ - virtual void setDiskName(const QCString &name) { m_diskName = name; } - virtual void sort(); - virtual void setParent(DirDef *parent); -+ virtual void setDirCount(int count); - virtual void setLevel(); - virtual void addUsesDependency(const DirDef *usedDir,const FileDef *srcFd, - const FileDef *dstFd,bool inherited); -@@ -92,7 +93,7 @@ - QCString m_shortName; - QCString m_diskName; - FileList m_fileList; // list of files in the group -- int m_dirCount; -+ int m_dirCount = -1; - int m_level; - DirDef *m_parent; - UsedDirLinkedMap m_usedDirs; -@@ -107,8 +108,6 @@ - //---------------------------------------------------------------------- - // method implementation - --static int g_dirCount=0; -- - DirDefImpl::DirDefImpl(const QCString &path) : DefinitionMixin(path,1,1,path) - { - bool fullPathNames = Config_getBool(FULL_PATH_NAMES); -@@ -132,7 +131,6 @@ - m_dispName = m_dispName.left(m_dispName.length()-1); - } - -- m_dirCount = g_dirCount++; - m_level=-1; - m_parent=0; - } -@@ -163,6 +161,11 @@ - m_parent=p; - } - -+void DirDefImpl::setDirCount(int count) -+{ -+ m_dirCount=count; -+} -+ - void DirDefImpl::addFile(const FileDef *fd) - { - m_fileList.push_back(fd); -@@ -993,7 +996,6 @@ - { - for (const auto &fd : *fn) - { -- //printf("buildDirectories %s\n",qPrint(fd->name())); - if (fd->getReference().isEmpty()) - { - DirDef *dir; -@@ -1038,7 +1040,24 @@ - std::sort(Doxygen::dirLinkedMap->begin(), - Doxygen::dirLinkedMap->end(), - [](const auto &d1,const auto &d2) -- { return qstricmp(d1->shortName(),d2->shortName()) < 0; }); -+ { -+ QCString s1 = d1->shortName(), s2 = d2->shortName(); -+ int i = qstricmp(s1,s2); -+ if (i==0) // if sort name are equal, sort on full path -+ { -+ QCString n1 = d1->name(), n2 = d2->name(); -+ int n = qstricmp(n1,n2); -+ return n < 0; -+ } -+ return i < 0; -+ }); -+ -+ // set the directory count identifier -+ int dirCount=0; -+ for (const auto &dir : *Doxygen::dirLinkedMap) -+ { -+ dir->setDirCount(dirCount++); -+ } - - computeCommonDirPrefix(); - } -diff -ur doxygen-1.9.2.orig/src/dirdef.h doxygen-1.9.2/src/dirdef.h ---- doxygen-1.9.2.orig/src/dirdef.h 2021-05-12 20:51:20.000000000 +0200 -+++ doxygen-1.9.2/src/dirdef.h 2021-09-12 21:25:42.394830066 +0200 -@@ -95,7 +95,7 @@ - virtual bool isLinkableInProject() const = 0; - virtual bool isLinkable() const = 0; - virtual QCString displayName(bool=TRUE) const = 0; -- virtual const QCString &shortName() const = 0; -+ virtual const QCString shortName() const = 0; - virtual void addSubDir(DirDef *subdir) = 0; - virtual const FileList &getFiles() const = 0; - virtual void addFile(const FileDef *fd) = 0; -@@ -115,6 +115,7 @@ - virtual void writeTagFile(TextStream &t) = 0; - - virtual void setDiskName(const QCString &name) = 0; -+ virtual void setDirCount(int count) = 0; - virtual void sort() = 0; - virtual void setParent(DirDef *parent) = 0; - virtual void setLevel() = 0; diff --git a/sources b/sources index 50eecc6..cce33e9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.2.src.tar.gz) = 2729d013b0363a919bbf6babd300389b76e95dd9dbb16ac0f57fc5a0392d3e2076ea4fba958a236311513e68e4aa056a77bd22c9c92b410a17eed095e5adccc0 +SHA512 (doxygen-1.9.2-d882240f-git.src.tar.gz) = 3e32f11b0dd0078f1edad2182a348514b3e68bb66eb256c1b89f297777afd60c7fd40c46d03d3de69acd3b87e04b6a9bfa2edc09d516f1f9bfb31b63093d134e From 195466f02eb02b595465d9176d419f28b57aee98 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 27 Oct 2021 12:28:12 +0200 Subject: [PATCH 069/117] revert 1.9.1, noarch package built differently on different architectures --- ...crash-when-parsing-config-file-part2.patch | 22 +++++++ ...1.9.1-crash-when-parsing-config-file.patch | 64 +++++++++++++++++++ doxygen-1.9.1-Coverity_issues.patch | 49 ++++++++++++++ doxygen-1.9.1-crash_in_docparser.patch | 12 ++++ doxygen.spec | 16 +++-- sources | 2 +- 6 files changed, 159 insertions(+), 6 deletions(-) create mode 100644 doxgen-1.9.1-crash-when-parsing-config-file-part2.patch create mode 100644 doxgen-1.9.1-crash-when-parsing-config-file.patch create mode 100644 doxygen-1.9.1-Coverity_issues.patch create mode 100644 doxygen-1.9.1-crash_in_docparser.patch diff --git a/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch b/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch new file mode 100644 index 0000000..38465ff --- /dev/null +++ b/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch @@ -0,0 +1,22 @@ +diff -up doxygen/src/configimpl.l.orig doxygen/src/configimpl.l +--- doxygen/src/configimpl.l.orig 2021-01-19 17:25:00.933789247 +0100 ++++ doxygen/src/configimpl.l 2021-01-19 17:26:09.704744240 +0100 +@@ -1175,8 +1175,7 @@ static void substEnvVarsInStrList(String + for (const auto &s : sl) + { + QCString result = s.c_str(); +- // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE. +- bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1); ++ bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1) || (result.find('"')!=-1); + // here we strip the quote again + substEnvVarsInString(result); + +@@ -1229,7 +1228,7 @@ static void substEnvVarsInStrList(String + } + if (p!=l) // add the leftover as a string + { +- results.push_back(result.right(l-p).data()); ++ results.push_back(result.right(l-p).str()); + } + } + else // just goto the next element in the list diff --git a/doxgen-1.9.1-crash-when-parsing-config-file.patch b/doxgen-1.9.1-crash-when-parsing-config-file.patch new file mode 100644 index 0000000..848750d --- /dev/null +++ b/doxgen-1.9.1-crash-when-parsing-config-file.patch @@ -0,0 +1,64 @@ +commit 3b15963316b59cd1af3468a43535d90343916ffb +Author: Dimitri van Heesch +Date: Mon Jan 18 19:59:16 2021 +0100 + + issue #8343: doxygen-1.9.1 crashes when parsing config file + +diff --git a/src/configimpl.l b/src/configimpl.l +index 7f73ec01..56a2e108 100644 +--- a/src/configimpl.l ++++ b/src/configimpl.l +@@ -1210,7 +1210,7 @@ static void substEnvVarsInStrList(StringVector &sl) + c=result.at(i); + if (c=='"') // end quote + { +- results.push_back(result.mid(p,i-p).data()); ++ results.push_back(result.mid(p,i-p).str()); + p=i+1; + break; + } +@@ -1222,7 +1222,7 @@ static void substEnvVarsInStrList(StringVector &sl) + } + else if (c==' ' || c=='\t') // separator + { +- if (i>p) results.push_back(result.mid(p,i-p).data()); ++ if (i>p) results.push_back(result.mid(p,i-p).str()); + p=i+1; + } + } +@@ -1234,7 +1234,7 @@ static void substEnvVarsInStrList(StringVector &sl) + } + else // just goto the next element in the list + { +- if (!result.isEmpty()) results.push_back(result.data()); ++ if (!result.isEmpty()) results.push_back(result.str()); + } + } + sl = results; +@@ -1409,7 +1409,7 @@ static void cleanUpPaths(StringVector &str) + QFileInfo fi(path.c_str()); + if (fi.exists() && fi.isDir()) + { +- path = fi.absFilePath().utf8().data(); ++ path = fi.absFilePath().utf8().str(); + if (path[path.size()-1]!='/') path+='/'; + } + } +@@ -1545,7 +1545,7 @@ void Config::checkAndCorrect() + QString p = QDir::currentDirPath(); + if (p.at(p.length()-1)!='/') + p.append('/'); +- stripFromPath.push_back(p.utf8().data()); ++ stripFromPath.push_back(p.utf8().str()); + } + else + { +@@ -1882,7 +1882,7 @@ void Config::checkAndCorrect() + if (inputSources.empty()) + { + // use current dir as the default +- inputSources.push_back(QDir::currentDirPath().utf8().data()); ++ inputSources.push_back(QDir::currentDirPath().utf8().str()); + } + else + { diff --git a/doxygen-1.9.1-Coverity_issues.patch b/doxygen-1.9.1-Coverity_issues.patch new file mode 100644 index 0000000..a1848e6 --- /dev/null +++ b/doxygen-1.9.1-Coverity_issues.patch @@ -0,0 +1,49 @@ +diff -up doxygen-1.9.1/src/context.cpp.me doxygen-1.9.1/src/context.cpp +--- doxygen-1.9.1/src/context.cpp.me 2021-02-10 10:56:44.575251899 +0100 ++++ doxygen-1.9.1/src/context.cpp 2021-02-10 10:57:54.522809720 +0100 +@@ -4062,11 +4062,11 @@ class MemberContext::Private : public De + s_inst.addProperty("nameWithContextFor", &Private::nameWithContextFor); + init=TRUE; + } +- if (md && !md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } ++ if (!md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } + + Cachable &cache = getCache(); + cache.propertyAttrs.reset(TemplateList::alloc()); +- if (md && md->isProperty()) ++ if (md->isProperty()) + { + if (md->isGettable()) cache.propertyAttrs->append("get"); + if (md->isPrivateGettable()) cache.propertyAttrs->append("private get"); +@@ -4076,7 +4076,7 @@ class MemberContext::Private : public De + if (md->isProtectedSettable()) cache.propertyAttrs->append("protected set"); + } + cache.eventAttrs.reset(TemplateList::alloc()); +- if (md && md->isEvent()) ++ if (md->isEvent()) + { + if (md->isAddable()) cache.eventAttrs->append("add"); + if (md->isRemovable()) cache.eventAttrs->append("remove"); +diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp +--- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:58:11.491500540 +0100 ++++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 11:00:35.905512597 +0100 +@@ -1524,7 +1524,7 @@ reparsetoken: + { + QCString scope; + doctokenizerYYsetStateSetScope(); +- doctokenizerYYlex(); ++ (void)doctokenizerYYlex(); + scope = g_token->name; + g_context = scope; + //printf("Found scope='%s'\n",scope.data()); +diff -up doxygen-1.9.1/src/dotgroupcollaboration.cpp.me doxygen-1.9.1/src/dotgroupcollaboration.cpp +--- doxygen-1.9.1/src/dotgroupcollaboration.cpp.me 2021-02-10 11:01:10.588530954 +0100 ++++ doxygen-1.9.1/src/dotgroupcollaboration.cpp 2021-02-10 11:02:54.216221350 +0100 +@@ -309,6 +309,7 @@ void DotGroupCollaboration::Edge::write( + { + if (first) first=FALSE; else t << "\\n"; + t << DotNode::convertLabel(link->label); ++ count++; + } + if (count==maxLabels) t << "\\n..."; + t << "\""; diff --git a/doxygen-1.9.1-crash_in_docparser.patch b/doxygen-1.9.1-crash_in_docparser.patch new file mode 100644 index 0000000..adcd144 --- /dev/null +++ b/doxygen-1.9.1-crash_in_docparser.patch @@ -0,0 +1,12 @@ +diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp +--- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:52:09.481086282 +0100 ++++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 10:55:32.418781686 +0100 +@@ -951,7 +951,7 @@ static void handlePendingStyleCommands(D + children.append(new DocStyleChange(parent,g_nodeStack.count(),sc->style(),sc->tagName(),FALSE)); + g_initialStyleStack.push(sc); + g_styleStack.pop(); +- sc = g_styleStack.top(); ++ sc = !g_styleStack.isEmpty() ? g_styleStack.top() : 0; + } + } + } diff --git a/doxygen.spec b/doxygen.spec index 90d8f4b..9dd445c 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -8,20 +8,23 @@ Summary: A documentation system for C/C++ Name: doxygen -Epoch: 1 -Version: 1.9.2 -Release: 4%{?dist} +Epoch: 2 +Version: 1.9.1 +Release: 12%{?dist} # No version is specified. License: GPL+ Url: http://www.doxygen.nl -Source0: https://doxygen.nl/files/%{name}-%{version}-d882240f-git.src.tar.gz -#Source0: https://doxygen.nl/files/%{name}-%{version}.src.tar.gz +Source0: https://doxygen.nl/files/%{name}-%{version}.src.tar.gz # this icon is part of kdesdk Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches +Patch1: doxgen-1.9.1-crash-when-parsing-config-file.patch +Patch2: doxgen-1.9.1-crash-when-parsing-config-file-part2.patch +Patch3: doxygen-1.9.1-Coverity_issues.patch +Patch4: doxygen-1.9.1-crash_in_docparser.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -295,6 +298,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Wed Oct 27 2021 Than Ngo - 2:1.9.1-12 +- revert 1.9.1, noarch package built differently on different architectures + * Wed Oct 27 2021 Than Ngo - 1:1.9.2-4 - update diff --git a/sources b/sources index cce33e9..33c38ae 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.2-d882240f-git.src.tar.gz) = 3e32f11b0dd0078f1edad2182a348514b3e68bb66eb256c1b89f297777afd60c7fd40c46d03d3de69acd3b87e04b6a9bfa2edc09d516f1f9bfb31b63093d134e +SHA512 (doxygen-1.9.1.src.tar.gz) = 637496c549a4a150cfaeb5d4913de512262145ecd7d455d7b7f3dd68f9416e47d931a6c1efd8a17d931e4baf4a8a9f2ed21124664003b123b6f89ca4abf263ed From fef22c40eab2650f8af032fc578e9a2b4296801e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 20 Jan 2022 00:59:37 +0000 Subject: [PATCH 070/117] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 9dd445c..fd087af 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -10,7 +10,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 Version: 1.9.1 -Release: 12%{?dist} +Release: 13%{?dist} # No version is specified. License: GPL+ @@ -298,6 +298,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Thu Jan 20 2022 Fedora Release Engineering - 2:1.9.1-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Wed Oct 27 2021 Than Ngo - 2:1.9.1-12 - revert 1.9.1, noarch package built differently on different architectures From afb87de38ecba7617ca15ae33a6af148ba3d1b1b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Thu, 17 Feb 2022 14:56:28 +0100 Subject: [PATCH 071/117] update to 1.9.4 snapshot --- .gitignore | 1 + ...crash-when-parsing-config-file-part2.patch | 22 ------- ...1.9.1-crash-when-parsing-config-file.patch | 64 ------------------- doxygen-1.9.1-Coverity_issues.patch | 49 -------------- doxygen-1.9.1-crash_in_docparser.patch | 12 ---- doxygen.spec | 26 +++++++- sources | 2 +- 7 files changed, 26 insertions(+), 150 deletions(-) delete mode 100644 doxgen-1.9.1-crash-when-parsing-config-file-part2.patch delete mode 100644 doxgen-1.9.1-crash-when-parsing-config-file.patch delete mode 100644 doxygen-1.9.1-Coverity_issues.patch delete mode 100644 doxygen-1.9.1-crash_in_docparser.patch diff --git a/.gitignore b/.gitignore index c02508c..74ddfbb 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.9.1.src.tar.gz /doxygen-1.9.2.src.tar.gz /doxygen-1.9.2-d882240f-git.src.tar.gz +/doxygen-e18f715eb55121a4219d00bc4d824cebf1fb504b.tar.gz diff --git a/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch b/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch deleted file mode 100644 index 38465ff..0000000 --- a/doxgen-1.9.1-crash-when-parsing-config-file-part2.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -up doxygen/src/configimpl.l.orig doxygen/src/configimpl.l ---- doxygen/src/configimpl.l.orig 2021-01-19 17:25:00.933789247 +0100 -+++ doxygen/src/configimpl.l 2021-01-19 17:26:09.704744240 +0100 -@@ -1175,8 +1175,7 @@ static void substEnvVarsInStrList(String - for (const auto &s : sl) - { - QCString result = s.c_str(); -- // an argument with quotes will have an extra space at the end, so wasQuoted will be TRUE. -- bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1); -+ bool wasQuoted = (result.find(' ')!=-1) || (result.find('\t')!=-1) || (result.find('"')!=-1); - // here we strip the quote again - substEnvVarsInString(result); - -@@ -1229,7 +1228,7 @@ static void substEnvVarsInStrList(String - } - if (p!=l) // add the leftover as a string - { -- results.push_back(result.right(l-p).data()); -+ results.push_back(result.right(l-p).str()); - } - } - else // just goto the next element in the list diff --git a/doxgen-1.9.1-crash-when-parsing-config-file.patch b/doxgen-1.9.1-crash-when-parsing-config-file.patch deleted file mode 100644 index 848750d..0000000 --- a/doxgen-1.9.1-crash-when-parsing-config-file.patch +++ /dev/null @@ -1,64 +0,0 @@ -commit 3b15963316b59cd1af3468a43535d90343916ffb -Author: Dimitri van Heesch -Date: Mon Jan 18 19:59:16 2021 +0100 - - issue #8343: doxygen-1.9.1 crashes when parsing config file - -diff --git a/src/configimpl.l b/src/configimpl.l -index 7f73ec01..56a2e108 100644 ---- a/src/configimpl.l -+++ b/src/configimpl.l -@@ -1210,7 +1210,7 @@ static void substEnvVarsInStrList(StringVector &sl) - c=result.at(i); - if (c=='"') // end quote - { -- results.push_back(result.mid(p,i-p).data()); -+ results.push_back(result.mid(p,i-p).str()); - p=i+1; - break; - } -@@ -1222,7 +1222,7 @@ static void substEnvVarsInStrList(StringVector &sl) - } - else if (c==' ' || c=='\t') // separator - { -- if (i>p) results.push_back(result.mid(p,i-p).data()); -+ if (i>p) results.push_back(result.mid(p,i-p).str()); - p=i+1; - } - } -@@ -1234,7 +1234,7 @@ static void substEnvVarsInStrList(StringVector &sl) - } - else // just goto the next element in the list - { -- if (!result.isEmpty()) results.push_back(result.data()); -+ if (!result.isEmpty()) results.push_back(result.str()); - } - } - sl = results; -@@ -1409,7 +1409,7 @@ static void cleanUpPaths(StringVector &str) - QFileInfo fi(path.c_str()); - if (fi.exists() && fi.isDir()) - { -- path = fi.absFilePath().utf8().data(); -+ path = fi.absFilePath().utf8().str(); - if (path[path.size()-1]!='/') path+='/'; - } - } -@@ -1545,7 +1545,7 @@ void Config::checkAndCorrect() - QString p = QDir::currentDirPath(); - if (p.at(p.length()-1)!='/') - p.append('/'); -- stripFromPath.push_back(p.utf8().data()); -+ stripFromPath.push_back(p.utf8().str()); - } - else - { -@@ -1882,7 +1882,7 @@ void Config::checkAndCorrect() - if (inputSources.empty()) - { - // use current dir as the default -- inputSources.push_back(QDir::currentDirPath().utf8().data()); -+ inputSources.push_back(QDir::currentDirPath().utf8().str()); - } - else - { diff --git a/doxygen-1.9.1-Coverity_issues.patch b/doxygen-1.9.1-Coverity_issues.patch deleted file mode 100644 index a1848e6..0000000 --- a/doxygen-1.9.1-Coverity_issues.patch +++ /dev/null @@ -1,49 +0,0 @@ -diff -up doxygen-1.9.1/src/context.cpp.me doxygen-1.9.1/src/context.cpp ---- doxygen-1.9.1/src/context.cpp.me 2021-02-10 10:56:44.575251899 +0100 -+++ doxygen-1.9.1/src/context.cpp 2021-02-10 10:57:54.522809720 +0100 -@@ -4062,11 +4062,11 @@ class MemberContext::Private : public De - s_inst.addProperty("nameWithContextFor", &Private::nameWithContextFor); - init=TRUE; - } -- if (md && !md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } -+ if (!md->cookie()) { md->setCookie(new MemberContext::Private::Cachable(md)); } - - Cachable &cache = getCache(); - cache.propertyAttrs.reset(TemplateList::alloc()); -- if (md && md->isProperty()) -+ if (md->isProperty()) - { - if (md->isGettable()) cache.propertyAttrs->append("get"); - if (md->isPrivateGettable()) cache.propertyAttrs->append("private get"); -@@ -4076,7 +4076,7 @@ class MemberContext::Private : public De - if (md->isProtectedSettable()) cache.propertyAttrs->append("protected set"); - } - cache.eventAttrs.reset(TemplateList::alloc()); -- if (md && md->isEvent()) -+ if (md->isEvent()) - { - if (md->isAddable()) cache.eventAttrs->append("add"); - if (md->isRemovable()) cache.eventAttrs->append("remove"); -diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp ---- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:58:11.491500540 +0100 -+++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 11:00:35.905512597 +0100 -@@ -1524,7 +1524,7 @@ reparsetoken: - { - QCString scope; - doctokenizerYYsetStateSetScope(); -- doctokenizerYYlex(); -+ (void)doctokenizerYYlex(); - scope = g_token->name; - g_context = scope; - //printf("Found scope='%s'\n",scope.data()); -diff -up doxygen-1.9.1/src/dotgroupcollaboration.cpp.me doxygen-1.9.1/src/dotgroupcollaboration.cpp ---- doxygen-1.9.1/src/dotgroupcollaboration.cpp.me 2021-02-10 11:01:10.588530954 +0100 -+++ doxygen-1.9.1/src/dotgroupcollaboration.cpp 2021-02-10 11:02:54.216221350 +0100 -@@ -309,6 +309,7 @@ void DotGroupCollaboration::Edge::write( - { - if (first) first=FALSE; else t << "\\n"; - t << DotNode::convertLabel(link->label); -+ count++; - } - if (count==maxLabels) t << "\\n..."; - t << "\""; diff --git a/doxygen-1.9.1-crash_in_docparser.patch b/doxygen-1.9.1-crash_in_docparser.patch deleted file mode 100644 index adcd144..0000000 --- a/doxygen-1.9.1-crash_in_docparser.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up doxygen-1.9.1/src/docparser.cpp.me doxygen-1.9.1/src/docparser.cpp ---- doxygen-1.9.1/src/docparser.cpp.me 2021-02-10 10:52:09.481086282 +0100 -+++ doxygen-1.9.1/src/docparser.cpp 2021-02-10 10:55:32.418781686 +0100 -@@ -951,7 +951,7 @@ static void handlePendingStyleCommands(D - children.append(new DocStyleChange(parent,g_nodeStack.count(),sc->style(),sc->tagName(),FALSE)); - g_initialStyleStack.push(sc); - g_styleStack.pop(); -- sc = g_styleStack.top(); -+ sc = !g_styleStack.isEmpty() ? g_styleStack.top() : 0; - } - } - } diff --git a/doxygen.spec b/doxygen.spec index fd087af..e7db7ce 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -6,16 +6,31 @@ %global clang_support OFF %endif +%global stable 0 + +%if 0%{?stable} +%global irelease 1 +%else +%global commit e18f715eb55121a4219d00bc4d824cebf1fb504b +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global date 20220217 +%global irelease 0.%{date}git%{shortcommit} +%endif + Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 -Version: 1.9.1 -Release: 13%{?dist} +Version: 1.9.4 +Release: %{irelease}%{?dist} # No version is specified. License: GPL+ Url: http://www.doxygen.nl +%if 0%{?stable} Source0: https://doxygen.nl/files/%{name}-%{version}.src.tar.gz +%else +Source0: https://github.com/%{name}/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz +%endif # this icon is part of kdesdk Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico @@ -202,7 +217,11 @@ Requires: texlive-epstopdf %prep +%if 0%{?stable} %autosetup -p1 -a2 +%else +%autosetup -n %{name}-%{commit} -a2 +%endif # convert into utf-8 iconv --from=ISO-8859-1 --to=UTF-8 LANGUAGE.HOWTO > LANGUAGE.HOWTO.new @@ -298,6 +317,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Thu Feb 17 2022 Than Ngo - 2:1.9.4-0.20220217gite18f715e +- update to 1.9.4 snapshot + * Thu Jan 20 2022 Fedora Release Engineering - 2:1.9.1-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild diff --git a/sources b/sources index 33c38ae..c0431d9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.1.src.tar.gz) = 637496c549a4a150cfaeb5d4913de512262145ecd7d455d7b7f3dd68f9416e47d931a6c1efd8a17d931e4baf4a8a9f2ed21124664003b123b6f89ca4abf263ed +SHA512 (doxygen-e18f715eb55121a4219d00bc4d824cebf1fb504b.tar.gz) = 312b9c77444c9b81f5514f83bde113f22a51f83d76b7c7b426ed18a461c929d088cb1717c779c5c08cc0939b50a2f00dfe61754ee1a4dee3a69f70aedcef2043 From da0ebbca9fe9fd21992e068e004fa90c0fb82f22 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Thu, 17 Feb 2022 17:28:40 +0100 Subject: [PATCH 072/117] dropped obsoletes patches --- doxygen.spec | 4 ---- 1 file changed, 4 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index e7db7ce..65228e3 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -36,10 +36,6 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches -Patch1: doxgen-1.9.1-crash-when-parsing-config-file.patch -Patch2: doxgen-1.9.1-crash-when-parsing-config-file-part2.patch -Patch3: doxygen-1.9.1-Coverity_issues.patch -Patch4: doxygen-1.9.1-crash_in_docparser.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc From 225d187031ba30ceb601463638b52cff7a179d29 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 6 May 2022 12:07:09 +0200 Subject: [PATCH 073/117] 1.9.4 release --- .gitignore | 1 + doxygen-1.9.4-gcc12.1.patch | 18 ++++++++++++++++++ doxygen.spec | 10 +++++++--- sources | 2 +- 4 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 doxygen-1.9.4-gcc12.1.patch diff --git a/.gitignore b/.gitignore index 74ddfbb..2363cb3 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.9.2.src.tar.gz /doxygen-1.9.2-d882240f-git.src.tar.gz /doxygen-e18f715eb55121a4219d00bc4d824cebf1fb504b.tar.gz +/doxygen-1.9.4.src.tar.gz diff --git a/doxygen-1.9.4-gcc12.1.patch b/doxygen-1.9.4-gcc12.1.patch new file mode 100644 index 0000000..e2ca6b8 --- /dev/null +++ b/doxygen-1.9.4-gcc12.1.patch @@ -0,0 +1,18 @@ +commit 5198966c8d5fec89116d025c74934ac03ea511fa +Author: Dimitri van Heesch +Date: Fri May 6 09:55:16 2022 +0200 + + issue #9312: Build: cache.h:53:14: error: 'exchange' is not a member of 'std' + +diff --git a/src/cache.h b/src/cache.h +index 0ff3092e..e218eb27 100644 +--- a/src/cache.h ++++ b/src/cache.h +@@ -19,6 +19,7 @@ + #include + #include + #include ++#include + #include + + /*! Fixed size cache for value type V using keys of type K. diff --git a/doxygen.spec b/doxygen.spec index 65228e3..52b274f 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -6,7 +6,7 @@ %global clang_support OFF %endif -%global stable 0 +%global stable 1 %if 0%{?stable} %global irelease 1 @@ -25,9 +25,9 @@ Release: %{irelease}%{?dist} # No version is specified. License: GPL+ -Url: http://www.doxygen.nl +Url: https://github.com/doxygen %if 0%{?stable} -Source0: https://doxygen.nl/files/%{name}-%{version}.src.tar.gz +Source0: https://sourceforge.net/projects/doxygen/files/rel-%{version}/%{name}-%{version}.src.tar.gz %else Source0: https://github.com/%{name}/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz %endif @@ -36,6 +36,7 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches +Patch0: doxygen-1.9.4-gcc12.1.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -313,6 +314,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri May 06 2022 Than Ngo - 2:1.9.4-1 +- 1.9.4 + * Thu Feb 17 2022 Than Ngo - 2:1.9.4-0.20220217gite18f715e - update to 1.9.4 snapshot diff --git a/sources b/sources index c0431d9..affa651 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-e18f715eb55121a4219d00bc4d824cebf1fb504b.tar.gz) = 312b9c77444c9b81f5514f83bde113f22a51f83d76b7c7b426ed18a461c929d088cb1717c779c5c08cc0939b50a2f00dfe61754ee1a4dee3a69f70aedcef2043 +SHA512 (doxygen-1.9.4.src.tar.gz) = 613f17800ebd05b66b1954af4d51282a1779678e7ade6c43046fc940742a697ebdf3af8e94ac70a3422bc96def663e70eaea8c4349d192e2fe5e516c57cc345a From cd11c2f98d2b783366da0bc7711b0844e635e5eb Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 21 Jul 2022 00:52:32 +0000 Subject: [PATCH 074/117] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 52b274f..781c4b8 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -21,7 +21,7 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 Version: 1.9.4 -Release: %{irelease}%{?dist} +Release: %{irelease}%{?dist}.1 # No version is specified. License: GPL+ @@ -314,6 +314,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Thu Jul 21 2022 Fedora Release Engineering - 2:1.9.4-1.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Fri May 06 2022 Than Ngo - 2:1.9.4-1 - 1.9.4 From eaf38ac3597016fc5ba1c4c5886bb7c73af41bc9 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Thu, 4 Aug 2022 11:41:14 +0200 Subject: [PATCH 075/117] Fixed #2113876, Failed to build LaTex output --- ...typo_in_generated_Makefile_for_LaTex.patch | 19 +++++++++++++++++++ doxygen.spec | 16 +++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch diff --git a/doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch b/doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch new file mode 100644 index 0000000..99fde06 --- /dev/null +++ b/doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch @@ -0,0 +1,19 @@ +commit 6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4 +Author: František Dvořák +Date: Mon Jul 25 21:40:19 2022 +0200 + + Fix typo in generated Makefile for LaTex + +diff --git a/src/latexgen.cpp b/src/latexgen.cpp +index d3ad3bd3..c5f436ce 100644 +--- a/src/latexgen.cpp ++++ b/src/latexgen.cpp +@@ -337,7 +337,7 @@ static void writeLatexMakefile() + } + t << "\techo \"Rerunning latex....\"\n" + << "\t$(LATEX_CMD) $(MANUAL_FILE).tex\n" +- << "\tlatex_count=%(LATEX_COUNT) ; \\\n" ++ << "\tlatex_count=$(LATEX_COUNT) ; \\\n" + << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" + << "\t do \\\n" + << "\t echo \"Rerunning latex....\" ;\\\n" diff --git a/doxygen.spec b/doxygen.spec index 781c4b8..004aa17 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -9,7 +9,7 @@ %global stable 1 %if 0%{?stable} -%global irelease 1 +%global irelease 2 %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -21,8 +21,14 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 Version: 1.9.4 -Release: %{irelease}%{?dist}.1 - +%if 0%{?stable} +Release: 2%{?dist} +%else +%global commit e18f715eb55121a4219d00bc4d824cebf1fb504b +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global date 20220217 +Release: 0.%{date}git%{shortcommit} +%endif # No version is specified. License: GPL+ Url: https://github.com/doxygen @@ -37,6 +43,7 @@ Source1: doxywizard.desktop Source2: doxywizard-icons.tar.xz # upstream patches Patch0: doxygen-1.9.4-gcc12.1.patch +Patch1: doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -314,6 +321,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Thu Aug 04 2022 Than Ngo - 2:1.9.4-2 +- Fixed #2113876, Failed to build LaTex output + * Thu Jul 21 2022 Fedora Release Engineering - 2:1.9.4-1.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From 8868712c8ff865c7b37a3e25aa7bc467b9f6de86 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 9 Sep 2022 11:01:32 +0200 Subject: [PATCH 076/117] update to 1.9.5 --- .gitignore | 1 + doxygen-1.9.4-gcc12.1.patch | 18 ------------------ ...typo_in_generated_Makefile_for_LaTex.patch | 19 ------------------- doxygen.spec | 9 +++++---- sources | 2 +- 5 files changed, 7 insertions(+), 42 deletions(-) delete mode 100644 doxygen-1.9.4-gcc12.1.patch delete mode 100644 doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch diff --git a/.gitignore b/.gitignore index 2363cb3..a966a88 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.9.2-d882240f-git.src.tar.gz /doxygen-e18f715eb55121a4219d00bc4d824cebf1fb504b.tar.gz /doxygen-1.9.4.src.tar.gz +/doxygen-1.9.5.src.tar.gz diff --git a/doxygen-1.9.4-gcc12.1.patch b/doxygen-1.9.4-gcc12.1.patch deleted file mode 100644 index e2ca6b8..0000000 --- a/doxygen-1.9.4-gcc12.1.patch +++ /dev/null @@ -1,18 +0,0 @@ -commit 5198966c8d5fec89116d025c74934ac03ea511fa -Author: Dimitri van Heesch -Date: Fri May 6 09:55:16 2022 +0200 - - issue #9312: Build: cache.h:53:14: error: 'exchange' is not a member of 'std' - -diff --git a/src/cache.h b/src/cache.h -index 0ff3092e..e218eb27 100644 ---- a/src/cache.h -+++ b/src/cache.h -@@ -19,6 +19,7 @@ - #include - #include - #include -+#include - #include - - /*! Fixed size cache for value type V using keys of type K. diff --git a/doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch b/doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch deleted file mode 100644 index 99fde06..0000000 --- a/doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch +++ /dev/null @@ -1,19 +0,0 @@ -commit 6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4 -Author: František Dvořák -Date: Mon Jul 25 21:40:19 2022 +0200 - - Fix typo in generated Makefile for LaTex - -diff --git a/src/latexgen.cpp b/src/latexgen.cpp -index d3ad3bd3..c5f436ce 100644 ---- a/src/latexgen.cpp -+++ b/src/latexgen.cpp -@@ -337,7 +337,7 @@ static void writeLatexMakefile() - } - t << "\techo \"Rerunning latex....\"\n" - << "\t$(LATEX_CMD) $(MANUAL_FILE).tex\n" -- << "\tlatex_count=%(LATEX_COUNT) ; \\\n" -+ << "\tlatex_count=$(LATEX_COUNT) ; \\\n" - << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" - << "\t do \\\n" - << "\t echo \"Rerunning latex....\" ;\\\n" diff --git a/doxygen.spec b/doxygen.spec index 004aa17..6eddba1 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -20,9 +20,9 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 -Version: 1.9.4 +Version: 1.9.5 %if 0%{?stable} -Release: 2%{?dist} +Release: 1%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -42,8 +42,6 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches -Patch0: doxygen-1.9.4-gcc12.1.patch -Patch1: doxygen-6f6b3be36c51a0e7436538d8b99a7e3350a6c3a4-typo_in_generated_Makefile_for_LaTex.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -321,6 +319,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri Sep 09 2022 Than Ngo - 2:1.9.5-1 +- 1.9.5 + * Thu Aug 04 2022 Than Ngo - 2:1.9.4-2 - Fixed #2113876, Failed to build LaTex output diff --git a/sources b/sources index affa651..b94770f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.4.src.tar.gz) = 613f17800ebd05b66b1954af4d51282a1779678e7ade6c43046fc940742a697ebdf3af8e94ac70a3422bc96def663e70eaea8c4349d192e2fe5e516c57cc345a +SHA512 (doxygen-1.9.5.src.tar.gz) = 4ad4c1ecd4a12220442f354b90aa56f80e78fcaf288d5e36da421437d59811ed3d429ee13717692886a55b9628ae565d40ce13c51792ccc8bba15b1e018cb651 From 9067a3fa844dca677dbba40d898cb06efaf35aec Mon Sep 17 00:00:00 2001 From: Pete Walter Date: Sun, 18 Sep 2022 15:47:06 +0100 Subject: [PATCH 077/117] Rebuild for llvm 15 --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index 6eddba1..50edd22 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -22,7 +22,7 @@ Name: doxygen Epoch: 2 Version: 1.9.5 %if 0%{?stable} -Release: 1%{?dist} +Release: 2%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -319,6 +319,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Sun Sep 18 2022 Pete Walter - 2:1.9.5-2 +- Rebuild for llvm 15 + * Fri Sep 09 2022 Than Ngo - 2:1.9.5-1 - 1.9.5 From f1d9aad3d51d506f79a89a9c5371a8150fa83956 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 3 Jan 2023 14:54:41 +0100 Subject: [PATCH 078/117] fixed bz#2156564, update to 1.9.6 --- .gitignore | 1 + doxygen.spec | 7 +++++-- sources | 3 +-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index a966a88..3da1189 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-e18f715eb55121a4219d00bc4d824cebf1fb504b.tar.gz /doxygen-1.9.4.src.tar.gz /doxygen-1.9.5.src.tar.gz +/doxygen-1.9.6.src.tar.gz diff --git a/doxygen.spec b/doxygen.spec index 50edd22..10bd5be 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -20,9 +20,9 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 -Version: 1.9.5 +Version: 1.9.6 %if 0%{?stable} -Release: 2%{?dist} +Release: 1%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -319,6 +319,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Tue Jan 03 2023 Than Ngo - 2:1.9.6-1 +- fixed bz#2156564, update to 1.9.6 + * Sun Sep 18 2022 Pete Walter - 2:1.9.5-2 - Rebuild for llvm 15 diff --git a/sources b/sources index b94770f..a8ffdb3 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ -SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.5.src.tar.gz) = 4ad4c1ecd4a12220442f354b90aa56f80e78fcaf288d5e36da421437d59811ed3d429ee13717692886a55b9628ae565d40ce13c51792ccc8bba15b1e018cb651 +SHA512 (doxygen-1.9.6.src.tar.gz) = f8b0d19d33fa8a5bb92b38f1c775bd3cde7f024566cf93ed61ab0cafe86643971c04b7f2492364767b3e6ce5b518bad5e0321c82f0a72875ccf936ea7d3595b2 From 3f948a6a3b7d42a00763ca79d4206a8a2f3a5386 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 3 Jan 2023 15:05:18 +0100 Subject: [PATCH 079/117] added doxywizard-icons.tar.xz back --- sources | 1 + 1 file changed, 1 insertion(+) diff --git a/sources b/sources index a8ffdb3..b45c18d 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ +SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad SHA512 (doxygen-1.9.6.src.tar.gz) = f8b0d19d33fa8a5bb92b38f1c775bd3cde7f024566cf93ed61ab0cafe86643971c04b7f2492364767b3e6ce5b518bad5e0321c82f0a72875ccf936ea7d3595b2 From f977bc64794c671a5e87a4fb90a4e9d9cfe0ba11 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 18 Jan 2023 09:51:23 +0100 Subject: [PATCH 080/117] fixed bz#2161515 - doxygen FTBFS if _module_build is 1 --- doxygen.spec | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index 10bd5be..37c7653 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -22,7 +22,7 @@ Name: doxygen Epoch: 2 Version: 1.9.6 %if 0%{?stable} -Release: 1%{?dist} +Release: 2%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -45,7 +45,9 @@ Source2: doxywizard-icons.tar.xz BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc -BuildRequires: perl-interpreter +BuildRequires: perl-interpreter, perl-open +BuildRequires: texlive-bibtex + %if ! 0%{?_module_build} BuildRequires: tex(dvips) BuildRequires: tex(latex) @@ -109,16 +111,14 @@ BuildRequires: ghostscript BuildRequires: gettext BuildRequires: desktop-file-utils BuildRequires: graphviz -%else -BuildRequires: zlib-devel %endif +BuildRequires: zlib-devel BuildRequires: flex BuildRequires: bison BuildRequires: cmake BuildRequires: git %if "x%{?xapian_core_support}" == "xON" BuildRequires: xapian-core-devel -BuildRequires: zlib-devel %endif %if "x%{?clang_support}" == "xON" BuildRequires: llvm-devel @@ -319,6 +319,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Wed Jan 18 2023 Than Ngo - 2:1.9.6-2 +- fixed bz#2161515 - doxygen FTBFS if _module_build is 1 + * Tue Jan 03 2023 Than Ngo - 2:1.9.6-1 - fixed bz#2156564, update to 1.9.6 From 3f85f0ae60e6f5afc67ff8ae770596141b42b97f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 01:44:56 +0000 Subject: [PATCH 081/117] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- doxygen.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index 37c7653..c54faf1 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -22,12 +22,12 @@ Name: doxygen Epoch: 2 Version: 1.9.6 %if 0%{?stable} -Release: 2%{?dist} +Release: 3%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global date 20220217 -Release: 0.%{date}git%{shortcommit} +Release: 0.%{date}git%{shortcommit}.1 %endif # No version is specified. License: GPL+ @@ -319,6 +319,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 2:1.9.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Wed Jan 18 2023 Than Ngo - 2:1.9.6-2 - fixed bz#2161515 - doxygen FTBFS if _module_build is 1 From c3bee7741655426c9f9700afcdb839917a6d388b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 20 Jan 2023 09:30:29 +0100 Subject: [PATCH 082/117] fixed bz#2162170, add Require on texlive-wasy --- doxygen.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index c54faf1..f2703b1 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -22,7 +22,7 @@ Name: doxygen Epoch: 2 Version: 1.9.6 %if 0%{?stable} -Release: 3%{?dist} +Release: 4%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -149,6 +149,7 @@ Summary: Support for producing latex/pdf output from doxygen Requires: %{name} = %{epoch}:%{version}-%{release} Requires: tex(latex) Requires: tex(dvips) +Requires: texlive-wasy %if 0%{?fedora} > 17 || 0%{?rhel} > 6 # From doc/manual.sty Requires: tex(helvet.sty) @@ -319,6 +320,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri Jan 20 2023 Than Ngo - 2:1.9.6-4 +- fixed bz#2162170, add Require on texlive-wasy + * Thu Jan 19 2023 Fedora Release Engineering - 2:1.9.6-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 6f8058dfe71cae0141497c059404d88198afcd9b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Wed, 25 Jan 2023 10:17:17 +0100 Subject: [PATCH 083/117] rebuilt against ghostscript-10 --- doxygen.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doxygen.spec b/doxygen.spec index f2703b1..ae58d21 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -22,7 +22,7 @@ Name: doxygen Epoch: 2 Version: 1.9.6 %if 0%{?stable} -Release: 4%{?dist} +Release: 5%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -320,6 +320,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Wed Jan 25 2023 Than Ngo - 2:1.9.6-5 +- rebuilt against new ghostscript-10 + * Fri Jan 20 2023 Than Ngo - 2:1.9.6-4 - fixed bz#2162170, add Require on texlive-wasy From 4c2570a2887983b774404207d6f3b1a2fb25e889 Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 17 Feb 2023 09:31:53 +0100 Subject: [PATCH 084/117] migrated to SPDX license --- doxygen.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doxygen.spec b/doxygen.spec index ae58d21..c101895 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -22,7 +22,7 @@ Name: doxygen Epoch: 2 Version: 1.9.6 %if 0%{?stable} -Release: 5%{?dist} +Release: 6%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -30,7 +30,7 @@ Release: 5%{?dist} Release: 0.%{date}git%{shortcommit}.1 %endif # No version is specified. -License: GPL+ +License: GPL-1.0-or-later Url: https://github.com/doxygen %if 0%{?stable} Source0: https://sourceforge.net/projects/doxygen/files/rel-%{version}/%{name}-%{version}.src.tar.gz @@ -320,6 +320,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri Feb 17 2023 Than Ngo - 2:1.9.6-6 +- migrated to SPDX license + * Wed Jan 25 2023 Than Ngo - 2:1.9.6-5 - rebuilt against new ghostscript-10 From cc385e03b004a76ab9042282be2f8f77fa040c6a Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 10 Mar 2023 16:59:51 +0100 Subject: [PATCH 085/117] replace obsolescent egrep with grep -E --- doxygen-obsolete-egrep.patch | 40 ++++++++++++++++++++++++++++++++++++ doxygen.spec | 6 +++++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 doxygen-obsolete-egrep.patch diff --git a/doxygen-obsolete-egrep.patch b/doxygen-obsolete-egrep.patch new file mode 100644 index 0000000..9a859b5 --- /dev/null +++ b/doxygen-obsolete-egrep.patch @@ -0,0 +1,40 @@ +--- doxygen-1.9.6.orig/templates/latex/latexmakefile.tpl 2023-03-09 10:29:08.772377871 +0100 ++++ doxygen-1.9.6/templates/latex/latexmakefile.tpl 2023-03-09 10:29:23.754555476 +0100 +@@ -9,7 +9,7 @@ + {# TODO: generateBib #} + pdflatex refman + latex_count=8 ; \ +- while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ ++ while grep -E -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman ;\ +@@ -43,7 +43,7 @@ + echo "Rerunning latex...." + {{ config.LATEX_CMD_NAME }} refman.tex + latex_count=8 ; \ +- while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ ++ while grep -E -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + {{ config.LATEX_CMD_NAME }} refman.tex ;\ +--- doxygen-1.9.6.orig/src/latexgen.cpp 2023-03-09 11:10:52.092688592 +0100 ++++ doxygen-1.9.6/src/latexgen.cpp 2023-03-09 11:11:07.666867516 +0100 +@@ -346,7 +346,7 @@ + t << "\techo \"Rerunning latex....\"\n" + << "\t$(LATEX_CMD) $(MANUAL_FILE).tex\n" + << "\tlatex_count=$(LATEX_COUNT) ; \\\n" +- << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" ++ << "\twhile grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" + << "\t do \\\n" + << "\t echo \"Rerunning latex....\" ;\\\n" + << "\t $(LATEX_CMD) $(MANUAL_FILE).tex ; \\\n" +@@ -374,7 +374,7 @@ + } + t << "\t$(LATEX_CMD) $(MANUAL_FILE)\n" + << "\tlatex_count=$(LATEX_COUNT) ; \\\n" +- << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" ++ << "\twhile grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" + << "\t do \\\n" + << "\t echo \"Rerunning latex....\" ;\\\n" + << "\t $(LATEX_CMD) $(MANUAL_FILE) ;\\\n" diff --git a/doxygen.spec b/doxygen.spec index c101895..6009311 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -22,7 +22,7 @@ Name: doxygen Epoch: 2 Version: 1.9.6 %if 0%{?stable} -Release: 6%{?dist} +Release: 7%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -42,6 +42,7 @@ Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz # upstream patches +Patch0: doxygen-obsolete-egrep.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -320,6 +321,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri Mar 10 2023 Than Ngo - 2:1.9.6-7 +- replace obsolescent egrep with grep -E + * Fri Feb 17 2023 Than Ngo - 2:1.9.6-6 - migrated to SPDX license From 1c010746353849a0e6794685dab63a494992609b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 19 May 2023 15:55:46 +0200 Subject: [PATCH 086/117] fix #2208417, rebase to 1.9.7 --- doxygen-obsolete-egrep.patch | 40 ------------------------------------ doxygen.spec | 11 +++++++--- 2 files changed, 8 insertions(+), 43 deletions(-) delete mode 100644 doxygen-obsolete-egrep.patch diff --git a/doxygen-obsolete-egrep.patch b/doxygen-obsolete-egrep.patch deleted file mode 100644 index 9a859b5..0000000 --- a/doxygen-obsolete-egrep.patch +++ /dev/null @@ -1,40 +0,0 @@ ---- doxygen-1.9.6.orig/templates/latex/latexmakefile.tpl 2023-03-09 10:29:08.772377871 +0100 -+++ doxygen-1.9.6/templates/latex/latexmakefile.tpl 2023-03-09 10:29:23.754555476 +0100 -@@ -9,7 +9,7 @@ - {# TODO: generateBib #} - pdflatex refman - latex_count=8 ; \ -- while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ -+ while grep -E -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - pdflatex refman ;\ -@@ -43,7 +43,7 @@ - echo "Rerunning latex...." - {{ config.LATEX_CMD_NAME }} refman.tex - latex_count=8 ; \ -- while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ -+ while grep -E -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ - do \ - echo "Rerunning latex...." ;\ - {{ config.LATEX_CMD_NAME }} refman.tex ;\ ---- doxygen-1.9.6.orig/src/latexgen.cpp 2023-03-09 11:10:52.092688592 +0100 -+++ doxygen-1.9.6/src/latexgen.cpp 2023-03-09 11:11:07.666867516 +0100 -@@ -346,7 +346,7 @@ - t << "\techo \"Rerunning latex....\"\n" - << "\t$(LATEX_CMD) $(MANUAL_FILE).tex\n" - << "\tlatex_count=$(LATEX_COUNT) ; \\\n" -- << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" -+ << "\twhile grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" - << "\t do \\\n" - << "\t echo \"Rerunning latex....\" ;\\\n" - << "\t $(LATEX_CMD) $(MANUAL_FILE).tex ; \\\n" -@@ -374,7 +374,7 @@ - } - t << "\t$(LATEX_CMD) $(MANUAL_FILE)\n" - << "\tlatex_count=$(LATEX_COUNT) ; \\\n" -- << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" -+ << "\twhile grep -E -s 'Rerun (LaTeX|to get cross-references right|to get bibliographical references right)' $(MANUAL_FILE).log && [ $$latex_count -gt 0 ] ;\\\n" - << "\t do \\\n" - << "\t echo \"Rerunning latex....\" ;\\\n" - << "\t $(LATEX_CMD) $(MANUAL_FILE) ;\\\n" diff --git a/doxygen.spec b/doxygen.spec index 6009311..08b338c 100644 --- a/doxygen.spec +++ b/doxygen.spec @@ -20,9 +20,9 @@ Summary: A documentation system for C/C++ Name: doxygen Epoch: 2 -Version: 1.9.6 +Version: 1.9.7 %if 0%{?stable} -Release: 7%{?dist} +Release: 1%{?dist} %else %global commit e18f715eb55121a4219d00bc4d824cebf1fb504b %global shortcommit %(c=%{commit}; echo ${c:0:7}) @@ -41,8 +41,8 @@ Source0: https://github.com/%{name}/%{name}/archive/%{commit}/%{name}-%{commit}. Source1: doxywizard.desktop # these icons are part of doxygen and converted from doxywizard.ico Source2: doxywizard-icons.tar.xz + # upstream patches -Patch0: doxygen-obsolete-egrep.patch BuildRequires: %{_bindir}/python3 BuildRequires: gcc-c++ gcc @@ -232,6 +232,8 @@ iconv --from=ISO-8859-1 --to=UTF-8 LANGUAGE.HOWTO > LANGUAGE.HOWTO.new touch -r LANGUAGE.HOWTO LANGUAGE.HOWTO.new mv LANGUAGE.HOWTO.new LANGUAGE.HOWTO +# disable unicode test temporary +rm -rf testing/061* %build %if ! 0%{?_module_build} @@ -321,6 +323,9 @@ desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1} %endif %changelog +* Fri May 19 2023 Than Ngo - 2:1.9.7-1 +- fix #2208417, rebase to 1.9.7 + * Fri Mar 10 2023 Than Ngo - 2:1.9.6-7 - replace obsolescent egrep with grep -E From 7382a0f9f761d8171600e7e2ded232f2bf78761b Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Fri, 19 May 2023 16:04:56 +0200 Subject: [PATCH 087/117] upload source --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3da1189..0d9d63e 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ doxygen-1.7.1.src.tar.gz /doxygen-1.9.4.src.tar.gz /doxygen-1.9.5.src.tar.gz /doxygen-1.9.6.src.tar.gz +/doxygen-1.9.7.src.tar.gz diff --git a/sources b/sources index b45c18d..590824a 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ SHA512 (doxywizard-icons.tar.xz) = 865a86d7535e64ad92e36ba1f901d51cd6b603e762e5c68761a45bc1f965a36e6a6c8d29468ecb2ec799f0add2347537723832aff6660c76af453f80a0a370ad -SHA512 (doxygen-1.9.6.src.tar.gz) = f8b0d19d33fa8a5bb92b38f1c775bd3cde7f024566cf93ed61ab0cafe86643971c04b7f2492364767b3e6ce5b518bad5e0321c82f0a72875ccf936ea7d3595b2 +SHA512 (doxygen-1.9.7.src.tar.gz) = 618ff58aa6f0a2eb89f95b570995ea3ebbcda64f502cabcecd9be2967abffb56d0d6747de0c06df422705919757e6af9c6e5a56ca603b1ddf7a09a7ee79b1803 From 2e8846fbc2b63d5a1c6fb01dbe118a135795f6eb Mon Sep 17 00:00:00 2001 From: Than Ngo Date: Tue, 30 May 2023 13:58:04 +0200 Subject: [PATCH 088/117] - disable build_wizard for eln - fixed broken unicode test --- doxygen-1.9.7-unicode-test.ptch | 34 ++++++++++++++++ doxygen.spec | 69 ++++++++++++--------------------- 2 files changed, 58 insertions(+), 45 deletions(-) create mode 100644 doxygen-1.9.7-unicode-test.ptch diff --git a/doxygen-1.9.7-unicode-test.ptch b/doxygen-1.9.7-unicode-test.ptch new file mode 100644 index 0000000..1d390b8 --- /dev/null +++ b/doxygen-1.9.7-unicode-test.ptch @@ -0,0 +1,34 @@ +diff -Nur doxygen-1.9.7-bug/doc_internal/releases.md doxygen-1.9.7/doc_internal/releases.md +--- doxygen-1.9.7-bug/doc_internal/releases.md 2023-05-18 20:19:49.000000000 +0200 ++++ doxygen-1.9.7/doc_internal/releases.md 2023-05-18 21:16:40.000000000 +0200 +@@ -2,7 +2,7 @@ + + The following table gives an overview of the doxygen releases with together with the release dates. +