Merge branch 'master' into dbus-api
This commit is contained in:
commit
607b54860d
30 changed files with 1279 additions and 205 deletions
|
@ -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
62
NEWS
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
560
po/gl.po
Normal 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
274
po/id.po
|
@ -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)"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -655,6 +655,7 @@ protected:
|
|||
}
|
||||
|
||||
virtual void testManyItems();
|
||||
virtual void testManyDeletes();
|
||||
virtual void testSlowSyncSemantic();
|
||||
virtual void testComplexRefreshFromServerSemantic();
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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])
|
||||
|
|
296
test/runtests.py
296
test/runtests.py
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue