Merge branch 'master' into dbus-api

This commit is contained in:
Patrick Ohly 2009-10-20 14:32:40 +02:00
commit 607b54860d
30 changed files with 1279 additions and 205 deletions

View file

@ -31,6 +31,7 @@ distbin : README NEWS COPYING $(TEST_README_FILES) INSTALL-tar-gz all
@ [ "$(prefix)" == "/usr" ] || (echo "please reconfigure with --prefix=/usr"; exit 1 )
rm -rf $(distdir)
$(MAKE) DESTDIR=`pwd`/$(distdir) install
$(MAKE) DESTDIR=`pwd`/$(distdir) installcheck
rm -rf $(call DEV_FILE_PATTERN,$(distdir),/usr)
for i in `find $(distdir) -type d | sort -r`; do rmdir $$i 2>/dev/null || true; done
mkdir -p $(distdir)/usr/share/doc/syncevolution
@ -125,6 +126,7 @@ deb rpm : dist/$(distdir) dist/debian/control doc-pak description-pak
dist/$(distdir): all
rm -rf $@
$(MAKE) install DESTDIR=`pwd`/$@
$(MAKE) installcheck DESTDIR=`pwd`/$@
rm -rf $(call DEV_FILE_PATTERN, $@)
clean-local: clean_dist
clean_dist:
@ -192,3 +194,14 @@ dist-hook:
else \
echo A git checkout is required to generate a ChangeLog >&2; \
fi
if ENABLE_EVOLUTION_COMPATIBILITY
installcheck-local:
for i in `find . -name *.so`; do \
if ldd $$i | grep -e libecal -e libebook -e libedata -e libical; then \
echo "$$i should not depend on EDS or libical"; \
objdump -T -C $$i | grep -v :: | grep -e ical -e " e_"; \
exit 1; \
fi \
done
endif

62
NEWS
View file

