Merge "DO NOT MERGE: Fix flaky tests" into gingerbread
This commit is contained in:
commit
090489b395
|
@ -19,7 +19,6 @@ package com.android.email;
|
|||
import com.android.email.activity.AccountShortcutPicker;
|
||||
import com.android.email.activity.Debug;
|
||||
import com.android.email.activity.MessageCompose;
|
||||
import com.android.email.mail.internet.BinaryTempFileBody;
|
||||
import com.android.email.provider.EmailContent;
|
||||
import com.android.email.service.BootReceiver;
|
||||
import com.android.email.service.MailService;
|
||||
|
@ -185,14 +184,20 @@ public class Email extends Application {
|
|||
public static int getAccountColorResourceId(long accountId) {
|
||||
return ACCOUNT_COLOR_CHIP_RES_IDS[getColorIndexFromAccountId(accountId)];
|
||||
}
|
||||
|
||||
|
||||
public static int getAccountColor(long accountId) {
|
||||
return ACCOUNT_COLOR_CHIP_RGBS[getColorIndexFromAccountId(accountId)];
|
||||
}
|
||||
|
||||
public static void setTempDirectory(Context context) {
|
||||
sTempDirectory = context.getCacheDir();
|
||||
}
|
||||
|
||||
public static File getTempDirectory() {
|
||||
if (sTempDirectory == null) {
|
||||
throw new RuntimeException("TempDirectory not set. Application hasn't started??");
|
||||
throw new RuntimeException(
|
||||
"TempDirectory not set. " +
|
||||
"If in a unit test, call Email.setTempDirectory(context) in setUp().");
|
||||
}
|
||||
return sTempDirectory;
|
||||
}
|
||||
|
@ -265,7 +270,7 @@ public class Email extends Application {
|
|||
Preferences prefs = Preferences.getPreferences(this);
|
||||
DEBUG = prefs.getEnableDebugLogging();
|
||||
DEBUG_SENSITIVE = prefs.getEnableSensitiveLogging();
|
||||
sTempDirectory = getCacheDir();
|
||||
setTempDirectory(this);
|
||||
|
||||
// Reset all accounts to default visible window
|
||||
Controller.getInstance(this).resetVisibleLimits();
|
||||
|
|
|
@ -65,6 +65,7 @@ public class MessageViewTests
|
|||
super.setUp();
|
||||
|
||||
mContext = getInstrumentation().getTargetContext();
|
||||
Email.setTempDirectory(mContext);
|
||||
Email.setServicesEnabled(mContext);
|
||||
|
||||
// setup an intent to spin up this activity with something useful
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package com.android.email.mail.internet;
|
||||
|
||||
import com.android.email.Email;
|
||||
import com.android.email.mail.Message;
|
||||
import com.android.email.mail.MessageTestUtils;
|
||||
import com.android.email.mail.MessagingException;
|
||||
|
@ -54,6 +55,7 @@ public class EmailHtmlUtilTest extends AndroidTestCase {
|
|||
super.setUp();
|
||||
// Force assignment of a default account, and retrieve it
|
||||
Context context = getContext();
|
||||
Email.setTempDirectory(context);
|
||||
|
||||
// Force assignment of a default account
|
||||
long accountId = Account.getDefaultAccountId(context);
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package com.android.email.mail.store;
|
||||
|
||||
import com.android.email.Email;
|
||||
import com.android.email.mail.Address;
|
||||
import com.android.email.mail.FetchProfile;
|
||||
import com.android.email.mail.Flag;
|
||||
|
@ -30,7 +31,6 @@ import com.android.email.mail.Message.RecipientType;
|
|||
import com.android.email.mail.internet.MimeUtility;
|
||||
import com.android.email.mail.internet.TextBody;
|
||||
import com.android.email.mail.store.ImapStore.ImapMessage;
|
||||
import com.android.email.mail.transport.DiscourseLogger;
|
||||
import com.android.email.mail.transport.MockTransport;
|
||||
|
||||
import android.test.AndroidTestCase;
|
||||
|
@ -38,9 +38,7 @@ import android.test.MoreAsserts;
|
|||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* This is a series of unit tests for the ImapStore class. These tests must be locally
|
||||
|
@ -52,20 +50,21 @@ import java.util.Locale;
|
|||
@SmallTest
|
||||
public class ImapStoreUnitTests extends AndroidTestCase {
|
||||
private final static String[] NO_REPLY = new String[0];
|
||||
|
||||
|
||||
/* These values are provided by setUp() */
|
||||
private ImapStore mStore = null;
|
||||
private ImapStore.ImapFolder mFolder = null;
|
||||
|
||||
private int mNextTag;
|
||||
|
||||
|
||||
/**
|
||||
* Setup code. We generate a lightweight ImapStore and ImapStore.ImapFolder.
|
||||
*/
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
Email.setTempDirectory(getContext());
|
||||
|
||||
// These are needed so we can get at the inner classes
|
||||
mStore = (ImapStore) ImapStore.newInstance("imap://user:password@server:999",
|
||||
getContext(), null);
|
||||
|
@ -76,16 +75,16 @@ public class ImapStoreUnitTests extends AndroidTestCase {
|
|||
* Confirms simple non-SSL non-TLS login
|
||||
*/
|
||||
public void testSimpleLogin() throws MessagingException {
|
||||
|
||||
|
||||
MockTransport mockTransport = openAndInjectMockTransport();
|
||||
|
||||
|
||||
// try to open it
|
||||
setupOpenFolder(mockTransport);
|
||||
mFolder.open(OpenMode.READ_WRITE, null);
|
||||
|
||||
|
||||
// TODO: inject specific facts in the initial folder SELECT and check them here
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* TODO: Test with SSL negotiation (faked)
|
||||
* TODO: Test with SSL required but not supported
|
||||
|
@ -198,7 +197,7 @@ public class ImapStoreUnitTests extends AndroidTestCase {
|
|||
*/
|
||||
private HashMap<String, String> tokenizeImapId(String id) {
|
||||
// Instead of a true tokenizer, we'll use double-quote as the split.
|
||||
// We can's use " " because there may be spaces inside the values.
|
||||
// We can's use " " because there may be spaces inside the values.
|
||||
String[] elements = id.split("\"");
|
||||
HashMap<String, String> map = new HashMap<String, String>();
|
||||
for (int i = 0; i < elements.length; ) {
|
||||
|
@ -218,7 +217,7 @@ public class ImapStoreUnitTests extends AndroidTestCase {
|
|||
*/
|
||||
public void testServerId() throws MessagingException {
|
||||
MockTransport mockTransport = openAndInjectMockTransport();
|
||||
|
||||
|
||||
// try to open it
|
||||
setupOpenFolder(mockTransport, new String[] {
|
||||
"* ID (\"name\" \"Cyrus\" \"version\" \"1.5\"" +
|
||||
|
@ -233,62 +232,30 @@ public class ImapStoreUnitTests extends AndroidTestCase {
|
|||
*/
|
||||
public void testImapIdOkParsing() throws MessagingException {
|
||||
MockTransport mockTransport = openAndInjectMockTransport();
|
||||
|
||||
|
||||
// try to open it
|
||||
setupOpenFolder(mockTransport, new String[] {
|
||||
"* ID NIL",
|
||||
"OK [ID] bad-char-%"}, "READ-WRITE");
|
||||
mFolder.open(OpenMode.READ_WRITE, null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test BAD response to IMAP ID - also with bad parser chars
|
||||
*/
|
||||
public void testImapIdBad() throws MessagingException {
|
||||
MockTransport mockTransport = openAndInjectMockTransport();
|
||||
|
||||
|
||||
// try to open it
|
||||
setupOpenFolder(mockTransport, new String[] {
|
||||
"BAD unknown command bad-char-%"}, "READ-WRITE");
|
||||
mFolder.open(OpenMode.READ_WRITE, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirms that ImapList object correctly returns an appropriate Date object
|
||||
* without throwning MessagingException when getKeyedDate() is called.
|
||||
*
|
||||
* Here, we try a same test twice using two locales, Locale.US and the other.
|
||||
* ImapList uses Locale class internally, and as a result, there's a
|
||||
* possibility in which it may throw a MessageException when Locale is
|
||||
* not Locale.US. Locale.JAPAN is a typical locale which emits different
|
||||
* date formats, which had caused a bug before.
|
||||
* @throws MessagingException
|
||||
*/
|
||||
public void testImapListWithUsLocale() throws MessagingException {
|
||||
Locale savedLocale = Locale.getDefault();
|
||||
Locale.setDefault(Locale.US);
|
||||
doTestImapList();
|
||||
Locale.setDefault(Locale.JAPAN);
|
||||
doTestImapList();
|
||||
Locale.setDefault(savedLocale);
|
||||
}
|
||||
|
||||
private void doTestImapList() throws MessagingException {
|
||||
ImapResponseParser parser = new ImapResponseParser(null, new DiscourseLogger(4));
|
||||
ImapResponseParser.ImapList list = parser.new ImapList();
|
||||
String key = "key";
|
||||
String date = "01-Jan-2009 01:00:00 -0800";
|
||||
list.add(key);
|
||||
list.add(date);
|
||||
Date result = list.getKeyedDate(key);
|
||||
// "01-Jan-2009 09:00:00 +0000" => 1230800400000L
|
||||
assertEquals(1230800400000L, result.getTime());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* TODO: Test the operation of checkSettings()
|
||||
* TODO: Test small Store & Folder functions that manage folders & namespace
|
||||
*/
|
||||
*/
|
||||
|
||||
/**
|
||||
* Test small Folder functions that don't really do anything in Imap
|
||||
|
@ -310,27 +277,27 @@ public class ImapStoreUnitTests extends AndroidTestCase {
|
|||
|
||||
/**
|
||||
* Lightweight test to confirm that IMAP hasn't implemented any folder roles yet.
|
||||
*
|
||||
*
|
||||
* TODO: Test this with multiple folders provided by mock server
|
||||
* TODO: Implement XLIST and then support this
|
||||
*/
|
||||
public void testNoFolderRolesYet() {
|
||||
assertEquals(Folder.FolderRole.UNKNOWN, mFolder.getRole());
|
||||
assertEquals(Folder.FolderRole.UNKNOWN, mFolder.getRole());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Lightweight test to confirm that IMAP isn't requesting structure prefetch.
|
||||
*/
|
||||
public void testNoStructurePrefetch() {
|
||||
assertFalse(mStore.requireStructurePrefetch());
|
||||
assertFalse(mStore.requireStructurePrefetch());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Lightweight test to confirm that IMAP is requesting sent-message-upload.
|
||||
* TODO: Implement Gmail-specific cases and handle this server-side
|
||||
*/
|
||||
public void testSentUploadRequested() {
|
||||
assertTrue(mStore.requireCopyMessageToSentFolder());
|
||||
assertTrue(mStore.requireCopyMessageToSentFolder());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -338,7 +305,7 @@ public class ImapStoreUnitTests extends AndroidTestCase {
|
|||
*/
|
||||
|
||||
/**
|
||||
* TODO: Test the scenario where the transport is "open" but not really (e.g. server closed).
|
||||
* TODO: Test the scenario where the transport is "open" but not really (e.g. server closed).
|
||||
/**
|
||||
* Set up a basic MockTransport. open it, and inject it into mStore
|
||||
*/
|
||||
|
@ -395,7 +362,7 @@ public class ImapStoreUnitTests extends AndroidTestCase {
|
|||
"* CAPABILITY IMAP4rev1 STARTTLS AUTH=GSSAPI LOGINDISABLED",
|
||||
"1 OK CAPABILITY completed"});
|
||||
mockTransport.expect("2 ID \\(.*\\)", imapIdResponse);
|
||||
mockTransport.expect("3 LOGIN user \"password\"",
|
||||
mockTransport.expect("3 LOGIN user \"password\"",
|
||||
"3 OK user authenticated (Success)");
|
||||
mockTransport.expect("4 SELECT \"INBOX\"", new String[] {
|
||||
"* FLAGS (\\Answered \\Flagged \\Draft \\Deleted \\Seen)",
|
||||
|
|
|
@ -81,6 +81,7 @@ public class LocalStoreUnitTests extends AndroidTestCase {
|
|||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
Email.setTempDirectory(getContext());
|
||||
|
||||
// These are needed so we can get at the inner classes
|
||||
// Create a dummy database (be sure to delete it in tearDown())
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package com.android.email.mail.store;
|
||||
|
||||
import com.android.email.Email;
|
||||
import com.android.email.mail.Address;
|
||||
import com.android.email.mail.FetchProfile;
|
||||
import com.android.email.mail.Flag;
|
||||
|
@ -53,7 +54,8 @@ public class Pop3StoreUnitTests extends AndroidTestCase {
|
|||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
Email.setTempDirectory(getContext());
|
||||
|
||||
// These are needed so we can get at the inner classes
|
||||
mStore = (Pop3Store) Pop3Store.newInstance("pop3://user:password@server:999",
|
||||
getContext(), null);
|
||||
|
|
Loading…
Reference in New Issue