Commit Graph

35 Commits

Author SHA1 Message Date
chris001 fc52034ea8 Autmomated testing using Travis and CodeCov.io!
Linux, Mac OSX. Outlook IMAP, Gmail. LOGIN, PLAIN, XOAUTH2. python 2.7, python 3.6!

Additional files required for Automated testing with Travis-CI and CodeCov.io!
Add gitter.im badge to README.

Signed-off-by: Chris Coleman/EspaceNetworks <chris001@users.noreply.github.com>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2018-03-05 19:31:51 +01:00
Łukasz Żarnowiecki 19c43308b9 Change filter with lambda to list comprehension
It is more readable and returns a list therefore it is compatible both
with Python 2 and 3.

Signed-off-by: Łukasz Żarnowiecki <dolohow@outlook.com>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2016-05-10 02:53:09 +02:00
Nicolas Sebrecht 36165e391f update links to the new URL www.offlineimap.org
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2016-02-19 12:10:23 +01:00
Pierre-Louis Bonicoli b7789268b7 test: handle imap.gmx.net server: workarounds
Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:17 +02:00
Pierre-Louis Bonicoli ff069e1d86 test: workaround for imaplib behaviour
an empty string appears after each literal string.

Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:16 +02:00
Pierre-Louis Bonicoli ecc2af9f99 test: handle literal string
Tuple are used for literal strings (see RFC3501 Section 4.3).

Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:16 +02:00
Pierre-Louis Bonicoli 4a5f32febd maildir deletion must not fail
Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:16 +02:00
Pierre-Louis Bonicoli 8be040d3a0 fix typo
Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:16 +02:00
Pierre-Louis Bonicoli eb16e5a86e test: always remove remote test folders
Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:15 +02:00
Pierre-Louis Bonicoli 8fbf741f77 test: remove commented statements
Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:15 +02:00
Pierre-Louis Bonicoli be89a7605f test: folders: keep quotes
Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:15 +02:00
Pierre-Louis Bonicoli afcd640035 test: folder separator could be dot or slash
Signed-off-by: Pierre-Louis Bonicoli <pierre-louis.bonicoli@gmx.fr>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
2015-04-02 19:32:15 +02:00
Eygene Ryabinkin 6cbd2498ae Refactoring: make functions to be private if we can
Make external API of class/module to be smaller, explicitely mark
all internal functions.  Also annotate methods that are implemented
as the part of the parent class interface.

Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
2014-04-30 19:35:56 +04:00
Eygene Ryabinkin f4140cbbed Create global instance of command-line options
This eases testing of option values inside the code.  This instance
is implemented as the read-only copy of the obtained 'options' object,
so callers won't be able to modify its contents.

Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
2013-02-11 23:34:18 +04:00
David Logie a614f9a735 Fix str.format() calls for Python 2.6.
Python 2.6 requires a slightly different string formatting that >2.7.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-06-02 18:25:51 +02:00
Sebastian Spaeth 0752c123f5 Implement the "createfolders" setting for repositories
By default OfflineImap propagates new folders in both
directions. Sometimes this is not what you want. E.g. you might want
new folders on your IMAP server to propagate to your local MailDir,
but not the other way around. The 'readonly' setting on a repository
will not help here, as it prevents any change from occuring on that
repository. This is what the `createfolders` setting is for. By
default it is `True`, meaning that new folders can be created on this
repository. To prevent folders from ever being created on a
repository, set this to `False`. If you set this to False on the
REMOTE repository, you will not have to create the `Reverse
nametrans`_ rules on the LOCAL repository.

Also implement a test for this

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-05-08 16:56:45 +02:00
Sebastian Spaeth d079e614ea tests: extend imapsplit test
One more test of the internal imapsplit function.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-04-19 17:15:56 +02:00
Sebastian Spaeth f67278b2a8 tests: Add tests for imaputil.* functions
Add one test for each of the functions in offlineimap.imaputil, to make
sure they keep working. These functions tests the internal innards of
the offlineimap module rather than invoking offlineimap as a program.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-04-03 01:34:59 +02:00
Sebastian Spaeth d6da65b18f tests: Fix test #4
1) Fix test #4 by deleting all local mailfolders remaining from previous
tests, the mailfolder count will be off, otherwise.

2) Make folder deletion work in python3, it weirdly enough needs to be
quoted like this to work in python3 (I found a python bug about this
somewhere).

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-27 16:35:17 +01:00
Sebastian Spaeth 2800a71a28 tests: Add "create email test"
This is the first test that actually creates a (local) email and
syncs. We check the result of the sync operation, to see if the
server has actually been assigning a proper UID to the email and
bail out if not.

