build: Tidy up whitespace in tests Makefile.am

It was offending my sensibilities, which have apparently moved on since
I originally wrote that file.
build: Split common test code into a libtool convenience library

Instead of compiling the common code files into each test binary.
tasks: Add a missing symbol to gdata.symbols
tests: Split OAuth helper function out of oauth1-authorizer tests

Move it to the common test library, as it will be useful in future for
testing services which require OAuth authentication (such as Google
Tasks).
tests: Tighten error checking on UHM trace setup

If the trace file didn’t exist, we weren’t catching the error, and
things were failing further down the line.
tasks: Add helper constants for GDataTasksTask:status

So the user doesn’t need to keep typing out the well-known strings which
form the accepted values of GDataTasksTask:status.

This adds new API:
 • GDATA_TASKS_STATUS_NEEDS_ACTION
 • GDATA_TASKS_STATUS_COMPLETED
tasks: Remove unused members from GDataTasksQuery
tasks: Deprecate the ‘q’ parameter of gdata_tasks_query_new()

It was never a valid parameter, and we really should have caught this
before the API was finalised. Deprecate the parameter and document that
it should only ever have NULL passed to it. Don’t use the parameter
internally.

This is necessary because Google don’t support the ‘q’ parameter for
Tasks queries — there is no way to search within task titles or notes.
tasks: Invalid GDataTasksQuery:etag on property changes

Since the ETag no longer represents the query.
tasks: Document missing features of GDataTasksTask

Currently it doesn’t support links associated with a task.
tasks: Add missing kind_terms to GDataEntry subclasses

This is necessary to ensure the ‘kind’ JSON property appears in
generated output. I’m not sure how the service could have functioned
without these missing, unless Google is validating tasks very relaxedly.
tasks: Fix a property definition on GDataTasksTask

This one was certainly never tested.
tasks: Improve documentation for GDataTasksTask properties

Better document the format of datetime-typed properties — they are the
number of seconds since the UNIX epoch.
tests: Add a dummy GDataAuthorizer implementation

This will come in useful when testing services which don’t support
ClientLogin authorisation, such as Google Tasks. Such services require
OAuth authorisation, which requires user interaction. That puts up a big
barrier to running the unit tests frequently, and Google seem to provide
no ‘playground’ API key which could be used to bypass this requirement
for testing purposes.

The idea is that traces are recorded for tests using an OAuth
authoriser (requiring user interaction), then the dummy authoriser is
substituted when the tests are run offline against the pre-recorded
traces. This will require custom message matching in uhttpmock to ignore
the Authorization header, which will differ between the OAuth and dummy
authorisers.
docs: Remove unnecessary clean rules from documentation Makefile.am

These are now correctly included in gtk-doc.make.
core: Add an error code in GDataServiceError for exceeding the API quota

This adds API:
 • GDATA_SERVICE_ERROR_API_QUOTA_EXCEEDED
tasks: Add a custom error parser

The errors returned by the Google Tasks API are a simple JSON format
which allows for multiple error messages to be included. It appears to
be undocumented anywhere, so has been reverse engineered from examples
returned by the server.
tests: Add unit tests for the Google Tasks service

These are non-interactive and non-network tests, since I don’t currently
have time to get networked tests working for Google Tasks — they require
OAuth 2 support to land first (bug #646285).

By themselves, these non-network tests give 64% line coverage and 74%
function coverage of gdata/services/tasks/.
tests: Add support for the new SoupServer API

This increments the maximum libsoup dependency to ≤ 2.47.3, but does not
increment the minimum dependency.
core: Fix various minor mutex abuses

GLib has recently got stricter about abusing mutexes, and now no longer
allows:
 • Clearing a locked mutex.
 • Unlocking a non-locked mutex.
Both of which libgdata was doing, and now does no longer.