From 894bc01b0832d70f4cf87c36bf19a091e53c946d Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Tue, 17 Oct 2023 13:22:57 +0200 Subject: [PATCH 1/8] initial adjustments to include unit tests in autotools build - refactor src/include.am to put some order to it - add configure.ac to allow to pass --enable-megacmd-tests (requiring explicit --with-gtest atm) --- configure.ac | 19 ++++++++ src/include.am | 130 +++++++++++++++++++++++++++++++++---------------- 2 files changed, 107 insertions(+), 42 deletions(-) diff --git a/configure.ac b/configure.ac index c7769fe5..0dacdc28 100644 --- a/configure.ac +++ b/configure.ac @@ -535,6 +535,23 @@ if test "$HAVE_PTHREAD" = "yes"; then fi AM_CONDITIONAL([HAVE_PTHREAD], [test "${HAVE_PTHREAD}" = "yes"]) + +## Tests +AC_MSG_CHECKING([if building MEGAcmd tests]) +AC_ARG_ENABLE(megacmd-tests, + AS_HELP_STRING([--enable-megacmd-tests], [build MEGAcmd test applications]), + [], [enable_megacmd_tests=no]) +if test "x$enable_megacmd_tests" = "xyes" ; then + AC_ARG_WITH(gtest, + AS_HELP_STRING(--with-gtest=PATH, specify GTest location), + [AC_SUBST([GTEST_DIR],[$with_gtest])], + [AC_MSG_ERROR([GTest location must be specified])] + ) +fi +AM_CONDITIONAL([BUILD_MEGACMD_TESTS], [test "$enable_megacmd_tests" = "yes"]) +AC_MSG_RESULT([$enable_megacmd_tests]) + + # Add -latomic to LDFLAGS if needed CHECK_ATOMIC() @@ -568,4 +585,6 @@ AC_MSG_NOTICE([MEGAcmd configuration: Termcap: $TERMCAP_CXXFLAGS $TERMCAP_LDFLAGS $TERMCAP_LIBS PCRE: $PCRE_CXXFLAGS $PCRE_LDFLAGS $PCRE_LIBS SDK includes: $LMEGAINC + + MEGAcmd Tests: $enable_megacmd_tests ]) diff --git a/src/include.am b/src/include.am index 561307f5..11b8de9a 100644 --- a/src/include.am +++ b/src/include.am @@ -5,67 +5,35 @@ bin_PROGRAMS = # rules noinst_HEADERS= +# Assets: MEGACMD = mega-cmd mega-exec mega-cmd-server -bin_PROGRAMS += $(MEGACMD) +if BUILD_MEGACMD_TESTS +TESTS = mega-cmd-unit-tests #mega-cmd-integration-tests +endif +bin_PROGRAMS += $(MEGACMD) $(TESTS) $(MEGACMD): $(top_builddir)/sdk/src/libmega.la -noinst_HEADERS += src/comunicationsmanager.h src/configurationmanager.h src/megacmd.h src/megacmdlogger.h src/megacmdsandbox.h src/megacmdutils.h src/megacmdcommonutils.h src/listeners.h src/megacmdexecuter.h src/megacmdtransfermanager.h src/megacmdversion.h src/megacmdplatform.h src/comunicationsmanagerportsockets.h megacmdcompletiondir = $(sysconfdir)/bash_completion.d/ megacmdcompletion_DATA = src/client/megacmd_completion.sh megacmdscripts_bindir = $(bindir) - megacmdscripts_bin_SCRIPTS = src/client/mega-attr src/client/mega-cd src/client/mega-confirm src/client/mega-cp src/client/mega-debug src/client/mega-du src/client/mega-df src/client/mega-proxy src/client/mega-export src/client/mega-find src/client/mega-get src/client/mega-help src/client/mega-https src/client/mega-webdav src/client/mega-permissions src/client/mega-deleteversions src/client/mega-transfers src/client/mega-import src/client/mega-invite src/client/mega-ipc src/client/mega-killsession src/client/mega-lcd src/client/mega-log src/client/mega-login src/client/mega-logout src/client/mega-lpwd src/client/mega-ls src/client/mega-backup src/client/mega-mkdir src/client/mega-mount src/client/mega-mv src/client/mega-passwd src/client/mega-preview src/client/mega-put src/client/mega-speedlimit src/client/mega-pwd src/client/mega-quit src/client/mega-reload src/client/mega-rm src/client/mega-session src/client/mega-share src/client/mega-showpcr src/client/mega-signup src/client/mega-sync src/client/mega-exclude src/client/mega-thumbnail src/client/mega-userattr src/client/mega-users src/client/mega-version src/client/mega-whoami src/client/mega-cat src/client/mega-tree src/client/mega-mediainfo src/client/mega-graphics src/client/mega-ftp src/client/mega-cancel src/client/mega-confirmcancel src/client/mega-errorcode +#mega_cmddir=examples -mega_cmd_server_SOURCES = src/megacmd.cpp src/comunicationsmanager.cpp src/megacmdutils.cpp src/megacmdcommonutils.cpp src/configurationmanager.cpp src/megacmdlogger.cpp src/megacmdsandbox.cpp src/listeners.cpp src/megacmdexecuter.cpp src/megacmd_server_main.cpp src/megacmdtransfermanager.cpp src/comunicationsmanagerportsockets.cpp - -mega_cmddir=examples - -#CMDCLIENT -noinst_HEADERS += src/megacmdcommonutils.h src/megacmdshell/megacmdshellcommunications.h src/megacmdshell/megacmdshell.h sdk/include/mega/thread.h - -mega_exec_SOURCES = src/megacmdcommonutils.cpp src/client/megacmdclient.cpp src/megacmdshell/megacmdshellcommunications.cpp -mega_execdir=examples -#mega_exec_CXXFLAGS = -std=c++11 -DUSE_CPPTHREAD=1 -Iinclude/ -#mega_exec_CXXFLAGS = -Iinclude/ -mega_exec_CXXFLAGS = -Isdk/include/ $(LMEGAINC) - -#CMDSHELL -noinst_HEADERS += src/megacmdcommonutils.h src/megacmdshell/megacmdshellcommunications.h src/megacmdshell/megacmdshell.h sdk/include/mega/thread.h -mega_cmd_SOURCES = src/megacmdcommonutils.cpp src/megacmdshell/megacmdshellcommunications.cpp src/megacmdshell/megacmdshell.cpp - -mega_cmd_CXXFLAGS = $(RL_CXXFLAGS) -Isdk/include/ $(LMEGAINC) -mega_cmd_LDADD = $(RL_LDFLAGS) $(RL_LIBS) $(TERMCAP_LDFLAGS) $(TERMCAP_LIBS) - +############################### SERVER ###################################### +noinst_HEADERS += src/comunicationsmanager.h src/configurationmanager.h src/megacmd.h src/megacmdlogger.h src/megacmdsandbox.h src/megacmdutils.h src/megacmdcommonutils.h src/listeners.h src/megacmdexecuter.h src/megacmdtransfermanager.h src/megacmdversion.h src/megacmdplatform.h src/comunicationsmanagerportsockets.h +mega_cmd_server_SOURCES = src/megacmd.cpp src/megacmd_server_main.cpp src/comunicationsmanager.cpp src/megacmdutils.cpp src/megacmdcommonutils.cpp src/configurationmanager.cpp src/megacmdlogger.cpp src/megacmdsandbox.cpp src/listeners.cpp src/megacmdexecuter.cpp src/megacmdtransfermanager.cpp src/comunicationsmanagerportsockets.cpp mega_cmd_server_CXXFLAGS = $(LMEGAINC) $(DB_CXXFLAGS) if USE_PCRE mega_cmd_server_CXXFLAGS += -DUSE_PCRE=1 endif if WIN32 -noinst_HEADERS += src/megacmdshell/megacmdshellcommunicationsnamedpipes.h sdk/include/mega/thread.h sdk/include/mega/thread/win32thread.h sdk/include/mega/logging.h -mega_cmd_SOURCES += src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp sdk/src/thread/win32thread.cpp sdk/src/logging.cpp -mega_exec_SOURCES += src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp sdk/src/thread/win32thread.cpp sdk/src/logging.cpp mega_cmd_server_SOURCES += src/comunicationsmanagernamedpipes.cpp - mega_cmd_server_CXXFLAGS += -D_WIN32=1 -Isdk/include/ -Isdk/include/mega/win32 mega_cmd_server_LDADD = $(DB_LDFLAGS) $(DB_LIBS) $(LIBS_EXTRA) $(top_builddir)/src/libmega.la $(LIBS_EXTRA) - -mega_exec_CXXFLAGS += -D_WIN32=1 -mega_exec_LDADD = $(LIBS_EXTRA) -mega_cmd_LDADD += $(LIBS_EXTRA) - - else - mega_cmd_server_LDADD=$(DB_LDFLAGS) $(DB_LIBS) $(PCRE_LIBS) $(top_builddir)/sdk/src/libmega.la - mega_cmd_server_SOURCES += src/comunicationsmanagerfilesockets.cpp noinst_HEADERS += src/comunicationsmanagerfilesockets.h sdk/include/mega/thread/posixthread.h sdk/include/mega/logging.h -mega_cmd_SOURCES += sdk/src/thread/posixthread.cpp sdk/src/logging.cpp -mega_exec_SOURCES += sdk/src/thread/posixthread.cpp sdk/src/logging.cpp - -#mega_cmd_CXXFLAGS += -DUSE_PTHREAD=1 -#mega_exec_CXXFLAGS += -DUSE_PTHREAD=1 - endif if DARWIN @@ -76,9 +44,87 @@ else if ENABLE_STATIC #mega_cmd_server_LDFLAGS = -Wl,-static -all-static mega_cmd_server_LDFLAGS = -pthread -mega_exec_LDFLAGS = -pthread mega_cmd_LDFLAGS = -pthread endif endif +############################################################################################## + +#################################### CLIENT ############################################### +noinst_HEADERS += src/megacmdcommonutils.h src/megacmdshell/megacmdshellcommunications.h src/megacmdshell/megacmdshell.h sdk/include/mega/thread.h +mega_exec_SOURCES = src/megacmdcommonutils.cpp src/client/megacmdclient.cpp src/megacmdshell/megacmdshellcommunications.cpp +mega_execdir=examples +mega_exec_CXXFLAGS = -Isdk/include/ $(LMEGAINC) + + +if WIN32 +noinst_HEADERS += src/megacmdshell/megacmdshellcommunicationsnamedpipes.h sdk/include/mega/thread.h sdk/include/mega/thread/win32thread.h sdk/include/mega/logging.h +mega_exec_SOURCES += src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp sdk/src/thread/win32thread.cpp sdk/src/logging.cpp +mega_exec_CXXFLAGS += -D_WIN32=1 +mega_exec_LDADD = $(LIBS_EXTRA) +else +mega_exec_SOURCES += sdk/src/thread/posixthread.cpp sdk/src/logging.cpp +endif + +if DARWIN +else +if ENABLE_STATIC +mega_exec_LDFLAGS = -pthread +endif +endif + +############################################################################################## + +############################### SHELL ##################################################### +noinst_HEADERS += src/megacmdcommonutils.h src/megacmdshell/megacmdshellcommunications.h src/megacmdshell/megacmdshell.h sdk/include/mega/thread.h +mega_cmd_SOURCES = src/megacmdcommonutils.cpp src/megacmdshell/megacmdshellcommunications.cpp src/megacmdshell/megacmdshell.cpp +mega_cmd_CXXFLAGS = $(RL_CXXFLAGS) -Isdk/include/ $(LMEGAINC) +mega_cmd_LDADD = $(RL_LDFLAGS) $(RL_LIBS) $(TERMCAP_LDFLAGS) $(TERMCAP_LIBS) + +if WIN32 +mega_cmd_SOURCES += src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp sdk/src/thread/win32thread.cpp sdk/src/logging.cpp +mega_cmd_LDADD += $(LIBS_EXTRA) +else +mega_cmd_SOURCES += sdk/src/thread/posixthread.cpp sdk/src/logging.cpp +endif + +if DARWIN +else +if ENABLE_STATIC +mega_cmd_LDFLAGS = -pthread +endif +endif +############################################################################################## + +if BUILD_MEGACMD_TESTS +############################### Unit Tests################################################### +noinst_HEADERS += \ + tests/common/Instruments.h \ + tests/common/TestUtils.h + +mega_cmd_unit_tests_SOURCES = \ + tests/common/Instruments.cpp \ + tests/common/TestUtils.cpp \ + tests/unit/StringUtilsTests.cpp \ + tests/unit/main.cpp + +#Dependencies: +mega_cmd_unit_tests_SOURCES += \ + src/megacmdcommonutils.cpp + +mega_cmd_unit_tests_CXXFLAGS = -Itests/common/ -Itests/unit/ -Isdk/include/ $(LMEGAINC) +mega_cmd_unit_tests_CXXFLAGS += -std=c++17 + +mega_cmd_unit_tests_LDADD = -L/$(GTEST_DIR)/lib/ -lgmock -lgtest -lgtest_main # Note, the trailing / is to allow simple --with-gtest (evalving to "yes") + +if DARWIN +else +if ENABLE_STATIC +mega_cmd_unit_tests_LDFLAGS = -pthread +endif +endif +############################################################################################## +endif + + From 25db38edf89d426f8fa39b02f332a118d7f254cd Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Tue, 17 Oct 2023 18:05:35 +0200 Subject: [PATCH 2/8] major simplification in include.am - use intermmediate libraries for common code (tests/comms/instruments) - have server compiled with MEGACMD_TESTING_CODE when BUILD_MEGACMD_TESTS --- src/include.am | 184 +++++++++++++++++++++++++++---------------------- 1 file changed, 102 insertions(+), 82 deletions(-) diff --git a/src/include.am b/src/include.am index 11b8de9a..3524d27d 100644 --- a/src/include.am +++ b/src/include.am @@ -1,130 +1,150 @@ # applications -bin_PROGRAMS = +bin_PROGRAMS = # rules noinst_HEADERS= -# Assets: +# executables definition: MEGACMD = mega-cmd mega-exec mega-cmd-server if BUILD_MEGACMD_TESTS -TESTS = mega-cmd-unit-tests #mega-cmd-integration-tests +TESTS = mega-cmd-unit-tests mega-cmd-integration-tests endif bin_PROGRAMS += $(MEGACMD) $(TESTS) + +# establish dependency with libmega $(MEGACMD): $(top_builddir)/sdk/src/libmega.la + +#scripst (to install and where) megacmdcompletiondir = $(sysconfdir)/bash_completion.d/ megacmdcompletion_DATA = src/client/megacmd_completion.sh megacmdscripts_bindir = $(bindir) megacmdscripts_bin_SCRIPTS = src/client/mega-attr src/client/mega-cd src/client/mega-confirm src/client/mega-cp src/client/mega-debug src/client/mega-du src/client/mega-df src/client/mega-proxy src/client/mega-export src/client/mega-find src/client/mega-get src/client/mega-help src/client/mega-https src/client/mega-webdav src/client/mega-permissions src/client/mega-deleteversions src/client/mega-transfers src/client/mega-import src/client/mega-invite src/client/mega-ipc src/client/mega-killsession src/client/mega-lcd src/client/mega-log src/client/mega-login src/client/mega-logout src/client/mega-lpwd src/client/mega-ls src/client/mega-backup src/client/mega-mkdir src/client/mega-mount src/client/mega-mv src/client/mega-passwd src/client/mega-preview src/client/mega-put src/client/mega-speedlimit src/client/mega-pwd src/client/mega-quit src/client/mega-reload src/client/mega-rm src/client/mega-session src/client/mega-share src/client/mega-showpcr src/client/mega-signup src/client/mega-sync src/client/mega-exclude src/client/mega-thumbnail src/client/mega-userattr src/client/mega-users src/client/mega-version src/client/mega-whoami src/client/mega-cat src/client/mega-tree src/client/mega-mediainfo src/client/mega-graphics src/client/mega-ftp src/client/mega-cancel src/client/mega-confirmcancel src/client/mega-errorcode -#mega_cmddir=examples -############################### SERVER ###################################### -noinst_HEADERS += src/comunicationsmanager.h src/configurationmanager.h src/megacmd.h src/megacmdlogger.h src/megacmdsandbox.h src/megacmdutils.h src/megacmdcommonutils.h src/listeners.h src/megacmdexecuter.h src/megacmdtransfermanager.h src/megacmdversion.h src/megacmdplatform.h src/comunicationsmanagerportsockets.h -mega_cmd_server_SOURCES = src/megacmd.cpp src/megacmd_server_main.cpp src/comunicationsmanager.cpp src/megacmdutils.cpp src/megacmdcommonutils.cpp src/configurationmanager.cpp src/megacmdlogger.cpp src/megacmdsandbox.cpp src/listeners.cpp src/megacmdexecuter.cpp src/megacmdtransfermanager.cpp src/comunicationsmanagerportsockets.cpp -mega_cmd_server_CXXFLAGS = $(LMEGAINC) $(DB_CXXFLAGS) -if USE_PCRE -mega_cmd_server_CXXFLAGS += -DUSE_PCRE=1 +lib_LTLIBRARIES = +noinst_LTLIBRARIES = + +if BUILD_MEGACMD_TESTS +############################ INSTRUMENTS LIBRARY ##################################### +noinst_LTLIBRARIES += src/libmegacmdinstruments.la +noinst_HEADERS += tests/common/Instruments.h + +src_libmegacmdinstruments_la_CXXFLAGS = -std=c++17 #required for instruments stuff +src_libmegacmdinstruments_la_SOURCES = tests/common/Instruments.cpp +############################################################################################## endif -if WIN32 -mega_cmd_server_SOURCES += src/comunicationsmanagernamedpipes.cpp -mega_cmd_server_CXXFLAGS += -D_WIN32=1 -Isdk/include/ -Isdk/include/mega/win32 -mega_cmd_server_LDADD = $(DB_LDFLAGS) $(DB_LIBS) $(LIBS_EXTRA) $(top_builddir)/src/libmega.la $(LIBS_EXTRA) -else -mega_cmd_server_LDADD=$(DB_LDFLAGS) $(DB_LIBS) $(PCRE_LIBS) $(top_builddir)/sdk/src/libmega.la -mega_cmd_server_SOURCES += src/comunicationsmanagerfilesockets.cpp +############################### SERVER LIBRARY ##################################### +noinst_LTLIBRARIES += src/libmegacmdserver.la +src_libmegacmdserver_la_LDFLAGS= + +noinst_HEADERS += src/comunicationsmanager.h src/configurationmanager.h src/megacmd.h src/megacmdlogger.h src/megacmdsandbox.h src/megacmdutils.h src/megacmdcommonutils.h src/listeners.h src/megacmdexecuter.h src/megacmdtransfermanager.h src/megacmdversion.h src/megacmdplatform.h src/comunicationsmanagerportsockets.h +src_libmegacmdserver_la_SOURCES = src/megacmd.cpp src/megacmd_server_main.cpp src/comunicationsmanager.cpp src/megacmdutils.cpp src/megacmdcommonutils.cpp src/configurationmanager.cpp src/megacmdlogger.cpp src/megacmdsandbox.cpp src/listeners.cpp src/megacmdexecuter.cpp src/megacmdtransfermanager.cpp src/comunicationsmanagerportsockets.cpp +src_libmegacmdserver_la_CXXFLAGS = $(LMEGAINC) $(DB_CXXFLAGS) + +if USE_PCRE +src_libmegacmdserver_la_CXXFLAGS += -DUSE_PCRE=1 +endif + +src_libmegacmdserver_la_LIBADD = $(DB_LDFLAGS) $(DB_LIBS) $(PCRE_LIBS) $(top_builddir)/sdk/src/libmega.la + +if !WIN32 +src_libmegacmdserver_la_SOURCES += src/comunicationsmanagerfilesockets.cpp noinst_HEADERS += src/comunicationsmanagerfilesockets.h sdk/include/mega/thread/posixthread.h sdk/include/mega/logging.h +else +src_libmegacmdserver_la_SOURCES += src/comunicationsmanagernamedpipes.cpp +src_libmegacmdserver_la_CXXFLAGS += -D_WIN32=1 -Isdk/include/ -Isdk/include/mega/win32 endif if DARWIN -mega_cmd_server_SOURCES += src/megacmdplatform.mm +src_libmegacmdserver_la_SOURCES += src/megacmdplatform.mm +endif + +if BUILD_MEGACMD_TESTS +src_libmegacmdserver_la_CXXFLAGS += -DMEGACMD_TESTING_CODE=1 +src_libmegacmdserver_la_CXXFLAGS += -std=c++17 #required for instruments stuff +src_libmegacmdserver_la_LIBADD += $(top_builddir)/src/libmegacmdinstruments.la +endif +############################################################################################## + +############################### SERVER ###################################### +mega_cmd_server_SOURCES = src/megacmd_server_main.cpp +mega_cmd_server_LDADD = $(DB_LDFLAGS) $(DB_LIBS) $(LIBS_EXTRA) $(top_builddir)/src/libmegacmdserver.la + +if DARWIN mega_cmd_server_LDFLAGS = -framework Cocoa -framework Security +endif +############################################################################################## + +############################# COMMS AND COMMON UTILS LIBRARY ############################## +noinst_LTLIBRARIES += src/libmegacmdcomms.la +noinst_HEADERS += src/megacmdcommonutils.h src/megacmdshell/megacmdshellcommunications.h src/megacmdshell/megacmdshell.h +src_libmegacmdcomms_la_SOURCES = src/megacmdcommonutils.cpp src/megacmdshell/megacmdshellcommunications.cpp + +if WIN32 +src_libmegacmdcomms_la_SOURCES += src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp sdk/src/thread/win32thread.cpp sdk/src/logging.cpp else - -if ENABLE_STATIC -#mega_cmd_server_LDFLAGS = -Wl,-static -all-static -mega_cmd_server_LDFLAGS = -pthread -mega_cmd_LDFLAGS = -pthread +src_libmegacmdcomms_la_SOURCES += sdk/src/thread/posixthread.cpp sdk/src/logging.cpp endif - -endif - ############################################################################################## #################################### CLIENT ############################################### -noinst_HEADERS += src/megacmdcommonutils.h src/megacmdshell/megacmdshellcommunications.h src/megacmdshell/megacmdshell.h sdk/include/mega/thread.h -mega_exec_SOURCES = src/megacmdcommonutils.cpp src/client/megacmdclient.cpp src/megacmdshell/megacmdshellcommunications.cpp -mega_execdir=examples +noinst_HEADERS += +mega_exec_SOURCES =src/client/megacmdclient.cpp + mega_exec_CXXFLAGS = -Isdk/include/ $(LMEGAINC) - - -if WIN32 -noinst_HEADERS += src/megacmdshell/megacmdshellcommunicationsnamedpipes.h sdk/include/mega/thread.h sdk/include/mega/thread/win32thread.h sdk/include/mega/logging.h -mega_exec_SOURCES += src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp sdk/src/thread/win32thread.cpp sdk/src/logging.cpp -mega_exec_CXXFLAGS += -D_WIN32=1 -mega_exec_LDADD = $(LIBS_EXTRA) -else -mega_exec_SOURCES += sdk/src/thread/posixthread.cpp sdk/src/logging.cpp -endif - -if DARWIN -else -if ENABLE_STATIC -mega_exec_LDFLAGS = -pthread -endif -endif - +mega_exec_LDADD = $(top_builddir)/src/libmegacmdcomms.la ############################################################################################## ############################### SHELL ##################################################### -noinst_HEADERS += src/megacmdcommonutils.h src/megacmdshell/megacmdshellcommunications.h src/megacmdshell/megacmdshell.h sdk/include/mega/thread.h -mega_cmd_SOURCES = src/megacmdcommonutils.cpp src/megacmdshell/megacmdshellcommunications.cpp src/megacmdshell/megacmdshell.cpp +noinst_HEADERS += src/megacmdshell/megacmdshell.h +mega_cmd_SOURCES = src/megacmdshell/megacmdshell.cpp + mega_cmd_CXXFLAGS = $(RL_CXXFLAGS) -Isdk/include/ $(LMEGAINC) -mega_cmd_LDADD = $(RL_LDFLAGS) $(RL_LIBS) $(TERMCAP_LDFLAGS) $(TERMCAP_LIBS) +mega_cmd_LDADD = $(RL_LDFLAGS) $(RL_LIBS) $(TERMCAP_LDFLAGS) $(TERMCAP_LIBS) +mega_cmd_LDADD += $(top_builddir)/src/libmegacmdcomms.la -if WIN32 -mega_cmd_SOURCES += src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp sdk/src/thread/win32thread.cpp sdk/src/logging.cpp -mega_cmd_LDADD += $(LIBS_EXTRA) -else -mega_cmd_SOURCES += sdk/src/thread/posixthread.cpp sdk/src/logging.cpp -endif - -if DARWIN -else -if ENABLE_STATIC -mega_cmd_LDFLAGS = -pthread -endif -endif ############################################################################################## if BUILD_MEGACMD_TESTS -############################### Unit Tests################################################### -noinst_HEADERS += \ - tests/common/Instruments.h \ - tests/common/TestUtils.h +################### Common Tests LIBRARY ########################################### +noinst_LTLIBRARIES += src/libmegacmdtestscommon.la +noinst_HEADERS += tests/common/TestUtils.h +src_libmegacmdtestscommon_la_CXXFLAGS = -std=c++17 #required for testscommon stuff +src_libmegacmdtestscommon_la_SOURCES = \ + tests/common/TestUtils.cpp +############################################################################################## + +############################### Unit Tests ################################################## mega_cmd_unit_tests_SOURCES = \ - tests/common/Instruments.cpp \ - tests/common/TestUtils.cpp \ tests/unit/StringUtilsTests.cpp \ tests/unit/main.cpp - -#Dependencies: -mega_cmd_unit_tests_SOURCES += \ - src/megacmdcommonutils.cpp mega_cmd_unit_tests_CXXFLAGS = -Itests/common/ -Itests/unit/ -Isdk/include/ $(LMEGAINC) mega_cmd_unit_tests_CXXFLAGS += -std=c++17 -mega_cmd_unit_tests_LDADD = -L/$(GTEST_DIR)/lib/ -lgmock -lgtest -lgtest_main # Note, the trailing / is to allow simple --with-gtest (evalving to "yes") - -if DARWIN -else -if ENABLE_STATIC -mega_cmd_unit_tests_LDFLAGS = -pthread -endif -endif +mega_cmd_unit_tests_LDADD = -L/$(GTEST_DIR)/lib/ -lgmock -lgtest -lgtest_main # Note, the trailing / in GTEST_DIR is to allow simple --with-gtest (evalving to "yes") +mega_cmd_unit_tests_LDADD += $(top_builddir)/src/libmegacmdserver.la #to include dependencies of unit-tested code +mega_cmd_unit_tests_LDADD += $(top_builddir)/src/libmegacmdinstruments.la +mega_cmd_unit_tests_LDADD += $(top_builddir)/src/libmegacmdtestscommon.la ############################################################################################## -endif + +############################## Integration Tests ########################################### +mega_cmd_integration_tests_SOURCES = \ + tests/integration/BasicTests.cpp \ + tests/integration/MegaCmdTestingTools.cpp \ + tests/integration/main.cpp + +mega_cmd_integration_tests_CXXFLAGS = -Itests/common/ -Itests/integration/ -Isdk/include/ $(LMEGAINC) +mega_cmd_integration_tests_CXXFLAGS += -std=c++17 + +mega_cmd_integration_tests_LDADD = -L/$(GTEST_DIR)/lib/ -lgmock -lgtest -lgtest_main # Note, the trailing / is to allow simple --with-gtest (evalving to "yes") +mega_cmd_integration_tests_LDADD += $(top_builddir)/src/libmegacmdserver.la +mega_cmd_integration_tests_LDADD += $(top_builddir)/src/libmegacmdinstruments.la +mega_cmd_integration_tests_LDADD += $(top_builddir)/src/libmegacmdtestscommon.la + +############################################################################################## +endif #BUILD_MEGACMD_TESTS From 23efbb9276fb69507a1ff5baaba5ecee382d626f Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 19 Oct 2023 13:17:21 +0200 Subject: [PATCH 3/8] fix autotools compilation (missed adding SDK's includes to some new targets) --- src/include.am | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/include.am b/src/include.am index 3524d27d..fa359a02 100644 --- a/src/include.am +++ b/src/include.am @@ -74,6 +74,8 @@ mega_cmd_server_LDADD = $(DB_LDFLAGS) $(DB_LIBS) $(LIBS_EXTRA) $(top_builddir)/s if DARWIN mega_cmd_server_LDFLAGS = -framework Cocoa -framework Security endif + +mega_cmd_server_CXXFLAGS = $(LMEGAINC) $(DB_CXXFLAGS) ############################################################################################## ############################# COMMS AND COMMON UTILS LIBRARY ############################## @@ -86,6 +88,8 @@ src_libmegacmdcomms_la_SOURCES += src/megacmdshell/megacmdshellcommunicationsnam else src_libmegacmdcomms_la_SOURCES += sdk/src/thread/posixthread.cpp sdk/src/logging.cpp endif + +src_libmegacmdcomms_la_CXXFLAGS = $(LMEGAINC) $(DB_CXXFLAGS) ############################################################################################## #################################### CLIENT ############################################### From a31bb780702ab2fb9ef28f5f6f45803cacdef2bc Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 19 Oct 2023 17:04:52 +0200 Subject: [PATCH 4/8] compile gtests & run unit tests --- build-with-docker/Dockerfile | 3 +++ build-with-docker/builder.sh | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/build-with-docker/Dockerfile b/build-with-docker/Dockerfile index f376892e..278b15db 100644 --- a/build-with-docker/Dockerfile +++ b/build-with-docker/Dockerfile @@ -15,6 +15,9 @@ libsodium-dev libuv1-dev libavcodec-dev libavutil-dev libavformat-dev libswscale RUN wget https://artifactory.developers.mega.co.nz/artifactory/debian-dev/private/Debian_11/amd64/pdfium-mega_5247.0-4.1_amd64.deb RUN apt-get install -y $PWD/pdfium-mega_5247.0-4.1_amd64.deb +#Install gtest +RUN apt-get install -y libgtest-dev + RUN apt-get clean && rm -rf /var/lib/apt/lists/* ENTRYPOINT /opt/builder.sh \ No newline at end of file diff --git a/build-with-docker/builder.sh b/build-with-docker/builder.sh index a4e2b0be..2ea389b7 100644 --- a/build-with-docker/builder.sh +++ b/build-with-docker/builder.sh @@ -18,9 +18,12 @@ exec su - jenkins -c " ./autogen.sh ./sdk/contrib/build_sdk.sh -b -g -f -I -i -s -n -z -o ./3rd_pkgs -p ./3rd_deps rm ./3rd_deps/include/sqlite* ./3rd_deps/lib/libsqlite* || : -./configure --disable-silent-rules --disable-examples --prefix=$volume_dest/installdir --with-curl=$volume_dest/3rd_deps --disable-curl-checks +./configure --disable-silent-rules --disable-examples --prefix=$volume_dest/installdir --with-curl=$volume_dest/3rd_deps --disable-curl-checks --enable-megacmd-tests --with-gtest make clean make make install -" \ No newline at end of file + +#now run the unit tests +$volume_dest/installdir/mega-cmd-unit-tests +" From 1a888ec8c66a1e411b7161fd3918b1354a7fd17c Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 19 Oct 2023 17:29:56 +0200 Subject: [PATCH 5/8] add a word on possibility to use --with-gtest with no value --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 0dacdc28..3fec245b 100644 --- a/configure.ac +++ b/configure.ac @@ -545,7 +545,7 @@ if test "x$enable_megacmd_tests" = "xyes" ; then AC_ARG_WITH(gtest, AS_HELP_STRING(--with-gtest=PATH, specify GTest location), [AC_SUBST([GTEST_DIR],[$with_gtest])], - [AC_MSG_ERROR([GTest location must be specified])] + [AC_MSG_ERROR([GTest location must be specified. You can pass simply "--with-gtest" if expected to be in your include path])] ) fi AM_CONDITIONAL([BUILD_MEGACMD_TESTS], [test "$enable_megacmd_tests" = "yes"]) From 89169a6699a7169f497ec18c1d1d88b923dc7122 Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 19 Oct 2023 17:57:44 +0200 Subject: [PATCH 6/8] have "set -e" added to builder.sh --- build-with-docker/builder.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build-with-docker/builder.sh b/build-with-docker/builder.sh index a4e2b0be..f518a1c6 100644 --- a/build-with-docker/builder.sh +++ b/build-with-docker/builder.sh @@ -15,6 +15,7 @@ ulimit -c unlimited rm -rf installdir || : exec su - jenkins -c " +set -e ./autogen.sh ./sdk/contrib/build_sdk.sh -b -g -f -I -i -s -n -z -o ./3rd_pkgs -p ./3rd_deps rm ./3rd_deps/include/sqlite* ./3rd_deps/lib/libsqlite* || : From 16bb29a8e3d57fc2ff8aa6f818b496e48383fb34 Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 19 Oct 2023 18:06:44 +0200 Subject: [PATCH 7/8] remove unrequired lgmock linkage --- src/include.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/include.am b/src/include.am index fa359a02..26886d14 100644 --- a/src/include.am +++ b/src/include.am @@ -128,7 +128,7 @@ mega_cmd_unit_tests_SOURCES = \ mega_cmd_unit_tests_CXXFLAGS = -Itests/common/ -Itests/unit/ -Isdk/include/ $(LMEGAINC) mega_cmd_unit_tests_CXXFLAGS += -std=c++17 -mega_cmd_unit_tests_LDADD = -L/$(GTEST_DIR)/lib/ -lgmock -lgtest -lgtest_main # Note, the trailing / in GTEST_DIR is to allow simple --with-gtest (evalving to "yes") +mega_cmd_unit_tests_LDADD = -L/$(GTEST_DIR)/lib/ -lgtest -lgtest_main # Note, the trailing / in GTEST_DIR is to allow simple --with-gtest (evalving to "yes") mega_cmd_unit_tests_LDADD += $(top_builddir)/src/libmegacmdserver.la #to include dependencies of unit-tested code mega_cmd_unit_tests_LDADD += $(top_builddir)/src/libmegacmdinstruments.la mega_cmd_unit_tests_LDADD += $(top_builddir)/src/libmegacmdtestscommon.la @@ -143,7 +143,7 @@ mega_cmd_integration_tests_SOURCES = \ mega_cmd_integration_tests_CXXFLAGS = -Itests/common/ -Itests/integration/ -Isdk/include/ $(LMEGAINC) mega_cmd_integration_tests_CXXFLAGS += -std=c++17 -mega_cmd_integration_tests_LDADD = -L/$(GTEST_DIR)/lib/ -lgmock -lgtest -lgtest_main # Note, the trailing / is to allow simple --with-gtest (evalving to "yes") +mega_cmd_integration_tests_LDADD = -L/$(GTEST_DIR)/lib/ -lgtest -lgtest_main # Note, the trailing / is to allow simple --with-gtest (evalving to "yes") mega_cmd_integration_tests_LDADD += $(top_builddir)/src/libmegacmdserver.la mega_cmd_integration_tests_LDADD += $(top_builddir)/src/libmegacmdinstruments.la mega_cmd_integration_tests_LDADD += $(top_builddir)/src/libmegacmdtestscommon.la From 3ec85f862b4a66165a0018af4c002f8728b73f3b Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Thu, 19 Oct 2023 18:41:05 +0200 Subject: [PATCH 8/8] fix path to unit tests --- build-with-docker/builder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-with-docker/builder.sh b/build-with-docker/builder.sh index 2ea389b7..f9108a95 100644 --- a/build-with-docker/builder.sh +++ b/build-with-docker/builder.sh @@ -25,5 +25,5 @@ make make install #now run the unit tests -$volume_dest/installdir/mega-cmd-unit-tests +$volume_dest/installdir/bin/mega-cmd-unit-tests "