@@ -271,3 +271,56 @@ TEST_F(subcommand_test, recursive_subcommands)
271271
272272 EXPECT_EQ (get_parse_cout_on_exit (sub_sub_parser), expected_sub_sub_full_help);
273273}
274+
275+ TEST_F (subcommand_test, copy_meta_data)
276+ {
277+ sharg::parser_meta_data info{.version = " 1.0.0" ,
278+ .author = " SeqAn-Team" ,
279+ .email = " mail@example.org" ,
280+ .date = " 1970-01-01" ,
281+ .url = " example.org" ,
282+ .short_copyright = " BSD 3-Clause" ,
283+ .long_copyright = " BSD 3-Clause Text" ,
284+ .citation = " Cite me!" };
285+
286+ auto parser = get_subcommand_parser ({" index" , " --help" }, {" index" });
287+ info.app_name = parser.info .app_name ;
288+ parser.info = info;
289+ EXPECT_EQ (parser.info .app_name , " test_parser" );
290+ ASSERT_EQ (parser.info , info); // Sanity check for test setup
291+ EXPECT_NO_THROW (parser.parse ());
292+
293+ auto & sub_parser = parser.get_sub_parser ();
294+ EXPECT_EQ (sub_parser.info .app_name , " test_parser-index" );
295+ info.app_name = sub_parser.info .app_name ;
296+ EXPECT_EQ (sub_parser.info , info);
297+
298+ std::string expected_sub_full_help = " test_parser-index\n "
299+ " =================\n "
300+ " \n "
301+ " OPTIONS\n "
302+ " \n "
303+ + basic_options_str
304+ + " \n "
305+ " VERSION\n "
306+ " Last update: 1970-01-01\n "
307+ " test_parser-index version: 1.0.0\n "
308+ " Sharg version: "
309+ + sharg::sharg_version_cstring
310+ + " \n "
311+ " \n "
312+ " URL\n "
313+ " example.org\n "
314+ " \n "
315+ " LEGAL\n "
316+ " test_parser-index Copyright: BSD 3-Clause\n "
317+ " Author: SeqAn-Team\n "
318+ " Contact: mail@example.org\n "
319+ " SeqAn Copyright: 2006-2025 Knut Reinert, FU-Berlin; released under the\n "
320+ " 3-clause BSDL.\n "
321+ " In your academic works please cite:\n "
322+ " [1] Cite me!\n "
323+ " For full copyright and/or warranty information see --copyright.\n " ;
324+
325+ EXPECT_EQ (get_parse_cout_on_exit (sub_parser), expected_sub_full_help);
326+ }
0 commit comments