-
Notifications
You must be signed in to change notification settings - Fork 620
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
GUACAMOLE-662: Fix handling of unit tests within build. #203
Conversation
For reference, the incorrect test handling of the current build produces the following erroneous report:
There is actually more than one test, and one of those tests (the nested socket test) is actually failing. With these changes in place, the report reflects the status of each test:
The boilerplate I refer to are files like |
…ence script. Remove unnecessary test runners.
f8d5781
to
476b431
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any idea if a specific version of CUnit is required? I've done an initial review, but when I try to run "make check" on CentOS7, I get the following:
[root@guachost1 guacamole-server-apache]# make check
Making check in src/libguac
make[1]: Entering directory `/root/guacamole-server-apache/src/libguac'
Making check in .
make[2]: Entering directory `/root/guacamole-server-apache/src/libguac'
make[2]: Nothing to be done for `check-am'.
make[2]: Leaving directory `/root/guacamole-server-apache/src/libguac'
Making check in tests
make[2]: Entering directory `/root/guacamole-server-apache/src/libguac/tests'
make test_libguac
make[3]: Entering directory `/root/guacamole-server-apache/src/libguac/tests'
CC client/test_libguac-buffer_pool.o
CC client/test_libguac-layer_pool.o
CC parser/test_libguac-append.o
CC parser/test_libguac-read.o
CC pool/test_libguac-next_free.o
CC protocol/test_libguac-base64_decode.o
CC socket/test_libguac-fd_send_instruction.o
CC socket/test_libguac-nested_send_instruction.o
CC unicode/test_libguac-charsize.o
CC unicode/test_libguac-read.o
CC unicode/test_libguac-strlen.o
CC unicode/test_libguac-write.o
GEN _generated_runner.c
CC test_libguac-_generated_runner.o
CCLD test_libguac
test_libguac-_generated_runner.o: In function `main':
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:88: undefined reference to
`CU_initialize_registry'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:92: undefined reference to
`CU_add_suite'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:94: undefined reference to
`CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:98: undefined reference to
`CU_add_suite'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:100: undefined reference to
`CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:101: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:105: undefined reference to `CU_add_suite'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:107: undefined reference to
`CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:108: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:109: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:110: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:114: undefined reference to `CU_add_suite'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:116: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:120: undefined reference to `CU_add_suite'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:122: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:123: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:127: undefined reference to `CU_add_suite'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:129: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:130: undefined reference to `CU_add_test'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:142: undefined reference to `CU_set_test_complete_handler'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:143: undefined reference to `CU_run_all_tests'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:147: undefined reference to `CU_cleanup_registry'
/root/guacamole-server-apache/src/libguac/tests/_generated_runner.c:148: undefined reference to `CU_get_error'
client/test_libguac-buffer_pool.o: In function `test_client__buffer_pool':
/root/guacamole-server-apache/src/libguac/tests/client/buffer_pool.c:42: undefined reference to `CU_assertImplementation'
/root/guacamole-server-apache/src/libguac/tests/client/buffer_pool.c:48: undefined reference to `CU_assertImplementation'
/root/guacamole-server-apache/src/libguac/tests/client/buffer_pool.c:53: undefined reference to `CU_assertImplementation'
/root/guacamole-server-apache/src/libguac/tests/client/buffer_pool.c:54: undefined reference to `CU_assertImplementation'
/root/guacamole-server-apache/src/libguac/tests/client/buffer_pool.c:55: undefined reference to `CU_assertImplementation'
client/test_libguac-buffer_pool.o:/root/guacamole-server-apache/src/libguac/tests/client/buffer_pool.c:58: more undefined references to `CU_assertImplementation' follow
collect2: error: ld returned 1 exit status
make[3]: *** [test_libguac] Error 1
make[3]: Leaving directory `/root/guacamole-server-apache/src/libguac/tests'
make[2]: *** [check-am] Error 2
make[2]: Leaving directory `/root/guacamole-server-apache/src/libguac/tests'
make[1]: *** [check-recursive] Error 1
make[1]: Leaving directory `/root/guacamole-server-apache/src/libguac'
make: *** [check-recursive] Error 1
I'll recheck. If things are building, though, this looks more like an issue with linking than with having the wrong version. Was the devel package for CUnit present when |
Maybe it was my build environment. Went back and did a
(Full Output: https://pastebin.com/RLSpPWra) |
Yep. That's the test that's been failing all this time, but which (incorrectly) has not been failing the build: |
Aha. Okay, will go ahead and merge these changes. |
Oops...I think your changes to the .gitignore file, here, were a little over-zealous:
Unless you intended to not exclude those anymore? |
I believe those have all moved to the |
Ah, okay, looks good. |
This change corrects the way unit tests are handled within the guacamole-server build, logging the correct number of tests/passes/failures and failing the build overall if at least one test fails.
This required:
util/generate-test-runner.pl
andREADME-unit-testing.md
within these changes)util/generate-test-runner.pl
, taking the opportunity to clean up and reorganize accordingly.fork()
- parent/child logic was switched, resulting in race conditions in logging of test results.The new
util/generate-test-runner.pl
script allows unit tests to be written as simple function declarations following conventions documented inREADME-unit-testing.md
. So long as those conventions are followed, only the test functions themselves are required, and the necessary boilerplate to actually run those functions, collect results, etc. is generated automatically.NOTE: Merging these changes will likely result in the build failing within CI when
make check
is run. This is actually a Good Thing, as the build really should have been failing all this time due to GUACAMOLE-510.