1#! /bin/sh 2 3# Copyright (C) 2011 The Libphonenumber Authors 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17# Author: Philippe Liard 18 19# Countinuous integration script that tests the different versions and 20# configurations of libphonenumber. 21 22# Check geocoding resource files encoding. 23(find resources/geocoding -type f | xargs file | egrep -v 'UTF-8|ASCII') && exit 1 24 25# Test the C++ version with the provided CMake parameter. 26CXX=g++ 27INSTALL_PREFIX=/tmp/libphonenumber 28 29test_cpp_version() { 30 CC_TEST_FILE=`mktemp`.cc 31 CC_TEST_BINARY=`mktemp` 32 CMAKE_FLAGS="$1" 33 LD_FLAGS="-L${INSTALL_PREFIX}/lib -lphonenumber -lboost_thread $2" 34 35 # Write the program that tests the installation of the library to a temporary 36 # source file. 37 > $CC_TEST_FILE echo ' 38 #include <cassert> 39 40 #include <base/memory/scoped_ptr.h> 41 42 // Include all the public headers. 43 #include <phonenumbers/asyoutypeformatter.h> 44 #include <phonenumbers/phonenumber.pb.h> 45 #include <phonenumbers/phonenumbermatch.h> 46 #include <phonenumbers/phonenumbermatcher.h> 47 #include <phonenumbers/phonenumberutil.h> 48 49 using i18n::phonenumbers::AsYouTypeFormatter; 50 using i18n::phonenumbers::PhoneNumberUtil; 51 52 int main() { 53 PhoneNumberUtil* const phone_util = PhoneNumberUtil::GetInstance(); 54 const scoped_ptr<AsYouTypeFormatter> asytf( 55 phone_util->GetAsYouTypeFormatter("US")); 56 57 assert(phone_util != NULL); 58 assert(asytf != NULL); 59 }' 60 61 # Run the build and tests. 62 ( 63 set +e 64 rm -rf cpp/build /tmp/libphonenumber 65 mkdir cpp/build /tmp/libphonenumber 66 cd cpp/build 67 cmake "${CMAKE_FLAGS}" -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX .. 68 make test 69 make install 70 $CXX -o $CC_TEST_BINARY $CC_TEST_FILE -I${INSTALL_PREFIX}/include $LD_FLAGS 71 LD_LIBRARY_PATH="${INSTALL_PREFIX}/lib" $CC_TEST_BINARY 72 ) 73 STATUS=$? 74 # Remove the temporary files. 75 rm -f $CC_TEST_FILE 76 rm -f $CC_TEST_BINARY 77 78 [ $STATUS -ne 0 ] && exit $STATUS 79} 80 81BASE_LIBS='-licuuc -lprotobuf' 82 83test_cpp_version '' "$BASE_LIBS" 84test_cpp_version '-DUSE_ICU_REGEXP=ON' "$BASE_LIBS" 85test_cpp_version '-DUSE_LITE_METADATA=ON' '-licuuc -lprotobuf-lite' 86test_cpp_version '-DUSE_RE2=ON' "$BASE_LIBS -lre2" 87test_cpp_version '-DUSE_STD_MAP=ON' "$BASE_LIBS" 88 89# Test Java version using Ant. 90(cd java && ant clean jar && ant junit) || exit $? 91 92# Test Java version using Maven. 93(cd java && mvn clean package) || exit $? 94 95# Test build tools. 96(cd tools/java && mvn clean package) || exit $? 97