svenevs / exhale

Automatic C++ library api documentation generation: breathe doxygen in and exhale it out.
BSD 3-Clause "New" or "Revised" License
218 stars 51 forks source link

Make sure Doxygen can write paths for cpp_long_names. #175

Closed HexDecimal closed 1 year ago

HexDecimal commented 2 years ago

cpp_long_names was causing Doxygen to fail on Windows which then caused the tests to fail. Doxygen could not write out the files if the repo was cloned to a moderately deep directory.

I use SHORT_NAMES = YES to prevent this but it can't be used for all projects since it causes the Pimpl tests to fail. I'm not sure why.

svenevs commented 2 years ago

Hmm ok interesting. Are you using Windows or something else like bash for Windows or whatever it's called now?

The test is only supposed to generate the file path that breaks if platform.system() != "Windows" (in CI the part of the test that breaks should get skipped). Can you share more information on the crash or error messages? Does it still break if you come the repo and run the tests from C:/exhale (much shorter path length)?

HexDecimal commented 2 years ago

Hmm ok interesting. Are you using Windows or something else like bash for Windows or whatever it's called now?

Using GitBash, which is from the Git for Windows package. platform.system() is 'Windows' when I check it in Python in the GitBash shell. I don't think the shell is affecting this test.

Here's the relevant part:

-------------------------------------------------------------------------------------- Captured stderr setup --------------------------------------------------------------------------------------- 
[~] error: Cannot open file C:/Users/4b796/Projects/_others_projects/exhale/testing/projects/cpp_long_names/docs_CPPLongNames_test_file_hierarchy/_doxygen/xml/classclass__that__is__longer__than__two__hundred__and__fifty__five__characters__long__which__is_b3ede03b695ca987c2d4a4e7f05f30e3.xml for writing!
[~] error: Cannot open file C:/Users/4b796/Projects/_others_projects/exhale/testing/projects/cpp_long_names/docs_CPPLongNames_test_file_hierarchy/_doxygen/xml/structstruct__that__is__longer__than__two__hundred__and__fifty__five__characters__long__which__i50119b87d5f473544b8165fa34a0cad2.xml for writing!
[~] error: Cannot open file C:/Users/4b796/Projects/_others_projects/exhale/testing/projects/cpp_long_names/docs_CPPLongNames_test_file_hierarchy/_doxygen/xml/unionunion__that__is__longer__than__two__hundred__and__fifty__five__characters__long__which__is_d964ced6248a839f08541098a5f8b500.xml for writing!
[~] error: Cannot open file C:/Users/4b796/Projects/_others_projects/exhale/testing/projects/cpp_long_names/docs_CPPLongNames_test_file_hierarchy/_doxygen/xml/namespacenamespace__that__is__longer__than__two__hundred__and__fifty__five__characters__long__whafbc602bde0658898d288d3ffbeb0b83.xml for writing!
(!) Did not locate file that defined define [namespace_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you::MAKE_IT_BIG]; no link generated.
(!) Did not locate file that defined define [namespace_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you::DEFINE_THAT_IS_LONGER_THAN_TWO_HUNDRED_AND_FIFTY_FIVE_CHARACTERS_LONG_WHICH_IS_AN_ABSOLUTELY_AND_COMPLETELY_RIDICULOUS_THING_TO_DO_AND_IF_YOU_DID_THIS_IN_THE_REAL_WORLD_YOU_PUT_YOURSELF_COMFORTABLY_IN_A_POSITION_TO_BE_DOWNSIZED_AND_OUTTA_HERE_AS_SOUL_POSITION_WOULD_EXPLAIN_TO_YOU]; no link generated.
(!) Did not locate file that defined enum [namespace_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you::enum_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you]; no link generated.
(!) Did not locate file that defined typedef [namespace_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you::typedef_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you]; no link generated.
(!) Did not locate file that defined variable [namespace_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you::variable_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you]; no link generated.
(!) Did not locate file that defined function [namespace_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you::function_that_is_longer_than_two_hundred_and_fifty_five_characters_long_which_is_an_absolutely_and_completely_ridiculous_thing_to_do_and_if_you_did_this_in_the_real_world_you_put_yourself_comfortably_in_a_position_to_be_downsized_and_outta_here_as_soul_position_would_explain_to_you]; no link generated.

The file names shown are 263 characters long. I think the error is Doxygen being unable to open the files for writing.

The full log if you need it: tests.log

svenevs commented 1 year ago

Thanks @HexDecimal for trying to fix this. The PR went out of scope, and the solution of forcing in the short names changes the meaning of the test. These tests run in CI because it gets cloned closer to C:/, I have added #192 and will need to think about the right way to deal with this.