DKnoto opened a new issue, #4465: URL: https://github.com/apache/netbeans/issues/4465
### Apache NetBeans version Apache NetBeans 14 ### What happened I use NetBeans 8.2 plugins to work on C/C++ projects. I implemented the unit tests using the GoogleTest library according to the guidelines in the documentation [Adding Unit Tests to a C Project](https://netbeans.apache.org/kb/docs/cnd/c-unit-test.html). This worked without any major problems until NB version 12.4. Unfortunately, since version 12.5, support for unit tests compatible with this model has collapsed. **NetBeans 14 Tests Results**:  **NetBeans 14 Output Clean Build**:  **NetBeans 14 Output Build Test**: `"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf make[1]: Wejście do katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux/libovation2d-pointers.a make[2]: Wejście do katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' make[2]: 'dist/Debug/GNU-Linux/libovation2d-pointers.a' jest aktualne. make[2]: Opuszczenie katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' make[1]: Opuszczenie katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' "/usr/bin/make" -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-tests-conf make[1]: Wejście do katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux/libovation2d-pointers.a make[2]: Wejście do katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' make[2]: 'dist/Debug/GNU-Linux/libovation2d-pointers.a' jest aktualne. make[2]: Opuszczenie katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' make[1]: Opuszczenie katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' "/usr/bin/make" -f nbproject/Makefile-Debug.mk SUBPROJECTS= .test-conf make[1]: Wejście do katalogu '/home/dknoto/Projekty/Ovation2D-Pointers' %SUITE_STARTING% Highway Pointers Tests %SUITE_STARTED% %TEST_STARTED% CheckPointer1::EmptyInputNotInitialized (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::EmptyInputNotInitialized (newsimpletest) %TEST_STARTED% CheckPointer1::EmptyInputInitialized (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::EmptyInputInitialized (newsimpletest) %TEST_STARTED% CheckPointer1::BadFirstChar (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::BadFirstChar (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstCharButEmptySecondChar (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstCharButEmptySecondChar (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstCharButSecondCharDiff_H_or_h (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstCharButSecondCharDiff_H_or_h (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstCharSecondCharEqualHiHAndFirstDigitEmpty (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstCharSecondCharEqualHiHAndFirstDigitEmpty (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstCharSecondCharEqualLoHAndFirstDigitEmpty (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstCharSecondCharEqualLoHAndFirstDigitEmpty (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstAndSecondCharButFirstDigitIsLessThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstAndSecondCharButFirstDigitIsLessThanNine (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstAndSecondCharButFirstDigitIsGreaterThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstAndSecondCharButFirstDigitIsGreaterThanNine (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstAndSecondCharButIndexLessThanOne (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstAndSecondCharButIndexLessThanOne (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstAndSecondCharAndIndexEqualMinimum (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstAndSecondCharAndIndexEqualMinimum (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstAndSecondAndThirdCharButSecondDigitIsLessThanZero (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstAndSecondAndThirdCharButSecondDigitIsLessThanZero (newsimpletest) %TEST_STARTED% CheckPointer1::GoodFirstAndSecondAndThirdCharButSecondDigitIsGreaterThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodFirstAndSecondAndThirdCharButSecondDigitIsGreaterThanNine (newsimpletest) %TEST_STARTED% CheckPointer1::GoodAllChars (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodAllChars (newsimpletest) %TEST_STARTED% CheckPointer1::GoodAllCharsMaximumPointerIndex (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodAllCharsMaximumPointerIndex (newsimpletest) %TEST_STARTED% CheckPointer1::GoodAllCharsButIntputTooLong (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodAllCharsButIntputTooLong (newsimpletest) %TEST_STARTED% CheckPointer1::GoodAllCharsButIntputTooLong2 (newsimpletest) %TEST_FINISHED% time=1 CheckPointer1::GoodAllCharsButIntputTooLong2 (newsimpletest) %TEST_STARTED% CheckPointer2::EmptyInputNotInitialized (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::EmptyInputNotInitialized (newsimpletest) %TEST_STARTED% CheckPointer2::EmptyInputInitialized (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::EmptyInputInitialized (newsimpletest) %TEST_STARTED% CheckPointer2::BadFirstChar (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::BadFirstChar (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstCharButEmptySecondChar (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstCharButEmptySecondChar (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstCharButSecondCharDiff_H_or_h (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstCharButSecondCharDiff_H_or_h (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstCharSecondCharEqualHiHAndFirstDigitEmpty (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstCharSecondCharEqualHiHAndFirstDigitEmpty (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstCharSecondCharEqualLoHAndFirstDigitEmpty (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstCharSecondCharEqualLoHAndFirstDigitEmpty (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstAndSecondCharButFirstDigitIsLessThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstAndSecondCharButFirstDigitIsLessThanNine (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstAndSecondCharButFirstDigitIsGreaterThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstAndSecondCharButFirstDigitIsGreaterThanNine (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstAndSecondCharButIndexLessThanOne (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstAndSecondCharButIndexLessThanOne (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstAndSecondCharAndIndexEqualMinimum (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstAndSecondCharAndIndexEqualMinimum (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstAndSecondAndThirdCharButSecondDigitIsLessThanZero (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstAndSecondAndThirdCharButSecondDigitIsLessThanZero (newsimpletest) %TEST_STARTED% CheckPointer2::GoodFirstAndSecondAndThirdCharButSecondDigitIsGreaterThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodFirstAndSecondAndThirdCharButSecondDigitIsGreaterThanNine (newsimpletest) %TEST_STARTED% CheckPointer2::GoodAllChars (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodAllChars (newsimpletest) %TEST_STARTED% CheckPointer2::GoodAllCharsMaximumPointerIndex (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodAllCharsMaximumPointerIndex (newsimpletest) %TEST_STARTED% CheckPointer2::GoodAllCharsButIntputTooLong (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodAllCharsButIntputTooLong (newsimpletest) %TEST_STARTED% CheckPointer2::GoodAllCharsButIntputTooLong2 (newsimpletest) %TEST_FINISHED% time=1 CheckPointer2::GoodAllCharsButIntputTooLong2 (newsimpletest) %TEST_STARTED% CheckPointer3::EmptyInputNotInitialized (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::EmptyInputNotInitialized (newsimpletest) %TEST_STARTED% CheckPointer3::EmptyInputInitialized (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::EmptyInputInitialized (newsimpletest) %TEST_STARTED% CheckPointer3::BadFirstChar (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::BadFirstChar (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstCharButEmptySecondChar (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstCharButEmptySecondChar (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstCharButSecondCharDiff_H_or_h (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstCharButSecondCharDiff_H_or_h (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstCharSecondCharEqualHiHAndFirstDigitEmpty (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstCharSecondCharEqualHiHAndFirstDigitEmpty (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstCharSecondCharEqualLoHAndFirstDigitEmpty (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstCharSecondCharEqualLoHAndFirstDigitEmpty (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstAndSecondCharButFirstDigitIsLessThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstAndSecondCharButFirstDigitIsLessThanNine (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstAndSecondCharButFirstDigitIsGreaterThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstAndSecondCharButFirstDigitIsGreaterThanNine (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstAndSecondCharButIndexLessThanOne (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstAndSecondCharButIndexLessThanOne (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstAndSecondCharAndIndexEqualMinimum (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstAndSecondCharAndIndexEqualMinimum (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstAndSecondAndThirdCharButSecondDigitIsLessThanZero (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstAndSecondAndThirdCharButSecondDigitIsLessThanZero (newsimpletest) %TEST_STARTED% CheckPointer3::GoodFirstAndSecondAndThirdCharButSecondDigitIsGreaterThanNine (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodFirstAndSecondAndThirdCharButSecondDigitIsGreaterThanNine (newsimpletest) %TEST_STARTED% CheckPointer3::GoodAllChars (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodAllChars (newsimpletest) %TEST_STARTED% CheckPointer3::GoodAllCharsMaximumPointerIndex (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodAllCharsMaximumPointerIndex (newsimpletest) %TEST_STARTED% CheckPointer3::GoodAllCharsButIntputTooLong (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodAllCharsButIntputTooLong (newsimpletest) %TEST_STARTED% CheckPointer3::GoodAllCharsButIntputTooLong2 (newsimpletest) %TEST_FINISHED% time=1 CheckPointer3::GoodAllCharsButIntputTooLong2 (newsimpletest) %SUITE_FINISHED% time=0 make[1]: Opuszczenie katalogu '/home/dknoto/Projekty/Ovation2D-Pointers'` **NetBeans 12.4 Tests Results**:  **NetBeans 14 Output Build Test**: The content is identical to that of version 14. ### How to reproduce Implement unit tests using my **NBNewSimpleTestPrinter** class: `/* * File: RunAllTests.cpp * Author: DKnoto */ #include <string> #include <gtest/gtest.h> #include <stdlib.h> namespace { const char* TEST_SUITE_NAME = "Highway Pointers Tests"; } using ::testing::EmptyTestEventListener; using ::testing::InitGoogleTest; using ::testing::Test; using ::testing::TestCase; using ::testing::TestEventListeners; using ::testing::TestInfo; using ::testing::TestPartResult; using ::testing::UnitTest; namespace { class NBNewSimpleTestPrinter : public EmptyTestEventListener { std::string currentTestName; private: void OnTestProgramStart(const UnitTest& unit_test) override { } void OnTestProgramEnd(const UnitTest& unit_test) override { fprintf(stdout, "%%SUITE_FINISHED%% time=0\n"); fflush(stdout); } void OnTestStart(const TestInfo& test_info) override { currentTestName.assign(test_info.test_case_name()); currentTestName.append("::"); currentTestName.append(test_info.name()); fprintf(stdout, "%%TEST_STARTED%% %s (newsimpletest)\n", currentTestName.c_str()); fflush(stdout); } void OnTestPartResult(const TestPartResult& test_part_result) override { if (!test_part_result.failed()) return; fprintf(stdout, "%%TEST_FAILED%% time=0 testname=%s (newsimpletest) message=%s:%d, %s\n", currentTestName.c_str(), test_part_result.file_name(), test_part_result.line_number(), test_part_result.summary()); fflush(stdout); } void OnTestEnd(const TestInfo& test_info) override { fprintf(stdout, "%%TEST_FINISHED%% time=1 %s (newsimpletest)\n", currentTestName.c_str()); fflush(stdout); } }; } void initGoogleTest(int argc, char **argv, const char* suiteName) { fprintf(stdout, "%%SUITE_STARTING%% %s\n", suiteName); fflush(stdout); testing::InitGoogleTest(&argc, argv); UnitTest& unit_test = *UnitTest::GetInstance(); TestEventListeners& listeners = unit_test.listeners(); delete listeners.Release(listeners.default_result_printer()); listeners.Append(new NBNewSimpleTestPrinter); fprintf(stdout, "%%SUITE_STARTED%%\n"); fflush(stdout); } int main(int argc, char **argv) { initGoogleTest(argc, argv, TEST_SUITE_NAME); return RUN_ALL_TESTS(); } ` ### Did this work correctly in an earlier version? Apache NetBeans 12.4 ### Operating System Linux 5.17.12-100.fc34.x86_64 #1 SMP PREEMPT ### JDK Java 11.0.15; OpenJDK 64-Bit Server VM 11.0.15+10 ### Apache NetBeans packaging Apache NetBeans provided installer ### Anything else _No response_ ### Are you willing to submit a pull request? No ### Code of Conduct Yes -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