This test therefore excercises our ability to properly detect the
new UID of an APPENDED email. Obviously we still need some
IMAP<->IMAP tests too, but since this is the same codepath being
used for APPENDs in that case, it could also help to detect
instabilities there.

In order to get this test in, the OLITestLib got a few new helper
functions:
- delete_maildir
- create_mail
- get_maildir_uids

The test passes here. I invoke it via:

python -m unittest test.tests.test_01_basic.TestBasicFunctions.test_04_createmail

or run python setup.py test, to run the whole suite.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-24 09:39:39 +01:00
Sebastian Spaeth d1e6e1f09e tests: make tests (nearly) work with python3
Tests work now with python 3 with the exception of the deletion of remote
testfolders which fails for some reasons.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-17 14:58:24 +01:00
Sebastian Spaeth d0723fb8a2 python3: Fix import in tests to work with python3
DOH

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-17 14:08:05 +01:00
Sebastian Spaeth 40bc1f50e7 tests: Use only 1 IMAP connection by default
We don't want to hammmer IMAP servers for the test series too much
to avoid being locked out. We will need a few tests to test
concurrent connections, but by default one connection should be fine.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-17 13:22:05 +01:00
Sebastian Spaeth 5979cc8ff9 tests: Add MappedIMAP test skeleton
No working tests yet.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-17 10:26:43 +01:00
Sebastian Spaeth 79ddb0be71 tests: add delete remote folder helper function
We need to clean out the remote folders before we invoke the test suite.
Implement a helper function that does this, and improve the test output
(less verbose) and the setup.py --help-commands (more verbose). Document
that it is possible to run a single test only. (although it is not
guaranteed that a test does not rely on the output of previous tests).

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-17 10:12:53 +01:00
Sebastian Spaeth ac033c68fd Improve nametrans local->remote folder syncing
While improving the test suite, I noticed that we would not create folders on
the remote in some cases when we should (yay for test suites!). This is because
we were testing the untransposed LOCAL foldername and check if it existed on
the remote side when deciding whether we should potentially create a new folder.

Simplify the code by transposing the LOCAL folder names in dst_hash, saving us
to create another confusing "newsrc" temp variable. Make the code a bit more
readable by using dst_name_t to indicate we operate a transposed folder name.

This now passes test 03 (using invalid nametrans rules) when test 03 would pass
before.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-16 11:45:18 +01:00
Sebastian Spaeth 75ea403278 test: Split configuration generation so we can tweak values
Use get_default_config and write_config_file (which can be handed an optional
config object), so we can manipulate configuration options easily from within
the test function.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-16 09:58:59 +01:00
Sebastian Spaeth c1f75a6c94 test: Create all intermediary maildirs
Don't fail if root maildir folder does not exist it. Create it recursively.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-02-16 09:56:23 +01:00
Sebastian Spaeth 314a4e3b2c Improve test suite and add test
1) Add helper functions to create and count maildirs and mails.

2) Add a second test that creates 2 maildirs, one of the including a
quotation sign " in its folder name and sync.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-01-20 15:55:44 +01:00
Sebastian Spaeth 2776ee1974 Create temp directories in "test" dir
Don't create the temp dirs in the current directory, but create them in
the same directory as the credentials.conf file is. We still need to
prevent deleting them on test failure, so that they can be inspected
manually.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-01-19 10:32:05 +01:00
Sebastian Spaeth bf1f79c571 Add "test" command to setup.py
"python setup.py test" will now run the complete test suite. Remove the
previous ./test command.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-01-19 10:32:05 +01:00
Sebastian Spaeth 1f91d0fd06 Adapt imports so that test/OLItest can be imported
To run the test suite from the main setup.py we need to be able to
import and run the test suite from a different folder than the "test"
dir.

Make "test" a package and fix the imports to still work when imported
from another folder.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-01-19 10:32:05 +01:00
Sebastian Spaeth 1cdabcec46 Add code comment
Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-01-19 10:32:05 +01:00
Sebastian Spaeth 9a905188f2 Add userfriendly warning if credentials.conf is missing
Warn the user and advise what she should be doing to get going.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-01-19 10:32:05 +01:00
Sebastian Spaeth 7b75e04b5b Add initial skeleton for a testing framework
This is the first revision that actually performs a test, in that it
starts up OfflineImap and sees if there are any exceptions.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-01-19 10:32:05 +01:00