1
0
Fork 0
mirror of https://git.code.sf.net/p/archivemail/code synced 2024-12-21 23:32:54 +00:00
Commit graph

383 commits

Author SHA1 Message Date
Nikolaus Schulz
8ec8a00ffa test suite: cut down testing the handling of flagged messages
Don't do entire test archiving runs, just call
archivemail.should_archive().
2010-07-19 01:13:25 +02:00
Nikolaus Schulz
0ca3f6ceee test suite: remove duplicate test case for --date option 2010-07-19 01:13:25 +02:00
Nikolaus Schulz
bf99c6b69d test suite: cut down archive suffix generation testing
Don't do entire test archiving runs, just call
archivemail.make_archive_name() and verify the result.
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
232b2256c2 test suite: test weird message headers in one run
Before, every test header was tested in a separate archiving run.
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
573cbbce91 test suite: cut down the test of date header processing
Don't do entire test archiving runs, just call
archivemail.should_archive().
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
e9d2284a07 test suite: let make_message() optionally return a rfc822.Message 2010-07-19 01:13:24 +02:00
Nikolaus Schulz
8476dcd18f Remove lots of redundant test runs from the test suite
The test suite used to run a lot of triple tests, by first calling
archivemail.archive() directly, and then running the entire archivemail
script twice, once with long and once with short options.  But we already
test option processing seperately, and beyond that, archivemail.main()
essentially just calls archive() for each mailbox in turn.  So we just drop
all runs of the entire archivemail script from the test suite, giving it a
huge speed boost (on my old iBook, running the test suite drops from 73 to
5 seconds).
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
8f58deef5c Test suite: test command line option processing 2010-07-19 01:13:24 +02:00
Nikolaus Schulz
f80e709f7e test suite: eliminate remaining call of external gzip program
Use gzip.GzipFile instead.
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
8c6f4b99c1 test suite: define and use assertEqualContent() to compare files
This eliminates a lot of copy-and-paste code, and switches from
os.system("gzip <...>") to gzip.GzipFile.
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
9d9f13a440 test suite: account for lacking precision of os.utime()
os.utime() uses the utimes(2) system call to set file timestamps.  utimes(2)
has a microsecond resolution, but stat(2) may return timestamps with
nanosecond resolution.  So, the check that we have properly reset the mbox
file timestamp must allow a minor deviation.
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
54821151e4 Fix minor race when deleting messages in a maildir/mh box
Nothing serious, but if another client deleted it in the small window after
we checked it, we would have crashed trying to delete a non-existing file.
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
a7414319c9 Simplify the final committing of the mailbox and archive
* Make the finalise() methods spot if they have anything to do
* We used to create the temporary mbox files on demand in the message
  processing loop, if we needed to write to them.  Now we create them
  beforehand, but only if they might be needed (e.g. we don't create an
  archive if options.delete_old_mail is set).
* The above combined makes the final committing of the changes simpler (a
  *lot* simpler for mboxes), and we can dump the Mbox.leave_empty() method.
2010-07-19 01:13:24 +02:00
Nikolaus Schulz
b37b3d627e Split out new class TempMbox
This separates write-only mbox access to the temporary mboxes from the read-only
access to the original mbox.
2010-07-19 01:01:04 +02:00
Nikolaus Schulz
d6a161cd9e Simplify ArchiveMbox.__init__ 2009-11-06 21:09:40 +01:00
Nikolaus Schulz
df680c19be Append to the archive, and don't use rename()
This is WIP to prepare locking for the archive.  Since we no longer copy the
whole archive before appending, archiving should also be faster.
2009-11-06 21:09:40 +01:00
Nikolaus Schulz
37f96c1c84 Remove unused method Mbox.is_empty() 2009-11-06 21:09:40 +01:00
Nikolaus Schulz
a78af4c0ff Keep mbox files open, so we don't break our locks
When committing a changed mbox, don't use os.rename(), and don't open/close
the mbox file to truncate it to zero length.  Locking was pretty much broken
before -- at least in theory a quite severe bug.
2009-11-06 21:09:39 +01:00
Nikolaus Schulz
ba8928d279 Cleanup restoring of the mbox timestamps
* Remove code duplication: restore the mbox timestamps once and for all when
  we're done
* Don't bother restoring the file mode when finishing, since this is handled in
  RetainMbox.finalise() (and need be)
