Some paths changed as part of the "automatic integrate" patch.
Instead of recalculating the path to the source code, use the
sync.basedir member.
(cherry picked from commit 4c5a27ce66)
Conflicts:
test/runtests.py
Branches committed to the libsynthesis or SyncEvolution git repo with
a name of "for-<branch>/<name>" will be automatically merged into
<branch> before starting the testing:
--sourcedir <dir with existing repos> --workdir <dir with merged repos>
The result can be reused as-is in further runtests.py invocation by using
--sourcedir <merged repos> --no-sourcedir-copy
Any local, *uncommitted* changes will be preserved and applied to
the merged sources (git stash). *Committed* changes will *not* be
applied. Always push them immediately.
Because there is a risk of loosing work when these rules are not
followed, the current state of the tree is stored as a branch created
with "git stash create" under the names
<branch>-nightly-before-<date+time> and <branch>-nightly. The latter
gets overwritten during each run.
These branches can be used to cherry-pick commits or restore the tree
as it was before the automatic merging ("git stash branch <branchname>
<branch>-nightly").
Result reporting includes information about the resulting code
revision. This includes the names of all branches which were
available for merging and whether that succeeded or failed. The output
of "git describe" is also included, always with a hash (even when it
matches a tag, in case that the tag gets moved) and whether the
working tree was dirty. All commits applied to the base branch are
listed in "git am" format.
This is done because the merged code is not pushed. This would clutter
the upstream code repository.
The "for-" prefix (instead of just "<branch>/") was added because git
got confused when <branch> was both a real branch and a directory of
other branches.
(cherry picked from commit 3e9fc042dc)
All-day event syncing only works with vCalendar 1.0 if client
and server use the same timezone. That's because all-day events
have to be represented as 00:00-23:59 events.
Use Europe/Berlin for the Mobical test account. That matches the current
server settings.
Somehow a PUT which removes the detached recurrence from a meeting has
no effect. Looks like a Google server bug. Keep testing, but ignore
the failure.
Memotoo seems to have some problem at the SyncML
level ("[SyncEvolution] Memotoo refresh + empty data"). Keep the
failing tests running for contacts so that we can debug this.
For some strange reason, the ckeck for x86 was broken and can't have
worked like that. Running dpkg-architecture as make argument just
doesn't make sense.
Client::Sync::*::testLinkedItems* cannot be run when testing multiple
sources at once because only event sources have the test data. Limit
testing to single sources.
Memotoo and Mobical need special linked item test case data because
they modify time stamps.
Memotoo refresh semantic seems to have changed. See "[SyncEvolution]
Memotoo refresh + empty data".
The name of the combined sources in _SKIP env variables were wrong.
This removes the change introduced with 2d0da5. Running the command
twice like that does not work when "sudo schroot" is involved because
it is only applied to the first invocation. The workaround for schroot
problems also no longer seems to be necessary.
The parameter for reusing prebuilt binaries points into the build
directory. Now we optionally use installed binaries if found in <build
dir>/../install.
Result checking and running commands must know where to find the
backends. Previously this was handled inconsistently and incorrectly.
Commands with parameters containing single quotes were also quoted
with single quotes, which breaks. Check this and use double quotes
instead in this case. Still fails for parameters with a mixture of
quotes. Does not occur at the moment, though, so the simple quoting is
sufficient.
The valgrindcheck arguments weren't copied from runtest.py's
environment into the constructed command because valgrindcheck.sh is
present with path and thus only a substring of the command as string,
but not a word by itself (and thus not in the word array).
Also added the new VALGRIND_LEAK_CHECK_ONLY_FIRST.
LD_LIBRARY_PATH can be set in the environment *of runtest.py* and
will be forwarded to client-test/syncevolution as part of the
"env LD_LIBRARY_PATH=..." part of the command invocation.
This has to be done like this because sudo+schroot do not pass
through LD_LIBRARY_PATH and runtest.py itself needs to set
it for SyncEvolution libs, which must not overwrite the per-target
setting.
When SyncEvolution forks for local syncing, it doesn't clean
up after the forked process. This caused lots of reports
from valgrind which showed up in the nightly test results.
Now valgrindcheck.sh is used to automatically ignore them.
An empty argument (like the server list in tests where no server
was involved) must be quoted, too, otherwise it gets dropped.
Broke parsing of some test results.
When sudo is necessary to enter the target platform, environment
variables no longer can be sent via the environment because
sudo ignores those. They must be be put onto the command line
of sudo, which then puts them into then environment of the invoked
process (depends on SETENV: permission in /etc/sudoers!).
This commit reorders the command line so that sudo comes
first, followed by env variables.
This reverts commit 4a52bd669f.
Conflicts:
test/runtests.py
The patch had to be reverted because firewall rules now seem to leave
ssh access as the only means of accessing the repository. Conflict due
to later changes, resolved.
runtests.py - made the SyncEvolutionTest class configurable so that it
can run test-bus.py, added "--enable=dbus" with it.
resultchecker.py - parse the output of test-dbus.py and split out the
failure reports for linking.
Avoid Python warning when destructing the Python file runs into the
already closed fd by closing the file instead of the low-level fd.
Print some information about the current action.
Running the sync tests first has the advantage that a successful
sync (one sync is enough, test doesn't have to pass) will set
the final resource URL and thus the source tests (which don't
do that) will run faster because they don't have to repeat
the auto discovery phase over and over again.
google_event.vcf and yahoo_contact.vcf were introduced together
with a configuration mechanism for selecting them because
different peers may need non-default test cases to pass the
testImport test. But the actual testing didn't use that yet - fixed.
When running a "dist" tests, also run "make distcheck" with
configure flags with disable EDS. Might trigger some issues
not seen otherwise, relevant for non-EDS users.
This is done by inserting the test specific env variables after
the default value. Also reformatted the string and use saner
string formatting.
The Apple test uses that to increase its allowed runtime.
Passing the "valgrind[check.sh]" prefix through to resultchecker
causes unnecessary valgrind output in the runtest .out file because
some of the commands invoked by resultchecker are started under valgrind.
Strip valgrind from the shell prefix, leaving the rest (= schroot + dbus-session)
in place.
The distinction between vcard21 and vcard30 became mute in the Evolution
backend a while ago. Both tests ended up using the vCard 3.0 Evolution
tests data and the default uri for each server. This patch removes
the vCard 2.1 special case.
It also renames the tests and test data to reflect that they always
were Evolution specific. The new naming convention, also applied
to file, QtContacts, KCalExtended, XMLRPC, Maemo and Akonadi backends, is
now <backend>_contact/event/task/memo, with eds/file/qt/kcal/maemo/kde
as backend names.
The reasoning is:
- results in unique string (in particular no overlap with
backend type names), easier to search for
- underscore already used before (in contrast to hyphen)
- no plural-s to keep the name shorter
The Akonadi backend should be using its own test data instead of
the Evolution ones.
The file:// prefix is no longer supported by EDS 2.32.
It also isn't supported by several other backends, for
example Akonadi. So let's use database names instead,
with a prefix defined via a new command line option.
These databases or directories (for the file backend)
must have been created in advance.
When the preparation failed and no tests were run, no email
with the HTML test report was sent.
Fixing this at two places:
- resultchecker.py always needs a "server" argument,
even if it is empty
- the compare style sheet depends on a testing section,
so write at least an empty one
apple, googlecalendar and yahoo include now also Client::Sync
tests. For "apple", this is the full set of tests. For the
others, only testItems is run.
Only the "evolution" test allowed selecting which client-test
tests to run. Now this code is in SyncEvolutionTest class itself.
The parameter to it with the default test list was turned into
a simple string, to match the value of the --enable parameter.
This is needed for local CalDAV/CardDAV tests to succeed.
With http_proxy set, all traffic would be attempted via
these proxies, which doesn't work.
All tests which need proxies have to be configured such
that proxyHost/useProxy is set correctly in the server configs.
runtests.py now has an entry for Apple Calendar Server,
with both CardDAV and CalDAV. The actual installation
can be local. To use this test, set up source-config@client-test-apple
with the correct syncURL and credentials.
Previously, the --prebuilt option could be specified multiple times.
This was never used and just made its implementation unecessarily complex. Now
this option overrides compilation and leaves the rest of the test
running unmodified.
Added separate Client::Source tests for Yahoo CalDAV/CardDAV
and Google CalDAV. Reporting the results needs to know that these
"servers" are local tests.
These tests can only be run if CLIENT_TEST_WEBDAV is set as
expected by WebDAVSourceRegister.cpp.
This was an attempt to avoid issues with the autotools scripts
and rebuilding their files. It did not solve the problem entirely
(--disable-maintainer-mode eventually did), but the change makes
sense nevertheless, for example of the directory inside a chroot
is different than the one in the host.
First, dump information about relevant valgrind parameters
if valgrindcheck.sh is part of the command line. Now
executing the logged command acts like the original invocation.
Second, include the current directory as a "cd" command, to
simplify re-execution of the command.