2023-01-30 16:27:06 +03:00
package main
import (
"io"
"os"
"testing"
"github.com/mjl-/mox/mlog"
)
func TestMboxReader ( t * testing . T ) {
createTemp := func ( pattern string ) ( * os . File , error ) {
return os . CreateTemp ( "" , pattern )
}
mboxf , err := os . Open ( "testdata/importtest.mbox" )
if err != nil {
t . Fatalf ( "open mbox: %v" , err )
}
defer mboxf . Close ( )
mr := newMboxReader ( false , createTemp , mboxf , mlog . New ( "mboxreader" ) )
_ , mf0 , _ , err := mr . Next ( )
if err != nil {
t . Fatalf ( "next mbox message: %v" , err )
}
defer mf0 . Close ( )
defer os . Remove ( mf0 . Name ( ) )
_ , mf1 , _ , err := mr . Next ( )
if err != nil {
t . Fatalf ( "next mbox message: %v" , err )
}
defer mf1 . Close ( )
defer os . Remove ( mf1 . Name ( ) )
_ , _ , _ , err = mr . Next ( )
if err != io . EOF {
t . Fatalf ( "got err %v, expected eof for next mbox message" , err )
}
}
func TestMaildirReader ( t * testing . T ) {
createTemp := func ( pattern string ) ( * os . File , error ) {
return os . CreateTemp ( "" , pattern )
}
2023-01-30 16:38:55 +03:00
// todo: rename 1642966915.1.mox to "1642966915.1.mox:2,"? cannot have that name in the git repo because go module (or the proxy) doesn't like it. could also add some flags and test they survive the import.
2023-01-30 16:27:06 +03:00
newf , err := os . Open ( "testdata/importtest.maildir/new" )
if err != nil {
t . Fatalf ( "open maildir new: %v" , err )
}
defer newf . Close ( )
curf , err := os . Open ( "testdata/importtest.maildir/cur" )
if err != nil {
t . Fatalf ( "open maildir cur: %v" , err )
}
defer curf . Close ( )
mr := newMaildirReader ( false , createTemp , newf , curf , mlog . New ( "maildirreader" ) )
_ , mf0 , _ , err := mr . Next ( )
if err != nil {
t . Fatalf ( "next maildir message: %v" , err )
}
defer mf0 . Close ( )
defer os . Remove ( mf0 . Name ( ) )
_ , mf1 , _ , err := mr . Next ( )
if err != nil {
t . Fatalf ( "next maildir message: %v" , err )
}
defer mf1 . Close ( )
defer os . Remove ( mf1 . Name ( ) )
_ , _ , _ , err = mr . Next ( )
if err != io . EOF {
t . Fatalf ( "got err %v, expected eof for next maildir message" , err )
}
}