diff options
-rw-r--r-- | CMakeLists.txt | 13 | ||||
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | Makefile.nmake | 5 | ||||
-rw-r--r-- | epan/CMakeLists.txt | 12 | ||||
-rw-r--r-- | epan/Makefile.am | 3 | ||||
-rw-r--r-- | epan/Makefile.nmake | 20 | ||||
-rw-r--r-- | epan/wmem/Makefile.am | 2 | ||||
-rw-r--r-- | epan/wmem/Makefile.nmake | 6 | ||||
-rw-r--r-- | test/README.test | 23 | ||||
-rwxr-xr-x | test/suite-unittests.sh | 59 |
10 files changed, 78 insertions, 68 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index dd37e34311..1f22126742 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2301,7 +2301,7 @@ else() set(TEST_SH_BIN_DIR $<TARGET_FILE_DIR:epan>) endif() -add_custom_target(test-sh ALL +add_custom_target(test-sh COMMAND ${CMAKE_COMMAND} -DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} -DTEST_SH_BIN_DIR=${TEST_SH_BIN_DIR} @@ -2310,6 +2310,17 @@ add_custom_target(test-sh ALL DEPENDS ${CMAKE_SOURCE_DIR}/cmake/modules/GenerateTestSh.cmake ) +add_custom_target(test-programs + DEPENDS test-sh + exntest + oids_test + reassemble_test + tvbtest + wmem_test + COMMENT "Building unit test programs and wrapper" +) + + # # Editor modelines - http://www.wireshark.org/tools/modelines.html # diff --git a/Makefile.am b/Makefile.am index 6a78af1e0c..12967ed90b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1590,6 +1590,9 @@ osx-install: osx-app cp -pr $(srcdir)/packaging/macosx/Wireshark.app /Applications ; \ fi +test-programs: + cd epan && $(MAKE) $@ + clean-local: rm -rf $(top_stagedir) diff --git a/Makefile.nmake b/Makefile.nmake index f1cd014ffc..e2193657c4 100644 --- a/Makefile.nmake +++ b/Makefile.nmake @@ -553,6 +553,11 @@ text2pcap-scanner.c : text2pcap-scanner.l text2pcap-scanner.obj : text2pcap-scanner.c $(CC) $(GENERATED_CFLAGS) -Fd.\ -c $? +test-programs: + cd epan + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake test-programs + cd .. + clean-local: rm -f $(wireshark_gtk_OBJECTS) $(tshark_OBJECTS) $(tfshark_OBJECTS) $(dumpcap_OBJECTS) $(rawshark_OBJECTS) \ $(EXECUTABLES) *.nativecodeanalysis.xml *.pdb *.sbr *.exe.manifest \ diff --git a/epan/CMakeLists.txt b/epan/CMakeLists.txt index 24881aba57..a6da8f9e45 100644 --- a/epan/CMakeLists.txt +++ b/epan/CMakeLists.txt @@ -1809,34 +1809,34 @@ if(NOT ${ENABLE_STATIC}) ) endif() -add_executable(wmem_test wmem/wmem_test.c ${WMEM_FILES}) +add_executable(wmem_test EXCLUDE_FROM_ALL wmem/wmem_test.c ${WMEM_FILES}) target_link_libraries(wmem_test ${GLIB2_LIBRARIES}) set_target_properties(wmem_test PROPERTIES FOLDER "Tests" COMPILE_DEFINITIONS "WS_BUILD_DLL" ) -add_executable(exntest exntest.c except.c) +add_executable(exntest EXCLUDE_FROM_ALL exntest.c except.c) target_link_libraries(exntest ${GLIB2_LIBRARIES}) set_target_properties(exntest PROPERTIES FOLDER "Tests" COMPILE_DEFINITIONS "WS_BUILD_DLL" ) -add_executable(oids_test oids_test.c) -target_link_libraries(oids_test epan) +add_executable(oids_test EXCLUDE_FROM_ALL oids_test.c) +target_link_libraries(oids_test epan ${ZLIB_LIBRARIES}) set_target_properties(oids_test PROPERTIES FOLDER "Tests" COMPILE_DEFINITIONS "WS_BUILD_DLL" ) -add_executable(reassemble_test reassemble_test.c) +add_executable(reassemble_test EXCLUDE_FROM_ALL reassemble_test.c) target_link_libraries(reassemble_test epan) set_target_properties(reassemble_test PROPERTIES FOLDER "Tests" ) -add_executable(tvbtest tvbtest.c) +add_executable(tvbtest EXCLUDE_FROM_ALL tvbtest.c) target_link_libraries(tvbtest epan) set_target_properties(tvbtest PROPERTIES FOLDER "Tests" diff --git a/epan/Makefile.am b/epan/Makefile.am index df2e3200b4..7ed74c8baf 100644 --- a/epan/Makefile.am +++ b/epan/Makefile.am @@ -162,6 +162,9 @@ oids_test_LDADD = \ exntest: exntest.o except.o $(LINK) $^ $(GLIB_LIBS) +test-programs: $(EXTRA_PROGRAMS) exntest + cd wmem && $(MAKE) $@ + RUNLEX=$(top_srcdir)/tools/runlex.sh diam_dict_lex.h: diam_dict.c diff --git a/epan/Makefile.nmake b/epan/Makefile.nmake index f0ad957250..cdb804d2fe 100644 --- a/epan/Makefile.nmake +++ b/epan/Makefile.nmake @@ -360,22 +360,26 @@ reassemble_test.exe: $(REASSEMBLE_TEST_OBJ) mt.exe -nologo -manifest "$@.manifest" -outputresource:$@;1 !ENDIF -exntest_install: +exntest_install: exntest.exe set copycmd=/y - if exist exntest.exe xcopy exntest.exe ..\$(INSTALL_DIR) /d + xcopy exntest.exe ..\$(INSTALL_DIR) /d -tvbtest_install: +tvbtest_install: tvbtest.exe set copycmd=/y - if exist tvbtest.exe xcopy tvbtest.exe ..\$(INSTALL_DIR) /d + xcopy tvbtest.exe ..\$(INSTALL_DIR) /d -oids_test_install: +oids_test_install: oids_test.exe set copycmd=/y - if exist oids_test.exe xcopy oids_test.exe ..\$(INSTALL_DIR) /d + xcopy oids_test.exe ..\$(INSTALL_DIR) /d -reassemble_test_install: +reassemble_test_install: reassemble_test.exe set copycmd=/y - if exist reassemble_test.exe xcopy reassemble_test.exe ..\$(INSTALL_DIR) /d + xcopy reassemble_test.exe ..\$(INSTALL_DIR) /d +test-programs: exntest_install tvbtest_install oids_test_install reassemble_test_install + cd wmem + $(MAKE) /$(MAKEFLAGS) -f Makefile.nmake test-programs + cd .. # # Compile some time critical code from assembler if NASM available diff --git a/epan/wmem/Makefile.am b/epan/wmem/Makefile.am index 0d05311792..8fd4960e79 100644 --- a/epan/wmem/Makefile.am +++ b/epan/wmem/Makefile.am @@ -36,6 +36,8 @@ wmem_test_LDADD = \ libwmem.la \ $(GLIB_LIBS) +test-programs: wmem_test + CLEANFILES = \ libwmem.a \ libwmem.la \ diff --git a/epan/wmem/Makefile.nmake b/epan/wmem/Makefile.nmake index 2adc57b7c0..1378be6860 100644 --- a/epan/wmem/Makefile.nmake +++ b/epan/wmem/Makefile.nmake @@ -37,9 +37,11 @@ wmem_test.exe: $(WMEM_TEST_OBJ) $(WMEM_TEST_LIBS) link /OUT:$@ $(conflags) $(conlibsdll) $(LOCAL_LDFLAGS) /LARGEADDRESSAWARE /SUBSYSTEM:console \ $(WMEM_TEST_LIBS) $(GLIB_LIBS) $(WMEM_TEST_OBJ) -wmem_test_install: +wmem_test_install: wmem_test.exe set copycmd=/y - if exist wmem_test.exe xcopy wmem_test.exe ..\..\$(INSTALL_DIR) /d + xcopy wmem_test.exe ..\..\$(INSTALL_DIR) /d + +test-programs: wmem_test_install checkapi: $(PERL) ../../tools/checkAPIs.pl -g termoutput -build \ diff --git a/test/README.test b/test/README.test index 58b80d2ab0..068d7d8816 100644 --- a/test/README.test +++ b/test/README.test @@ -4,28 +4,28 @@ This is a collection of bash scripts which test the features of: - Wireshark - TShark - - Dumpcap + - Dumpcap Motivation ---------- -The command line options of Wireshark and the companion command line tools are -numerous. This makes it hard to find newly introduced bugs doing manual testing +The command line options of Wireshark and the companion command line tools are +numerous. This makes it hard to find newly introduced bugs doing manual testing (try and error) with source code changes. -The current way is to do some changes, testing some scenarios by hand and -commit the code so other users will complain about new problems. This obviously +The current way is to do some changes, testing some scenarios by hand and +commit the code so other users will complain about new problems. This obviously is far from being optimal. Limitations ----------- -The test set currently provided will only do some basic tests, but even that +The test set currently provided will only do some basic tests, but even that is far better than nothing. This may involve in time as new tests can be added -to fix problems reported by users. This will hopefully lead to a "complete" +to fix problems reported by users. This will hopefully lead to a "complete" and reliable testset in the future. -The tests are limited to command line tests, other things like unit tests or +The tests are limited to command line tests, other things like unit tests or GUI test are not included. Prerequisites @@ -34,10 +34,11 @@ Prerequisites What you'll need (to do): - edit the file config.sh to suit your configuration - - obviously, compile the programs (wireshark, ...) to be tested + - build the "all" target + - build the "test-programs" target - have a bash (cygwin should do well) - have tput (e.g. in the cygwin ncurses package) - - you'll need a network interface with some network traffic + - you'll need a network interface with some network traffic (so you can run the capture tests) - (for non-Windows platforms) An X server for running the capture tests with the graphical Wireshark program. @@ -69,7 +70,7 @@ it with: When your configuration is sane, you can start test.sh which should provide a basic menu. Just press Enter to start all tests. -It should start all the available tests. Each test will throw out a line +It should start all the available tests. Each test will throw out a line which should end with a green "Ok". If one of the tests fail, the script will report it and stop at this test step. diff --git a/test/suite-unittests.sh b/test/suite-unittests.sh index 864f5a30b6..102ab6ac98 100755 --- a/test/suite-unittests.sh +++ b/test/suite-unittests.sh @@ -20,35 +20,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -if [ "$WS_SYSTEM" == "Windows" ] ; then - MAKE="nmake -f Makefile.nmake" -else - MAKE=make -fi - unittests_step_test() { - ( cd `dirname $DUT` && $MAKE `basename $DUT` ) >testout.txt 2>&1 - if [ $? -ne 0 ]; then - echo - cat ./testout.txt - test_step_failed "make $DUT failed" - return - fi - - # if we're on windows, we have to copy the test exe to the wireshark-gtk2 - # dir before we can use them. - # {Note that 'INSTALL_DIR' must be a Windows Pathname) - if [ "$WS_SYSTEM" == "Windows" ] ; then - (cd `dirname $DUT` && $MAKE `basename $DUT`_install INSTALL_DIR='wireshark-gtk2\') > testout.txt 2>&1 - if [ $? -ne 0 ]; then - echo - cat ./testout.txt - test_step_failed "install $DUT failed" - return - fi - DUT=$SOURCE_DIR/wireshark-gtk2/`basename $DUT` - fi - $DUT $ARGS > testout.txt 2>&1 RETURNVALUE=$? if [ ! $RETURNVALUE -eq $EXIT_OK ]; then @@ -60,43 +32,50 @@ unittests_step_test() { test_step_ok } -set_dut() { - if [ "$SOURCE_DIR" = "$WS_BIN_PATH" -o "$WS_SYSTEM" = "Windows" ]; then - DUT=$SOURCE_DIR/epan/$1 +check_dut() { + TEST_EXE="" + # WS_BIN_PATH must be checked first, otherwise when using Nmake + # we'll find a non-functional program in epan or epan/wmem. + for TEST_PATH in "$WS_BIN_PATH" "$SOURCE_DIR/epan" "$SOURCE_DIR/epan/wmem" ; do + if [ -x "$TEST_PATH/$1" ]; then + TEST_EXE=$TEST_PATH/$1 + break + fi + done + + if [ -n "$TEST_EXE" ]; then + DUT=$TEST_EXE else - # In out-of-tree builds, all binaries end up in the same folder - # regardless of their path during in-tree builds, so we strip - # off any prefix part of the path (such as wmem/ for wmem_test) - DUT=$WS_BIN_PATH/${1##*/} + test_step_failed "$1 not found. Have you built test-programs?" fi } unittests_step_exntest() { - set_dut exntest + check_dut exntest ARGS= unittests_step_test } unittests_step_oids_test() { - set_dut oids_test + check_dut oids_test ARGS= unittests_step_test } unittests_step_reassemble_test() { - set_dut reassemble_test + check_dut reassemble_test ARGS= unittests_step_test } unittests_step_tvbtest() { - set_dut tvbtest + check_dut tvbtest ARGS= unittests_step_test } unittests_step_wmem_test() { - set_dut wmem/wmem_test + check_dut wmem_test ARGS=--verbose unittests_step_test } |