* Therefore, rename Mbox.reset_stat() to reset_timestamps()
2009-11-06 21:09:39 +01:00
Nikolaus Schulz
223e2f9802 Cosmetics: in verbose mode, report current mailbox early
This is now before we do the sanity checking, so in verbose mode, we don't error
out before having said that we now turn attention to the current mailbox.
2009-11-06 21:09:39 +01:00
Nikolaus Schulz
aee4df2fcf Refuse to process mailboxes owned by someone else
This should also protect people relying on the old setuid feature.
If the mailbox is local, by checking the ownership we necessarily check for
existance.
2009-11-06 21:09:39 +01:00
Nikolaus Schulz
2e0f3cd3aa Sanity check existing archives early
This used to happen when creating the temporary archive, we now do it before we
start processing the mailbox.
2009-11-06 21:09:39 +01:00
Nikolaus Schulz
79bcf86860 Remove simple-minded security checks
Remove the checks if the mailbox is a symlink, and if the output directory is
world-writable.  Better no security than half-baked security.
2009-11-06 21:09:39 +01:00
Nikolaus Schulz
a3276f8c68 Move archive naming code into new function make_archive_name() 2009-11-06 21:09:38 +01:00
Nikolaus Schulz
cd07a2663e Remove the setuid functionality
It was not a good idea, and trying to do it right would be too much effort.
2009-11-06 21:09:38 +01:00
Nikolaus Schulz
bd85cffe37 Simplify imap_get_namespace() and imap_guess_mailboxnames()
I don't think anybody wants to archive folders in shared or public IMAP
namespaces, so we don't bother checking all possible namespaces.  The code was
ugly anyway.
2009-11-06 21:09:38 +01:00
Nikolaus Schulz
9574c4f41c Removed obsolete references to subversion
archivemail development has moved to git.  This patch updates the project
webpage, removes the subversion $Id$ keyword that was stored in
archivemail.__svn_id__, and updates the Makefile.
2009-11-06 17:20:16 +01:00
Nikolaus Schulz
c6cb0b4612 IMAP: imap_guess_mailboxnames: check for NIL delimiter.
Only replace the slash with the server's hierarchy delimiter if the latter
actually exists (is not NIL).
2008-04-09 00:22:07 +00:00
Nikolaus Schulz
415e055a6e TODO: dropped items about --all, which is now implemented. 2008-04-08 23:15:45 +00:00
Nikolaus Schulz
622c0105ea IMAP: only check for \Deleted in PERMANENTFLAGS if mailbox isn't read-only.
This spewed an error when --dry-running.
2008-04-08 23:06:10 +00:00
Nikolaus Schulz
775952ec98 IMAP: added sanity check for \Deleted in PERMANENTFLAGS. 2008-04-08 19:31:11 +00:00
Nikolaus Schulz
681fd0c527 Minor, local variable renaming. 2008-04-08 19:10:41 +00:00
Nikolaus Schulz
e5b6397dd5 Moved IMAP SELECT code into a separate function. 2008-04-08 19:06:42 +00:00
Nikolaus Schulz
78b4923832 IMAP: be NAMESPACE-aware; improved probing for guessed mailbox names.
* Automatically add NAMESPACE prefix to the mailbox path if necessary, 
  * Explicitely check for guessed mailbox names with LIST instead of just trying
    to SELECT them. 
  * Updated documentation about NAMESPACE handling.
2008-04-08 15:38:51 +00:00
Nikolaus Schulz
37816fd659 archivemail.sgml: warn that multiple passes with --copy will create duplicates. 2008-04-08 14:11:45 +00:00
Nikolaus Schulz
bfff00e395 Code structuring: made a separate group of IMAP functions.
No code changes, just moved functions around.
2008-04-07 20:16:29 +00:00
Nikolaus Schulz
07219ff14b IMAP: servers should never advertise LOGINDISABLED with SSL; removed the check
for it, which was just used to spit a special error message anyway.
2008-03-21 01:05:15 +00:00
Nikolaus Schulz
26ab4611ec Archiving an IMAP folder with --all didn't archive *any* messages.
The message sequence numbers must be strings, but were generated as integers;
fixed.
2008-03-19 18:30:43 +00:00
Nikolaus Schulz
efe02ea32a Updated year in another copyright note, which I overlooked before. 2008-03-16 17:57:18 +00:00
Nikolaus Schulz
bc5c3d5e45 Updated changelog, which was a little behind. 2008-03-15 20:51:40 +00:00
Nikolaus Schulz
a9215463c4 Removed an assertion which choked upon --days=0. 2008-03-15 20:34:52 +00:00
Nikolaus Schulz
f43cbb106d Added new option --all to archive all messages in a mailbox.
Updated documentation, and added a first simple unittest for this.
Closes: #1764846.
2008-03-15 20:24:46 +00:00
Nikolaus Schulz
2719645f2c Updated copyright notes to include year 2008. 2008-03-15 19:39:28 +00:00
Nikolaus Schulz
9ac3a68228 Documented the new option --debug-imap in the manpage. 2008-03-15 19:35:22 +00:00
Nikolaus Schulz
c0f0ad33d7 Fixed crash when archiving an empty maildir with python 2.5.
The incompatible changes in mailbox.Maildir triggered an assertion in
_archive_dir(); removing that assertion since it looks not useful anyway.
2008-03-15 18:42:56 +00:00
Nikolaus Schulz
22e23d9d38 Sanitized parsing some IMAP server responses by switching to regular
expressions.
2008-03-15 15:59:05 +00:00
Nikolaus Schulz
f6f7903f58 test_archivemail.py: removed nested calls to setUp() and tearDown(). 2008-03-06 20:09:44 +00:00
Nikolaus Schulz
afa61f8597 TODO: added items:
* perhaps integrate --debug-imap into -vv switch
* graceful IMAP connection termination upon error
2008-02-14 22:31:11 +00:00
Nikolaus Schulz
704d5a961e Added --debug-imap option which just sets imaplib.Debug. 2008-02-14 22:26:10 +00:00
Nikolaus Schulz
6abf732d2e IMAP: catch LOGINDISABLED, and suggest using imaps. 2008-02-14 22:24:16 +00:00