@ -1,5 +1,51 @@
SyncEvolution 0.9 -> 0.9.1, 06.10.2009
======================================
SyncEvolution 0.9.1 beta 1 -> 0.9.1 beta 2, 19.10.2009
======================================================
Synthesis SyncML Engine version: see src/synthesis/ChangeLog
Several fixes:
* Receiving photos from Mobical failed because Mobical
does not quite follow the vCard 2.1 (Moblin Bugzilla #6668).
Sending photos worked, but added a few bytes of garbage
at the end of each photo (typically ignored when showing).
Parser was made more tolerant by Synthesis and encoder bug
was fixed.
* Task priorities used by Mobical and Evolution did not match:
vCalendar 1.0 uses 1-3, iCalendar 2.0 uses 1-9 (MB #6664).
SyncEvolution now translates between the two ranges, with
some information getting lost when talking to a peer which
only supports the smaller range.
* The workaround for detecting an endless stream of Alert 222
messages (caused by misbehavior of certain servers when
a specific message has to be resent) aborted certain
valid (albeit somewhat pathologic) sync sessions. Improved
the heuristic so that it still catches the real loop without
aborting in that other case.
* sync-ui: now disables sources which are not supported when
setting up a configuration, like memos on Moblin (MB #6672).
Previously the source was enabled, which prevented using
using the configuration as-is on the command line.
* .rpms on syncevolution.org no longer specify a dependency
on certain Perl features. This depencency was a problem on
Mandriva. Unwanted hard dependencies on libecal in syncevolution.org
binaries are avoided for real this time (MB#6552).
* Trying to remove a non-existent configuration via the command
line now raises an error, to catch typos (MB #6673).
* Message resend options: added sanity checks to catch negative
values, clarified that duration is given in seconds, 0s resend
interval disables resending (MB #6500).
* Spelling fix: "aboring" => "aborting"
SyncEvolution 0.9 -> 0.9.1 beta 1, 06.10.2009
=============================================
Synthesis SyncML Engine version: see src/synthesis/ChangeLog
Mobical and Memotoo are now officially supported.
@ -17,16 +63,18 @@ and on the server, no support for meetings). For details see
README.mobical.
*** Beware *** that the Mobical SyncML password is *not* the same as
the one for their web site. Log into mobical.net, the go to "my accounts
the one for their web site. Log into mobical.net, then go to "my accounts
>> configure new device >> manual settings" to find the SyncML
credentials.
It is now possible to compile database backends outside of
SyncEvolution, install them and have SyncEvolution use them
automatically like any other backend. The backend API has been
enhanced considerably. Backend developers now have access to a modular
set of utility classes that can be mixed into a specific
implementation.
enhanced considerably. For example, backend developers have
access to a modular set of utility classes that can be mixed
into a specific implementation. Backends can access the internal
Synthesis representation directly and therefore no longer need
their own vCard/vCalendar/iCalendar parser.
The sqlite demo backend can be enabled and compiled again with
--enable-sqlite. It demonstrates how to map directly from the
@ -45,7 +93,7 @@ Other changes:
* The sync UI allowed to enable calendar and task synchronization
with Google although Google does not support that (MB#5871).
In new installations this is prevented now by clearing the URI
In new installations this is prevented by clearing the URI
for those data categories.
* Importing work and home phone numbers from Google into desktop

View file

@ -69,6 +69,7 @@ dnl --enable-evolution-compatibility
if test "$enable_evolution_compatibility" == "yes"; then
AC_DEFINE(EVOLUTION_COMPATIBILITY, 1, [avoid hard dependency on Evolution shared objects])
fi
AM_CONDITIONAL([ENABLE_EVOLUTION_COMPATIBILITY], [test "$enable_evolution_compatibility" == "yes"])
dnl --enable-developer-mode
if test "$enable_developer_mode" == "yes"; then

View file

@ -1,7 +1,7 @@
dnl -*- mode: Autoconf; -*-
dnl Invoke autogen.sh to produce a configure script.
AC_INIT([syncevolution], [0.9+0.9.1beta1])
AC_INIT([syncevolution], [0.9+0.9.1beta2])
AM_INIT_AUTOMAKE([tar-ustar])
AC_CONFIG_MACRO_DIR([m4])
define([SYNTHESISSRC_REPO], [])

560
po/gl.po Normal file
View file

@ -0,0 +1,560 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
#: ../src/gtk-ui/sync-ui.c:764
# Xosé <xosecalvo@gmail.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: http://moblin.org/projects/syncevolution\n"
"POT-Creation-Date: 2009-10-01 19:27+0000\n"
"PO-Revision-Date: 2009-10-14 21:52+0200\n"
"Last-Translator: Xosé <xosecalvo@gmail.com>\n"
"Language-Team: Galego <proxecto@trasno.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 1.0\n"
#. TRANSLATORS: this is the application name that may be used by e.g.
#. the windowmanager
#: ../src/gtk-ui/main.c:31 ../src/gtk-ui/ui.glade.h:28
#: ../src/gtk-ui/sync.desktop.in.h:1
msgid "Sync"
msgstr "Sincronizar"
#: ../src/gtk-ui/sync-ui.c:259
msgid "Addressbook"
msgstr "Caderno de enderezos"
#: ../src/gtk-ui/sync-ui.c:261
msgid "Calendar"
msgstr "Calendario"
#: ../src/gtk-ui/sync-ui.c:263
msgid "Todo"
msgstr "Tarefa"
#: ../src/gtk-ui/sync-ui.c:265
msgid "Memo"
msgstr "Nota"
#: ../src/gtk-ui/sync-ui.c:320
msgid "Failed to save current service in GConf configuration system"
msgstr ""
"Non foi posíbel gravar o servizo actual no sistema de configuración GConf"
#: ../src/gtk-ui/sync-ui.c:331
msgid "Failed to save service configuration to SyncEvolution"
msgstr "Non foi posíbel gravar a configuración do servizo en SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:416
msgid "Failed to get service configuration from SyncEvolution"
msgstr "Fallou a obtención da configuración do servizo do SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:479
msgid "Failed to remove service configuration from SyncEvolution"
msgstr "Fallou a eliminación da configuración do servizo do SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:599
msgid "Service must have a name and server URL"
msgstr "O servizo ten que ter un nome e un URL de servidor"
#. sync is no longer in progress for some reason
#: ../src/gtk-ui/sync-ui.c:675
msgid "Failed to cancel: sync was no longer in progress"
msgstr "Fallou a cancelación: xa non se está a sincronizar"
#: ../src/gtk-ui/sync-ui.c:679
msgid "Failed to cancel sync"
msgstr "Fallou a cancelación da sincronización"
#: ../src/gtk-ui/sync-ui.c:683
msgid "Canceling sync"
msgstr "A cancelar a sincronización"
#: ../src/gtk-ui/sync-ui.c:697
msgid "Trying to cancel sync"
msgstr "A tentar cancelar a sincronización"
#: ../src/gtk-ui/sync-ui.c:704
#, c-format
msgid ""
"Do you want to delete all local data and replace it with data from %s? This "
"is not usually advised."
msgstr ""
"Quere eliminar todos os datos locais e substituílos por %s? Normalmente non "
"se recomenda isto."
#: ../src/gtk-ui/sync-ui.c:709
#, c-format
msgid ""
"Do you want to delete all data in %s and replace it with your local data? "
"This is not usually advised."
msgstr ""
"Quere eliminar todos os datos de %s e substituílos polos seus datos locais? "
"Normalmente non se recomenda isto."
#: ../src/gtk-ui/sync-ui.c:726
msgid "No, cancel sync"
msgstr "Non, cancelar a sincronización"
#: ../src/gtk-ui/sync-ui.c:727
msgid "Yes, delete and replace"
msgstr "Si, eliminar e substituír"
#: ../src/gtk-ui/sync-ui.c:749
msgid "No sources are enabled, not syncing"
msgstr "Non se activou ningunha fonte, non se sincroniza"
#: ../src/gtk-ui/sync-ui.c:766
msgid "A sync is already in progress"
msgstr "Xa hai unha sincronización en proceso"
#: ../src/gtk-ui/sync-ui.c:768
msgid "Failed to start sync"
msgstr "Foi imposíbel comezar a sincronización"
#: ../src/gtk-ui/sync-ui.c:773
msgid "Starting sync"
msgstr "A comezar a sincronización"
#: ../src/gtk-ui/sync-ui.c:798
msgid "Last synced just seconds ago"
msgstr "Sincronizouse por última vez só hai uns segundos"
#: ../src/gtk-ui/sync-ui.c:801
msgid "Last synced a minute ago"
msgstr "Sincronizouse por última vez hai un minuto"
#: ../src/gtk-ui/sync-ui.c:804
#, c-format
msgid "Last synced %ld minutes ago"
msgstr "Sincronizouse por última vez hai %ld minutos"
#: ../src/gtk-ui/sync-ui.c:807
msgid "Last synced an hour ago"
msgstr "Sincronizouse por última vez hai unha hora"
#: ../src/gtk-ui/sync-ui.c:810
#, c-format
msgid "Last synced %ld hours ago"
msgstr "Sincronizouse por última vez hai %ld horas"
#: ../src/gtk-ui/sync-ui.c:813
msgid "Last synced a day ago"
msgstr "Sincronizouse por última vez hai un día"
#: ../src/gtk-ui/sync-ui.c:816
#, c-format
msgid "Last synced %ld days ago"
msgstr "Sincronizouse por última vez hai %ld días"
#: ../src/gtk-ui/sync-ui.c:901
msgid "Sync again"
msgstr "Sincronizar de novo"
#: ../src/gtk-ui/sync-ui.c:903 ../src/gtk-ui/ui.glade.h:29
msgid "Sync now"
msgstr "Sincronizar agora"
#: ../src/gtk-ui/sync-ui.c:912
msgid "Syncing"
msgstr "A sincronizar"
#: ../src/gtk-ui/sync-ui.c:918
msgid "Cancel sync"
msgstr "Cancelar a sincronización"
#. TRANSLATORS: placeholder is a source name, shown with checkboxes in main window
#: ../src/gtk-ui/sync-ui.c:1265
#, c-format
msgid "%s (not supported by this service)"
msgstr "%s (non admitido por este servizo)"
#: ../src/gtk-ui/sync-ui.c:1298
#, c-format
msgid "There was one remote rejection."
msgid_plural "There were %d remote rejections."
msgstr[0] "Houbo un rexeitamento remoto."
msgstr[1] "Houbo %d rexeitamentos remotos."
#: ../src/gtk-ui/sync-ui.c:1303
#, c-format
msgid "There was one local rejection."
msgid_plural "There were %d local rejections."
msgstr[0] "Houbo un rexeitamento local."
msgstr[1] "Houbo %d rexeitamentos locais."
#: ../src/gtk-ui/sync-ui.c:1308
#, c-format
msgid "There were %d local rejections and %d remote rejections."
msgstr "Houbo %d rexeitamentos locais e %d rexeitamentos remotos."
#: ../src/gtk-ui/sync-ui.c:1313
#, c-format
msgid "Last time: No changes."
msgstr "Última vez: Sen cambios."
#: ../src/gtk-ui/sync-ui.c:1315
#, c-format
msgid "Last time: Sent one change."
msgid_plural "Last time: Sent %d changes."
msgstr[0] "Última vez: Enviouse un cambio."
msgstr[1] "Última vez: Enviáronse %d cambios."
#. This is about changes made to the local data. Not all of these
#. changes were requested by the remote server, so "applied"
#. is a better word than "received" (bug #5185).
#: ../src/gtk-ui/sync-ui.c:1323
#, c-format
msgid "Last time: Applied one change."
msgid_plural "Last time: Applied %d changes."
msgstr[0] "Última vez: Aplicouse un cambio."
msgstr[1] "Última vez: Aplicáronse %d cambios."
#: ../src/gtk-ui/sync-ui.c:1328
#, c-format
msgid "Last time: Applied %d changes and sent %d changes."
msgstr "Última vez: Aplicáronse %d cambios e enviáronse %d cambios."
#: ../src/gtk-ui/sync-ui.c:1420
msgid "Failed to get server configuration from SyncEvolution"
msgstr "Fallou a obtención da configuración do servidor do SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:1472
msgid ""
"ScheduleWorld enables you to keep your contacts, events, tasks, and notes in "
"sync."
msgstr ""
"ScheduleWorld permite manter os contactos, eventos, tarefas e notas en "
"sincronía."
#: ../src/gtk-ui/sync-ui.c:1475
msgid ""
"Google Sync can backup and synchronize your Address Book with your Gmail "
"contacts."
msgstr ""
"Google Sync pode crear unha copia de seguranza e sincronizar o seu caderno "
"de enderezos cos seus contactos de Gmail."
#. TRANSLATORS: Please include the word "demo" (or the equivalent in
#. your language): Funambol is going to be a 90 day demo service
#. in the future
#: ../src/gtk-ui/sync-ui.c:1481
msgid ""
"Backup your contacts and calendar. Sync with a singleclick, anytime, "
"anywhere (DEMO)."
msgstr ""
"Faga unha copia de seguranza dos seus contactos e do seu calendario. "
"Sincronice con só premer unha tecla, en calquera momento, en calquera lugar "
"(DEMOSTRACIÓN)."
#: ../src/gtk-ui/sync-ui.c:1509
msgid "New service"
msgstr "Novo servizo"
#: ../src/gtk-ui/sync-ui.c:1556
msgid "Server URL"
msgstr "URL do servidor"
#. TRANSLATORS: placeholder is a source name in settings window
#: ../src/gtk-ui/sync-ui.c:1578
#, c-format
msgid "%s URI"
msgstr "URI %s"
#: ../src/gtk-ui/sync-ui.c:1715 ../src/gtk-ui/ui.glade.h:17
msgid "Launch website"
msgstr "Lanzar un sitio web"
#: ../src/gtk-ui/sync-ui.c:1719
msgid "Setup and use"
msgstr "Configurar e utilizar"
#: ../src/gtk-ui/sync-ui.c:1765
msgid "Failed to get list of manually setup services from SyncEvolution"
msgstr ""
"Fallou a obtención da listaxe de servizos de configuración manuais do "
"SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:1806
msgid "Failed to get list of supported services from SyncEvolution"
msgstr "Fallou a obtención da listaxe de servizos admitidos do SyncEvolution"
#. TODO: this is a hack... SyncEnd should be a signal of it's own,
#. not just hacked on top of the syncevolution error codes
#: ../src/gtk-ui/sync-ui.c:1967
msgid "Service configuration not found"
msgstr "Non se atopou a configuración do servizo"
#: ../src/gtk-ui/sync-ui.c:1973
msgid "Not authorized"
msgstr "Non ten autorización"
#: ../src/gtk-ui/sync-ui.c:1975
msgid "Forbidden"
msgstr "Prohibido"
#: ../src/gtk-ui/sync-ui.c:1977
msgid "Not found"
msgstr "Non se atopa"
#: ../src/gtk-ui/sync-ui.c:1979
msgid "Fatal database error"
msgstr "Houbo un erro moi grave da base de datos"
#: ../src/gtk-ui/sync-ui.c:1981
msgid "Database error"
msgstr "Erro da base de datos"
#: ../src/gtk-ui/sync-ui.c:1983
msgid "No space left"
msgstr "Non hai espazo de abondo"
#. TODO identify problem item somehow ?
#: ../src/gtk-ui/sync-ui.c:1986
msgid "Failed to process SyncML"
msgstr "Fallou o procesamento de SyncML"
#: ../src/gtk-ui/sync-ui.c:1988
msgid "Server authorization failed"
msgstr "Fallou a autenticación do servidor"
#: ../src/gtk-ui/sync-ui.c:1990
msgid "Failed to parse configuration file"
msgstr "Fallou a análise do ficheiro de configuración"
#: ../src/gtk-ui/sync-ui.c:1992
msgid "Failed to read configuration file"
msgstr "Fallou a lectura do ficheiro de configuración"
#: ../src/gtk-ui/sync-ui.c:1994
msgid "No configuration found"
msgstr "Non se atopou ningunha configuración"
#: ../src/gtk-ui/sync-ui.c:1996
msgid "No configuration file found"
msgstr "Non se atopou ningún ficheiro de configuración"
#: ../src/gtk-ui/sync-ui.c:1998
msgid "Server sent bad content"
msgstr "O servidor enviou contento incorrecto"
#: ../src/gtk-ui/sync-ui.c:2000
msgid "Transport failure (no connection?)"
msgstr "Houbo un fallo do transporte (non hai conexión?)"
#: ../src/gtk-ui/sync-ui.c:2002
msgid "Connection timed out"
msgstr "A conexión excedeu o tempo de espera"
#: ../src/gtk-ui/sync-ui.c:2004
msgid "Connection certificate has expired"
msgstr "Caducou o certificado da conexión"
#: ../src/gtk-ui/sync-ui.c:2006
msgid "Connection certificate is invalid"
msgstr "O certificado da conexión non é válido"
#: ../src/gtk-ui/sync-ui.c:2009
msgid "Connection failed"
msgstr "Fallou a conexión"
#: ../src/gtk-ui/sync-ui.c:2011
msgid "URL is bad"
msgstr "O URL é incorrecto"
#: ../src/gtk-ui/sync-ui.c:2013
msgid "Server not found"
msgstr "Non se atopa o servidor"
#: ../src/gtk-ui/sync-ui.c:2015
#, c-format
msgid "Error %d"
msgstr "Erro %d"
#: ../src/gtk-ui/sync-ui.c:2025
msgid "Sync D-Bus service exited unexpectedly"
msgstr "O servizo Sync D-Bus saíu inesperadamente"
#: ../src/gtk-ui/sync-ui.c:2028 ../src/gtk-ui/sync-ui.c:2079
msgid "Sync Failed"
msgstr "Fallou a sincronización"
#: ../src/gtk-ui/sync-ui.c:2071
msgid "Sync complete"
msgstr "Rematou a sincronización"
#: ../src/gtk-ui/sync-ui.c:2076
msgid "Sync canceled"
msgstr "Cancelouse a sincronización"
#. NOTE extra1 can be error here
#: ../src/gtk-ui/sync-ui.c:2094
msgid "Ending sync"
msgstr "A rematar a sincronización"
#. TRANSLATORS: placeholder is a source name (e.g. 'Calendar') in a progress text
#: ../src/gtk-ui/sync-ui.c:2118
#, c-format
msgid "Preparing '%s'"
msgstr "A preparar \"%s\""
#. TRANSLATORS: placeholder is a source name in a progress text
#: ../src/gtk-ui/sync-ui.c:2130
#, c-format
msgid "Sending '%s'"
msgstr "A enviar \"%s\""
#. TRANSLATORS: placeholder is a source name in a progress text
#: ../src/gtk-ui/sync-ui.c:2142
#, c-format
msgid "Receiving '%s'"
msgstr "A recibir \"%s\""
#: ../src/gtk-ui/ui.glade.h:1
msgid "<b>Data</b>"
msgstr "<b>Datos</b>"
#: ../src/gtk-ui/ui.glade.h:2
msgid "<b>No sync service in use</b>"
msgstr "<b>Non hai ningún servizo de sincronización en uso</b>"
#: ../src/gtk-ui/ui.glade.h:3
msgid "<b>Sync failure</b>"
msgstr "<b>Fallo da sincronización</b>"
#: ../src/gtk-ui/ui.glade.h:4
msgid "<b>Type of Sync</b>"
msgstr "<b>Tipo de sincronización</b>"
#: ../src/gtk-ui/ui.glade.h:5
msgid "<big>Manual setup</big>"
msgstr "<big>Configuración manual</big>"
#: ../src/gtk-ui/ui.glade.h:6
msgid "<big>Supported services</big>"
msgstr "<big>Servizos admitidos</big>"
#: ../src/gtk-ui/ui.glade.h:7
msgid "Add new service"
msgstr "Engadir un servizo novo"
#: ../src/gtk-ui/ui.glade.h:8
msgid "Back to sync"
msgstr "Volver á sincronización"
#: ../src/gtk-ui/ui.glade.h:9
msgid ""
"Change sync\n"
"service"
msgstr ""
"Mudar de servizo\n"
"de sincronización"
#: ../src/gtk-ui/ui.glade.h:11
msgid "Delete all local data and replace it with remote data"
msgstr "Eliminar todos os datos locais e substituílos por datos remotos"
#: ../src/gtk-ui/ui.glade.h:12
msgid "Delete all remote data and replace it with local data"
msgstr "Eliminar todos os datos remotos e substituílos por datos locais"
#: ../src/gtk-ui/ui.glade.h:13
msgid "Delete this service"
msgstr "Eliminar este servizo"
#: ../src/gtk-ui/ui.glade.h:14
msgid "Edit service settings"
msgstr "Modificar a configuración do servizo"
#: ../src/gtk-ui/ui.glade.h:15
msgid ""
"If you don't see your service above but know that your sync provider uses "
"SyncML\n"
"you can setup a service manually."
msgstr ""
"Se non ve o servizo arriba mais saibe que o fornecedor de sincronización "
"emprega SyncML,\n"
"pode configurar un servizo manualmente."
#: ../src/gtk-ui/ui.glade.h:18
msgid "Merge local and remote data (recommended)"
msgstr "Fusionar os datos locais e os remotos (recomendado)"
#: ../src/gtk-ui/ui.glade.h:19
msgid "Password"
msgstr "Contrasinal"
#: ../src/gtk-ui/ui.glade.h:20
msgid "Reset original server settings"
msgstr "Restaurar a configuración orixinal do servidor"
#: ../src/gtk-ui/ui.glade.h:21
msgid "Save and use this service"
msgstr "Gardar e empregar este servizo"
#: ../src/gtk-ui/ui.glade.h:22
msgid "Select sync service"
msgstr "Seleccionar o servizo de sincronización"
#: ../src/gtk-ui/ui.glade.h:23
msgid "Server settings"
msgstr "Configuración do servidor"
#: ../src/gtk-ui/ui.glade.h:24
msgid "Service name"
msgstr "Nome do servizo"
#: ../src/gtk-ui/ui.glade.h:25
msgid ""
"Sorry, you need an internet\n"
"connection to sync."
msgstr ""
"Desculpe, precisa dunha ligazón\n"
"á Internet para sincronizar."
#: ../src/gtk-ui/ui.glade.h:27
msgid "Stop using this service"
msgstr "Deixar de empregar este servizo"
#: ../src/gtk-ui/ui.glade.h:30
msgid ""
"Synchronization is not available (D-Bus service does not answer), sorry."
msgstr ""
"A sincronización non está dispoñíbel (o servizo D-Bus non responde). "
"Desculpas."
#: ../src/gtk-ui/ui.glade.h:31
msgid ""
"To sync you'll need a network connection and an account with a sync "
"service.\n"
"We support the following services: "
msgstr ""
"Para sincronizar é precisa unha conexión á rede e unha conta con servizo de "
"sincronización.\n"
"Admitimos os servizos seguintes: "
#: ../src/gtk-ui/ui.glade.h:33
msgid "Username"
msgstr "Nome de usuario"
#: ../src/gtk-ui/ui.glade.h:34
msgid ""
"You haven't selected a sync service yet. Sync services let you \n"
"synchronize your data between your netbook and a web service."
msgstr ""
"Aínda non seleccionou ningún servizo de sincronización. Os servizos de "
"sincronización\n"
" permiten sincronizar os datos entre o seu portátil e un servizo web."
#: ../src/gtk-ui/sync.desktop.in.h:2 ../src/gtk-ui/sync-gtk.desktop.in.h:2
msgid "Up to date"
msgstr "Actualizado"
#: ../src/gtk-ui/sync-gtk.desktop.in.h:1
msgid "Sync (GTK)"
msgstr "Sincronizar (GTK)"

274
po/id.po
View file

@ -1,366 +1,410 @@
#: ../src/gtk-ui/sync-ui.c:764
msgid ""
msgstr ""
"Project-Id-Version: syncevolution\n"
"Report-Msgid-Bugs-To: http://moblin.org/projects/syncevolution\n"
"POT-Creation-Date: 2009-08-26 09:22+0000\n"
"POT-Creation-Date: 2009-10-01 19:27+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Indonesian\n"
"X-Poedit-Country: INDONESIA\n"
"X-Poedit-SourceCharset: utf-8\n"
"PO-Revision-Date: \n"
"Language-Team: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\\n\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../src/gtk-ui/sync-ui.c:258
#. TRANSLATORS: this is the application name that may be used by e.g.
#. the windowmanager
#: ../src/gtk-ui/main.c:31 ../src/gtk-ui/ui.glade.h:28
#: ../src/gtk-ui/sync.desktop.in.h:1
msgid "Sync"
msgstr "Selaraskan"
#: ../src/gtk-ui/sync-ui.c:259
msgid "Addressbook"
msgstr "Buku Alamat"
#: ../src/gtk-ui/sync-ui.c:260
#: ../src/gtk-ui/sync-ui.c:261
msgid "Calendar"
msgstr "Kalender"
#: ../src/gtk-ui/sync-ui.c:262
#: ../src/gtk-ui/sync-ui.c:263
msgid "Todo"
msgstr "Todo"
#: ../src/gtk-ui/sync-ui.c:264
#: ../src/gtk-ui/sync-ui.c:265
msgid "Memo"
msgstr "Memo"
#: ../src/gtk-ui/sync-ui.c:319
#: ../src/gtk-ui/sync-ui.c:320
msgid "Failed to save current service in GConf configuration system"
msgstr "Gagal menyimpan layanan kini ke sistem konfigurasi GConf"
#: ../src/gtk-ui/sync-ui.c:330
#: ../src/gtk-ui/sync-ui.c:331
msgid "Failed to save service configuration to SyncEvolution"
msgstr "Gagal menyimpan konfigurasi layanan ke SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:415
#: ../src/gtk-ui/sync-ui.c:416
msgid "Failed to get service configuration from SyncEvolution"
msgstr "Gagal mendapat konfigurasi layanan dari SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:478
#: ../src/gtk-ui/sync-ui.c:479
msgid "Failed to remove service configuration from SyncEvolution"
msgstr "Gagal menghapus konfigurasi layanan dari SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:598
#: ../src/gtk-ui/sync-ui.c:599
msgid "Service must have a name and server URL"
msgstr "Layanan mesti punya URL server dan nama"
#. sync is no longer in progress for some reason
#: ../src/gtk-ui/sync-ui.c:674
#: ../src/gtk-ui/sync-ui.c:675
msgid "Failed to cancel: sync was no longer in progress"
msgstr "Gagal membatalkan: sync tak lagi sedang berlangsung"
#: ../src/gtk-ui/sync-ui.c:678
#: ../src/gtk-ui/sync-ui.c:679
msgid "Failed to cancel sync"
msgstr "Gagal membatalkan sync"
#: ../src/gtk-ui/sync-ui.c:682
#: ../src/gtk-ui/sync-ui.c:683
msgid "Canceling sync"
msgstr "Membatalkan sync"
#: ../src/gtk-ui/sync-ui.c:696
#: ../src/gtk-ui/sync-ui.c:697
msgid "Trying to cancel sync"
msgstr "Mencoba membatalkan sync"
#: ../src/gtk-ui/sync-ui.c:703
#: ../src/gtk-ui/sync-ui.c:704
#, c-format
msgid "Do you want to delete all local data and replace it with data from %s? This is not usually advised."
msgstr "Apakah Anda ingin menghapus semua data lokal dan menggantinya dengan data dari %s? Ini biasanya tak disarankan."
msgid ""
"Do you want to delete all local data and replace it with data from %s? This "
"is not usually advised."
msgstr ""
"Apakah Anda ingin menghapus semua data lokal dan menggantinya dengan data "
"dari %s? Ini biasanya tak disarankan."
#: ../src/gtk-ui/sync-ui.c:708
#: ../src/gtk-ui/sync-ui.c:709
#, c-format
msgid "Do you want to delete all data in %s and replace it with your local data? This is not usually advised."
msgstr "Apakah Anda ingin menghapus semua data di %s dan menggantinya dengan data lokal Anda? Biasanya ini tak disarankan."
msgid ""
"Do you want to delete all data in %s and replace it with your local data? "
"This is not usually advised."
msgstr ""
"Apakah Anda ingin menghapus semua data di %s dan menggantinya dengan data "
"lokal Anda? Biasanya ini tak disarankan."
#: ../src/gtk-ui/sync-ui.c:725
#: ../src/gtk-ui/sync-ui.c:726
msgid "No, cancel sync"
msgstr "Tidak, batalkan sync"
#: ../src/gtk-ui/sync-ui.c:726
#: ../src/gtk-ui/sync-ui.c:727
msgid "Yes, delete and replace"
msgstr "Ya, hapus dan gantikan"
#: ../src/gtk-ui/sync-ui.c:748
#: ../src/gtk-ui/sync-ui.c:749
msgid "No sources are enabled, not syncing"
msgstr "Tak ada sumber yang diaktifkan, tak menyelaraskan"
#: ../src/gtk-ui/sync-ui.c:765
#: ../src/gtk-ui/sync-ui.c:766
msgid "A sync is already in progress"
msgstr "Syns sedang berlangsung"
#: ../src/gtk-ui/sync-ui.c:767
#: ../src/gtk-ui/sync-ui.c:768
msgid "Failed to start sync"
msgstr "Gagal memulai sync"
#: ../src/gtk-ui/sync-ui.c:772
#: ../src/gtk-ui/sync-ui.c:773
msgid "Starting sync"
msgstr "Memulai sync"
#: ../src/gtk-ui/sync-ui.c:797
#: ../src/gtk-ui/sync-ui.c:798
msgid "Last synced just seconds ago"
msgstr "Diselaraskan terakhir beberapa detik yang lalu"
#: ../src/gtk-ui/sync-ui.c:800
#: ../src/gtk-ui/sync-ui.c:801
msgid "Last synced a minute ago"
msgstr "Diselaraskan terakhir semenit yang lalu"
#: ../src/gtk-ui/sync-ui.c:803
#: ../src/gtk-ui/sync-ui.c:804
#, c-format
msgid "Last synced %ld minutes ago"
msgstr "Diselaraskan terakhir %ld menit yang lalu"
#: ../src/gtk-ui/sync-ui.c:806
#: ../src/gtk-ui/sync-ui.c:807
msgid "Last synced an hour ago"
msgstr "Diselaraskan terakhir sejam yang lalu"
#: ../src/gtk-ui/sync-ui.c:809
#: ../src/gtk-ui/sync-ui.c:810
#, c-format
msgid "Last synced %ld hours ago"
msgstr "Diselaraskan terakhir %ld jam yang lalu"
#: ../src/gtk-ui/sync-ui.c:812
#: ../src/gtk-ui/sync-ui.c:813
msgid "Last synced a day ago"
msgstr "Diselaraskan terakhir sehari yang lalu"
#: ../src/gtk-ui/sync-ui.c:815
#: ../src/gtk-ui/sync-ui.c:816
#, c-format
msgid "Last synced %ld days ago"
msgstr "Diselaraskan terakhir %ld hari yang lalu"
#: ../src/gtk-ui/sync-ui.c:900
#: ../src/gtk-ui/sync-ui.c:901
msgid "Sync again"
msgstr "Sync lagi"
#: ../src/gtk-ui/sync-ui.c:902
#: ../src/gtk-ui/ui.glade.h:29
#: ../src/gtk-ui/sync-ui.c:903 ../src/gtk-ui/ui.glade.h:29
msgid "Sync now"
msgstr "Sync sekarang"
#: ../src/gtk-ui/sync-ui.c:911
#: ../src/gtk-ui/sync-ui.c:912
msgid "Syncing"
msgstr "Menyelaraskan"
#: ../src/gtk-ui/sync-ui.c:917
#: ../src/gtk-ui/sync-ui.c:918
msgid "Cancel sync"
msgstr "Batalkan sync"
#. TRANSLATORS: placeholder is a source name, shown with checkboxes in main window
#: ../src/gtk-ui/sync-ui.c:1261
#: ../src/gtk-ui/sync-ui.c:1265
#, c-format
msgid "%s (not supported by this service)"
msgstr "%s (tak didukung oleh layanan ini)"
#: ../src/gtk-ui/sync-ui.c:1294
#: ../src/gtk-ui/sync-ui.c:1298
#, c-format
msgid "There was one remote rejection."
msgid_plural "There were %d remote rejections."
msgstr[0] "Ada satu penolakan remote."
msgstr[1] "Ada %d penolakan remote."
#: ../src/gtk-ui/sync-ui.c:1299
#: ../src/gtk-ui/sync-ui.c:1303
#, c-format
msgid "There was one local rejection."
msgid_plural "There were %d local rejections."
msgstr[0] "Ada satu penolakan lokal."
msgstr[1] "Ada %d penolakan lokal."
#: ../src/gtk-ui/sync-ui.c:1304
#: ../src/gtk-ui/sync-ui.c:1308
#, c-format
msgid "There were %d local rejections and %d remote rejections."
msgstr "Ada %d penolakan lokal dan %d penolakan "
#: ../src/gtk-ui/sync-ui.c:1309
#: ../src/gtk-ui/sync-ui.c:1313
#, c-format
msgid "Last time: No changes."
msgstr "Terakhir kali: Tak ada perubahan."
#: ../src/gtk-ui/sync-ui.c:1311
#: ../src/gtk-ui/sync-ui.c:1315
#, c-format
msgid "Last time: Sent one change."
msgid_plural "Last time: Sent %d changes."
msgstr[0] "Terakhir kali: Dikirim satu perubahan."
msgstr[1] "Terakhir kali: Dikirim %d perubahan."
#: ../src/gtk-ui/sync-ui.c:1316
#. This is about changes made to the local data. Not all of these
#. changes were requested by the remote server, so "applied"
#. is a better word than "received" (bug #5185).
#: ../src/gtk-ui/sync-ui.c:1323
#, c-format
msgid "Last time: Received one change."
msgid_plural "Last time: Received %d changes."
msgstr[0] "Terakhir kali: Diterima satu perubahan."
msgstr[1] "Terakhir kali: Diterima %d perubahan."
msgid "Last time: Applied one change."
msgid_plural "Last time: Applied %d changes."
msgstr[0] "Terakhir kali: Diterapkan satu perubahan."
msgstr[1] "Terakhir kali: Diterapkan %d perubahan."
#: ../src/gtk-ui/sync-ui.c:1321
#: ../src/gtk-ui/sync-ui.c:1328
#, c-format
msgid "Last time: Received %d changes and sent %d changes."
msgstr "Terakhir kali: Diterima %d perubahan dan dikirim %d perubahan."
msgid "Last time: Applied %d changes and sent %d changes."
msgstr "Terakhir kali: Diterapkan %d perubahan dan dikirim %d perubahan."
#: ../src/gtk-ui/sync-ui.c:1413
#: ../src/gtk-ui/sync-ui.c:1420
msgid "Failed to get server configuration from SyncEvolution"
msgstr "Gagal mendapat konfigurasi server dari SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:1479
#: ../src/gtk-ui/sync-ui.c:1472
msgid ""
"ScheduleWorld enables you to keep your contacts, events, tasks, and notes in "
"sync."
msgstr ""
"ScheduleWorld memungkinkan Anda menjaga kontak, peristiwa, tugas, dan "
"catatan Anda tetap selaras."
#: ../src/gtk-ui/sync-ui.c:1475
msgid ""
"Google Sync can backup and synchronize your Address Book with your Gmail "
"contacts."
msgstr ""
"Google Sync dapat membuat cadangan dan menyelaraskan Buku Alamat Anda dengan "
"kontak Gmail Anda."
#. TRANSLATORS: Please include the word "demo" (or the equivalent in
#. your language): Funambol is going to be a 90 day demo service
#. in the future
#: ../src/gtk-ui/sync-ui.c:1481
msgid ""
"Backup your contacts and calendar. Sync with a singleclick, anytime, "
"anywhere (DEMO)."
msgstr ""
"Buat cadangan kontak dan kalender Anda. Selaraskan dengan satu klik, "
"kapanpun, dari manapun (DEMO)."
#: ../src/gtk-ui/sync-ui.c:1509
msgid "New service"
msgstr "Layanan baru"
#: ../src/gtk-ui/sync-ui.c:1523
#: ../src/gtk-ui/sync-ui.c:1556
msgid "Server URL"
msgstr "URL Server"
#. TRANSLATORS: placeholder is a source name in settings window
#: ../src/gtk-ui/sync-ui.c:1543
#: ../src/gtk-ui/sync-ui.c:1578
#, c-format
msgid "%s URI"
msgstr "%s URI"
#: ../src/gtk-ui/sync-ui.c:1678
#: ../src/gtk-ui/ui.glade.h:17
#: ../src/gtk-ui/sync-ui.c:1715 ../src/gtk-ui/ui.glade.h:17
msgid "Launch website"
msgstr "Luncurkan situs web"
#: ../src/gtk-ui/sync-ui.c:1682
#: ../src/gtk-ui/sync-ui.c:1719
msgid "Setup and use"
msgstr "Persiapkan dan gunakan"
#: ../src/gtk-ui/sync-ui.c:1728
#: ../src/gtk-ui/sync-ui.c:1765
msgid "Failed to get list of manually setup services from SyncEvolution"
msgstr "Gagal mendapat daftar layanan yang disiapkan secara manual dari SyncEvolution"
msgstr ""
"Gagal mendapat daftar layanan yang disiapkan secara manual dari SyncEvolution"
#: ../src/gtk-ui/sync-ui.c:1769
#: ../src/gtk-ui/sync-ui.c:1806
msgid "Failed to get list of supported services from SyncEvolution"
msgstr "Gagal mendapat daftar layanan yang didukung dari SyncEvolution"
#. TODO: this is a hack... SyncEnd should be a signal of it's own,
#. not just hacked on top of the syncevolution error codes
#: ../src/gtk-ui/sync-ui.c:1930
#: ../src/gtk-ui/sync-ui.c:1967
msgid "Service configuration not found"
msgstr "Konfigurasi layanan tak ditemukan"
#: ../src/gtk-ui/sync-ui.c:1936
#: ../src/gtk-ui/sync-ui.c:1973
msgid "Not authorized"
msgstr "Tidak diijinkan"
#: ../src/gtk-ui/sync-ui.c:1938
#: ../src/gtk-ui/sync-ui.c:1975
msgid "Forbidden"
msgstr "Terlarang"
#: ../src/gtk-ui/sync-ui.c:1940
#: ../src/gtk-ui/sync-ui.c:1977
msgid "Not found"
msgstr "Tidak ketemu"
#: ../src/gtk-ui/sync-ui.c:1942
#: ../src/gtk-ui/sync-ui.c:1979
msgid "Fatal database error"
msgstr "Galat basis data fatal"
#: ../src/gtk-ui/sync-ui.c:1944
#: ../src/gtk-ui/sync-ui.c:1981
msgid "Database error"
msgstr "Galat basis data"
#: ../src/gtk-ui/sync-ui.c:1946
#: ../src/gtk-ui/sync-ui.c:1983
msgid "No space left"
msgstr "Tidak ada ruang tersisa"
#. TODO identify problem item somehow ?
#: ../src/gtk-ui/sync-ui.c:1949
#: ../src/gtk-ui/sync-ui.c:1986
msgid "Failed to process SyncML"
msgstr "Gagal memroses SyncML"
#: ../src/gtk-ui/sync-ui.c:1951
#: ../src/gtk-ui/sync-ui.c:1988
msgid "Server authorization failed"
msgstr "Otorisasi server gagal"
#: ../src/gtk-ui/sync-ui.c:1953
#: ../src/gtk-ui/sync-ui.c:1990
msgid "Failed to parse configuration file"
msgstr "Gagal mengurai berkas konfigurasi"
#: ../src/gtk-ui/sync-ui.c:1955
#: ../src/gtk-ui/sync-ui.c:1992
msgid "Failed to read configuration file"
msgstr "Gagal membaca berkas konfigurasi"
#: ../src/gtk-ui/sync-ui.c:1957
#: ../src/gtk-ui/sync-ui.c:1994
msgid "No configuration found"
msgstr "Konfigurasi tak ditemukan"
#: ../src/gtk-ui/sync-ui.c:1959
#: ../src/gtk-ui/sync-ui.c:1996
msgid "No configuration file found"
msgstr "Berkas konfigurasi tak ditemukan"
#: ../src/gtk-ui/sync-ui.c:1961
#: ../src/gtk-ui/sync-ui.c:1998
msgid "Server sent bad content"
msgstr "Server mengirim muatan cacat"
#: ../src/gtk-ui/sync-ui.c:1963
#: ../src/gtk-ui/sync-ui.c:2000
msgid "Transport failure (no connection?)"
msgstr "Kegagalan transport (tiada koneksi?)"
#: ../src/gtk-ui/sync-ui.c:1965
#: ../src/gtk-ui/sync-ui.c:2002
msgid "Connection timed out"
msgstr "Koneksi time out"
#: ../src/gtk-ui/sync-ui.c:1967
#: ../src/gtk-ui/sync-ui.c:2004
msgid "Connection certificate has expired"
msgstr "Sertifikat server sudah kadaluwarsa"
#: ../src/gtk-ui/sync-ui.c:1969
#: ../src/gtk-ui/sync-ui.c:2006
msgid "Connection certificate is invalid"
msgstr "Sertifikat koneksi tak valid"
#: ../src/gtk-ui/sync-ui.c:1972
#: ../src/gtk-ui/sync-ui.c:2009
msgid "Connection failed"
msgstr "Koneksi gagal"
#: ../src/gtk-ui/sync-ui.c:1974
#: ../src/gtk-ui/sync-ui.c:2011
msgid "URL is bad"
msgstr "URL cacat"
#: ../src/gtk-ui/sync-ui.c:1976
#: ../src/gtk-ui/sync-ui.c:2013
msgid "Server not found"
msgstr "Server tak ditemukan"
#: ../src/gtk-ui/sync-ui.c:1978
#: ../src/gtk-ui/sync-ui.c:2015
#, c-format
msgid "Error %d"
msgstr "Galat %d"
#: ../src/gtk-ui/sync-ui.c:1988
#: ../src/gtk-ui/sync-ui.c:2025
msgid "Sync D-Bus service exited unexpectedly"
msgstr "Layanan D-Bus Sync keluar tak disangka-sangka"
#: ../src/gtk-ui/sync-ui.c:1991
#: ../src/gtk-ui/sync-ui.c:2042
#: ../src/gtk-ui/sync-ui.c:2028 ../src/gtk-ui/sync-ui.c:2079
msgid "Sync Failed"
msgstr "Sync Gagal"
#: ../src/gtk-ui/sync-ui.c:2034
#: ../src/gtk-ui/sync-ui.c:2071
msgid "Sync complete"
msgstr "Sync komplit"
#: ../src/gtk-ui/sync-ui.c:2039
#: ../src/gtk-ui/sync-ui.c:2076
msgid "Sync canceled"
msgstr "Sync dibatalkan"
#. NOTE extra1 can be error here
#: ../src/gtk-ui/sync-ui.c:2057
#: ../src/gtk-ui/sync-ui.c:2094
msgid "Ending sync"
msgstr "Mengakhiri sync"
#. TRANSLATORS: placeholder is a source name (e.g. 'Calendar') in a progress text
#: ../src/gtk-ui/sync-ui.c:2081
#: ../src/gtk-ui/sync-ui.c:2118
#, c-format
msgid "Preparing '%s'"
msgstr "Menyiapkan '%s'"
#. TRANSLATORS: placeholder is a source name in a progress text
#: ../src/gtk-ui/sync-ui.c:2093
#: ../src/gtk-ui/sync-ui.c:2130
#, c-format
msgid "Sending '%s'"
msgstr "Mengirim '%s'"
#. TRANSLATORS: placeholder is a source name in a progress text
#: ../src/gtk-ui/sync-ui.c:2105
#: ../src/gtk-ui/sync-ui.c:2142
#, c-format
msgid "Receiving '%s'"
msgstr "Menerima '%s'"
@ -423,10 +467,12 @@ msgstr "Edit pengaturan layanan"
#: ../src/gtk-ui/ui.glade.h:15
msgid ""
"If you don't see your service above but know that your sync provider uses SyncML\n"
"If you don't see your service above but know that your sync provider uses "
"SyncML\n"
"you can setup a service manually."
msgstr ""
"Bila Anda tak melihat layanan Anda di atas tapi tahu bahwa penyedia sync Anda memakai SyncML\n"
"Bila Anda tak melihat layanan Anda di atas tapi tahu bahwa penyedia sync "
"Anda memakai SyncML\n"
"Anda dapat mempersiapkan suatu layanan secara manual."
#: ../src/gtk-ui/ui.glade.h:18
@ -446,17 +492,17 @@ msgid "Save and use this service"
msgstr "Simpan dan pakai layanan ini"
#: ../src/gtk-ui/ui.glade.h:22
msgid "Select sync service"
msgstr "Pilih layanan penyelarasan"
#: ../src/gtk-ui/ui.glade.h:23
msgid "Server settings"
msgstr "Pengaturan server"
#: ../src/gtk-ui/ui.glade.h:23
#: ../src/gtk-ui/ui.glade.h:24
msgid "Service name"
msgstr "Nama layanan"
#: ../src/gtk-ui/ui.glade.h:24
msgid "Setup sync service"
msgstr "Persiapkan layanan penyelarasan"
#: ../src/gtk-ui/ui.glade.h:25
msgid ""
"Sorry, you need an internet\n"
@ -469,18 +515,15 @@ msgstr ""
msgid "Stop using this service"
msgstr "Berhenti pakai layanan ini"
#: ../src/gtk-ui/ui.glade.h:28
#: ../src/gtk-ui/sync.desktop.in.h:1
msgid "Sync"
msgstr "Selaraskan"
#: ../src/gtk-ui/ui.glade.h:30
msgid "Synchronization is not available (D-Bus service does not answer), sorry."
msgid ""
"Synchronization is not available (D-Bus service does not answer), sorry."
msgstr "Penyelarasan tak tersedia (layanan D-Bus tak menjawab), maaf."
#: ../src/gtk-ui/ui.glade.h:31
msgid ""
"To sync you'll need a network connection and an account with a sync service.\n"
"To sync you'll need a network connection and an account with a sync "
"service.\n"
"We support the following services: "
msgstr ""
"Untuk sync Anda perlu koneksi jaringan dan sebuah akun dari layanan sync.\n"
@ -492,13 +535,16 @@ msgstr "Nama pengguna"
#: ../src/gtk-ui/ui.glade.h:34
msgid ""
"You haven't set up a sync service yet. Sync services let you \n"
"You haven't selected a sync service yet. Sync services let you \n"
"synchronize your data between your netbook and a web service."
msgstr ""
"Anda belum menyiapkan suatu layanan sync. Layanan sync memungkinkan Anda\n"
"menyelarasan data Anda antara netbook Anda dan suatu layanan web."
"Anda belum memilih suatu layanan sync. Layanan sync memungkinkan Anda\n"
"menyelaraskan data antara netbook Anda dan suatu layanan web."
#: ../src/gtk-ui/sync.desktop.in.h:2
#: ../src/gtk-ui/sync.desktop.in.h:2 ../src/gtk-ui/sync-gtk.desktop.in.h:2
msgid "Up to date"
msgstr "Terkini"
#: ../src/gtk-ui/sync-gtk.desktop.in.h:1
msgid "Sync (GTK)"
msgstr "Sync (GTK)"

View file

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: syncevolution\n"
"Report-Msgid-Bugs-To: http://moblin.org/projects/syncevolution\n"
"POT-Creation-Date: 2009-10-01 19:27+0000\n"
"PO-Revision-Date: 2009-10-01 19:30-0800\n"
"PO-Revision-Date: 2009-10-09 18:03-0800\n"
"Last-Translator: Yun Nie <yun.nie@ptiglobal.net>\n"
"Language-Team: zh_CN <yanhai.zhu@intel.com>\n"
"MIME-Version: 1.0\n"
@ -524,7 +524,8 @@ msgstr "用户名"
msgid ""
"You haven't selected a sync service yet. Sync services let you \n"
"synchronize your data between your netbook and a web service."
msgstr "您尚未选择同步服务.同步服务允许您在您的上网本和Web服务之间同步数据"
msgstr ""
"您尚未选择同步服务。同步服务允许您在您的上网本和 Web 服务之间同步数据。"
#: ../src/gtk-ui/sync.desktop.in.h:2 ../src/gtk-ui/sync-gtk.desktop.in.h:2
msgid "Up to date"

View file

@ -74,7 +74,7 @@ class EvolutionContactSource : public EvolutionSyncSource,
TrackingSyncSource::getSynthesisInfo(info, fragments);
info.m_profile = "\"vCard\", 2";
info.m_native = "vCard30";
info.m_incomingScript = "$VCARD_INCOMING_SCRIPT_EVOLUTION;";
info.m_beforeWriteScript = "$VCARD_BEFOREWRITE_SCRIPT_EVOLUTION;";
}
private:

View file

@ -185,6 +185,22 @@ server_config_get_source_array (server_config *server, SyncMode mode)
return sources;
}
void
server_config_disable_unsupported_sources (server_config *server)
{
GList *l;
for (l = server->source_configs; l; l = l->next) {
source_config* config = (source_config*)l->data;
if (!config->supported_locally) {
config->enabled = FALSE;
}
}
}
static int
source_config_compare (source_config *a, source_config *b)
{

View file

@ -69,6 +69,7 @@ void server_config_update_from_option (server_config *server, SyncevoOption *opt
void server_config_update_from_entry (server_config *server, GtkEntry *entry);
GPtrArray* server_config_get_option_array (server_config *server);
GPtrArray* server_config_get_source_array (server_config *server, SyncMode mode);
void server_config_disable_unsupported_sources (server_config *server);
source_config* server_config_get_source_config (server_config *server, const char *name);
#endif

View file

@ -426,7 +426,8 @@ get_server_config_for_template_cb (SyncevoService *service, GPtrArray *options,
g_ptr_array_foreach (data->options_override, (GFunc)add_server_option, data->config);
ensure_default_sources_exist (data->config);
server_config_disable_unsupported_sources (data->config);
data->config->changed = TRUE;
/* get password from keyring if we have an url */

View file

@ -37,7 +37,7 @@
return "syuid" + NUMFORMAT(RANDOM(1000000),6,"0") + "." + (string)MILLISECONDS(NOW());
}
]]></function>
<macro name="VCARD_INCOMING_SCRIPT_EVOLUTION"><![CDATA[
<macro name="VCARD_BEFOREWRITE_SCRIPT_EVOLUTION"><![CDATA[
// a wordaround for cellphone in evolution. for incoming contacts, if there is only one CELL,
// strip the HOME or WORK flag from it. Evolution then should show it. */
INTEGER i, wanted, cell_phones;
@ -67,10 +67,38 @@
i = i + 1;
}
]]></macro>
<macro name="VCALENDAR_20TO10_PRIORITY_CONVERSION"><![CDATA[
//vCalendar10 has different interpretation from iCalendar20 in 'priority'.
//see mappings:
// Category vCalendar1.0 iCalendar2.0
// undefined 0 0
// high 1 1 ~ 4
// normal 2 5
// low 3 6 ~ bigger
if(PRIORITY<5 && PRIORITY>0) {
PRIORITY=1;
}else if(PRIORITY==5){
PRIORITY=2;
}else if(PRIORITY>5){
PRIORITY=3;
} // 0 is undefined and remains unchanged
]]></macro>
<macro name="VCALENDAR_10TO20_PRIORITY_CONVERSION"><![CDATA[
if(PRIORITY==2) {
PRIORITY=5;
}else if(PRIORITY==3){
PRIORITY=7;
} //others remain unchanged
]]></macro>
<macro name="VCALENDAR10_BEFOREWRITE_SCRIPT"><![CDATA[
$VCALENDAR_20TO10_PRIORITY_CONVERSION;
]]></macro>
<macro name="VCALENDAR10_AFTERREAD_SCRIPT"><![CDATA[
$VCALENDAR_10TO20_PRIORITY_CONVERSION;
]]></macro>
<!-- define script macros for scripts that are used by both vCalendar 1.0 and iCalendar 2.0 -->
<macro name="VCALENDAR_INCOMING_SCRIPT"><![CDATA[
STRING MATCHES[];
STRING CAT,CN,EM;
@ -159,6 +187,9 @@
if (ITEMDATATYPE()=="vCalendar10" && ALLDAYCOUNT(DUE,DUE,TRUE,TRUE)>0) {
DUE = DATEONLY(DUE);
}
if (ITEMDATATYPE()=="vCalendar10") {
$VCALENDAR_10TO20_PRIORITY_CONVERSION;
}
}
// a workaround for funambol: adding 'action' for 'alarm'
if (ITEMDATATYPE()=="iCalendar20") {
@ -188,8 +219,11 @@
}
}
else {
// VTODO
// - Nothing special so far
// VTODO
// interal representation is iCalendar20
if (ITEMDATATYPE()=="vCalendar10") {
$VCALENDAR_20TO10_PRIORITY_CONVERSION;
}
}
// make sure we have at least a summary
if (SUMMARY==EMPTY) SUMMARY=SUBSTR(DESCRIPTION,0,32); // derive from description

View file

@ -409,6 +409,9 @@ bool Cmdline::run() {
} else {
boost::shared_ptr<SyncConfig> config;
config.reset(new SyncConfig(m_server));
if (!config->exists()) {
SyncContext::throwError(string("no such configuration: ") + m_server);
}
config->remove();
return true;
}

View file

@ -128,5 +128,5 @@ SyncEvolutionXML.c: $(srcdir)/../syncclient_sample_config.xml
# make sure that the installed development files are usable
installcheck-local: $(srcdir)/installcheck-local.sh
env PKG_CONFIG_PATH=$(pkgconfigdir):$$PKG_CONFIG_PATH $< "$(libsyncevolution_includedir)"
env PKG_CONFIG_PATH=$(DESTDIR)/$(pkgconfigdir):$$PKG_CONFIG_PATH $< "$(DESTDIR)/$(libsyncevolution_includedir)" "$(DESTDIR)/$(includedir)" "$(DESTDIR)/$(libdir)"
EXTRA_DIST += installcheck-local.sh

View file

@ -545,20 +545,22 @@ static BoolConfigProperty syncPropPrintChanges("printChanges",
"of database content before and after a sync session",
"1");
static UIntConfigProperty syncPropRetryDuration("RetryDuration",
"The total amount of time in which the client tries\n"
"The total amount of time in seconds in which the client\n"
"tries to get a response from the server.\n"
"During this time, the client will resend messages\n"
"in regular intervals (RetryInterval) if no response\n"
"is received or the message couldn't be delivered due\n"
"is received or the message could not be delivered due\n"
"to transport problems. When this time is exceeded\n"
"without a response, the synchronization aborts without\n"
"sending further messages to the server."
,"300");
static UIntConfigProperty syncPropRetryInterval("RetryInterval",
"The time between the start of message sending and\n"
"the start of the retransmission. If the interval has\n"
"The number of seconds between the start of message sending\n"
"and the start of the retransmission. If the interval has\n"
"already passed when a message send returns, the\n"
"message is resent immediately.\n"
"message is resent immediately. Resending without\n"
"any delay will never succeed and therefore specifying 0\n"
"disables retries."
,"60");
static ConfigProperty syncPropSSLServerCertificates("SSLServerCertificates",
"A string specifying the location of the certificates\n"

View file

@ -429,6 +429,18 @@ class ScalarConfigProperty : public TypedConfigProperty<T>
error = "range error";
return false;
}
if (Tmin == 0) {
// check that we didn't accidentally accept a negative value,
// strtoul() does that
const char *start = nptr;
while (*start && isspace(*start)) {
start++;
}
if (*start == '-') {
error = "range error";
return false;
}
}
return true;
}

View file

@ -90,7 +90,7 @@ extern "C" void suspend_handler(int sig)
< s_flags.ABORT_INTERVAL)
{
s_flags.state = SuspendFlags::CLIENT_ABORT;
SE_LOG_INFO(NULL, NULL, "Aboring sync as requested via CTRL-C ...");
SE_LOG_INFO(NULL, NULL, "Aborting sync as requested via CTRL-C ...");
}
else
{
@ -1982,7 +1982,9 @@ SyncMLStatus SyncContext::doSync()
sendStart = resendStart = time (NULL);
//register transport callback
agent->setCallback (transport_cb, this, m_retryInterval);
if (m_retryInterval) {
agent->setCallback (transport_cb, this, m_retryInterval);
}
// use GetSyncMLBuffer()/RetSyncMLBuffer() to access the data to be
// sent or have it copied into caller's buffer using
// ReadSyncMLBuffer(), then send it to the server
@ -2060,7 +2062,7 @@ SyncMLStatus SyncContext::doSync()
case TransportAgent::FAILED: {
time_t curTime = time(NULL);
time_t duration = curTime - sendStart;
if(duration > m_retryDuration) {
if (!m_retryInterval || duration > m_retryDuration) {
SE_LOG_INFO(NULL, NULL,
"Transport giving up after %d retries and %ld:%02ldmin",
m_retries,

View file

@ -137,18 +137,18 @@ void SyncSourceBase::getDatastoreXML(string &xml, XMLConfigFragments &fragments)
" string itemdata;\n"
" ]]></initscript>\n"
" <beforewritescript><![CDATA[\n";
if(!info.m_incomingScript.empty()) {
if(!info.m_beforeWriteScript.empty()) {
xmlstream <<
" " << info.m_incomingScript << "\n";
" " << info.m_beforeWriteScript << "\n";
}
xmlstream <<
" itemdata = MAKETEXTWITHPROFILE(" << info.m_profile << ", \"EVOLUTION\");\n"
" ]]></beforewritescript>\n"
" <afterreadscript><![CDATA[\n"
" PARSETEXTWITHPROFILE(itemdata, " << info.m_profile << ", \"EVOLUTION\");\n";
if(!info.m_outgoingScript.empty()) {
if(!info.m_afterReadScript.empty()) {
xmlstream <<
" " << info.m_outgoingScript<< "\n";
" " << info.m_afterReadScript<< "\n";
}
xmlstream <<
" ]]></afterreadscript>\n"
@ -453,6 +453,14 @@ void SyncSourceSerialize::getSynthesisInfo(SynthesisInfo &info,
info.m_datatypes =
" <use datatype='vCalendar10' mode='rw' preferred='yes'/>\n"
" <use datatype='iCalendar20' mode='rw'/>\n";
/**
* here are two default implementations. If user wants to reset it,
* just implement its own getSynthesisInfo. If user wants to use this default
* implementations and its new scripts, it is possible to append its implementations
* to info.m_afterReadScript and info.m_beforeWriteScript.
*/
info.m_afterReadScript = "$VCALENDAR10_AFTERREAD_SCRIPT;\n";
info.m_beforeWriteScript = "$VCALENDAR10_BEFOREWRITE_SCRIPT;\n";
} else if (type == "text/calendar") {
info.m_native = "iCalendar20";
info.m_fieldlist = "calendar";
@ -486,7 +494,7 @@ void SyncSourceSerialize::getSynthesisInfo(SynthesisInfo &info,
info.m_datatypes +=
" <use datatype='vCard21' mode='rw'/>\n";
}
} else if (type == "text/x-vcalendar:2.0" || type == "text/x-vcalendar") {
} else if (type == "text/x-vcalendar:1.0" || type == "text/x-vcalendar") {
info.m_datatypes =
" <use datatype='vcalendar10' mode='rw' preferred='yes'/>\n";
if (!sourceType.m_forceFormat) {

View file

@ -692,14 +692,14 @@ class SyncSourceBase : public Logger {
* This value is currently only used by sync sources which
* set m_profile.
*/
std::string m_incomingScript;
std::string m_beforeWriteScript;
/**
* Same as m_incomingScript, but used directly after
* Same as m_beforeWriteScript, but used directly after
* converting a string into fields with PARSETEXTWITHPROFILE()
* in <afterreadscript>.
*/
std::string m_outgoingScript;
std::string m_afterReadScript;
};
/**

View file

@ -240,6 +240,8 @@ extern "C" void EDSAbiWrapperInit()
&EDSAbiWrapperSingleton.icalcomponent_get_next_property, "icalcomponent_get_next_property",
&EDSAbiWrapperSingleton.icalcomponent_get_recurrenceid, "icalcomponent_get_recurrenceid",
&EDSAbiWrapperSingleton.icalcomponent_get_timezone, "icalcomponent_get_timezone",
&EDSAbiWrapperSingleton.icalcomponent_get_location, "icalcomponent_get_location",
&EDSAbiWrapperSingleton.icalcomponent_get_summary, "icalcomponent_get_summary",
&EDSAbiWrapperSingleton.icalcomponent_get_uid, "icalcomponent_get_uid",
&EDSAbiWrapperSingleton.icalcomponent_isa, "icalcomponent_isa",
&EDSAbiWrapperSingleton.icalcomponent_new_clone, "icalcomponent_new_clone",

View file

@ -141,6 +141,8 @@ struct EDSAbiWrapper {
icalproperty* (*icalcomponent_get_next_property) (icalcomponent* component, icalproperty_kind kind);
struct icaltimetype (*icalcomponent_get_recurrenceid) (icalcomponent* comp);
icaltimezone* (*icalcomponent_get_timezone) (icalcomponent* comp, const char *tzid);
const char* (*icalcomponent_get_location) (icalcomponent* comp);
const char* (*icalcomponent_get_summary) (icalcomponent* comp);
const char* (*icalcomponent_get_uid) (icalcomponent* comp);
icalcomponent_kind (*icalcomponent_isa) (const icalcomponent* component);
icalcomponent* (*icalcomponent_new_clone) (icalcomponent* component);
@ -245,6 +247,8 @@ extern struct EDSAbiWrapper EDSAbiWrapperSingleton;
# define icalcomponent_get_next_property EDSAbiWrapperSingleton.icalcomponent_get_next_property
# define icalcomponent_get_recurrenceid EDSAbiWrapperSingleton.icalcomponent_get_recurrenceid
# define icalcomponent_get_timezone EDSAbiWrapperSingleton.icalcomponent_get_timezone
# define icalcomponent_get_location EDSAbiWrapperSingleton.icalcomponent_get_location
# define icalcomponent_get_summary EDSAbiWrapperSingleton.icalcomponent_get_summary
# define icalcomponent_get_uid EDSAbiWrapperSingleton.icalcomponent_get_uid
# define icalcomponent_isa EDSAbiWrapperSingleton.icalcomponent_isa
# define icalcomponent_new_clone EDSAbiWrapperSingleton.icalcomponent_new_clone

View file

@ -1,6 +1,6 @@
#!/bin/sh
#
# usage: PKG_CONFIG_PATH=... installcheck-local.sh <path to syncevo header files>
# usage: PKG_CONFIG_PATH=... installcheck-local.sh <path to syncevo header files> <DESTDIR>
set -ex
@ -44,8 +44,9 @@ int main(int argc, char **argv)
}
EOF
# header must be usable stand-alone
$CXX `pkg-config --cflags syncevolution` $TMPFILE_CXX -c -o $TMPFILE_O
$CXX "-I$2" $TMPFILE_CXX -c -o $TMPFILE_O
done
# link once to check that the lib is found
$CXX `pkg-config --libs syncevolution` $TMPFILE_O -o $TMPFILE
# link once to check that the libs are found
pkg-config --libs syncevolution
env LD_LIBRARY_PATH=$3:$LD_LIBRARY_PATH $CXX -v $TMPFILE_O -o $TMPFILE "-L$3" `pkg-config --libs syncevolution`

View file

@ -1448,6 +1448,7 @@ void SyncTests::addTests() {
ADD_TEST(SyncTests, testDelete);
ADD_TEST(SyncTests, testAddUpdate);
ADD_TEST(SyncTests, testManyItems);
ADD_TEST(SyncTests, testManyDeletes);
ADD_TEST(SyncTests, testSlowSyncSemantic);
ADD_TEST(SyncTests, testComplexRefreshFromServerSemantic);
@ -2376,14 +2377,20 @@ void SyncTests::testManyItems() {
// import artificial data: make them large to generate some
// real traffic and test buffer handling
source_it it;
int num_items = -1;
for (it = sources.begin(); it != sources.end(); ++it) {
it->second->insertManyItems(it->second->createSourceA, 0, it->second->config.numItems, 2000);
if (num_items == -1) {
num_items = it->second->config.numItems;
} else {
CPPUNIT_ASSERT_EQUAL(num_items, it->second->config.numItems);
}
it->second->insertManyItems(it->second->createSourceA, 0, num_items, 2000);
}
// send data to server
doSync("send",
SyncOptions(SYNC_TWO_WAY,
CheckSyncReport(0,0,0, -1,0,0, true, SYNC_TWO_WAY),
CheckSyncReport(0,0,0, num_items,0,0, true, SYNC_TWO_WAY),
64 * 1024, 64 * 1024, true));
// ensure that client has the same data, ignoring data conversion
@ -2403,6 +2410,64 @@ void SyncTests::testManyItems() {
compareDatabases();
}
/**
* Tell server to delete plenty of items.
*/
void SyncTests::testManyDeletes() {
// clean server and client A
deleteAll();
// import artificial data: make them small, we just want
// many of them
source_it it;
int num_items = -1;
for (it = sources.begin(); it != sources.end(); ++it) {
if (num_items == -1) {
num_items = it->second->config.numItems;
} else {
CPPUNIT_ASSERT_EQUAL(num_items, it->second->config.numItems);
}
it->second->insertManyItems(it->second->createSourceA, 0, num_items, 100);
}
// send data to server
doSync("send",
SyncOptions(SYNC_TWO_WAY,
CheckSyncReport(0,0,0, num_items,0,0, true, SYNC_TWO_WAY),
64 * 1024, 64 * 1024, true));
// ensure that client has the same data, ignoring data conversion
// issues (those are covered by testItems())
refreshClient();
// also copy to second client
accessClientB->refreshClient();
// slow sync now should not change anything
doSync("twinning",
SyncOptions(SYNC_SLOW,
CheckSyncReport(-1,-1,-1, -1,-1,-1, true, SYNC_SLOW),
64 * 1024, 64 * 1024, true));
// compare
compareDatabases();
// delete everything locally
BOOST_FOREACH(source_array_t::value_type &source_pair, sources) {
source_pair.second->deleteAll(source_pair.second->createSourceA);
}
doSync("delete-server",
SyncOptions(SYNC_TWO_WAY,
CheckSyncReport(0,0,0, 0,0,num_items, true, SYNC_TWO_WAY),
10 * 1024));
// update second client
accessClientB->doSync("delete-client",
SyncOptions(SYNC_REFRESH_FROM_SERVER,
CheckSyncReport(0,0,num_items, 0,0,0, true, SYNC_REFRESH_FROM_SERVER),
10 & 1024));
}
/**
* - get client A, server, client B in sync with one item
* - force slow sync in A: must not duplicate items, but may update it locally

View file

@ -655,6 +655,7 @@ protected:
}
virtual void testManyItems();
virtual void testManyDeletes();
virtual void testSlowSyncSemantic();
virtual void testComplexRefreshFromServerSemantic();

View file

@ -76,7 +76,6 @@ vCard21
X-ANNIVERSARY, X-SPOUSE, X-EVOLUTION-BLOG-URL, X-EVOLUTION-VIDEO-URL, X-GROUPWISE, X-ICQ,
X-YAHOO, X-ASSISTANT
-- The parameter 'X-EVOLUTION-URI-SLOT'of properties like 'TEL' and 'EMAIL' is lost
-- 'PHOTO' is compressed by server but still be correct
-- 'FN' is not reserved and is replaced by server's composition of 'N'
-- 'NOTE' length is less than 4000
-- vcard must have one of 'tel', 'email', or 'url','addr', otherwise, this vcard will

View file

@ -89,6 +89,7 @@
<xsl:with-param name="unit-cases" select="$source/sync/template/*"/>
<xsl:with-param name="servers" select="$source/sync/*[name(.)!='template']"/>
<xsl:with-param name="cmp-result" select="$cmp-result/sync"/>
<xsl:with-param name="log-path" select="$log-path"/>
</xsl:call-template>
<xsl:call-template name="generate-source-summary">
@ -218,6 +219,7 @@
<xsl:param name="unit-cases"/>
<xsl:param name="servers"/>
<xsl:param name="cmp-result"/>
<xsl:param name="log-path"/>
<h3> Servers Interoperability Test Summary </h3>
<table border="2">
@ -231,6 +233,7 @@
<th width="60">Passrate</th>
<th width="60">Improved</th>
<th width="60">Regression</th>
<th width="60">Valgrind</th>
</tr>
<xsl:for-each select="$servers">
@ -242,6 +245,8 @@
<xsl:variable name="status" select="$cmp-result/*[name(.)=name($item)]/@summary"/>
<xsl:variable name="real-regression" select="$cmp-result/*[name(.)=name($item)]/*/*[.=$regression]"/>
<xsl:variable name="real-improved" select="$cmp-result/*[name(.)=name($item)]/*/*[.=$improved]"/>
<xsl:variable name="valgrind" select="$item/@result"/>
<xsl:variable name="path" select="concat($log-path,'/', $item/@path)"/>
<tr>
<td> <!-- server name -->
<a href="#{name($item)}">
@ -304,6 +309,19 @@
</xsl:otherwise>
</xsl:choose>
</td>
<td>
<xsl:choose>
<xsl:when test="$valgrind=100">
<xsl:attribute name="bgcolor">
gray
</xsl:attribute>
<a href="{$path}/output.txt">
failed
</a>
</xsl:when>
<xsl:otherwise>ok</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>

View file

@ -26,7 +26,7 @@ based test report.
"""
space=" "
def check (resultdir, serverlist,resulturi, srcdir, shellprefix):
def check (resultdir, serverlist,resulturi, srcdir, shellprefix, backenddir):
'''Entrypoint, resutldir is the test result directory to be generated,
resulturi is the http uri, it will only process corresponding server's
test results list in severlist'''
@ -40,7 +40,7 @@ def check (resultdir, serverlist,resulturi, srcdir, shellprefix):
else:
indents,cont = step1(resultdir+"/output.txt",result,indents,resultdir,resulturi, shellprefix, srcdir)
if (cont):
step2(resultdir,result,servers,indents,srcdir,shellprefix)
step2(resultdir,result,servers,indents,srcdir,shellprefix,backenddir)
result.write('''</nightly-test>\n''')
result.close()
@ -127,7 +127,7 @@ def step1(input, result, indents, dir, resulturi, shellprefix, srcdir):
indent = indents[-1]
return (indents, cont)
def step2(resultdir, result, servers, indents, srcdir, shellprefix):
def step2(resultdir, result, servers, indents, srcdir, shellprefix, backenddir):
'''Step2 of the result checking, for each server listed in
servers, tranverse the corresponding result folder, process
each log file to decide the status of the testcase'''
@ -150,7 +150,8 @@ def step2(resultdir, result, servers, indents, srcdir, shellprefix):
templates=[]
oldpath = os.getcwd()
os.chdir (srcdir)
fout,fin=popen2.popen2(shellprefix + " env LD_LIBRARY_PATH=build-synthesis/src/.libs ./client-test -h |grep 'Client::Sync::vcard21'|grep -v 'Retry' |grep -v 'Suspend' | grep -v 'Resend'")
print 'in client-test -h'
fout,fin=popen2.popen2(shellprefix + " env LD_LIBRARY_PATH=build-synthesis/src/.libs SYNCEVOLUTION_BACKEND_DIR="+backenddir +" ./client-test -h |grep 'Client::Sync::vcard21'|grep -v 'Retry' |grep -v 'Suspend' | grep -v 'Resend'")
sys.stdout.flush()
os.chdir(oldpath)
for line in fout:
@ -199,6 +200,13 @@ def step2(resultdir, result, servers, indents, srcdir, shellprefix):
result.write('<'+template+'/>')
result.write('</template>\n')
result.write(indent+'<'+server+' path="' +rserver+'" ')
#valgrind check resutls
outputlog = resultdir+'/'+rserver+'/output.txt'
checkcmd = "grep 'valgrindcheck' %s |grep -o '\./client-test Client::Sync:.*$' " % (outputlog)
fout,fin=popen2.popen2(checkcmd)
s = fout.read()
if(s):
result.write('result="'+s.partition('return code ')[2].partition(')')[0]+'" ')
result.write('parameter="'+params[server]+'">\n')
logs = glob.glob(resultdir+'/'+rserver+'/*.log')
logdic ={}
@ -250,7 +258,7 @@ def step2(resultdir, result, servers, indents, srcdir, shellprefix):
indents = indents[-1]
if(__name__ == "__main__"):
if (len(sys.argv)!=6):
print "usage: python resultchecker.py resultdir servers resulturi srcdir shellprefix"
if (len(sys.argv)!=7):
print "usage: python resultchecker.py resultdir servers resulturi srcdir shellprefix backenddir"
else:
check(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5])
check(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6])

View file

@ -259,7 +259,8 @@ class Context:
# run testresult checker
#calculate the src dir where client-test can be located
srcdir = os.path.join(self.tmpdir,"build/src")
os.system ("resultchecker.py " +self.resultdir+" "+",".join(run_servers)+" "+self.uri +" "+srcdir + " '" + options.shell + " " + options.testprefix +" '");
backendir = os.path.join(self.tmpdir, "install/usr/lib/syncevolution/backends")
os.system ("resultchecker.py " +self.resultdir+" "+",".join(run_servers)+" "+self.uri +" "+srcdir + " '" + options.shell + " " + options.testprefix +" '"+" '" +backendir +"'");
# transform to html
os.system ("xsltproc -o " + self.resultdir + "/cmp_result.xml --stringparam cmp_file " + self.lastresultdir +"/nightly.xml "+self.datadir +"/compare.xsl "+ self.resultdir+"/nightly.xml")
os.system ("xsltproc -o " + self.resultdir + "/nightly.html --stringparam cmp_result_file " + self.resultdir + "/cmp_result.xml " + self.datadir +"/generate-html.xsl "+ self.resultdir+"/nightly.xml")
@ -422,7 +423,8 @@ class SyncEvolutionTest(Action):
try:
if context.setupcmd:
context.runCommand("%s %s %s %s ./syncevolution" % (self.testenv, self.runner, context.setupcmd, self.name))
basecmd = "CLIENT_TEST_SERVER=%s CLIENT_TEST_SOURCES=%s %s SYNC_EVOLUTION_EVO_CALENDAR_DELAY=1 CLIENT_TEST_ALARM=1200 CLIENT_TEST_LOG=%s CLIENT_TEST_EVOLUTION_PREFIX=file://%s/databases %s %s env LD_LIBRARY_PATH=build-synthesis/src/.libs ./client-test" % (self.serverName, ",".join(self.sources), self.testenv, self.serverlogs, context.workdir, self.runner, self.testPrefix);
backendir = os.path.join(context.tmpdir, "install/usr/lib/syncevolution/backends")
basecmd = "CLIENT_TEST_SERVER=%s CLIENT_TEST_SOURCES=%s %s SYNCEVOLUTION_BACKEND_DIR=%s SYNC_EVOLUTION_EVO_CALENDAR_DELAY=1 CLIENT_TEST_ALARM=1200 CLIENT_TEST_LOG=%s CLIENT_TEST_EVOLUTION_PREFIX=file://%s/databases %s %s env LD_LIBRARY_PATH=build-synthesis/src/.libs ./client-test" % (self.serverName, ",".join(self.sources), self.testenv, backendir, self.serverlogs, context.workdir, self.runner, self.testPrefix);
context.runCommand("%s testclean" % context.make)
if self.tests:
tests = []
@ -525,8 +527,8 @@ parser.add_option("", "--mailhost",
type="string", dest="mailhost", default="localhost",
help="SMTP mail server to be used for outgoing mail")
parser.add_option("", "--subject",
type="string", dest="subject", default="SyncML Tests " + time.strftime("%Y-%m-%d"),
help="subject of result email (default is \"SyncML Tests <date>\"")
type="string", dest="subject", default="SyncML Tests " + time.strftime("%Y-%m-%d %H-%M"),
help="subject of result email (default is \"SyncML Tests <date> <time>\"")
parser.add_option("", "--evosvn",
action="append", type="string", dest="evosvn", default=[],
help="<name>=<path>: compiles Evolution from source under a short name, using Paul Smith's Makefile and config as found in <path>")
@ -596,6 +598,7 @@ for prebuilt in options.prebuilt:
context.add(SyncEvolutionTest("evolution-prebuilt-" + os.path.basename(prebuilt), pre,
"", options.shell,
[ "Client::Source", "SyncEvolution" ],
[],
testPrefix=options.testprefix))
class SyncEvolutionCheckout(GitCheckout):
@ -671,8 +674,8 @@ class SyncEvolutionDist(AutotoolsBuild):
def execute(self):
cd(self.builddir)
if self.packagesuffix:
context.runCommand("%s %s BINSUFFIX=%s deb" % (self.runner, context.make, self.packagesuffix))
put, get = os.popen4("dpkg-architecture -qDEB_HOST_ARCH")
context.runCommand("%s %s BINSUFFIX=%s deb rpm" % (self.runner, context.make, self.packagesuffix))
put, get = os.popen4("%s %s dpkg-architecture -qDEB_HOST_ARCH" % (self.runner, context.make))
for arch in get.readlines():
if "i386" in arch:
context.runCommand("%s %s BINSUFFIX=%s PKGARCH=lpia deb" % (self.runner, context.make, self.packagesuffix))
@ -699,25 +702,53 @@ context.add(evolutiontest)
scheduleworldtest = SyncEvolutionTest("scheduleworld", compile,
"", options.shell,
[ "Client::Sync" ],
[ "vcard30", "ical20", "itodo20", "text" ],
"CLIENT_TEST_NUM_ITEMS=10 CLIENT_TEST_FAILURES=Client::Sync::text::testManyItems,Client::Sync::vcard30_ical20_itodo20_text::testManyItems,Client::Sync::text_itodo20_ical20_vcard30::testManyItems CLIENT_TEST_SKIP=Client::Sync::ical20::Retry,Client::Sync::ical20::Suspend,Client::Sync::vcard30::Retry,Client::Sync::vcard30::Suspend,Client::Sync::itodo20::Retry,Client::Sync::itodo20::Suspend,Client::Sync::text::Retry,Client::Sync::text::Suspend,Client::Sync::vcard30_ical20_itodo20_text::Retry,Client::Sync::vcard30_ical20_itodo20_text::Suspend,Client::Sync::text_itodo20_ical20_vcard30::Retry,Client::Sync::text_itodo20_ical20_vcard30::Suspend CLIENT_TEST_DELAY=5 CLIENT_TEST_COMPARE_LOG=T",
[ "vcard30",
"ical20",
"itodo20",
"text" ],
"CLIENT_TEST_NUM_ITEMS=10 "
"CLIENT_TEST_FAILURES="
"Client::Sync::text::testManyItems,"
"Client::Sync::vcard30_ical20_itodo20_text::testManyItems,"
"Client::Sync::text_itodo20_ical20_vcard30::testManyItems CLIENT_TEST_SKIP=Client::Sync::ical20::Retry,"
"Client::Sync::ical20::Suspend,"
"Client::Sync::ical20::Resend,"
"Client::Sync::vcard30::Retry,"
"Client::Sync::vcard30::Suspend,"
"Client::Sync::vcard30::Resend,"
"Client::Sync::itodo20::Retry,"
"Client::Sync::itodo20::Suspend,"
"Client::Sync::itodo20::Resend,"
"Client::Sync::text::Retry,"
"Client::Sync::text::Suspend,"
"Client::Sync::text::Resend,"
"Client::Sync::vcard30_ical20_itodo20_text::Retry,"
"Client::Sync::vcard30_ical20_itodo20_text::Suspend,"
"Client::Sync::vcard30_ical20_itodo20_text::Resend,"
"Client::Sync::text_itodo20_ical20_vcard30::Retry,"
"Client::Sync::text_itodo20_ical20_vcard30::Suspend,"
"Client::Sync::text_itodo20_ical20_vcard30::Resend "
"CLIENT_TEST_DELAY=5 "
"CLIENT_TEST_COMPARE_LOG=T "
"CLIENT_TEST_RESEND_TIMEOUT=5 "
"CLIENT_TEST_INTERRUPT_AT=1",
testPrefix=options.testprefix)
context.add(scheduleworldtest)
memotootest = SyncEvolutionTest("memotoo", compile,
"", options.shell,
[ "Client::Sync" ],
[ "vcard21" ],
"CLIENT_TEST_NUM_ITEMS=10 CLIENT_TEST_FAILURES= CLIENT_TEST_DELAY=15",
testPrefix=options.testprefix)
context.add(memotootest)
egroupwaretest = SyncEvolutionTest("egroupware", compile,
"", options.shell,
[ "Client::Sync::vcard21", "Client::Sync::ical20::testCopy", "Client::Sync::ical20::testUpdate", "Client::Sync::ical20::testDelete", \
"Client::Sync::vcard21_ical20::testCopy", "Client::Sync::vcard21_ical20::testUpdate", "Client::Sync::vcard21_ical20::testDelete" \
"Client::Sync::ical20_vcard21::testCopy", "Client::Sync::ical20_vcard21::testUpdate", "Client::Sync::ical20_vcard21::testDelete" ],
[ "vcard21", "ical20" ],
[ "Client::Sync::vcard21",
"Client::Sync::ical20::testCopy",
"Client::Sync::ical20::testUpdate",
"Client::Sync::ical20::testDelete",
"Client::Sync::vcard21_ical20::testCopy",
"Client::Sync::vcard21_ical20::testUpdate",
"Client::Sync::vcard21_ical20::testDelete",
"Client::Sync::ical20_vcard21::testCopy",
"Client::Sync::ical20_vcard21::testUpdate",
"Client::Sync::ical20_vcard21::testDelete" ],
[ "vcard21",
"ical20" ],
# ContactSync::testRefreshFromServerSync,ContactSync::testRefreshFromClientSync,ContactSync::testDeleteAllRefresh,ContactSync::testRefreshSemantic,ContactSync::testRefreshStatus - refresh-from-client not supported by server
# ContactSync::testOneWayFromClient - not supported by server?
# ContactSync::testItems - loses a lot of information
@ -725,7 +756,22 @@ egroupwaretest = SyncEvolutionTest("egroupware", compile,
# ContactSync::testMaxMsg,ContactSync::testLargeObject,ContactSync::testLargeObjectBin - server fails to parse extra info?
# ContactSync::testTwinning - duplicates contacts
# CalendarSync::testCopy,CalendarSync::testUpdate - shifts time?
"CLIENT_TEST_FAILURES=ContactSync::testRefreshFromServerSync,ContactSync::testRefreshFromClientSync,ContactSync::testDeleteAllRefresh,ContactSync::testRefreshSemantic,ContactSync::testRefreshStatus,ContactSync::testOneWayFromClient,ContactSync::testAddUpdate,ContactSync::testItems,ContactSync::testComplexUpdate,ContactSync::testTwinning,ContactSync::testMaxMsg,ContactSync::testLargeObject,ContactSync::testLargeObjectBin,CalendarSync::testCopy,CalendarSync::testUpdate",
"CLIENT_TEST_FAILURES="
"ContactSync::testRefreshFromServerSync,"
"ContactSync::testRefreshFromClientSync,"
"ContactSync::testDeleteAllRefresh,"
"ContactSync::testRefreshSemantic,"
"ContactSync::testRefreshStatus,"
"ContactSync::testOneWayFromClient,"
"ContactSync::testAddUpdate,"
"ContactSync::testItems,"
"ContactSync::testComplexUpdate,"
"ContactSync::testTwinning,"
"ContactSync::testMaxMsg,"
"ContactSync::testLargeObject,"
"ContactSync::testLargeObjectBin,"
"CalendarSync::testCopy,"
"CalendarSync::testUpdate",
lambda x: x.replace('oasis.ethz.ch','<host hidden>').\
replace('cG9obHk6cWQyYTVtZ1gzZk5GQQ==','xxx'),
testPrefix=options.testprefix)
@ -734,9 +780,30 @@ context.add(egroupwaretest)
class SynthesisTest(SyncEvolutionTest):
def __init__(self, name, build, synthesisdir, runner, testPrefix):
SyncEvolutionTest.__init__(self, name, build, "", # os.path.join(synthesisdir, "logs")
runner, [ "Client::Sync" ],
[ "vcard21", "text" ],
"CLIENT_TEST_SKIP=Client::Sync::ical20::Retry,Client::Sync::ical20::Suspend,Client::Sync::vcard21::Retry,Client::Sync::vcard21::Suspend,Client::Sync::itodo20::Retry,Client::Sync::itodo20::Suspend,Client::Sync::text::Retry,Client::Sync::text::Suspend,Client::Sync::vcard21_text::Retry,Client::Sync::vcard21_text::Suspend CLIENT_TEST_NUM_ITEMS=20 CLIENT_TEST_DELAY=2 CLIENT_TEST_COMPARE_LOG=T",
runner,
[ "Client::Sync" ],
[ "vcard21",
"text" ],
"CLIENT_TEST_SKIP="
"Client::Sync::ical20::Retry,"
"Client::Sync::ical20::Suspend,"
"Client::Sync::ical20::Resend,"
"Client::Sync::vcard21::Retry,"
"Client::Sync::vcard21::Suspend,"
"Client::Sync::vcard21::Resend,"
"Client::Sync::itodo20::Retry,"
"Client::Sync::itodo20::Suspend,"
"Client::Sync::itodo20::Resend,"
"Client::Sync::text::Retry,"
"Client::Sync::text::Suspend,"
"Client::Sync::text::Resend,"
"Client::Sync::vcard21_text::Retry,"
"Client::Sync::vcard21_text::Suspend,"
"Client::Sync::vcard21_text::Resend "
"CLIENT_TEST_NUM_ITEMS=20 "
"CLIENT_TEST_DELAY=2 "
"CLIENT_TEST_COMPARE_LOG=T "
"CLIENT_TEST_RESEND_TIMEOUT=5",
serverName="synthesis",
testPrefix=testPrefix)
self.synthesisdir = synthesisdir
@ -767,8 +834,36 @@ class FunambolTest(SyncEvolutionTest):
SyncEvolutionTest.__init__(self, name, build, serverlogs,
runner,
[ "Client::Sync" ],
[ "vcard21", "ical20", "itodo20", "text" ],
"CLIENT_TEST_SKIP=Client::Sync::ical20::Retry,Client::Sync::ical20::Suspend,Client::Sync::vcard21::Retry,Client::Sync::vcard21::Suspend,Client::Sync::itodo20::Retry,Client::Sync::itodo20::Suspend,Client::Sync::text::Retry,Client::Sync::text::Suspend,Client::Sync::vcard21_ical20_itodo20_text::Retry,Client::Sync::vcard21_ical20_itodo20_text::Suspend,Client::Sync::text_itodo20_ical20_vcard21::Retry,Client::Sync::text_itodo20_ical20_vcard21::Suspend CLIENT_TEST_XML=1 CLIENT_TEST_MAX_ITEMSIZE=2048 CLIENT_TEST_DELAY=10 CLIENT_TEST_FAILURES= CLIENT_TEST_COMPARE_LOG=T",
[ "vcard21",
"ical20",
"itodo20",
"text" ],
"CLIENT_TEST_SKIP="
"Client::Sync::ical20::Retry,"
"Client::Sync::ical20::Suspend,"
"Client::Sync::ical20::Resend,"
"Client::Sync::vcard21::Retry,"
"Client::Sync::vcard21::Suspend,"
"Client::Sync::vcard21::Resend,"
"Client::Sync::itodo20::Retry,"
"Client::Sync::itodo20::Suspend,"
"Client::Sync::itodo20::Resend,"
"Client::Sync::text::Retry,"
"Client::Sync::text::Suspend,"
"Client::Sync::text::Resend,"
"Client::Sync::vcard21_ical20_itodo20_text::Retry,"
"Client::Sync::vcard21_ical20_itodo20_text::Suspend,"
"Client::Sync::vcard21_ical20_itodo20_text::Resend,"
"Client::Sync::text_itodo20_ical20_vcard21::Retry,"
"Client::Sync::text_itodo20_ical20_vcard21::Suspend,"
"Client::Sync::text_itodo20_ical20_vcard21::Resend "
"CLIENT_TEST_XML=1 "
"CLIENT_TEST_MAX_ITEMSIZE=2048 "
"CLIENT_TEST_DELAY=10 "
"CLIENT_TEST_FAILURES= "
"CLIENT_TEST_COMPARE_LOG=T "
"CLIENT_TEST_RESEND_TIMEOUT=5 "
"CLIENT_TEST_INTERRUPT_AT=1",
lineFilter=lambda x: x.replace('dogfood.funambol.com','<host hidden>'),
serverName="funambol",
testPrefix=testPrefix)
@ -795,7 +890,13 @@ zybtest = SyncEvolutionTest("zyb", compile,
"", options.shell,
[ "Client::Sync" ],
[ "vcard21" ],
"CLIENT_TEST_NUM_ITEMS=10 CLIENT_TEST_SKIP=Client::Sync::vcard21::Retry,Client::Sync::vcard21::Suspend CLIENT_TEST_DELAY=5 CLIENT_TEST_COMPARE_LOG=T",
"CLIENT_TEST_NUM_ITEMS=10 "
"CLIENT_TEST_SKIP="
"Client::Sync::vcard21::Retry,"
"Client::Sync::vcard21::Suspend,"
"Client::Sync::vcard21::Resend "
"CLIENT_TEST_DELAY=5 "
"CLIENT_TEST_COMPARE_LOG=T",
testPrefix=options.testprefix)
context.add(zybtest)
@ -803,18 +904,147 @@ googletest = SyncEvolutionTest("google", compile,
"", options.shell,
[ "Client::Sync" ],
[ "vcard21" ],
"CLIENT_TEST_NUM_ITEMS=10 CLIENT_TEST_XML=0 CLIENT_TEST_MAX_ITEMSIZE=2048 CLIENT_TEST_FAILURES=Client::Sync::vcard21::testRefreshFromClientSync,Client::Sync::vcard21::testRefreshFromClientSemantic,Client::Sync::vcard21::testRefreshStatus,Client::Sync::vcard21::testOneWayFromClient,Client::Sync::vcard21::testItemsXML CLIENT_TEST_SKIP=Client::Sync::vcard21::Retry,Client::Sync::vcard21::Suspend CLIENT_TEST_DELAY=5 CLIENT_TEST_COMPARE_LOG=T",
"CLIENT_TEST_NUM_ITEMS=10 "
"CLIENT_TEST_XML=0 "
"CLIENT_TEST_MAX_ITEMSIZE=2048 "
"CLIENT_TEST_SKIP="
"Client::Sync::vcard21::Retry,"
"Client::Sync::vcard21::Suspend,"
"Client::Sync::vcard21::Resend,"
"Client::Sync::vcard21::testRefreshFromClientSync,"
"Client::Sync::vcard21::testRefreshFromClientSemantic,"
"Client::Sync::vcard21::testRefreshStatus,"
"Client::Sync::vcard21::testOneWayFromClient,"
"Client::Sync::vcard21::testItemsXML "
"CLIENT_TEST_DELAY=5 "
"CLIENT_TEST_COMPARE_LOG=T",
testPrefix=options.testprefix)
context.add(googletest)
mobicaltest = SyncEvolutionTest("mobical", compile,
"", options.shell,
[ "Client::Sync" ],
[ "vcard21","ical20","itodo20","text" ],
"CLIENT_TEST_NOCHECK_SYNCMODE=1 CLIENT_TEST_MAX_ITEMSIZE=2048 CLIENT_TEST_SKIP=Client::Sync::vcard21::Retry,Client::Sync::vcard21::Suspend,Client::Sync::vcard21::testRefreshFromClientSync,Client::Sync::vcard21::testSlowSyncSemantic,Client::Sync::vcard21::testRefreshStatus,Client::Sync::vcard21::testDelete,Client::Sync::vcard21::testItemsXML,Client::Sync::vcard21::testOneWayFromServer,Client::Sync::ical20::testRefreshFromClientSync,Client::Sync::ical20::testSlowSyncSemantic,Client::Sync::ical20::testRefreshStatus,Client::Sync::ical20::testDelete,Client::Sync::ical20::testItemsXML,Client::Sync::ical20::testOneWayFromServer,Client::Sync::ical20::Retry,Client::Sync::ical20::Suspend,Client::Sync::itodo20::testRefreshFromClientSync,Client::Sync::itodo20::testSlowSyncSemantic,Client::Sync::itodo20::testRefreshStatus,Client::Sync::itodo20::testDelete,Client::Sync::itodo20::testItemsXML,Client::Sync::itodo20::testOneWayFromServer,Client::Sync::itodo20::Retry,Client::Sync::itodo20::Suspend,Client::Sync::text::testRefreshFromClientSync,Client::Sync::text::testSlowSyncSemantic,Client::Sync::text::testRefreshStatus,Client::Sync::text::testDelete,Client::Sync::text::testItemsXML,Client::Sync::text::testOneWayFromServer,Client::Sync::text::Retry,Client::Sync::text::Suspend,Client::Sync::vcard21_ical20_itodo20_text::testRefreshFromClientSync,Client::Sync::vcard21_ical20_itodo20_text::testSlowSyncSemantic,Client::Sync::vcard21_ical20_itodo20_text::testRefreshStatus,Client::Sync::vcard21_ical20_itodo20_text::testDelete,Client::Sync::vcard21_ical20_itodo20_text::testItemsXML,Client::Sync::vcard21_ical20_itodo20_text::testOneWayFromServer,Client::Sync::vcard21_ical20_itodo20_text::Retry,Client::Sync::vcard21_ical20_itodo20_text::Suspend,Client::Sync::text_itodo20_ical20_vcard21::testRefreshFromClientSync,Client::Sync::text_itodo20_ical20_vcard21::testSlowSyncSemantic,Client::Sync::text_itodo20_ical20_vcard21::testRefreshStatus,Client::Sync::text_itodo20_ical20_vcard21::testDelete,Client::Sync::text_itodo20_ical20_vcard21::testItemsXML,Client::Sync::text_itodo20_ical20_vcard21::testOneWayFromServer,Client::Sync::text_itodo20_ical20_vcard21::Retry,Client::Sync::text_itodo20_ical20_vcard21::Suspend CLIENT_TEST_DELAY=5 CLIENT_TEST_COMPARE_LOG=T",
testPrefix=options.testprefix)
"", options.shell,
[ "Client::Sync" ],
[ "vcard21",
"ical20",
"itodo20",
"text" ],
"CLIENT_TEST_NOCHECK_SYNCMODE=1 "
"CLIENT_TEST_MAX_ITEMSIZE=2048 "
"CLIENT_TEST_SKIP="
"Client::Sync::vcard21::Retry,"
"Client::Sync::vcard21::Suspend,"
"Client::Sync::vcard21::Resend,"
"Client::Sync::vcard21::testRefreshFromClientSync,"
"Client::Sync::vcard21::testSlowSyncSemantic,"
"Client::Sync::vcard21::testRefreshStatus,"
"Client::Sync::vcard21::testDelete,"
"Client::Sync::vcard21::testItemsXML,"
"Client::Sync::vcard21::testOneWayFromServer,"
"Client::Sync::ical20::testRefreshFromClientSync,"
"Client::Sync::ical20::testSlowSyncSemantic,"
"Client::Sync::ical20::testRefreshStatus,"
"Client::Sync::ical20::testDelete,"
"Client::Sync::ical20::testItemsXML,"
"Client::Sync::ical20::testOneWayFromServer,"
"Client::Sync::ical20::Retry,"
"Client::Sync::ical20::Suspend,"
"Client::Sync::ical20::Resend,"
"Client::Sync::itodo20::testRefreshFromClientSync,"
"Client::Sync::itodo20::testSlowSyncSemantic,"
"Client::Sync::itodo20::testRefreshStatus,"
"Client::Sync::itodo20::testDelete,"
"Client::Sync::itodo20::testItemsXML,"
"Client::Sync::itodo20::testOneWayFromServer,"
"Client::Sync::itodo20::Retry,"
"Client::Sync::itodo20::Suspend,"
"Client::Sync::itodo20::Resend,"
"Client::Sync::text::testRefreshFromClientSync,"
"Client::Sync::text::testSlowSyncSemantic,"
"Client::Sync::text::testRefreshStatus,"
"Client::Sync::text::testDelete,"
"Client::Sync::text::testItemsXML,"
"Client::Sync::text::testOneWayFromServer,"
"Client::Sync::text::Retry,"
"Client::Sync::text::Suspend,"
"Client::Sync::text::Resend,"
"Client::Sync::vcard21_ical20_itodo20_text::testRefreshFromClientSync,"
"Client::Sync::vcard21_ical20_itodo20_text::testSlowSyncSemantic,"
"Client::Sync::vcard21_ical20_itodo20_text::testRefreshStatus,"
"Client::Sync::vcard21_ical20_itodo20_text::testDelete,"
"Client::Sync::vcard21_ical20_itodo20_text::testItemsXML,"
"Client::Sync::vcard21_ical20_itodo20_text::testOneWayFromServer,"
"Client::Sync::vcard21_ical20_itodo20_text::Retry,"
"Client::Sync::vcard21_ical20_itodo20_text::Suspend,"
"Client::Sync::vcard21_ical20_itodo20_text::Resend,"
"Client::Sync::text_itodo20_ical20_vcard21::testRefreshFromClientSync,"
"Client::Sync::text_itodo20_ical20_vcard21::testSlowSyncSemantic,"
"Client::Sync::text_itodo20_ical20_vcard21::testRefreshStatus,"
"Client::Sync::text_itodo20_ical20_vcard21::testDelete,"
"Client::Sync::text_itodo20_ical20_vcard21::testItemsXML,"
"Client::Sync::text_itodo20_ical20_vcard21::testOneWayFromServer,"
"Client::Sync::text_itodo20_ical20_vcard21::Retry,"
"Client::Sync::text_itodo20_ical20_vcard21::Suspend,"
"Client::Sync::text_itodo20_ical20_vcard21::Resend "
"CLIENT_TEST_DELAY=5 "
"CLIENT_TEST_COMPARE_LOG=T "
"CLIENT_TEST_RESEND_TIMEOUT=5 "
"CLIENT_TEST_INTERRUPT_AT=1",
testPrefix=options.testprefix)
context.add(mobicaltest)
memotootest = SyncEvolutionTest("memotoo", compile,
"", options.shell,
[ "Client::Sync" ],
[ "vcard21",
"ical20",
"itodo20",
"text" ],
"CLIENT_TEST_NOCHECK_SYNCMODE=1 "
"CLIENT_TEST_NUM_ITEMS=10 "
"CLIENT_TEST_SKIP="
"Client::Sync::vcard21::Retry,"
"Client::Sync::vcard21::Suspend,"
"Client::Sync::vcard21::testRefreshFromClientSync,"
"Client::Sync::vcard21::testRefreshFromClientSemantic,"
"Client::Sync::vcard21::testRefreshStatus,"
"Client::Sync::vcard21::testOneWayFromServer,"
"Client::Sync::ical20::testRefreshFromClientSync,"
"Client::Sync::ical20::testRefreshFromClientSemantic,"
"Client::Sync::ical20::testRefreshStatus,"
"Client::Sync::ical20::testOneWayFromServer,"
"Client::Sync::ical20::Retry,"
"Client::Sync::ical20::Suspend,"
"Client::Sync::itodo20::testRefreshFromClientSync,"
"Client::Sync::itodo20::testRefreshFromClientSemantic,"
"Client::Sync::itodo20::testRefreshStatus,"
"Client::Sync::itodo20::testOneWayFromServer,"
"Client::Sync::itodo20::Retry,"
"Client::Sync::itodo20::Suspend,"
"Client::Sync::text::testRefreshFromClientSync,"
"Client::Sync::text::testRefreshFromClientSemantic,"
"Client::Sync::text::testRefreshStatus,"
"Client::Sync::text::testOneWayFromServer,"
"Client::Sync::text::Retry,"
"Client::Sync::text::Suspend,"
"Client::Sync::vcard21_ical20_itodo20_text::testRefreshFromClientSync,"
"Client::Sync::vcard21_ical20_itodo20_text::testRefreshFromClientSemantic,"
"Client::Sync::vcard21_ical20_itodo20_text::testRefreshStatus,"
"Client::Sync::vcard21_ical20_itodo20_text::testOneWayFromServer,"
"Client::Sync::vcard21_ical20_itodo20_text::Retry,"
"Client::Sync::vcard21_ical20_itodo20_text::Suspend,"
"Client::Sync::text_itodo20_ical20_vcard21::testRefreshFromClientSync,"
"Client::Sync::text_itodo20_ical20_vcard21::testRefreshFromClientSemantic,"
"Client::Sync::text_itodo20_ical20_vcard21::testRefreshStatus,"
"Client::Sync::text_itodo20_ical20_vcard21::testOneWayFromServer,"
"Client::Sync::text_itodo20_ical20_vcard21::Retry,"
"Client::Sync::text_itodo20_ical20_vcard21::Suspend "
"CLIENT_TEST_DELAY=5 "
"CLIENT_TEST_COMPARE_LOG=T "
"CLIENT_TEST_RESEND_TIMEOUT=5 "
"CLIENT_TEST_INTERRUPT_AT=1",
testPrefix=options.testprefix)
context.add(memotootest)
if options.list:
for action in context.todo:
print action.name

View file

@ -389,7 +389,7 @@ sub Normalize {
}
}
if ($mobical) {
s/^(CALURI|CATEGORIES|FBURL|NICKNAME|X-MOZILLA-HTML|PHOTO|X-EVOLUTION-FILE-AS|X-ANNIVERSARY|X-ASSISTANT|X-EVOLUTION-BLOG-URL|X-EVOLUTION-VIDEO-URL|X-GROUPWISE|X-ICQ|X-MANAGER|X-SPOUSE|X-YAHOO|X-AIM)(;[^:;\n]*)*:.*\r?\n?//gm;
s/^(CALURI|CATEGORIES|FBURL|NICKNAME|X-MOZILLA-HTML|X-EVOLUTION-FILE-AS|X-ANNIVERSARY|X-ASSISTANT|X-EVOLUTION-BLOG-URL|X-EVOLUTION-VIDEO-URL|X-GROUPWISE|X-ICQ|X-MANAGER|X-SPOUSE|X-YAHOO|X-AIM)(;[^:;\n]*)*:.*\r?\n?//gm;
# some workrounds here for mobical's bug
s/^(FN|BDAY)(;[^:;\n]*)*:.*\r?\n?//gm;

View file

@ -27,15 +27,13 @@ killvalgrind () {
( set -x; env GLIBCXX_FORCE_NEW=1 G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind $VALGRIND_ARGS --leak-check=yes --trace-children=no --quiet --gen-suppressions=all --log-file=$LOGFILE "$@" )
RET=$?
if [ $RET == 0 ]; then
# give other valgrind instances some time to settle down, then kill them
sleep 1
killvalgrind -15
sleep 5
killvalgrind -9
if grep '^==[0-9][0-9]*==' $LOGFILE >/dev/null; then
RET=1
fi
# give other valgrind instances some time to settle down, then kill them
sleep 1
killvalgrind -15
sleep 5
killvalgrind -9
if grep '^==[0-9][0-9]*==' $LOGFILE >/dev/null; then
RET=100
fi
exit $RET