-
-
Notifications
You must be signed in to change notification settings - Fork 333
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unit tests won't run when using Microsoft C compiler #413
Comments
Thanks for the report.
There is an upstream PR to fix this in I'd prefer not to include local fixes for this issue so I think I will pass on this. The PR also includes some other fixes: "fix build error in VS: use const char* in struct lxw_header_footer_options". Any idea why this doesn't show up in the "CMake on Windows" CI test? |
VS build errorThe error occurs when compiling the following code in a C++ file, even when xlsxwriter.h uses the extern "C" { ... } declaration.
gives
using ctestI saw ctest.h was already modified (see its git log) to "work" on Windows. So I wondered that it compiles, but no tests are found. IMHO, in the short term, working unit tests under Windows are important for libxlsxwriter development. The ctest repository seems to be a bit abandoned, so I doubt if the PR you mentioned will ever be merged into ctest, also because there are lots of guesses and no clear statements how the MS compiler works. (The source of truth is here I think: https://devblogs.microsoft.com/oldnewthing/20181107-00/?p=100155 and the two follow-up articles.) I mean, if ctest once supports MSVC, you can simply copy the latest version from there and you're done. |
Thanks for flagging this. I'll look into that separately. I have a simple test to ensure CPP compatible After that I'll look at the unit test part of the PR. I just need to figure out if I should upgrade to the latest |
I've added a fix to change all the public "char*" members to "const char*". You can try it when you get a chance. I'll look into the |
I updated I think that rather than fix it I'd prefer to disable the unit test compilation on Windows. As you pointed out the tests didn't work previously so it probably isn't a big loss. The functional tests are more comprehensive anyway. |
In the end I went with the option of turning off the unit tests for MSVC until |
When using the Microsoft C compiler (Visual Studio / VS Build Tools), the unit test registration in
ctest.h
does not work (and has apparently never worked before). The unit test executablexlsxwriter_unit.exe
simply executes zero test cases.Reason: The test case registration macro
CTEST(...)
works by adding instances ofstruct ctest
to a special linker segments (on *nix platforms). When using MSC, the structs are added to the normal data segment and thus cannot be found by the test case driver inctest_main
.Solution: Use linker segments also in MSC. This requires a special syntax, as linker segments specifications are not portable between platforms.
PR will follow shortly.
The text was updated successfully, but these errors were encountered: