diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index df758ac8e..3c0cc3712 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -1,10 +1,9 @@ find_package(ECM ${ECM_VERSION} NO_MODULE) -if( ECM_FOUND ) +if( ECM_FOUND AND BUILD_TESTING ) include( ECMAddTests ) + find_package( Qt5 COMPONENTS Core Test REQUIRED ) endif() -find_package( Qt5 COMPONENTS Core Test REQUIRED ) - include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) set( geoip_src GeoIP.cpp GeoIPFreeGeoIP.cpp ) @@ -40,7 +39,7 @@ calamares_add_plugin( locale SHARED_LIB ) -if( ECM_FOUND ) +if( ECM_FOUND AND BUILD_TESTING ) ecm_add_test( GeoIPTests.cpp ${geoip_src} @@ -55,3 +54,8 @@ if( ECM_FOUND ) ) set_target_properties( geoiptest PROPERTIES AUTOMOC TRUE ) endif() + +if( BUILD_TESTING ) + add_executable( test_geoip test_geoip.cpp ${geoip_src} ) + target_link_libraries( test_geoip calamaresui Qt5::Network ${geoip_libs} ${YAMLCPP_LIBRARY} ) +endif() diff --git a/src/modules/locale/test_geoip.cpp b/src/modules/locale/test_geoip.cpp new file mode 100644 index 000000000..5797ad9ff --- /dev/null +++ b/src/modules/locale/test_geoip.cpp @@ -0,0 +1,73 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +/** + * This is a test-application that does one GeoIP parse. + */ + +#include + +#include "GeoIPFreeGeoIP.h" +#ifdef HAVE_XML +#include "GeoIPXML.h" +#endif + +using std::cerr; + +int main(int argc, char** argv) +{ + if (argc != 2) + { + cerr << "Usage: curl url | test_geoip \n"; + return 1; + } + + GeoIP* handler = nullptr; + if ( QLatin1String( "json" ) == argv[1] ) + handler = new FreeGeoIP; +#ifdef HAVE_XML + else if ( QLatin1String( "xml" ) == argv[1] ) + handler = new XMLGeoIP; +#endif + + if ( !handler ) + { + cerr << "Unknown format '" << argv[1] << "'\n"; + return 1; + } + + QByteArray ba; + while( !std::cin.eof() ) { + char arr[1024]; + std::cin.read(arr,sizeof(arr)); + int s = std::cin.gcount(); + ba.append(arr, s); + } + + auto tz = handler->processReply( ba ); + if ( tz.first.isEmpty() ) + { + std::cout << "No TimeZone determined from input.\n"; + } + else + { + std::cout << "TimeZone Region=" << tz.first.toLatin1().constData() << "\nTimeZone Zone=" << tz.second.toLatin1().constData() << '\n'; + } + + return 0; +}