--- a/configure.in
+++ b/configure.in
@@ -76,16 +76,17 @@ TARGET_OS="${target_os}"
dnl comm-central-specific options
dnl (MOZILLA_SRCDIR would fit here, but is needed to find autoconf tools)
COMM_BUILD=1
AC_SUBST(COMM_BUILD)
dnl export this, so the var is set for mozilla/configure
MOZCONFIG=`$_AUTOCONF_TOOLS_DIR/mozconfig-find $topsrcdir`
export MOZCONFIG
+echo "MOZCONFIG = $MOZCONFIG"
MOZ_DEB_TIMESTAMP=`date +"%a, %d %b %Y %T %z" 2>&1`
AC_SUBST(MOZ_DEB_TIMESTAMP)
dnl ========================================================
dnl =
dnl = Don't change the following two lines. Doing so breaks:
dnl =
--- a/mail/test/mozmill/Makefile.in
+++ b/mail/test/mozmill/Makefile.in
@@ -70,18 +70,31 @@ GARBAGE += automation.py
# Copy the mozmill bits to $(_DEST_DIR)
libs:: $(_HARNESS_FILES)
echo $(_HARNESS_FILES)
$(INSTALL) $(_HARNESS_FILES) $(_DEST_DIR)
# Copy the mailnews and mail resources that we require.
libs::
- $(INSTALL) $(topsrcdir)/mailnews/test/resources/* $(MOZDEPTH)/_tests/mozmill/resources
- $(INSTALL) $(topsrcdir)/mailnews/test/fakeserver/* $(MOZDEPTH)/_tests/mozmill/resources
- $(INSTALL) $(topsrcdir)/mail/base/test/unit/resources/* $(MOZDEPTH)/_tests/mozmill/resources
+ $(INSTALL) $(topsrcdir)/mailnews/test/resources/* $(_DEST_DIR)/resources
+ $(INSTALL) $(topsrcdir)/mailnews/test/fakeserver/* $(_DEST_DIR)/resources
+ $(INSTALL) $(topsrcdir)/mail/base/test/unit/resources/* $(_DEST_DIR)/resources
+
+# Copy MozMill and its dependencies over, and set up a virtualenv. The
+# virtualenv directory is outside because we don't want to bundle it up during
+# stage-package.
+VIRTUALENV_DIR = $(_DEST_DIR)/../mozmill-virtualenv
+mozmill-virtualenv: NSDISTMODE=copy
+mozmill-virtualenv:
+ $(DIR_INSTALL) $(topsrcdir)/mail/test/resources $(_DEST_DIR)
+ rm -rf $(VIRTUALENV_DIR) && \
+ mkdir $(VIRTUALENV_DIR) && \
+ $(PYTHON) $(_DEST_DIR)/resources/installmozmill.py $(VIRTUALENV_DIR)
+
+libs:: mozmill-virtualenv
PKG_STAGE = $(DIST)/test-package-stage
stage-package:
$(NSINSTALL) -D $(PKG_STAGE)/mozmill/
@(cd $(topsrcdir)/mail/test/mozmill && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/mozmill/ && tar -xf -)
@(cd $(MOZDEPTH)/_tests/mozmill && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/mozmill/ && tar -xf -)
--- a/mail/test/mozmill/folder-display/test-message-commands.js
+++ b/mail/test/mozmill/folder-display/test-message-commands.js
@@ -477,8 +477,13 @@ function test_tag_keys_disabled_in_conte
wait_for_content_tab_load(tab);
assert_content_tab_has_url(tab, 'about:addons');
// Make sure pressing the "1" key in a content tab doesn't tag a message
check_tag_in_message(curMessage, tagArray[0], false);
mc.keypress(null, "1", {});
check_tag_in_message(curMessage, tagArray[0], false);
}
+
+function teardownModule() {
+ // Make sure archiving is enabled at the end
+ enable_archiving(true);
+}
\ No newline at end of file
--- a/mail/test/mozmill/message-header/test-message-header.js
+++ b/mail/test/mozmill/message-header/test-message-header.js
@@ -44,43 +44,44 @@ var MODULE_NAME = 'test-message-header';
var RELATIVE_ROOT = '../shared-modules';
var MODULE_REQUIRES = ['folder-display-helpers', 'window-helpers',
'address-book-helpers'];
var elib = {};
Cu.import('resource://mozmill/modules/elementslib.js', elib);
var folder;
+var gInterestingMessage;
function setupModule(module) {
let fdh = collector.getModule('folder-display-helpers');
fdh.installInto(module);
let wh = collector.getModule('window-helpers');
wh.installInto(module);
let abh = collector.getModule('address-book-helpers');
abh.installInto(module);
folder = create_folder("MessageWindowA");
// create a message that has the interesting headers that commonly
// show up in the message header pane for testing
- let msg = create_message({cc: msgGen.makeNamesAndAddresses(20), // YYY
- subject: "This is a really, really, really, really, really, really, really, really, long subject.",
- clobberHeaders: {
- "Newsgroups": "alt.test",
- "Reply-To": "J. Doe <j.doe@momo.invalid>",
- "Content-Base": "http://example.com/",
- "Bcc": "Richard Roe <richard.roe@momo.invalid>"
- }});
+ gInterestingMessage = create_message({cc: msgGen.makeNamesAndAddresses(20), // YYY
+ subject: "This is a really, really, really, really, really, really, really, really, long subject.",
+ clobberHeaders: {
+ "Newsgroups": "alt.test",
+ "Reply-To": "J. Doe <j.doe@momo.invalid>",
+ "Content-Base": "http://example.com/",
+ "Bcc": "Richard Roe <richard.roe@momo.invalid>"
+ }});
- add_message_to_folder(folder, msg);
+ add_message_to_folder(folder, gInterestingMessage);
// create a message that has boring headers to be able to switch to and
// back from, to force the more button to collapse again.
- msg = create_message();
+ let msg = create_message();
add_message_to_folder(folder, msg);
}
function test_add_tag_with_really_long_label() {
be_in_folder(folder);
// select the first message, which will display it
let curMessage = select_click_row(0);
@@ -127,161 +128,16 @@ function test_add_tag_with_really_long_l
// Remove the tag and put it back so that the a11y label gets regenerated
// with the normal value rather than "taaaaaaaags"
tagsLabel.value = oldTagsValue;
mc.keypress(mc.eid("expandedHeadersNameColumn"), "1", {});
mc.keypress(mc.eid("expandedHeadersNameColumn"), "1", {});
}
-/**
- * @param headerName used for pretty-printing in exceptions
- * @param headerValueElement code to be eval()ed returning the DOM element
- * with the data.
- * @param expectedName code to be eval()ed returning the expected value of
- * nsIAccessible.name for the DOM element in question
- * @param expectedRole the expected value for nsIAccessible.role
- */
-let headersToTest = [
-{
- headerName: "Subject",
- headerValueElement: "mc.a('expandedsubjectBox', {class: 'headerValue'})",
- expectedName: "mc.e('expandedsubjectLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.textContent",
- expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
-},
-{
- headerName: "Content-Base",
- headerValueElement: "mc.a('expandedcontent-baseBox', {class: 'headerValue text-link headerValueUrl'})",
- expectedName: "mc.e('expandedcontent-baseLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.textContent",
- expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
-},
-{
- headerName: "From",
- headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
- "mc.a('expandedfromBox', {tagName: 'mail-emailaddress'})," +
- "'class', 'emailDisplayButton')",
- expectedName: "mc.e('expandedfromLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.parentNode.getAttribute('fullAddress')",
- expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
-},
-{
- headerName: "To",
- headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
- "mc.a('expandedtoBox', {tagName: 'mail-emailaddress'})," +
- "'class', 'emailDisplayButton')",
- expectedName: "mc.e('expandedtoLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.parentNode.getAttribute('fullAddress')",
- expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
-},
-{
- headerName: "Cc",
- headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
- "mc.a('expandedccBox', {tagName: 'mail-emailaddress'})," +
- "'class', 'emailDisplayButton')",
- expectedName: "mc.e('expandedccLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.parentNode.getAttribute('fullAddress')",
- expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
-},
-{
- headerName: "Bcc",
- headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
- "mc.a('expandedbccBox', {tagName: 'mail-emailaddress'})," +
- "'class', 'emailDisplayButton')",
- expectedName: "mc.e('expandedbccLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.parentNode.getAttribute('fullAddress')",
- expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
-},
-{
- headerName: "Reply-To",
- headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
- "mc.a('expandedreply-toBox', {tagName: 'mail-emailaddress'})," +
- "'class', 'emailDisplayButton')",
- expectedName: "mc.e('expandedreply-toLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.parentNode.getAttribute('fullAddress')",
- expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
-},
-{
- headerName: "Newsgroups",
- headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
- "mc.a('expandednewsgroupsBox', {tagName: 'mail-newsgroup'})," +
- "'class', 'newsgrouplabel')",
- expectedName: "mc.e('expandednewsgroupsLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.parentNode.parentNode.getAttribute('newsgroup')",
- expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
-},
-{
- headerName: "Tags",
- headerValueElement: "mc.a('expandedtagsBox', {class: 'tagvalue blc-FF0000'})",
- expectedName: "mc.e('expandedtagsLabel').value.slice(0,-1) + ': ' + " +
- "headerValueElement.getAttribute('value')",
- expectedRole: Ci.nsIAccessibleRole.ROLE_LABEL
-}
-];
-
-// used to get the accessible object for a DOM node
-let gAccRetrieval = Cc["@mozilla.org/accessibleRetrieval;1"].
- getService(Ci.nsIAccessibleRetrieval);
-
-/**
- * Use the information from aHeaderInfo to verify that screenreaders will
- * do the right thing with the given message header.
- *
- * @param {Object} aHeaderInfo Information about how to do the verification;
- * See the comments above the headersToTest array
- * for details.
- */
-function verify_header_a11y(aHeaderInfo) {
- // XXX Don't use eval here.
- let headerValueElement = eval(aHeaderInfo.headerValueElement);
-
- let headerAccessible = gAccRetrieval.getAccessibleFor(headerValueElement);
- if (headerAccessible.role != aHeaderInfo.expectedRole) {
- throw new Error("role for " + aHeaderInfo.headerName + " was " +
- headerAccessible.role + "; should have been " +
- aHeaderInfo.expectedRole);
- }
-
- // XXX Don't use eval here.
- let expectedName = eval(aHeaderInfo.expectedName);
- if (headerAccessible.name != expectedName) {
- throw new Error("headerAccessible.name for " + aHeaderInfo.headerName +
- " was '" + headerAccessible.name + "'; expected '" +
- expectedName + "'");
- }
-}
-
-/**
- * Test the accessibility attributes of the various message headers.
- *
- * XXX This test used to be after test_more_button_with_many_recipients,
- * however, there were some accessibility changes that it didn't seem to play
- * nicely with, and the toggling of the "more" button on the cc field was
- * causing this test to fail on the cc element. Tests with accessibilty
- * hardware/software showed that the code was working fine. Therefore the test
- * may be suspect.
- */
-function test_a11y_attrs() {
- // skip this test on platforms that don't support accessibility
- if (!("nsIAccessibleRole" in Components.interfaces))
- return;
-
- be_in_folder(folder);
-
- // select and open the first message
- let curMessage = select_click_row(0);
-
- // make sure it loads
- wait_for_message_display_completion(mc);
- assert_selected_and_displayed(mc, curMessage);
-
- headersToTest.forEach(verify_header_a11y);
-}
-
function test_more_button_with_many_recipients()
{
// Start on the interesting message.
let curMessage = select_click_row(0);
// make sure it loads
wait_for_message_display_completion(mc);
assert_selected_and_displayed(mc, curMessage);
@@ -877,8 +733,152 @@ function test_get_msg_button_customize_h
if (originalServerCount != finalServerCount) {
throw new Error("number of entries in Get Message Button popup menu after " +
"header toolbar customization " +
finalServerCount + " <> as before: " +
originalServerCount);
}
}
+// Some platforms (notably Mac) don't have a11y, so disable these tests there.
+if ("nsIAccessibleRole" in Ci) {
+ /**
+ * @param headerName used for pretty-printing in exceptions
+ * @param headerValueElement code to be eval()ed returning the DOM element
+ * with the data.
+ * @param expectedName code to be eval()ed returning the expected value of
+ * nsIAccessible.name for the DOM element in question
+ * @param expectedRole the expected value for nsIAccessible.role
+ */
+ let headersToTest = [
+ {
+ headerName: "Subject",
+ headerValueElement: "mc.a('expandedsubjectBox', {class: 'headerValue'})",
+ expectedName: "mc.e('expandedsubjectLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.textContent",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
+ },
+ {
+ headerName: "Content-Base",
+ headerValueElement: "mc.a('expandedcontent-baseBox', {class: 'headerValue text-link headerValueUrl'})",
+ expectedName: "mc.e('expandedcontent-baseLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.textContent",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
+ },
+ {
+ headerName: "From",
+ headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
+ "mc.a('expandedfromBox', {tagName: 'mail-emailaddress'})," +
+ "'class', 'emailDisplayButton')",
+ expectedName: "mc.e('expandedfromLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.parentNode.getAttribute('fullAddress')",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
+ },
+ {
+ headerName: "To",
+ headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
+ "mc.a('expandedtoBox', {tagName: 'mail-emailaddress'})," +
+ "'class', 'emailDisplayButton')",
+ expectedName: "mc.e('expandedtoLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.parentNode.getAttribute('fullAddress')",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
+ },
+ {
+ headerName: "Cc",
+ headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
+ "mc.a('expandedccBox', {tagName: 'mail-emailaddress'})," +
+ "'class', 'emailDisplayButton')",
+ expectedName: "mc.e('expandedccLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.parentNode.getAttribute('fullAddress')",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
+ },
+ {
+ headerName: "Bcc",
+ headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
+ "mc.a('expandedbccBox', {tagName: 'mail-emailaddress'})," +
+ "'class', 'emailDisplayButton')",
+ expectedName: "mc.e('expandedbccLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.parentNode.getAttribute('fullAddress')",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
+ },
+ {
+ headerName: "Reply-To",
+ headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
+ "mc.a('expandedreply-toBox', {tagName: 'mail-emailaddress'})," +
+ "'class', 'emailDisplayButton')",
+ expectedName: "mc.e('expandedreply-toLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.parentNode.getAttribute('fullAddress')",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
+ },
+ {
+ headerName: "Newsgroups",
+ headerValueElement: "mc.window.document.getAnonymousElementByAttribute(" +
+ "mc.a('expandednewsgroupsBox', {tagName: 'mail-newsgroup'})," +
+ "'class', 'newsgrouplabel')",
+ expectedName: "mc.e('expandednewsgroupsLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.parentNode.parentNode.getAttribute('newsgroup')",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_ENTRY
+ },
+ {
+ headerName: "Tags",
+ headerValueElement: "mc.a('expandedtagsBox', {class: 'tagvalue blc-FF0000'})",
+ expectedName: "mc.e('expandedtagsLabel').value.slice(0,-1) + ': ' + " +
+ "headerValueElement.getAttribute('value')",
+ expectedRole: Ci.nsIAccessibleRole.ROLE_LABEL
+ }
+ ];
+
+ // used to get the accessible object for a DOM node
+ let gAccRetrieval = Cc["@mozilla.org/accessibleRetrieval;1"].
+ getService(Ci.nsIAccessibleRetrieval);
+
+ /**
+ * Use the information from aHeaderInfo to verify that screenreaders will
+ * do the right thing with the given message header.
+ *
+ * @param {Object} aHeaderInfo Information about how to do the verification;
+ * See the comments above the headersToTest array
+ * for details.
+ */
+ function verify_header_a11y(aHeaderInfo) {
+ // XXX Don't use eval here.
+ let headerValueElement = eval(aHeaderInfo.headerValueElement);
+
+ let headerAccessible = gAccRetrieval.getAccessibleFor(headerValueElement)
+ if (headerAccessible.role != aHeaderInfo.expectedRole) {
+ throw new Error("role for " + aHeaderInfo.headerName + " was " +
+ headerAccessible.role + "; should have been " +
+ aHeaderInfo.expectedRole);
+ }
+
+ // XXX Don't use eval here.
+ let expectedName = eval(aHeaderInfo.expectedName);
+ if (headerAccessible.name != expectedName) {
+ throw new Error("headerAccessible.name for " + aHeaderInfo.headerName +
+ " was '" + headerAccessible.name + "'; expected '" +
+ expectedName + "'");
+ }
+ }
+
+ /**
+ * Test the accessibility attributes of the various message headers.
+ *
+ * XXX This test used to be after test_more_button_with_many_recipients,
+ * however, there were some accessibility changes that it didn't seem to play
+ * nicely with, and the toggling of the "more" button on the cc field was
+ * causing this test to fail on the cc element. Tests with accessibilty
+ * hardware/software showed that the code was working fine. Therefore the test
+ * may be suspect.
+ */
+ function test_a11y_attrs() {
+ be_in_folder(folder);
+
+ // select and open the interesting message
+
+ let curMessage = select_click_row(mc.dbView.findIndexOfMsgHdr(
+ gInterestingMessage, false));
+
+ // make sure it loads
+ assert_selected_and_displayed(mc, curMessage);
+
+ headersToTest.forEach(verify_header_a11y);
+ }
+} // if ("nsIAccessibleRole" in Ci)
--- a/mail/test/mozmill/runtest.py
+++ b/mail/test/mozmill/runtest.py
@@ -197,16 +197,19 @@ class ThunderTestProfile(mozrunner.Thund
We always put our profile in the same location. We only clear it out
when we are creating a new profile so that we can go in after the run
and examine things for debugging or general interest.
'''
# create a clean directory
if os.path.exists(PROFILE_DIR):
shutil.rmtree(PROFILE_DIR, onerror=rmtree_onerror)
os.makedirs(PROFILE_DIR)
+ print 'Using profile dir:', PROFILE_DIR
+ if not os.path.exists(PROFILE_DIR):
+ raise Exception('somehow failed to create profile dir!')
if wrapper is not None and hasattr(wrapper, "on_profile_created"):
# It's a little dangerous to allow on_profile_created access to the
# profile object, because it isn't fully initalized yet
wrapper.on_profile_created(PROFILE_DIR)
if (wrapper is not None and hasattr(wrapper, "NO_ACCOUNTS")
and wrapper.NO_ACCOUNTS):
@@ -287,64 +290,105 @@ class ThunderTestRunner(mozrunner.Thunde
try:
if self.use_vnc_server and self.vnc_alive:
subprocess.check_call([self.VNC_SERVER_PATH,
'-kill', ':99'])
except Exception, ex:
print '!!! Exception during killing VNC server:', ex
+def monkeypatched_15_run_tests(self, tests, sleeptime=0):
+ frame = mozmill.jsbridge.JSObject(self.bridge,
+ "Components.utils.import('resource://mozmill/modules/frame.js')")
+ sleep(sleeptime)
+
+ # transfer persisted data
+ frame.persisted = self.persisted
+
+ if len(tests) == 1 and not os.path.isdir(tests[0]):
+ # tests[0] isn't necessarily an abspath'd path, so do that now
+ test = os.path.abspath(tests[0])
+ frame.runTestFile(test)
+ else:
+ # run the test files
+ for test_dir in self.test_dirs:
+ frame.runTestDirectory(test_dir)
+
+ # Give a second for any callbacks to finish.
+ sleep(1)
+if hasattr(mozmill.MozMill, 'find_tests'):
+ # Monkey-patch run_tests
+ mozmill.MozMill.old_run_tests = mozmill.MozMill.run_tests
+ mozmill.MozMill.run_tests = monkeypatched_15_run_tests
+
class ThunderTestCLI(mozmill.CLI):
profile_class = ThunderTestProfile
runner_class = ThunderTestRunner
parser_options = copy.copy(mozmill.CLI.parser_options)
parser_options[('--symbols-path',)] = {"default": None, "dest": "symbols",
"help": "The path to the symbol files from build_symbols"}
def __init__(self, *args, **kwargs):
global SYMBOLS_PATH, TEST_NAME
- # invoke jsbridge.CLI's constructor directly since we are explicitly
- # trying to replace mozmill's CLI constructor here (which hardcodes
- # the firefox runner and profile in 1.3 for no clear reason).
- jsbridge.CLI.__init__(self, *args, **kwargs)
+
+ # mozmill 1.5.4 still explicitly hardcodes references to Firefox; in
+ # order to avoid missing out on initializer logic or needing to copy
+ # it, we monkeypatch mozmill's view of mozrunner. (Keep in mind that
+ # the python module import process shallow copies dictionaries...)
+ mozmill.mozrunner.FirefoxRunner = self.runner_class
+ mozmill.mozrunner.FirefoxProfile = self.profile_class
+
+ # note: we previously hardcoded a JS bridge timeout of 300 seconds,
+ # but the default is now 60 seconds...
+ mozmill.CLI.__init__(self, *args, **kwargs)
+
SYMBOLS_PATH = self.options.symbols
- TEST_NAME = os.path.basename(self.options.test)
+ if isinstance(self.options.test, basestring):
+ test_paths = [self.options.test]
+ else:
+ test_paths = self.options.test
+ TEST_NAME = ', '.join([os.path.basename(t) for t in test_paths])
+
+ test_dirs = self.test_dirs = []
+ for test_file in test_paths:
+ test_file = os.path.abspath(test_file)
+ if not os.path.isdir(test_file):
+ test_file = os.path.dirname(test_file)
+ if not test_file in test_dirs:
+ test_dirs.append(test_file)
+
+ # if we are monkeypatching, give it the test directories.
+ if hasattr(self.mozmill, 'find_tests'):
+ self.mozmill.test_dirs = test_dirs
self._load_wrapper()
- self.mozmill = self.mozmill_class(runner_class=self.runner_class,
- profile_class=self.profile_class,
- jsbridge_port=int(self.options.port),
- jsbridge_timeout=300)
-
- self.mozmill.add_global_listener(mozmill.LoggerListener())
-
def _load_wrapper(self):
global wrapper
"""
Load the wrapper module if it is present in the test directory.
"""
- if os.path.isdir(self.options.test):
- testdir = self.options.test
- else:
- testdir = os.path.dirname(self.options.test)
+ if len(self.test_dirs) > 1:
+ raise Exception("Wrapper semantics require only a single test dir")
+ testdir = self.test_dirs[0]
try:
(fd, path, desc) = imp.find_module(WRAPPER_MODULE_NAME, [testdir])
except ImportError:
# No wrapper module, which is fine.
pass
else:
try:
wrapper = imp.load_module(WRAPPER_MODULE_NAME, fd, path, desc)
finally:
if fd is not None:
fd.close()
+
TEST_RESULTS = []
# Versions of MozMill prior to 1.5 did not output test-pass /
# TEST-UNEXPECTED-FAIL. Since 1.5 happened this gets output, so we only want
# a summary at the end to make it easy for developers.
def logEndTest(obj):
# If we've got a string here, we know we're later than 1.5, and we can just
# display a summary at the end as 1.5 will do TEST-UNEXPECTED-FAIL for us.
if isinstance(obj, str):
@@ -356,17 +400,25 @@ mozmill.LoggerListener.cases['mozmill.en
# We now send extended meta-data about failures. We do not want the entire
# message dumped with this extra data, so clobber the default mozmill.fail
# with one that wraps it and only tells it the exception message rather than
# the whole JSON blob.
ORIGINAL_FAILURE_LOGGER = mozmill.LoggerListener.cases['mozmill.fail']
def logFailure(obj):
if isinstance(obj, basestring):
obj = json.loads(obj)
- ORIGINAL_FAILURE_LOGGER(obj["exception"]["message"])
+ if 'exception' in obj:
+ objex = obj['exception']
+ if 'message' in objex:
+ report_as = objex['message']
+ else:
+ report_as = 'Empty object thrown as an exception somehow'
+ else:
+ report_as = 'No exception provided'
+ ORIGINAL_FAILURE_LOGGER(report_as)
mozmill.LoggerListener.cases['mozmill.fail'] = logFailure
def prettifyFilename(path, tail_segs_desired=1):
parts = path.split('/')
return '/'.join(parts[-tail_segs_desired:])
def prettyPrintException(e):
@@ -404,18 +456,22 @@ import pprint, atexit
@atexit.register
def prettyPrintResults():
for result in TEST_RESULTS:
#pprint.pprint(result)
testOrSummary = 'TEST'
if 'summary' in result:
testOrSummary = 'SUMMARY'
if len(result['fails']) == 0:
+ if result.get('skipped', False):
+ kind = 'SKIP'
+ else:
+ kind = 'PASS'
if result['name'] not in TEST_BLACKLIST:
- print '%s-PASS | %s' % (testOrSummary, result['name'])
+ print '%s-%s | %s' % (testOrSummary, kind, result['name'])
else:
print '%s-UNEXPECTED-FAIL | %s | %s' % (testOrSummary, prettifyFilename(result['filename']), result['name'])
for failure in result['fails']:
if 'exception' in failure:
prettyPrintException(failure['exception'])
@atexit.register
def dumpRichResults():
--- a/mail/test/mozmill/runtestlist.py
+++ b/mail/test/mozmill/runtestlist.py
@@ -98,17 +98,17 @@ totalDirectories = 0
f = open(options.list, 'rt')
for directory in f:
log.info("INFO | (runtestlist.py) | Running directory: %s",
directory.rstrip())
if options.dir != "":
testDirectory = os.path.join(options.dir, directory.rstrip())
else:
testDirectory = directory.rstrip()
- args = ["python", "runtest.py", "-t", testDirectory,
+ args = [sys.executable, "runtest.py", "-t", testDirectory,
"--binary", options.binary, "--symbols-path", options.symbols]
print args
outputPipe = subprocess.PIPE
proc = subprocess.Popen(args, cwd=SCRIPT_DIRECTORY, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
testErrors = 0
testPasses = 0
--- a/mail/test/mozmill/shared-modules/test-folder-display-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-folder-display-helpers.js
@@ -192,21 +192,37 @@ function setupModule() {
testHelperModule.mark_sub_test_start(obj.name);
});
// Listen for the fail event so that we can annotate the failure object
// with additional metadata. This works out because we are directly handed
// a reference to the object that will be provided to the jsbridge and we
// can mutate it. (The jsbridge is a global listener and so is guaranteed
// to be invoked after our specific named listener.)
frame.events.addListener("fail", function(obj) {
+ // normalize nsIExceptions so they look like JS exceptions...
+ rawex = obj.exception;
+ if (obj.exception != null &&
+ (obj.exception instanceof Ci.nsIException)) {
+ obj.exception = {
+ message: "nsIException: " + rawex.message + " (" + rawex.result + ")",
+ fileName: rawex.filename,
+ lineNumber: rawex.lineNumber,
+ name: rawex.name,
+ result: rawex.result,
+ stack: "",
+ };
+ }
+
// generate the failure notification now so it shows up in the event log
// bucket for presentation purposes.
testHelperModule._xpcshellLogger.info(
testHelperModule._testLoggerActiveContext,
- new testHelperModule._Failure(obj.exception.message, obj.exception));
+ new testHelperModule._Failure(
+ obj.exception ? obj.exception.message : "No Exception!",
+ rawex));
try {
obj.failureContext = {
preEvents: bucketAppender.getPreviousBucketEvents(10000),
events: bucketAppender.getBucketEvents(),
windows: windowHelper.captureWindowStatesForErrorReporting(
testHelperModule._normalize_for_json),
};
--- a/mail/test/mozmill/shared-modules/test-migration-helpers.js
+++ b/mail/test/mozmill/shared-modules/test-migration-helpers.js
@@ -124,15 +124,15 @@ function close_migration_assistant(fc) {
* contentFrame displaying the appropriate pane.
*/
function get_subpage(fc) {
let contentWindow = fc.e("contentFrame").contentWindow;
// XXX this is not my fault, but I'm not going to fix it. just make it less
// broken:
// Lie to mozmill to convince it to not explode because these frames never
- // get a documentLoaded attribute.
- contentWindow.documentLoaded = true;
+ // get a mozmillDocumentLoaded attribute.
+ contentWindow.mozmillDocumentLoaded = true;
// And sleep so the page has a chance to load
controller.sleep(1000);
let aController = new controller.MozMillController(contentWindow);
return wh.augment_controller(aController);
}
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/ManifestDestiny/PKG-INFO
@@ -0,0 +1,189 @@
+Metadata-Version: 1.0
+Name: ManifestDestiny
+Version: 0.2.2
+Summary: universal reader for manifests
+Home-page: https://wiki.mozilla.org/Auto-tools/Projects/ManifestDestiny
+Author: Jeff Hammel
+Author-email: jhammel@mozilla.com
+License: MPL
+Description: ManifestDestiny
+ ===============
+
+ Universal manifests for Mozilla test harnesses
+
+
+ What is ManifestDestiny?
+ ------------------------
+
+ What ManifestDestiny gives you is:
+
+ * manifests are (ordered) lists of tests
+ * tests may have an arbitrary number of key, value pairs
+ * the parser returns an ordered list of test data structures, which
+ are just dicts with some keys. For example, a test with no
+ user-specified metadata looks like this::
+
+ [{'path':
+ '/home/jhammel/mozmill/src/ManifestDestiny/manifestdestiny/tests/testToolbar/testBackForwardButtons.js',
+ 'name': 'testToolbar/testBackForwardButtons.js', 'here':
+ '/home/jhammel/mozmill/src/ManifestDestiny/manifestdestiny/tests',
+ 'manifest': '/home/jhammel/mozmill/src/ManifestDestiny/manifestdestiny/tests',}]
+
+ The keys displayed here (path, name, here, and manifest) are reserved
+ words for ManifestDestiny and any consuming APIs.
+
+
+ Manifest Format
+ ---------------
+
+ Manifests are .ini file with the section names denoting the path
+ relative to the manifest::
+
+ [foo.js]
+ [bar.js]
+ [fleem.js]
+
+ The sections are read in order. In addition, tests may include
+ arbitrary key, value metadata to be used by the harness. You can also
+ have a ``[DEFAULT]`` section that will give key, value pairs that will
+ be inherited by each test unless overridden::
+
+ [DEFAULT]
+ type = restart
+
+ [lilies.js]
+ color = white
+
+ [daffodils.js]
+ color = yellow
+ type = other
+ # override type from DEFAULT
+
+ [roses.js]
+ color = red
+
+ You can also include other manifests::
+
+ [include:subdir/anothermanifest.ini]
+
+
+ Data
+ ----
+
+ Manifest Destiny gives tests as a list of dictionary (in python
+ terms).
+
+ * path: full path to the test
+ * name: short name of the test; this is the (usually) relative path
+ specified in the section name
+ * here: the parent directory of the manifest
+ * manifest: the path to the manifest containing the test
+
+ This data corresponds to a one-line manifest::
+
+ [testToolbar/testBackForwardButtons.js]
+
+ If additional key, values were specified, they would be in this dict
+ as well.
+
+ Outside of the reserved keys, the remaining key, values
+ are up to convention to use. There is a (currently very minimal)
+ generic integration layer in ManifestDestiny for use of all tests.
+ For instance, if the 'disabled' key is present, you can get the set of
+ tests without disabled (various other queries are doable as well).
+
+ Since the system is convention-based, the harnesses may do whatever
+ they want with the data. They may ignore it completely, they may use
+ the provided integration layer, or they may provide their own
+ integration layer. This should allow whatever sort of logic they
+ want. For instance, if in yourtestharness you wanted to run only on
+ mondays for a certain class of tests::
+
+ tests = []
+ for test in manifests.tests:
+ if 'runOnDay' in test:
+ if calendar.day_name[calendar.weekday(*datetime.datetime.now().timetuple()[:3])].lower() == test['runOnDay'].lower():
+ tests.append(test)
+ else:
+ tests.append(test)
+
+ To recap:
+ * the manifests allow you to specify test data
+ * the parser gives you this data
+ * you can use it however you want or process it further as you need
+
+ Tests are denoted by sections in an .ini file (see
+ http://hg.mozilla.org/automation/ManifestDestiny/file/tip/manifestdestiny/tests/mozmill-example.ini).
+
+ Additional manifest files may be included with a [include:] directive::
+
+ [include:path-to-additional-file.manifest]
+
+ The path to included files is relative to the current manifest.
+
+ The ``[DEFAULT]`` section contains variables that all tests inherit from.
+
+ Included files will inherit the top-level variables but may override
+ in their own ``[DEFAULT]`` section.
+
+
+ Creating Manifests
+ ------------------
+
+ ManifestDestiny comes with a console script, ``manifestparser create``, that
+ may be used to create a seed manifest structure from a directory of
+ files. Run ``manifestparser help create`` for usage information.
+
+
+ Copying Manifests
+ -----------------
+
+ To copy tests and manifests from a source::
+
+ manifestparser [options] copy from_manifest to_directory -tag1 -tag2 --key1=value1 key2=value2 ...
+
+
+ Upating Tests
+ -------------
+
+ To update the tests associated with with a manifest from a source
+ directory::
+
+ manifestparser [options] update manifest from_directory -tag1 -tag2 --key1=value1 --key2=value2 ...
+
+
+ Tests
+ -----
+
+ ManifestDestiny includes a suite of tests:
+
+ http://hg.mozilla.org/automation/ManifestDestiny/file/tip/manifestdestiny/tests
+
+ ``test_manifest.txt`` is a doctest that may be helpful in figuring out
+ how to use the API. Tests are run via ``python test.py``.
+
+
+ CLI
+ ---
+
+ Run ``manifestparser help`` for usage information.
+
+ To create a manifest from a set of directories::
+
+ manifestparser [options] create directory <directory> <...> [create-options]
+
+ To output a manifest of tests::
+
+ manifestparser [options] write manifest <manifest> <...> -tag1 -tag2 --key1=value1 --key2=value2 ...
+
+ To copy tests and manifests from a source::
+
+ manifestparser [options] copy from_manifest to_manifest -tag1 -tag2 --key1=value1 key2=value2 ...
+
+ To update the tests associated with with a manifest from a source
+ directory::
+
+ manifestparser [options] update manifest from_directory -tag1 -tag2 --key1=value1 --key2=value2 ...
+
+Keywords: mozilla manifests
+Platform: UNKNOWN
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/ManifestDestiny/README.txt
@@ -0,0 +1,178 @@
+ManifestDestiny
+===============
+
+Universal manifests for Mozilla test harnesses
+
+
+What is ManifestDestiny?
+------------------------
+
+What ManifestDestiny gives you is:
+
+* manifests are (ordered) lists of tests
+* tests may have an arbitrary number of key, value pairs
+* the parser returns an ordered list of test data structures, which
+ are just dicts with some keys. For example, a test with no
+ user-specified metadata looks like this::
+
+ [{'path':
+ '/home/jhammel/mozmill/src/ManifestDestiny/manifestdestiny/tests/testToolbar/testBackForwardButtons.js',
+ 'name': 'testToolbar/testBackForwardButtons.js', 'here':
+ '/home/jhammel/mozmill/src/ManifestDestiny/manifestdestiny/tests',
+ 'manifest': '/home/jhammel/mozmill/src/ManifestDestiny/manifestdestiny/tests',}]
+
+The keys displayed here (path, name, here, and manifest) are reserved
+words for ManifestDestiny and any consuming APIs.
+
+
+Manifest Format
+---------------
+
+Manifests are .ini file with the section names denoting the path
+relative to the manifest::
+
+ [foo.js]
+ [bar.js]
+ [fleem.js]
+
+The sections are read in order. In addition, tests may include
+arbitrary key, value metadata to be used by the harness. You can also
+have a ``[DEFAULT]`` section that will give key, value pairs that will
+be inherited by each test unless overridden::
+
+ [DEFAULT]
+ type = restart
+
+ [lilies.js]
+ color = white
+
+ [daffodils.js]
+ color = yellow
+ type = other
+ # override type from DEFAULT
+
+ [roses.js]
+ color = red
+
+You can also include other manifests::
+
+ [include:subdir/anothermanifest.ini]
+
+
+Data
+----
+
+Manifest Destiny gives tests as a list of dictionary (in python
+terms).
+
+* path: full path to the test
+* name: short name of the test; this is the (usually) relative path
+ specified in the section name
+* here: the parent directory of the manifest
+* manifest: the path to the manifest containing the test
+
+This data corresponds to a one-line manifest::
+
+ [testToolbar/testBackForwardButtons.js]
+
+If additional key, values were specified, they would be in this dict
+as well.
+
+Outside of the reserved keys, the remaining key, values
+are up to convention to use. There is a (currently very minimal)
+generic integration layer in ManifestDestiny for use of all tests.
+For instance, if the 'disabled' key is present, you can get the set of
+tests without disabled (various other queries are doable as well).
+
+Since the system is convention-based, the harnesses may do whatever
+they want with the data. They may ignore it completely, they may use
+the provided integration layer, or they may provide their own
+integration layer. This should allow whatever sort of logic they
+want. For instance, if in yourtestharness you wanted to run only on
+mondays for a certain class of tests::
+
+ tests = []
+ for test in manifests.tests:
+ if 'runOnDay' in test:
+ if calendar.day_name[calendar.weekday(*datetime.datetime.now().timetuple()[:3])].lower() == test['runOnDay'].lower():
+ tests.append(test)
+ else:
+ tests.append(test)
+
+To recap:
+* the manifests allow you to specify test data
+* the parser gives you this data
+* you can use it however you want or process it further as you need
+
+Tests are denoted by sections in an .ini file (see
+http://hg.mozilla.org/automation/ManifestDestiny/file/tip/manifestdestiny/tests/mozmill-example.ini).
+
+Additional manifest files may be included with a [include:] directive::
+
+ [include:path-to-additional-file.manifest]
+
+The path to included files is relative to the current manifest.
+
+The ``[DEFAULT]`` section contains variables that all tests inherit from.
+
+Included files will inherit the top-level variables but may override
+in their own ``[DEFAULT]`` section.
+
+
+Creating Manifests
+------------------
+
+ManifestDestiny comes with a console script, ``manifestparser create``, that
+may be used to create a seed manifest structure from a directory of
+files. Run ``manifestparser help create`` for usage information.
+
+
+Copying Manifests
+-----------------
+
+To copy tests and manifests from a source::
+
+ manifestparser [options] copy from_manifest to_directory -tag1 -tag2 --key1=value1 key2=value2 ...
+
+
+Upating Tests
+-------------
+
+To update the tests associated with with a manifest from a source
+directory::
+
+ manifestparser [options] update manifest from_directory -tag1 -tag2 --key1=value1 --key2=value2 ...
+
+
+Tests
+-----
+
+ManifestDestiny includes a suite of tests:
+
+http://hg.mozilla.org/automation/ManifestDestiny/file/tip/manifestdestiny/tests
+
+``test_manifest.txt`` is a doctest that may be helpful in figuring out
+how to use the API. Tests are run via ``python test.py``.
+
+
+CLI
+---
+
+Run ``manifestparser help`` for usage information.
+
+To create a manifest from a set of directories::
+
+ manifestparser [options] create directory <directory> <...> [create-options]
+
+To output a manifest of tests::
+
+ manifestparser [options] write manifest <manifest> <...> -tag1 -tag2 --key1=value1 --key2=value2 ...
+
+To copy tests and manifests from a source::
+
+ manifestparser [options] copy from_manifest to_manifest -tag1 -tag2 --key1=value1 key2=value2 ...
+
+To update the tests associated with with a manifest from a source
+directory::
+
+ manifestparser [options] update manifest from_directory -tag1 -tag2 --key1=value1 --key2=value2 ...
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/ManifestDestiny/manifestparser.py
@@ -0,0 +1,776 @@
+#!/usr/bin/env python
+
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Mozilla.org.
+# Portions created by the Initial Developer are Copyright (C) 2010
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Jeff Hammel <jhammel@mozilla.com> (Original author)
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+"""
+Mozilla universal manifest parser
+"""
+
+# this file lives at
+# http://hg.mozilla.org/automation/ManifestDestiny/raw-file/tip/manifestparser.py
+
+__all__ = ['ManifestParser', 'TestManifest', 'convert']
+
+import os
+import shutil
+import sys
+from fnmatch import fnmatch
+from optparse import OptionParser
+
+version = '0.2.2' # package version
+try:
+ from setuptools import setup
+except ImportError:
+ setup = None
+
+def read_ini(fp, variables=None, default='DEFAULT',
+ comments=';#', separators=('=', ':'),
+ strict=True):
+ """
+ read an .ini file and return a list of [(section, values)]
+ - fp : file pointer or path to read
+ - variables : default set of variables
+ - default : name of the section for the default section
+ - comments : characters that if they start a line denote a comment
+ - separators : strings that denote key, value separation in order
+ - strict : whether to be strict about parsing
+ """
+
+ if variables is None:
+ variables = {}
+
+ if isinstance(fp, basestring):
+ fp = file(fp)
+
+ sections = []
+ key = value = None
+ section_names = set([])
+
+ # read the lines
+ for line in fp.readlines():
+
+ stripped = line.strip()
+
+ # ignore blank lines
+ if not stripped:
+ # reset key and value to avoid continuation lines
+ key = value = None
+ continue
+
+ # ignore comment lines
+ if stripped[0] in comments:
+ continue
+
+ # check for a new section
+ if len(stripped) > 2 and stripped[0] == '[' and stripped[-1] == ']':
+ section = stripped[1:-1].strip()
+ key = value = None
+
+ # deal with DEFAULT section
+ if section.lower() == default.lower():
+ if strict:
+ assert default not in section_names
+ section_names.add(default)
+ current_section = variables
+ continue
+
+ if strict:
+ # make sure this section doesn't already exist
+ assert section not in section_names
+
+ section_names.add(section)
+ current_section = {}
+ sections.append((section, current_section))
+ continue
+
+ # if there aren't any sections yet, something bad happen
+ if not section_names:
+ raise Exception('No sections yet :(')
+
+ # (key, value) pair
+ for separator in separators:
+ if separator in stripped:
+ key, value = stripped.split(separator, 1)
+ key = key.strip()
+ value = value.strip()
+
+ if strict:
+ # make sure this key isn't already in the section or empty
+ assert key
+ if current_section is not variables:
+ assert key not in current_section
+
+ current_section[key] = value
+ break
+ else:
+ # continuation line ?
+ if line[0].isspace() and key:
+ value = '%s%s%s' % (value, os.linesep, stripped)
+ current_section[key] = value
+ else:
+ # something bad happen!
+ raise Exception("Not sure what you're trying to do")
+
+ # interpret the variables
+ def interpret_variables(global_dict, local_dict):
+ variables = global_dict.copy()
+ variables.update(local_dict)
+ return variables
+
+ sections = [(i, interpret_variables(variables, j)) for i, j in sections]
+ return sections
+
+
+### objects for parsing manifests
+
+class ManifestParser(object):
+ """read .ini manifests"""
+
+ ### methods for reading manifests
+
+ def __init__(self, manifests=(), defaults=None, strict=True):
+ self._defaults = defaults or {}
+ self.tests = []
+ self.strict = strict
+ self.rootdir = None
+ if manifests:
+ self.read(*manifests)
+
+ def read(self, *filenames, **defaults):
+
+ # ensure all files exist
+ missing = [ filename for filename in filenames
+ if not os.path.exists(filename) ]
+ if missing:
+ raise IOError('Missing files: %s' % ', '.join(missing))
+
+ # process each file
+ for filename in filenames:
+
+ # set the per file defaults
+ defaults = defaults.copy() or self._defaults.copy()
+ here = os.path.dirname(os.path.abspath(filename))
+ defaults['here'] = here
+
+ if self.rootdir is None:
+ # set the root directory
+ # == the directory of the first manifest given
+ self.rootdir = here
+
+ # read the configuration
+ sections = read_ini(filename, variables=defaults)
+
+ # get the tests
+ for section, data in sections:
+
+ # a file to include
+ # TODO: keep track of structure:
+ # self.manifests = {'manifest.ini': 'relative/path.ini'}
+ if section.startswith('include:'):
+ include_file = section.split('include:', 1)[-1]
+ include_file = os.path.join(here, include_file)
+ if not os.path.exists(include_file):
+ if strict:
+ raise IOError("File '%s' does not exist" % include_file)
+ else:
+ continue
+ include_defaults = data.copy()
+ self.read(include_file, **include_defaults)
+ continue
+
+ # otherwise a test
+ test = data
+ test['name'] = section
+ test['path'] = os.path.join(here, section)
+ test['manifest'] = os.path.abspath(filename)
+ self.tests.append(test)
+
+ ### methods for querying manifests
+
+ def query(self, *checks):
+ """
+ general query function for tests
+ - checks : callable conditions to test if the test fulfills the query
+ """
+ retval = []
+ for test in self.tests:
+ for check in checks:
+ if not check(test):
+ break
+ else:
+ retval.append(test)
+ return retval
+
+ def get(self, _key=None, inverse=False, tags=None, **kwargs):
+ # TODO: pass a dict instead of kwargs since you might hav
+ # e.g. 'inverse' as a key in the dict
+
+ # TODO: tags should just be part of kwargs with None values
+ # (None == any is kinda weird, but probably still better)
+
+ # fix up tags
+ if tags:
+ tags = set(tags)
+ else:
+ tags = set()
+
+ # make some check functions
+ if inverse:
+ has_tags = lambda test: tags.isdisjoint(test.keys())
+ def dict_query(test):
+ for key, value in kwargs.items():
+ if test.get(key) == value:
+ return False
+ return True
+ else:
+ has_tags = lambda test: tags.issubset(test.keys())
+ def dict_query(test):
+ for key, value in kwargs.items():
+ if test.get(key) != value:
+ return False
+ return True
+
+ # query the tests
+ tests = self.query(has_tags, dict_query)
+
+ # if a key is given, return only a list of that key
+ # useful for keys like 'name' or 'path'
+ if _key:
+ return [test[_key] for test in tests]
+
+ # return the tests
+ return tests
+
+ def missing(self, tests=None):
+ """return list of tests that do not exist on the filesystem"""
+ if tests is None:
+ tests = self.tests
+ return [test for test in tests
+ if not os.path.exists(test['path'])]
+
+ def manifests(self, tests=None):
+ """
+ return manifests in order in which they appear in the tests
+ """
+ if tests is None:
+ tests = self.tests
+ manifests = []
+ for test in tests:
+ manifest = test.get('manifest')
+ if not manifest:
+ continue
+ if manifest not in manifests:
+ manifests.append(manifest)
+ return manifests
+
+
+ ### methods for outputting from manifests
+
+ def write(self, fp=sys.stdout, rootdir=None,
+ global_tags=None, global_kwargs=None,
+ local_tags=None, local_kwargs=None):
+ """
+ write a manifest given a query
+ global and local options will be munged to do the query
+ globals will be written to the top of the file
+ locals (if given) will be written per test
+ """
+
+ # root directory
+ if rootdir is None:
+ rootdir = self.rootdir
+
+ # sanitize input
+ global_tags = global_tags or set()
+ local_tags = local_tags or set()
+ global_kwargs = global_kwargs or {}
+ local_kwargs = local_kwargs or {}
+
+ # create the query
+ tags = set([])
+ tags.update(global_tags)
+ tags.update(local_tags)
+ kwargs = {}
+ kwargs.update(global_kwargs)
+ kwargs.update(local_kwargs)
+
+ # get matching tests
+ tests = self.get(tags=tags, **kwargs)
+
+ # print the .ini manifest
+ if global_tags or global_kwargs:
+ print >> fp, '[DEFAULT]'
+ for tag in global_tags:
+ print >> fp, '%s =' % tag
+ for key, value in global_kwargs.items():
+ print >> fp, '%s = %s' % (key, value)
+ print >> fp
+
+ for test in tests:
+ test = test.copy() # don't overwrite
+
+ path = test['name']
+ if not os.path.isabs(path):
+ path = os.path.relpath(test['path'], self.rootdir)
+ print >> fp, '[%s]' % path
+
+ # reserved keywords:
+ reserved = ['path', 'name', 'here', 'manifest']
+ for key in sorted(test.keys()):
+ if key in reserved:
+ continue
+ if key in global_kwargs:
+ continue
+ if key in global_tags and not test[key]:
+ continue
+ print >> fp, '%s = %s' % (key, test[key])
+ print >> fp
+
+ def copy(self, directory, rootdir=None, *tags, **kwargs):
+ """
+ copy the manifests and associated tests
+ - directory : directory to copy to
+ - rootdir : root directory to copy to (if not given from manifests)
+ - tags : keywords the tests must have
+ - kwargs : key, values the tests must match
+ """
+ # XXX note that copy does *not* filter the tests out of the
+ # resulting manifest; it just stupidly copies them over.
+ # ideally, it would reread the manifests and filter out the
+ # tests that don't match *tags and **kwargs
+
+ # destination
+ if not os.path.exists(directory):
+ os.path.makedirs(directory)
+ else:
+ # sanity check
+ assert os.path.isdir(directory)
+
+ # tests to copy
+ tests = self.get(tags=tags, **kwargs)
+ if not tests:
+ return # nothing to do!
+
+ # root directory
+ if rootdir is None:
+ rootdir = self.rootdir
+
+ # copy the manifests + tests
+ manifests = [os.path.relpath(manifest, rootdir) for manifest in self.manifests()]
+ for manifest in manifests:
+ destination = os.path.join(directory, manifest)
+ dirname = os.path.dirname(destination)
+ if not os.path.exists(dirname):
+ os.makedirs(dirname)
+ else:
+ # sanity check
+ assert os.path.isdir(dirname)
+ shutil.copy(os.path.join(rootdir, manifest), destination)
+ for test in tests:
+ if os.path.isabs(test['name']):
+ continue
+ source = test['path']
+ if not os.path.exists(source):
+ print >> sys.stderr, "Missing test: '%s' does not exist!" % source
+ continue
+ # TODO: should err on strict
+ destination = os.path.join(directory, os.path.relpath(test['path'], rootdir))
+ shutil.copy(source, destination)
+ # TODO: ensure that all of the tests are below the from_dir
+
+ def update(self, from_dir, rootdir=None, *tags, **kwargs):
+ """
+ update the tests as listed in a manifest from a directory
+ - from_dir : directory where the tests live
+ - rootdir : root directory to copy to (if not given from manifests)
+ - tags : keys the tests must have
+ - kwargs : key, values the tests must match
+ """
+
+ # get the tests
+ tests = self.get(tags=tags, **kwargs)
+
+ # get the root directory
+ if not rootdir:
+ rootdir = self.rootdir
+
+ # copy them!
+ for test in tests:
+ if not os.path.isabs(test['name']):
+ relpath = os.path.relpath(test['path'], rootdir)
+ source = os.path.join(from_dir, relpath)
+ if not os.path.exists(source):
+ # TODO err on strict
+ print >> sys.stderr, "Missing test: '%s'; skipping" % test['name']
+ continue
+ destination = os.path.join(rootdir, relpath)
+ shutil.copy(source, destination)
+
+
+class TestManifest(ManifestParser):
+ """
+ apply logic to manifests; this is your integration layer :)
+ specific harnesses may subclass from this if they need more logic
+ """
+
+ def active_tests(self):
+
+ # ignore disabled tests
+ tests = self.get(inverse=True, tags=['disabled'])
+
+ # TODO: could filter out by current platform, existence, etc
+ return tests
+
+ def test_paths(self):
+ return [test['path'] for test in self.active_tests()]
+
+
+### utility function(s); probably belongs elsewhere
+
+def convert(directories, pattern=None, ignore=(), write=None):
+ """
+ convert directories to a simple manifest
+ """
+
+ retval = []
+ include = []
+ for directory in directories:
+ for dirpath, dirnames, filenames in os.walk(directory):
+
+ # filter out directory names
+ dirnames = [ i for i in dirnames if i not in ignore ]
+ dirnames.sort()
+
+ # reference only the subdirectory
+ _dirpath = dirpath
+ dirpath = dirpath.split(directory, 1)[-1].strip('/')
+
+ if dirpath.split(os.path.sep)[0] in ignore:
+ continue
+
+ # filter by glob
+ if pattern:
+ filenames = [filename for filename in filenames
+ if fnmatch(filename, pattern)]
+
+ filenames.sort()
+
+ # write a manifest for each directory
+ if write and (dirnames or filenames):
+ manifest = file(os.path.join(_dirpath, write), 'w')
+ for dirname in dirnames:
+ print >> manifest, '[include:%s]' % os.path.join(dirname, write)
+ for filename in filenames:
+ print >> manifest, '[%s]' % filename
+ manifest.close()
+
+ # add to the list
+ retval.extend([os.path.join(dirpath, filename)
+ for filename in filenames])
+
+ if write:
+ return # the manifests have already been written!
+
+ retval.sort()
+ retval = ['[%s]' % filename for filename in retval]
+ return '\n'.join(retval)
+
+### command line attributes
+
+class ParserError(Exception):
+ """error for exceptions while parsing the command line"""
+
+def parse_args(_args):
+ """
+ parse and return:
+ --keys=value (or --key value)
+ -tags
+ args
+ """
+
+
+ # return values
+ _dict = {}
+ tags = []
+ args = []
+
+ # parse the arguments
+ key = None
+ for arg in _args:
+ if arg.startswith('---'):
+ raise ParserError("arguments should start with '-' or '--' only")
+ elif arg.startswith('--'):
+ if key:
+ raise ParserError("Key %s still open" % key)
+ key = arg[2:]
+ if '=' in key:
+ key, value = key.split('=', 1)
+ _dict[key] = value
+ key = None
+ continue
+ elif arg.startswith('-'):
+ if key:
+ raise ParserError("Key %s still open" % key)
+ tags.append(arg[1:])
+ continue
+ else:
+ if key:
+ _dict[key] = arg
+ continue
+ args.append(arg)
+
+ # return values
+ return (_dict, tags, args)
+
+
+### classes for subcommands
+
+class CLICommand(object):
+ usage = '%prog [options] command'
+ def __init__(self, parser):
+ self._parser = parser # master parser
+ def parser(self):
+ return OptionParser(usage=self.usage, description=self.__doc__,
+ add_help_option=False)
+
+class Copy(CLICommand):
+ usage = '%prog [options] copy manifest directory -tag1 -tag2 --key1=value1 --key2=value2 ...'
+ def __call__(self, options, args):
+ # parse the arguments
+ try:
+ kwargs, tags, args = parse_args(args)
+ except ParserError, e:
+ self._parser.error(e.message)
+
+ # make sure we have some manifests, otherwise it will
+ # be quite boring
+ if not len(args) == 2:
+ HelpCLI(self._parser)(options, ['copy'])
+ return
+
+ # read the manifests
+ # TODO: should probably ensure these exist here
+ manifests = ManifestParser()
+ manifests.read(args[0])
+
+ # print the resultant query
+ manifests.copy(args[1], None, *tags, **kwargs)
+
+
+class CreateCLI(CLICommand):
+ """
+ create a manifest from a list of directories
+ """
+ usage = '%prog [options] create directory <directory> <...>'
+
+ def parser(self):
+ parser = CLICommand.parser(self)
+ parser.add_option('-p', '--pattern', dest='pattern',
+ help="glob pattern for files")
+ parser.add_option('-i', '--ignore', dest='ignore',
+ default=[], action='append',
+ help='directories to ignore')
+ parser.add_option('-w', '--in-place', dest='in_place',
+ help='Write .ini files in place; filename to write to')
+ return parser
+
+ def __call__(self, _options, args):
+ parser = self.parser()
+ options, args = parser.parse_args(args)
+
+ # need some directories
+ if not len(args):
+ parser.print_usage()
+ return
+
+ # add the directories to the manifest
+ for arg in args:
+ assert os.path.exists(arg)
+ assert os.path.isdir(arg)
+ manifest = convert(args, pattern=options.pattern, ignore=options.ignore,
+ write=options.in_place)
+ if manifest:
+ print manifest
+
+
+class WriteCLI(CLICommand):
+ """
+ write a manifest based on a query
+ """
+ usage = '%prog [options] write manifest <manifest> -tag1 -tag2 --key1=value1 --key2=value2 ...'
+ def __call__(self, options, args):
+
+ # parse the arguments
+ try:
+ kwargs, tags, args = parse_args(args)
+ except ParserError, e:
+ self._parser.error(e.message)
+
+ # make sure we have some manifests, otherwise it will
+ # be quite boring
+ if not args:
+ HelpCLI(self._parser)(options, ['write'])
+ return
+
+ # read the manifests
+ # TODO: should probably ensure these exist here
+ manifests = ManifestParser()
+ manifests.read(*args)
+
+ # print the resultant query
+ manifests.write(global_tags=tags, global_kwargs=kwargs)
+
+
+class HelpCLI(CLICommand):
+ """
+ get help on a command
+ """
+ usage = '%prog [options] help [command]'
+
+ def __call__(self, options, args):
+ if len(args) == 1 and args[0] in commands:
+ commands[args[0]](self._parser).parser().print_help()
+ else:
+ self._parser.print_help()
+ print '\nCommands:'
+ for command in sorted(commands):
+ print ' %s : %s' % (command, commands[command].__doc__.strip())
+
+class SetupCLI(CLICommand):
+ """
+ setup using setuptools
+ """
+ usage = '%prog [options] setup [setuptools options]'
+
+ def __call__(self, options, args):
+ sys.argv = [sys.argv[0]] + args
+ assert setup is not None, "You must have setuptools installed to use SetupCLI"
+ here = os.path.dirname(os.path.abspath(__file__))
+ try:
+ filename = os.path.join(here, 'README.txt')
+ description = file(filename).read()
+ except:
+ description = ''
+ os.chdir(here)
+
+ setup(name='ManifestDestiny',
+ version=version,
+ description="universal reader for manifests",
+ long_description=description,
+ classifiers=[], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers
+ keywords='mozilla manifests',
+ author='Jeff Hammel',
+ author_email='jhammel@mozilla.com',
+ url='https://wiki.mozilla.org/Auto-tools/Projects/ManifestDestiny',
+ license='MPL',
+ zip_safe=False,
+ py_modules=['manifestparser'],
+ install_requires=[
+ # -*- Extra requirements: -*-
+ ],
+ entry_points="""
+ [console_scripts]
+ manifestparser = manifestparser:main
+ """,
+ )
+
+
+class UpdateCLI(CLICommand):
+ """
+ update the tests as listed in a manifest from a directory
+ """
+ usage = '%prog [options] update manifest directory -tag1 -tag2 --key1=value1 --key2=value2 ...'
+
+ def __call__(self, options, args):
+ # parse the arguments
+ try:
+ kwargs, tags, args = parse_args(args)
+ except ParserError, e:
+ self._parser.error(e.message)
+
+ # make sure we have some manifests, otherwise it will
+ # be quite boring
+ if not len(args) == 2:
+ HelpCLI(self._parser)(options, ['update'])
+ return
+
+ # read the manifests
+ # TODO: should probably ensure these exist here
+ manifests = ManifestParser()
+ manifests.read(args[0])
+
+ # print the resultant query
+ manifests.update(args[1], None, *tags, **kwargs)
+
+
+# command -> class mapping
+commands = { 'create': CreateCLI,
+ 'help': HelpCLI,
+ 'update': UpdateCLI,
+ 'write': WriteCLI }
+if setup is not None:
+ commands['setup'] = SetupCLI
+
+def main(args=sys.argv[1:]):
+ """console_script entry point"""
+
+ # set up an option parser
+ usage = '%prog [options] [command] ...'
+ description = __doc__
+ parser = OptionParser(usage=usage, description=description)
+ parser.add_option('-s', '--strict', dest='strict',
+ action='store_true', default=False,
+ help='adhere strictly to errors')
+ parser.disable_interspersed_args()
+
+ options, args = parser.parse_args(args)
+
+ if not args:
+ HelpCLI(parser)(options, args)
+ parser.exit()
+
+ # get the command
+ command = args[0]
+ if command not in commands:
+ parser.error("Command must be one of %s (you gave '%s')" % (', '.join(sorted(commands.keys())), command))
+
+ handler = commands[command](parser)
+ handler(options, args[1:])
+
+if __name__ == '__main__':
+ main()
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/ManifestDestiny/setup.cfg
@@ -0,0 +1,5 @@
+[egg_info]
+tag_build =
+tag_date = 0
+tag_svn_revision = 0
+
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/ManifestDestiny/setup.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Mozilla.org.
+# Portions created by the Initial Developer are Copyright (C) 2011
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Jeff Hammel <jhammel@mozilla.com> (Original author)
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+# The real details are in manifestparser.py; this is just a front-end
+
+
+import sys
+from manifestparser import SetupCLI
+SetupCLI(None)(None, sys.argv[1:])
+
+
+
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/installmozmill.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Mozilla.org.
+# Portions created by the Initial Developer are Copyright (C) 2010
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Jeff Hammel <jhammel@mozilla.com> (Original author)
+# Siddharth Agarwal <sid.bugzilla@gmail.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+"""
+install mozmill and its dependencies
+"""
+
+import os
+import sys
+from subprocess import call
+
+### utility functions for cross-platform
+
+def is_windows():
+ return sys.platform.startswith('win')
+
+def esc(path):
+ """quote and escape a path for cross-platform use"""
+ return '"%s"' % repr(path)[1:-1]
+
+def scripts_path(virtual_env):
+ """path to scripts directory"""
+ if is_windows():
+ return os.path.join(virtual_env, 'Scripts')
+ return os.path.join(virtual_env, 'bin')
+
+def python_script_path(virtual_env, script_name):
+ """path to a python script in a virtualenv"""
+ scripts_dir = scripts_path(virtual_env)
+ if is_windows():
+ script_name = script_name + '-script.py'
+ return os.path.join(scripts_dir, script_name)
+
+def entry_point_path(virtual_env, entry_point):
+ path = os.path.join(scripts_path(virtual_env), entry_point)
+ if is_windows():
+ path += '.exe'
+ return path
+
+### command-line entry point
+
+def main(args=None):
+ """command line front-end function"""
+
+ # parse command line arguments
+ args = args or sys.argv[1:]
+ usage = "Usage: %prog [destination]"
+
+ # Print the python version
+ print 'Python: %s' % sys.version
+
+ # The data is kept in the same directory as the script
+ source=os.path.abspath(os.path.dirname(__file__))
+
+ # directory to install to
+ if not len(args):
+ destination = source
+ elif len(args) == 1:
+ destination = os.path.abspath(args[0])
+ else:
+ print "Usage: %s [destination]" % sys.argv[0]
+ sys.exit(1)
+
+ os.chdir(source)
+
+ # check for existence of necessary files
+ if not os.path.exists('virtualenv'):
+ print "File not found: virtualenv"
+ sys.exit(1)
+
+ # packages to install in dependency order
+ packages = ["ManifestDestiny", "simplejson-2.1.6", "mozrunner", "jsbridge",
+ "mozmill"]
+
+ # create the virtualenv and install packages
+ env = os.environ.copy()
+ env.pop('PYTHONHOME', None)
+ returncode = call([sys.executable, os.path.join('virtualenv', 'virtualenv.py'), destination], env=env)
+ if returncode:
+ print 'Failure to install virtualenv'
+ sys.exit(returncode)
+ pip = entry_point_path(destination, 'pip')
+ returncode = call([pip, 'install'] + [os.path.abspath(package) for package in packages], env=env)
+ if returncode:
+ print 'Failure to install packages'
+ sys.exit(returncode)
+
+if __name__ == '__main__':
+ main()
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/MANIFEST.in
@@ -0,0 +1,2 @@
+recursive-include jsbridge/extension *
+recursive-include jsbridge/xpi *
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/__init__.py
@@ -0,0 +1,181 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Corporation Code.
+#
+# The Initial Developer of the Original Code is
+# Mikeal Rogers.
+# Portions created by the Initial Developer are Copyright (C) 2008 -2009
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mikeal Rogers <mikeal.rogers@gmail.com>
+# Henrik Skupin <hskupin@mozilla.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+import socket
+import os
+import copy
+import asyncore
+
+from time import sleep
+from network import Bridge, BackChannel, create_network
+from jsobjects import JSObject
+
+import mozrunner
+
+settings_env = 'JSBRIDGE_SETTINGS_FILE'
+
+parent = os.path.abspath(os.path.dirname(__file__))
+extension_path = os.path.join(parent, 'extension')
+
+window_string = "Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow('')"
+
+wait_to_create_timeout = 60
+
+def wait_and_create_network(host, port, timeout=wait_to_create_timeout):
+ ttl = 0
+ while ttl < timeout:
+ try:
+ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ s.connect((host, port))
+ s.close()
+ break
+ except socket.error:
+ pass
+ sleep(.25)
+ ttl += .25
+ if ttl == timeout:
+ raise Exception("Sorry, cannot connect to jsbridge extension, port %s" % port)
+
+ back_channel, bridge = create_network(host, port)
+ sleep(.5)
+
+ while back_channel.registered is False:
+ back_channel.close()
+ bridge.close()
+ asyncore.socket_map = {}
+ sleep(1)
+ back_channel, bridge = create_network(host, port)
+
+ return back_channel, bridge
+
+class CLI(mozrunner.CLI):
+ """Command line interface."""
+
+ module = "jsbridge"
+
+ parser_options = copy.copy(mozrunner.CLI.parser_options)
+ parser_options[('-D', '--debug',)] = dict(dest="debug",
+ action="store_true",
+ help="Debug mode",
+ metavar="JSBRIDGE_DEBUG",
+ default=False )
+ parser_options[('-s', '--shell',)] = dict(dest="shell",
+ action="store_true",
+ help="Start a Python shell",
+ metavar="JSBRIDGE_SHELL",
+ default=False )
+ parser_options[('-u', '--usecode',)] = dict(dest="usecode", action="store_true",
+ help="Use code module instead of iPython",
+ default=False)
+ parser_options[('-P', '--port')] = dict(dest="port", default="24242",
+ help="TCP port to run jsbridge on.")
+
+ def get_profile(self, *args, **kwargs):
+ if self.options.debug:
+ kwargs.setdefault('preferences', {}).update({
+ 'extensions.checkCompatibility':False,
+ 'devtools.errorconsole.enabled':True,
+ 'javascript.options.strict': True
+ })
+ profile = mozrunner.CLI.get_profile(self, *args, **kwargs)
+ profile.install_addon(extension_path)
+ return profile
+
+ def get_runner(self, *args, **kwargs):
+ runner = super(CLI, self).get_runner(*args, **kwargs)
+ if self.options.debug:
+ runner.cmdargs.append('-jsconsole')
+ if not '-jsbridge' in runner.cmdargs:
+ runner.cmdargs += ['-jsbridge', self.options.port]
+ return runner
+
+ def run(self):
+ runner = self.create_runner()
+ runner.start()
+ self.start_jsbridge_network()
+ if self.options.shell:
+ self.start_shell(runner)
+ else:
+ try:
+ runner.wait()
+ except KeyboardInterrupt:
+ runner.stop()
+
+ runner.profile.cleanup()
+
+ def start_shell(self, runner):
+ try:
+ import IPython
+ except:
+ IPython = None
+ if not hasattr(self, 'bridge'):
+ self.start_jsbridge_network()
+ jsobj = JSObject(self.bridge, window_string)
+
+ if IPython is None or self.options.usecode:
+ import code
+ code.interact(local={"jsobj":jsobj,
+ "getBrowserWindow":lambda : getBrowserWindow(self.bridge),
+ "back_channel":self.back_channel,
+ })
+ else:
+ from IPython.Shell import IPShellEmbed
+ ipshell = IPShellEmbed([])
+ ipshell(local_ns={"jsobj":jsobj,
+ "getBrowserWindow":lambda : getBrowserWindow(self.bridge),
+ "back_channel":self.back_channel,
+ })
+ runner.stop()
+
+ def start_jsbridge_network(self, timeout=10):
+ port = int(self.options.port)
+ host = '127.0.0.1'
+ self.back_channel, self.bridge = wait_and_create_network(host, port, timeout)
+
+def cli():
+ CLI().run()
+
+def getBrowserWindow(bridge):
+ return JSObject(bridge, "Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow('')")
+
+
+
+
+
+
+
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/chrome.manifest
@@ -0,0 +1,14 @@
+resource jsbridge resource/
+
+content jsbridge chrome/content/
+
+overlay chrome://browser/content/browser.xul chrome://jsbridge/content/overlay.xul
+overlay chrome://messenger/content/mailWindowOverlay.xul chrome://jsbridge/content/overlay.xul
+
+overlay chrome://calendar/content/calendar.xul chrome://jsbridge/content/overlay.xul
+
+overlay windowtype:Songbird:Main chrome://jsbridge/content/overlay.xul
+
+component {2872d428-14f6-11de-ac86-001f5bd9235c} components/cmdarg.js
+contract @mozilla.org/commandlinehandler/general-startup;1?type=jsbridge {2872d428-14f6-11de-ac86-001f5bd9235c}
+category command-line-handler jsbridge @mozilla.org/commandlinehandler/general-startup;1?type=jsbridge
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/chrome/content/overlay.js
@@ -0,0 +1,40 @@
+// ***** BEGIN LICENSE BLOCK *****
+// Version: MPL 1.1/GPL 2.0/LGPL 2.1
+//
+// The contents of this file are subject to the Mozilla Public License Version
+// 1.1 (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+// http://www.mozilla.org/MPL/
+//
+// Software distributed under the License is distributed on an "AS IS" basis,
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+// for the specific language governing rights and limitations under the
+// License.
+//
+// The Original Code is Mozilla Corporation Code.
+//
+// The Initial Developer of the Original Code is
+// Mikeal Rogers.
+// Portions created by the Initial Developer are Copyright (C) 2008
+// the Initial Developer. All Rights Reserved.
+//
+// Contributor(s):
+// Mikeal Rogers <mikeal.rogers@gmail.com>
+//
+// Alternatively, the contents of this file may be used under the terms of
+// either the GNU General Public License Version 2 or later (the "GPL"), or
+// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+// in which case the provisions of the GPL or the LGPL are applicable instead
+// of those above. If you wish to allow use of your version of this file only
+// under the terms of either the GPL or the LGPL, and not to allow others to
+// use your version of this file under the terms of the MPL, indicate your
+// decision by deleting the provisions above and replace them with the notice
+// and other provisions required by the GPL or the LGPL. If you do not delete
+// the provisions above, a recipient may use your version of this file under
+// the terms of any one of the MPL, the GPL or the LGPL.
+//
+// ***** END LICENSE BLOCK *****
+
+var jsbridgeInit = {}; Components.utils.import('resource://jsbridge/modules/init.js',jsbridgeInit);
+
+
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/chrome/content/overlay.xul
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<overlay id="jsbridge-overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script src="overlay.js"/>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/components/cmdarg.js
@@ -0,0 +1,124 @@
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+
+const nsIAppShellService = Components.interfaces.nsIAppShellService;
+const nsISupports = Components.interfaces.nsISupports;
+const nsICategoryManager = Components.interfaces.nsICategoryManager;
+const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
+const nsICommandLine = Components.interfaces.nsICommandLine;
+const nsICommandLineHandler = Components.interfaces.nsICommandLineHandler;
+const nsIFactory = Components.interfaces.nsIFactory;
+const nsIModule = Components.interfaces.nsIModule;
+const nsIWindowWatcher = Components.interfaces.nsIWindowWatcher;
+
+// CHANGEME: to the chrome URI of your extension or application
+const CHROME_URI = "chrome://jsbridge/content/";
+
+// CHANGEME: change the contract id, CID, and category to be unique
+// to your application.
+const clh_contractID = "@mozilla.org/commandlinehandler/general-startup;1?type=jsbridge";
+
+// use uuidgen to generate a unique ID
+const clh_CID = Components.ID("{2872d428-14f6-11de-ac86-001f5bd9235c}");
+
+// category names are sorted alphabetically. Typical command-line handlers use a
+// category that begins with the letter "m".
+const clh_category = "jsbridge";
+
+var aConsoleService = Components.classes["@mozilla.org/consoleservice;1"].
+ getService(Components.interfaces.nsIConsoleService);
+
+/**
+ * Utility functions
+ */
+
+/**
+ * Opens a chrome window.
+ * @param aChromeURISpec a string specifying the URI of the window to open.
+ * @param aArgument an argument to pass to the window (may be null)
+ */
+function openWindow(aChromeURISpec, aArgument)
+{
+ var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].
+ getService(Components.interfaces.nsIWindowWatcher);
+ ww.openWindow(null, aChromeURISpec, "_blank",
+ "chrome,menubar,toolbar,status,resizable,dialog=no",
+ aArgument);
+}
+
+/**
+ * The XPCOM component that implements nsICommandLineHandler.
+ * It also implements nsIFactory to serve as its own singleton factory.
+ */
+function jsbridgeHandler() {
+}
+jsbridgeHandler.prototype = {
+ classID: clh_CID,
+ contractID: clh_contractID,
+ classDescription: "jsbridgeHandler",
+ _xpcom_categories: [{category: "command-line-handler", entry: clh_category}],
+
+ /* nsISupports */
+ QueryInterface : function clh_QI(iid)
+ {
+ if (iid.equals(nsICommandLineHandler) ||
+ iid.equals(nsIFactory) ||
+ iid.equals(nsISupports))
+ return this;
+
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ },
+
+ /* nsICommandLineHandler */
+
+ handle : function clh_handle(cmdLine)
+ {
+ try {
+ var port = cmdLine.handleFlagWithParam("jsbridge", false);
+ if (port) {
+ var server = {};
+ Components.utils.import('resource://jsbridge/modules/server.js', server);
+ server.startServer(parseInt(port));
+ } else {
+ var server = {};
+ Components.utils.import('resource://jsbridge/modules/server.js', server);
+ server.startServer(24242);
+ }
+ }
+ catch (e) {
+ Components.utils.reportError("incorrect parameter passed to -jsbridge on the command line.");
+ }
+
+ },
+
+ // CHANGEME: change the help info as appropriate, but
+ // follow the guidelines in nsICommandLineHandler.idl
+ // specifically, flag descriptions should start at
+ // character 24, and lines should be wrapped at
+ // 72 characters with embedded newlines,
+ // and finally, the string should end with a newline
+ helpInfo : " -jsbridge Port to run jsbridge on.\n",
+
+ /* nsIFactory */
+
+ createInstance : function clh_CI(outer, iid)
+ {
+ if (outer != null)
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
+
+ return this.QueryInterface(iid);
+ },
+
+ lockFactory : function clh_lock(lock)
+ {
+ /* no-op */
+ }
+};
+
+/**
+ * XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+ * XPCOMUtils.generateNSGetModule is for Mozilla 1.9.1 (Firefox 3.5).
+ */
+if (XPCOMUtils.generateNSGetFactory)
+ const NSGetFactory = XPCOMUtils.generateNSGetFactory([jsbridgeHandler]);
+else
+ const NSGetModule = XPCOMUtils.generateNSGetModule([jsbridgeHandler]);
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/install.rdf
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+ <Description about="urn:mozilla:install-manifest">
+ <em:id>jsbridge@mozilla.com</em:id>
+ <em:name>jsbridge</em:name>
+ <em:version>2.4.4b4</em:version>
+ <em:creator>Mikeal Rogers</em:creator>
+ <em:description>Python to JavaScript bridge</em:description>
+ <em:unpack>true</em:unpack>
+ <em:targetApplication>
+ <!-- Firefox -->
+ <Description>
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
+ <em:minVersion>3.5</em:minVersion>
+ <em:maxVersion>7.*</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <!-- Thunderbird -->
+ <Description>
+ <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
+ <em:minVersion>3.0a1pre</em:minVersion>
+ <em:maxVersion>6.*</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <!-- Sunbird -->
+ <Description>
+ <em:id>{718e30fb-e89b-41dd-9da7-e25a45638b28}</em:id>
+ <em:minVersion>1.0b1pre</em:minVersion>
+ <em:maxVersion>1.0pre</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <!-- SeaMonkey -->
+ <Description>
+ <em:id>{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}</em:id>
+ <em:minVersion>2.0a1</em:minVersion>
+ <em:maxVersion>3.*</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <!-- Songbird -->
+ <Description>
+ <em:id>songbird@songbirdnest.com</em:id>
+ <em:minVersion>0.3pre</em:minVersion>
+ <em:maxVersion>2.*</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ <em:targetApplication>
+ <Description>
+ <em:id>toolkit@mozilla.org</em:id>
+ <em:minVersion>1.9.1</em:minVersion>
+ <em:maxVersion>2.0*</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+
+
+</RDF>
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/resource/modules/events.js
@@ -0,0 +1,13 @@
+var EXPORTED_SYMBOLS = ["backchannels", "fireEvent", "addBackChannel"];
+
+var backchannels = [];
+
+var fireEvent = function (name, obj) {
+ for each(backchannel in backchannels) {
+ backchannel.session.encodeOut({'eventType':name, 'result':obj});
+ }
+}
+
+var addBackChannel = function (backchannel) {
+ backchannels.push(backchannel);
+}
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/resource/modules/init.js
@@ -0,0 +1,40 @@
+// ***** BEGIN LICENSE BLOCK *****
+// Version: MPL 1.1/GPL 2.0/LGPL 2.1
+//
+// The contents of this file are subject to the Mozilla Public License Version
+// 1.1 (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+// http://www.mozilla.org/MPL/
+//
+// Software distributed under the License is distributed on an "AS IS" basis,
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+// for the specific language governing rights and limitations under the
+// License.
+//
+// The Original Code is Mozilla Corporation Code.
+//
+// The Initial Developer of the Original Code is
+// Mikeal Rogers.
+// Portions created by the Initial Developer are Copyright (C) 2008
+// the Initial Developer. All Rights Reserved.
+//
+// Contributor(s):
+// Mikeal Rogers <mikeal.rogers@gmail.com>
+//
+// Alternatively, the contents of this file may be used under the terms of
+// either the GNU General Public License Version 2 or later (the "GPL"), or
+// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+// in which case the provisions of the GPL or the LGPL are applicable instead
+// of those above. If you wish to allow use of your version of this file only
+// under the terms of either the GPL or the LGPL, and not to allow others to
+// use your version of this file under the terms of the MPL, indicate your
+// decision by deleting the provisions above and replace them with the notice
+// and other provisions required by the GPL or the LGPL. If you do not delete
+// the provisions above, a recipient may use your version of this file under
+// the terms of any one of the MPL, the GPL or the LGPL.
+//
+// ***** END LICENSE BLOCK *****
+
+var EXPORTED_SYMBOLS = ["server"];
+
+var server = {}; Components.utils.import('resource://jsbridge/modules/server.js', server);
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/resource/modules/json2.js
@@ -0,0 +1,471 @@
+/*
+ http://www.JSON.org/json2.js
+ 2008-05-25
+
+ Public Domain.
+
+ NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+
+ See http://www.JSON.org/js.html
+
+ This file creates a global JSON object containing two methods: stringify
+ and parse.
+
+ JSON.stringify(value, replacer, space)
+ value any JavaScript value, usually an object or array.
+
+ replacer an optional parameter that determines how object
+ values are stringified for objects without a toJSON
+ method. It can be a function or an array.
+
+ space an optional parameter that specifies the indentation
+ of nested structures. If it is omitted, the text will
+ be packed without extra whitespace. If it is a number,
+ it will specify the number of spaces to indent at each
+ level. If it is a string (such as '\t' or ' '),
+ it contains the characters used to indent at each level.
+
+ This method produces a JSON text from a JavaScript value.
+
+ When an object value is found, if the object contains a toJSON
+ method, its toJSON method will be called and the result will be
+ stringified. A toJSON method does not serialize: it returns the
+ value represented by the name/value pair that should be serialized,
+ or undefined if nothing should be serialized. The toJSON method
+ will be passed the key associated with the value, and this will be
+ bound to the object holding the key.
+
+ For example, this would serialize Dates as ISO strings.
+
+ Date.prototype.toJSON = function (key) {
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ You can provide an optional replacer method. It will be passed the
+ key and value of each member, with this bound to the containing
+ object. The value that is returned from your method will be
+ serialized. If your method returns undefined, then the member will
+ be excluded from the serialization.
+
+ If the replacer parameter is an array, then it will be used to
+ select the members to be serialized. It filters the results such
+ that only members with keys listed in the replacer array are
+ stringified.
+
+ Values that do not have JSON representations, such as undefined or
+ functions, will not be serialized. Such values in objects will be
+ dropped; in arrays they will be replaced with null. You can use
+ a replacer function to replace those with JSON values.
+ JSON.stringify(undefined) returns undefined.
+
+ The optional space parameter produces a stringification of the
+ value that is filled with line breaks and indentation to make it
+ easier to read.
+
+ If the space parameter is a non-empty string, then that string will
+ be used for indentation. If the space parameter is a number, then
+ the indentation will be that many spaces.
+
+ Example:
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}]);
+ // text is '["e",{"pluribus":"unum"}]'
+
+
+ text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
+ // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
+
+ text = JSON.stringify([new Date()], function (key, value) {
+ return this[key] instanceof Date ?
+ 'Date(' + this[key] + ')' : value;
+ });
+ // text is '["Date(---current time---)"]'
+
+
+ JSON.parse(text, reviver)
+ This method parses a JSON text to produce an object or array.
+ It can throw a SyntaxError exception.
+
+ The optional reviver parameter is a function that can filter and
+ transform the results. It receives each of the keys and values,
+ and its return value is used instead of the original value.
+ If it returns what it received, then the structure is not modified.
+ If it returns undefined then the member is deleted.
+
+ Example:
+
+ // Parse the text. Values that look like ISO date strings will
+ // be converted to Date objects.
+
+ myData = JSON.parse(text, function (key, value) {
+ var a;
+ if (typeof value === 'string') {
+ a =
+/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
+ if (a) {
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+ +a[5], +a[6]));
+ }
+ }
+ return value;
+ });
+
+ myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
+ var d;
+ if (typeof value === 'string' &&
+ value.slice(0, 5) === 'Date(' &&
+ value.slice(-1) === ')') {
+ d = new Date(value.slice(5, -1));
+ if (d) {
+ return d;
+ }
+ }
+ return value;
+ });
+
+
+ This is a reference implementation. You are free to copy, modify, or
+ redistribute.
+
+ This code should be minified before deployment.
+ See http://javascript.crockford.com/jsmin.html
+
+ USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
+ NOT CONTROL.
+*/
+
+/*jslint evil: true */
+
+/*global JSON */
+
+/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", call,
+ charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, getUTCMinutes,
+ getUTCMonth, getUTCSeconds, hasOwnProperty, join, lastIndex, length,
+ parse, propertyIsEnumerable, prototype, push, replace, slice, stringify,
+ test, toJSON, toString
+*/
+
+var EXPORTED_SYMBOLS = ["JSON"];
+
+if (!this.JSON) {
+
+// Create a JSON object only if one does not already exist. We create the
+// object in a closure to avoid creating global variables.
+
+ JSON = function () {
+
+ function f(n) {
+ // Format integers to have at least two digits.
+ return n < 10 ? '0' + n : n;
+ }
+
+ Date.prototype.toJSON = function (key) {
+
+ return this.getUTCFullYear() + '-' +
+ f(this.getUTCMonth() + 1) + '-' +
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z';
+ };
+
+ var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent,
+ meta = { // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ rep;
+
+
+ function quote(string) {
+
+// If the string contains no control characters, no quote characters, and no
+// backslash characters, then we can safely slap some quotes around it.
+// Otherwise we must also replace the offending characters with safe escape
+// sequences.
+
+ escapeable.lastIndex = 0;
+ return escapeable.test(string) ?
+ '"' + string.replace(escapeable, function (a) {
+ var c = meta[a];
+ if (typeof c === 'string') {
+ return c;
+ }
+ return '\\u' + ('0000' +
+ (+(a.charCodeAt(0))).toString(16)).slice(-4);
+ }) + '"' :
+ '"' + string + '"';
+ }
+
+
+ function str(key, holder) {
+
+// Produce a string from holder[key].
+
+ var i, // The loop counter.
+ k, // The member key.
+ v, // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key];
+
+// If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' &&
+ typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+
+// If we were called with a replacer function, then call the replacer to
+// obtain a replacement value.
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ }
+
+// What happens next depends on the value's type.
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+
+// JSON numbers must be finite. Encode non-finite numbers as null.
+
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+
+// If the value is a boolean or null, convert it to a string. Note:
+// typeof null does not produce 'null'. The case is included here in
+// the remote chance that this gets fixed someday.
+
+ return String(value);
+
+// If the type is 'object', we might be dealing with an object or an array or
+// null.
+
+ case 'object':
+
+// Due to a specification blunder in ECMAScript, typeof null is 'object',
+// so watch out for that case.
+
+ if (!value) {
+ return 'null';
+ }
+
+// Make an array to hold the partial results of stringifying this object value.
+
+ gap += indent;
+ partial = [];
+
+// If the object has a dontEnum length property, we'll treat it as an array.
+
+ if (typeof value.length === 'number' &&
+ !(value.propertyIsEnumerable('length'))) {
+
+// The object is an array. Stringify every element. Use null as a placeholder
+// for non-JSON values.
+
+ length = value.length;
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ }
+
+// Join all of the elements together, separated with commas, and wrap them in
+// brackets.
+
+ v = partial.length === 0 ? '[]' :
+ gap ? '[\n' + gap +
+ partial.join(',\n' + gap) + '\n' +
+ mind + ']' :
+ '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ }
+
+// If the replacer is an array, use it to select the members to be stringified.
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+ if (typeof k === 'string') {
+ v = str(k, value, rep);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+
+// Otherwise, iterate through all of the keys in the object.
+
+ for (k in value) {
+ if (Object.hasOwnProperty.call(value, k)) {
+ v = str(k, value, rep);
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ }
+
+// Join all of the member texts together, separated with commas,
+// and wrap them in braces.
+
+ v = partial.length === 0 ? '{}' :
+ gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
+ mind + '}' : '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+ }
+
+// Return the JSON object containing the stringify and parse methods.
+
+ return {
+ stringify: function (value, replacer, space) {
+
+// The stringify method takes a value and an optional replacer, and an optional
+// space parameter, and returns a JSON text. The replacer can be a function
+// that can replace values, or an array of strings that will select the keys.
+// A default replacer method can be provided. Use of the space parameter can
+// produce text that is more easily readable.
+
+ var i;
+ gap = '';
+ indent = '';
+
+// If the space parameter is a number, make an indent string containing that
+// many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent += ' ';
+ }
+
+// If the space parameter is a string, it will be used as the indent string.
+
+ } else if (typeof space === 'string') {
+ indent = space;
+ }
+
+// If there is a replacer, it must be a function or an array.
+// Otherwise, throw an error.
+
+ rep = replacer;
+ if (replacer && typeof replacer !== 'function' &&
+ (typeof replacer !== 'object' ||
+ typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ }
+
+// Make a fake root object containing our value under the key of ''.
+// Return the result of stringifying the value.
+
+ return str('', {'': value});
+ },
+
+
+ parse: function (text, reviver) {
+
+// The parse method takes a text and an optional reviver function, and returns
+// a JavaScript value if the text is a valid JSON text.
+
+ var j;
+
+ function walk(holder, key) {
+
+// The walk method is used to recursively walk the resulting structure so
+// that modifications can be made.
+
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+ return reviver.call(holder, key, value);
+ }
+
+
+// Parsing happens in four stages. In the first stage, we replace certain
+// Unicode characters with escape sequences. JavaScript handles many characters
+// incorrectly, either silently deleting them, or treating them as line endings.
+
+ cx.lastIndex = 0;
+ if (cx.test(text)) {
+ text = text.replace(cx, function (a) {
+ return '\\u' + ('0000' +
+ (+(a.charCodeAt(0))).toString(16)).slice(-4);
+ });
+ }
+
+// In the second stage, we run the text against regular expressions that look
+// for non-JSON patterns. We are especially concerned with '()' and 'new'
+// because they can cause invocation, and '=' because it can cause mutation.
+// But just to be safe, we want to reject all unexpected forms.
+
+// We split the second stage into 4 regexp operations in order to work around
+// crippling inefficiencies in IE's and Safari's regexp engines. First we
+// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
+// replace all simple value tokens with ']' characters. Third, we delete all
+// open brackets that follow a colon or comma or that begin the text. Finally,
+// we look to see that the remaining characters are only whitespace or ']' or
+// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
+
+ if (/^[\],:{}\s]*$/.
+test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
+replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
+replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+
+// In the third stage we use the eval function to compile the text into a
+// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
+// in JavaScript: it can begin a block or an object literal. We wrap the text
+// in parens to eliminate the ambiguity.
+
+ j = eval('(' + text + ')');
+
+// In the optional fourth stage, we recursively walk the new structure, passing
+// each name/value pair to a reviver function for possible transformation.
+
+ return typeof reviver === 'function' ?
+ walk({'': j}, '') : j;
+ }
+
+// If the text is not JSON parseable, then a SyntaxError is thrown.
+
+ throw new SyntaxError('JSON.parse');
+ }
+ };
+ }();
+}
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/extension/resource/modules/server.js
@@ -0,0 +1,347 @@
+// ***** BEGIN LICENSE BLOCK *****
+// Version: MPL 1.1/GPL 2.0/LGPL 2.1
+//
+// The contents of this file are subject to the Mozilla Public License Version
+// 1.1 (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+// http://www.mozilla.org/MPL/
+//
+// Software distributed under the License is distributed on an "AS IS" basis,
+// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+// for the specific language governing rights and limitations under the
+// License.
+//
+// The Original Code is Mozilla Corporation Code.
+//
+// The Initial Developer of the Original Code is
+// based on the MozRepl project.
+// Portions created by the Initial Developer are Copyright (C) 2008
+// the Initial Developer. All Rights Reserved.
+//
+// Contributor(s):
+// Mikeal Rogers <mikeal.rogers@gmail.com>
+// Massimiliano Mirra <bard@hyperstruct.net>
+//
+// Alternatively, the contents of this file may be used under the terms of
+// either the GNU General Public License Version 2 or later (the "GPL"), or
+// the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+// in which case the provisions of the GPL or the LGPL are applicable instead
+// of those above. If you wish to allow use of your version of this file only
+// under the terms of either the GPL or the LGPL, and not to allow others to
+// use your version of this file under the terms of the MPL, indicate your
+// decision by deleting the provisions above and replace them with the notice
+// and other provisions required by the GPL or the LGPL. If you do not delete
+// the provisions above, a recipient may use your version of this file under
+// the terms of any one of the MPL, the GPL or the LGPL.
+//
+// ***** END LICENSE BLOCK *****
+
+var EXPORTED_SYMBOLS = ["Server", "server", "AsyncRead", "Session", "sessions", "globalRegistry", "startServer"];
+
+var events = {}; Components.utils.import("resource://jsbridge/modules/events.js", events);
+const DEBUG_ON = false;
+const BUFFER_SIZE = 1024;
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const loader = Cc['@mozilla.org/moz/jssubscript-loader;1']
+ .getService(Ci.mozIJSSubScriptLoader);
+
+var hwindow = Components.classes["@mozilla.org/appshell/appShellService;1"]
+ .getService(Components.interfaces.nsIAppShellService)
+ .hiddenDOMWindow;
+
+var nativeJSON = Components.classes["@mozilla.org/dom/json;1"]
+ .createInstance(Components.interfaces.nsIJSON);
+
+var json2 = Components.utils.import("resource://jsbridge/modules/json2.js");
+
+var jsonEncode = json2.JSON.stringify;
+
+var uuidgen = Components.classes["@mozilla.org/uuid-generator;1"]
+ .getService(Components.interfaces.nsIUUIDGenerator);
+
+function AsyncRead (session) {
+ this.session = session;
+}
+AsyncRead.prototype.onStartRequest = function (request, context) {};
+AsyncRead.prototype.onStopRequest = function (request, context, status) {
+ log("async onstoprequest: onstoprequest");
+ this.session.onQuit();
+}
+AsyncRead.prototype.onDataAvailable = function (request, context, inputStream, offset, count) {
+ var str = {};
+ str.value = '';
+
+ var bytesAvail = 0;
+ do {
+ var parts = {};
+ if (count > BUFFER_SIZE) {
+ bytesAvail = BUFFER_SIZE;
+ } else {
+ bytesAvail = count;
+ }
+
+ log("jsbridge: onDataAvailable, reading bytesAvail = " + bytesAvail + "\n");
+ var bytesRead = this.session.instream.readString(bytesAvail, parts);
+ count = count - bytesRead;
+ log("jsbridge: onDataAvailable, read bytes: " + bytesRead + " count is now: " + count + "\n");
+ str.value += parts.value;
+ } while (count > 0);
+ log("jsbridge: onDataAvailable, going into receive with: \n\n" + str.value + "\n\n");
+ this.session.receive(str.value);
+}
+
+
+
+globalRegistry = {};
+
+function Bridge (session) {
+ this.session = session;
+ this.registry = globalRegistry;
+}
+Bridge.prototype._register = function (_type) {
+ this.bridgeType = _type;
+ if (_type == "backchannel") {
+ events.addBackChannel(this);
+ }
+}
+Bridge.prototype.register = function (uuid, _type) {
+ try {
+ this._register(_type);
+ var passed = true;
+ } catch(e) {
+ if (typeof(e) == "string") {
+ var exception = e;
+ } else {
+ var exception = {'name':e.name, 'message':e.message};
+ }
+ this.session.encodeOut({'result':false, 'exception':exception, 'uuid':uuid});
+ }
+ if (passed != undefined) {
+ this.session.encodeOut({"result":true, 'eventType':'register', 'uuid':uuid});
+ }
+
+}
+Bridge.prototype._describe = function (obj) {
+ var response = {};
+ if (obj == null) {
+ var type = "null";
+ } else {
+ var type = typeof(obj);
+ }
+ if (type == "object") {
+ if (obj.length != undefined) {
+ var type = "array";
+ }
+ response.attributes = [];
+ for (i in obj) {
+ response.attributes = response.attributes.concat(i);
+ }
+ }
+ else if (type != "function"){
+ response.data = obj;
+ }
+ response.type = type;
+ return response;
+}
+Bridge.prototype.describe = function (uuid, obj) {
+ var response = this._describe(obj);
+ response.uuid = uuid;
+ response.result = true;
+ this.session.encodeOut(response);
+}
+Bridge.prototype._set = function (obj) {
+ var uuid = uuidgen.generateUUID().toString();
+ this.registry[uuid] = obj;
+ return uuid;
+}
+Bridge.prototype.set = function (uuid, obj) {
+ var ruuid = this._set(obj);
+ this.session.encodeOut({'result':true, 'data':'bridge.registry["'+ruuid+'"]', 'uuid':uuid});
+}
+Bridge.prototype._setAttribute = function (obj, name, value) {
+ obj[name] = value;
+ return value;
+}
+Bridge.prototype.setAttribute = function (uuid, obj, name, value) {
+ try {
+ var result = this._setAttribute(obj, name, value);
+ } catch(e) {
+ if (typeof(e) == "string") {
+ var exception = e;
+ } else {
+ var exception = {'name':e.name, 'message':e.message};
+ }
+ this.session.encodeOut({'result':false, 'exception':exception, 'uuid':uuid});
+ }
+ if (result != undefined) {
+ this.set(uuid, obj[name]);
+ }
+}
+Bridge.prototype._execFunction = function (func, args) {
+ return func.apply(this.session.sandbox, args);
+}
+Bridge.prototype.execFunction = function (uuid, func, args) {
+ try {
+ var data = this._execFunction(func, args);
+ var result = true;
+ } catch(e) {
+ if (typeof(e) == "string") {
+ var exception = e;
+ } else {
+ var exception = {'name':e.name, 'message':e.message};
+ }
+ this.session.encodeOut({'result':false, 'exception':exception, 'uuid':uuid});
+ var result = true;
+ }
+ if (data != undefined) {
+ this.set(uuid, data);
+ } else if ( result == true) {
+ this.session.encodeOut({'result':true, 'data':null, 'uuid':uuid});
+ } else {
+ log("jsbridge threw unknown data in execFunc");
+ throw 'JSBridge unknown data in execFunc';
+ }
+}
+
+backstage = this;
+
+function Session (transport) {
+ this.transpart = transport;
+ this.sandbox = Components.utils.Sandbox(backstage);
+ this.sandbox.bridge = new Bridge(this);
+ this.sandbox.openPreferences = hwindow.openPreferences;
+ try {
+ this.outputstream = transport.openOutputStream(Ci.nsITransport.OPEN_BLOCKING, 0, 0);
+ this.outstream = Cc['@mozilla.org/intl/converter-output-stream;1']
+ .createInstance(Ci.nsIConverterOutputStream);
+ this.outstream.init(this.outputstream, 'UTF-8', BUFFER_SIZE,
+ Ci.nsIConverterOutputStream.DEFAULT_REPLACEMENT_CHARACTER);
+ this.stream = transport.openInputStream(0, 0, 0);
+ this.instream = Cc['@mozilla.org/intl/converter-input-stream;1']
+ .createInstance(Ci.nsIConverterInputStream);
+ this.instream.init(this.stream, 'UTF-8', BUFFER_SIZE,
+ Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
+ } catch(e) {
+ log('jsbridge: Error: ' + e);
+ }
+ log('jsbridge: Accepted connection.');
+
+ this.pump = Cc['@mozilla.org/network/input-stream-pump;1']
+ .createInstance(Ci.nsIInputStreamPump);
+ this.pump.init(this.stream, -1, -1, 0, 0, false);
+ this.pump.asyncRead(new AsyncRead(this), null);
+}
+Session.prototype.onOutput = function(string) {
+ log('jsbridge: write: '+string)
+ if (typeof(string) != "string") {
+ throw "This is not a string"
+ }
+ try {
+ var stroffset = 0;
+ do {
+ var parts = '';
+ // Handle the case where we are writing something larger than our buffer
+ if (string.length > BUFFER_SIZE) {
+ log("jsbridge: onOutput: writing data stroffset is: " + stroffset + " string.length is: " + string.length);
+ parts = string.slice(stroffset, stroffset + BUFFER_SIZE);
+ log("jsbridge: onOutput: here is our part: \n" + parts + "\n");
+ } else {
+ parts = string;
+ }
+
+ // Update our offset
+ stroffset = stroffset += parts.length;
+
+ // write it
+ this.outstream.writeString(parts);
+ } while (stroffset < string.length);
+
+ // Ensure the entire stream is flushed
+ this.outstream.flush();
+ } catch (e) {
+ log("jsbridge: threw on writing string: " + string + " exception: " + e);
+ throw "JSBridge cannot write: "+string
+ }
+};
+Session.prototype.onQuit = function() {
+ this.instream.close();
+ this.outstream.close();
+ sessions.remove(session);
+};
+Session.prototype.encodeOut = function (obj) {
+ try {
+ this.onOutput(jsonEncode(obj));
+ } catch(e) {
+ if (typeof(e) == "string") {
+ var exception = e;
+ } else {
+ var exception = {'name':e.name, 'message':e.message};
+ }
+ this.onOutput(jsonEncode({'result':false, 'exception':exception}));
+ }
+
+}
+Session.prototype.receive = function(data) {
+ Components.utils.evalInSandbox(data, this.sandbox);
+}
+
+var sessions = {
+ _list: [],
+ add: function(session) {
+ this._list.push(session);
+ },
+ remove: function(session) {
+ var index = this._list.indexOf(session);
+ if(index != -1)
+ this._list.splice(index, 1);
+ },
+ get: function(index) {
+ return this._list[index];
+ },
+ quit: function() {
+ this._list.forEach(
+ function(session) { session.quit; });
+ this._list.splice(0, this._list.length);
+ }
+};
+
+function Server (port) {
+ this.port = port;
+}
+Server.prototype.start = function () {
+ try {
+ this.serv = Cc['@mozilla.org/network/server-socket;1']
+ .createInstance(Ci.nsIServerSocket);
+ this.serv.init(this.port, true, -1);
+ this.serv.asyncListen(this);
+ } catch(e) {
+ log('jsbridge: Exception: ' + e);
+ }
+}
+Server.prototype.stop = function () {
+ log('jsbridge: Closing...');
+ this.serv.close();
+ this.sessions.quit();
+ this.serv = undefined;
+}
+Server.prototype.onStopListening = function (serv, status) {
+// Stub function
+}
+Server.prototype.onSocketAccepted = function (serv, transport) {
+ session = new Session(transport)
+ sessions.add(session);
+}
+
+function log(msg) {
+ if (DEBUG_ON) {
+ dump(msg + '\n');
+ }
+}
+
+function startServer(port) {
+ var server = new Server(port)
+ server.start()
+}
+
+
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/jsobjects.py
@@ -0,0 +1,167 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Corporation Code.
+#
+# The Initial Developer of the Original Code is
+# Mikeal Rogers.
+# Portions created by the Initial Developer are Copyright (C) 2008
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mikeal Rogers <mikeal.rogers@gmail.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+def init_jsobject(cls, bridge, name, value, description=None):
+ """Initialize a js object that is a subclassed base type; int, str, unicode, float."""
+ obj = cls(value)
+ obj._bridge_ = bridge
+ obj._name_ = name
+ obj._description_ = description
+ return obj
+
+def create_jsobject(bridge, fullname, value=None, obj_type=None, override_set=False):
+ """Create a single JSObject for named object on other side of the bridge.
+
+ Handles various initization cases for different JSObjects."""
+ description = bridge.describe(fullname)
+ obj_type = description['type']
+ value = description.get('data', None)
+
+ if value is True or value is False:
+ return value
+
+ if js_type_cases.has_key(obj_type):
+ cls, needs_init = js_type_cases[obj_type]
+ # Objects that requires initialization are base types that have "values".
+ if needs_init:
+ obj = init_jsobject(cls, bridge, fullname, value, description=description)
+ else:
+ obj = cls(bridge, fullname, description=description, override_set=override_set)
+ return obj
+ else:
+ # Something very bad happened, we don't have a representation for the given type.
+ raise TypeError("Don't have a JSObject for javascript type "+obj_type)
+
+class JSObject(object):
+ """Base javascript object representation."""
+ _loaded_ = False
+
+ def __init__(self, bridge, name, override_set=False, description=None, *args, **kwargs):
+ self._bridge_ = bridge
+ if not override_set:
+ name = bridge.set(name)['data']
+ self._name_ = name
+ self._description_ = description
+
+ def __jsget__(self, name):
+ """Abstraction for final step in get events; __getitem__ and __getattr__.
+ """
+ result = create_jsobject(self._bridge_, name, override_set=True)
+ return result
+
+ def __getattr__(self, name):
+ """Get the object from jsbridge.
+
+ Handles lazy loading of all attributes of self."""
+ # A little hack so that ipython returns all the names.
+ if name == '_getAttributeNames':
+ return lambda : self._bridge_.describe(self._name_)['attributes']
+
+ attributes = self._bridge_.describe(self._name_)['attributes']
+ if name in attributes:
+ return self.__jsget__(self._name_+'["'+name+'"]')
+ else:
+ raise AttributeError(name+" is undefined.")
+
+ __getitem__ = __getattr__
+
+ def __setattr__(self, name, value):
+ """Set the given JSObject as an attribute of this JSObject and make proper javascript
+ assignment on the other side of the bridge."""
+ if name.startswith('_') and name.endswith('_'):
+ return object.__setattr__(self, name, value)
+
+ response = self._bridge_.setAttribute(self._name_, name, value)
+ object.__setattr__(self, name, create_jsobject(self._bridge_, response['data'], override_set=True))
+
+ __setitem__ = __setattr__
+
+class JSFunction(JSObject):
+ """Javascript function represenation.
+
+ Returns a JSObject instance for the serialized js type with
+ name set to the full javascript call for this function.
+ """
+
+ def __init__(self, bridge, name, override_set=False, description=None, *args, **kwargs):
+ self._bridge_ = bridge
+ self._name_ = name
+ self._description_ = description
+
+ def __call__(self, *args):
+ response = self._bridge_.execFunction(self._name_, args)
+ if response['data'] is not None:
+ return create_jsobject(self._bridge_, response['data'], override_set=True)
+
+
+class JSString(JSObject, unicode):
+ "Javascript string representation."
+ __init__ = unicode.__init__
+
+class JSInt(JSObject, int):
+ """Javascript number representation for Python int."""
+ __init__ = int.__init__
+
+class JSFloat(JSObject, float):
+ """Javascript number representation for Python float."""
+ __init__ = float.__init__
+
+class JSUndefined(JSObject):
+ """Javascript undefined representation."""
+ __str__ = lambda self : "undefined"
+
+ def __cmp__(self, other):
+ if isinstance(other, JSUndefined):
+ return True
+ else:
+ return False
+
+ __nonzero__ = lambda self: False
+
+js_type_cases = {'function' :(JSFunction, False,),
+ 'object' :(JSObject, False,),
+ 'array' :(JSObject, False,),
+ 'string' :(JSString, True,),
+ 'number' :(JSFloat, True,),
+ 'undefined':(JSUndefined, False,),
+ 'null' :(JSObject, False,),
+ }
+py_type_cases = {unicode :JSString,
+ str :JSString,
+ int :JSInt,
+ float :JSFloat,
+ }
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/jsbridge/network.py
@@ -0,0 +1,308 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Corporation Code.
+#
+# The Initial Developer of the Original Code is
+# Mikeal Rogers.
+# Portions created by the Initial Developer are Copyright (C) 2008
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mikeal Rogers <mikeal.rogers@gmail.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+import asyncore
+import socket
+import select
+import logging
+import uuid
+from time import sleep
+from threading import Thread
+
+try:
+ import json as simplejson
+ from json.encoder import encode_basestring_ascii, encode_basestring
+except ImportError:
+ import simplejson
+ from simplejson.encoder import encode_basestring_ascii, encode_basestring
+
+logger = logging.getLogger(__name__)
+
+class JavaScriptException(Exception): pass
+
+class Telnet(asyncore.dispatcher):
+ def __init__(self, host, port):
+ self.host, self.port = host, port
+ asyncore.dispatcher.__init__(self)
+ self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.connect((host, port))
+ self.buffer = ''
+ self.logger = logger
+
+ def __del__(self):
+ self.close()
+
+ def handle_close(self):
+ """override method of asyncore.dispatcher"""
+ self.close()
+
+ def handle_expt(self):
+ self.close() # connection failed, shutdown
+
+ def writable(self):
+ return (len(self.buffer) > 0)
+
+ def handle_write(self):
+ sent = self.send(self.buffer)
+ self.buffer = self.buffer[sent:]
+
+ def read_all(self):
+ import socket
+ data = ''
+ while 1:
+ try:
+ data += self.recv(4096)
+ except socket.error:
+ return data
+
+ def handle_read(self):
+ self.data = self.read_all()
+ self.process_read(self.data)
+
+
+ read_callback = lambda self, data: None
+
+decoder = simplejson.JSONDecoder()
+
+class JSObjectEncoder(simplejson.JSONEncoder):
+ """Encoder that supports jsobject references by name."""
+
+ def encode(self, o):
+ import jsobjects
+ if isinstance(o, jsobjects.JSObject):
+ return o._name_
+ else:
+ return simplejson.JSONEncoder.encode(self, o)
+
+ def _iterencode(self, o, markers=None):
+ import jsobjects
+ if isinstance(o, jsobjects.JSObject):
+ yield o._name_
+ elif isinstance(o, basestring):
+ if self.ensure_ascii:
+ encoder = encode_basestring_ascii
+ else:
+ encoder = encode_basestring
+ _encoding = self.encoding
+ if (_encoding is not None and isinstance(o, str)
+ and not (_encoding == 'utf-8')):
+ o = o.decode(_encoding)
+ yield encoder(o)
+ elif o is None:
+ yield 'null'
+ elif o is True:
+ yield 'true'
+ elif o is False:
+ yield 'false'
+ elif isinstance(o, (int, long)):
+ yield str(o)
+ elif isinstance(o, float):
+ yield getattr(simplejson.encoder, 'floatstr', simplejson.encoder._floatstr)(o, self.allow_nan)
+ elif isinstance(o, (list, tuple)):
+ for chunk in self._iterencode_list(o, markers):
+ yield chunk
+ elif isinstance(o, dict):
+ for chunk in self._iterencode_dict(o, markers):
+ yield chunk
+ else:
+ if markers is not None:
+ markerid = id(o)
+ if markerid in markers:
+ raise ValueError("Circular reference detected")
+ markers[markerid] = o
+ for chunk in self._iterencode_default(o, markers):
+ yield chunk
+ if markers is not None:
+ del markers[markerid]
+
+encoder = JSObjectEncoder()
+
+class JSBridgeDisconnectError(Exception):
+ """exception raised when an unexpected disconect happens"""
+
+
+class Bridge(Telnet):
+
+ trashes = []
+ reading = False
+ sbuffer = ''
+ events_list = []
+
+ callbacks = {}
+
+ bridge_type = "bridge"
+
+ registered = False
+ timeout_ctr = 0. # global timeout counter
+
+ def __init__(self, host, port, timeout=60.):
+ """
+ - timeout : failsafe timeout for each call to run in seconds
+ """
+ self.timeout = timeout
+ Telnet.__init__(self, host, port)
+ sleep(.1)
+
+ # XXX we've actually already connected in Telnet
+ self.connect((host, port))
+
+ def handle_connect(self):
+ self.register()
+
+ def run(self, _uuid, exec_string, interval=.2, raise_exeption=True):
+
+
+ exec_string += '\r\n'
+ self.send(exec_string)
+
+ while _uuid not in self.callbacks.keys():
+
+ Bridge.timeout_ctr += interval
+ if Bridge.timeout_ctr > self.timeout:
+ print 'Timeout: %s' % exec_string
+ raise JSBridgeDisconnectError("Connection timed out")
+
+ sleep(interval)
+ try:
+ self.send('')
+ except socket.error, e:
+ raise JSBridgeDisconnectError("JSBridge Socket Disconnected: %s" % e)
+
+ Bridge.timeout_ctr = 0. # reset the counter
+
+ callback = self.callbacks.pop(_uuid)
+ if callback['result'] is False and raise_exeption is True:
+ raise JavaScriptException(callback['exception'])
+ return callback
+
+ def register(self):
+ _uuid = str(uuid.uuid1())
+ self.send('bridge.register("'+_uuid+'", "'+self.bridge_type+'")\r\n')
+ self.registered = True
+
+ def execFunction(self, func_name, args, interval=.25):
+ _uuid = str(uuid.uuid1())
+ exec_args = [encoder.encode(_uuid), func_name, encoder.encode(args)]
+ return self.run(_uuid, 'bridge.execFunction('+ ', '.join(exec_args)+')', interval)
+
+ def setAttribute(self, obj_name, name, value):
+ _uuid = str(uuid.uuid1())
+ exec_args = [encoder.encode(_uuid), obj_name, encoder.encode(name), encoder.encode(value)]
+ return self.run(_uuid, 'bridge.setAttribute('+', '.join(exec_args)+')')
+
+ def set(self, obj_name):
+ _uuid = str(uuid.uuid1())
+ return self.run(_uuid, 'bridge.set('+', '.join([encoder.encode(_uuid), obj_name])+')')
+
+ def describe(self, obj_name):
+ _uuid = str(uuid.uuid1())
+ return self.run(_uuid, 'bridge.describe('+', '.join([encoder.encode(_uuid), obj_name])+')')
+
+ def fire_callbacks(self, obj):
+ self.callbacks[obj['uuid']] = obj
+
+ def process_read(self, data):
+ """Parse out json objects and fire callbacks."""
+ self.sbuffer += data
+ self.reading = True
+ self.parsing = True
+ while self.parsing:
+ # Remove erroneus data in front of callback object
+ index = self.sbuffer.find('{')
+ if index is not -1 and index is not 0:
+ self.sbuffer = self.sbuffer[index:]
+ # Try to get a json object from the data stream
+ try:
+ obj, index = decoder.raw_decode(self.sbuffer)
+ except Exception, e:
+ self.parsing = False
+ # If we got an object fire the callback infra
+ if self.parsing:
+ self.fire_callbacks(obj)
+ self.sbuffer = self.sbuffer[index:]
+
+class BackChannel(Bridge):
+
+ bridge_type = "backchannel"
+
+ def __init__(self, host, port):
+ Bridge.__init__(self, host, port)
+ self.uuid_listener_index = {}
+ self.event_listener_index = {}
+ self.global_listeners = []
+
+ def fire_callbacks(self, obj):
+ """Handle all callback fireing on json objects pulled from the data stream."""
+ self.fire_event(**dict([(str(key), value,) for key, value in obj.items()]))
+
+ def add_listener(self, callback, uuid=None, eventType=None):
+ if uuid is not None:
+ self.uuid_listener_index.setdefault(uuid, []).append(callback)
+ if eventType is not None:
+ self.event_listener_index.setdefault(eventType, []).append(callback)
+
+ def add_global_listener(self, callback):
+ self.global_listeners.append(callback)
+
+ def fire_event(self, eventType=None, uuid=None, result=None, exception=None):
+ Bridge.timeout_ctr = 0. # reset the counter
+ event = eventType
+ if uuid is not None and self.uuid_listener_index.has_key(uuid):
+ for callback in self.uuid_listener_index[uuid]:
+ callback(result)
+ if event is not None and self.event_listener_index.has_key(event):
+ for callback in self.event_listener_index[event]:
+ callback(result)
+ for listener in self.global_listeners:
+ listener(eventType, result)
+
+thread = None
+
+def create_network(hostname, port):
+ back_channel = BackChannel(hostname, port)
+ bridge = Bridge(hostname, port)
+ global thread
+ if not thread or not thread.isAlive():
+ def do():
+ try: asyncore.loop(use_poll=True)
+ except select.error:pass
+
+ thread = Thread(target=do)
+ getattr(thread, 'setDaemon', lambda x : None)(True)
+ thread.start()
+
+ return back_channel, bridge
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/jsbridge/setup.py
@@ -0,0 +1,77 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Corporation Code.
+#
+# The Initial Developer of the Original Code is
+# Mikeal Rogers.
+# Portions created by the Initial Developer are Copyright (C) 2008
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Mikeal Rogers <mikeal.rogers@gmail.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+import sys
+from setuptools import setup, find_packages
+
+desc = """Python to JavaScript bridge interface."""
+summ = """A powerful and extensible Python to JavaScript bridge interface."""
+
+PACKAGE_NAME = "jsbridge"
+PACKAGE_VERSION = "2.4.4b4"
+
+requires = ['mozrunner == 2.5.5b4']
+
+if not sys.version.startswith('2.6'):
+ requires.append('simplejson')
+
+setup(name=PACKAGE_NAME,
+ version=PACKAGE_VERSION,
+ description=desc,
+ long_description=summ,
+ author='Mikeal Rogers, Mozilla',
+ author_email='mikeal.rogers@gmail.com',
+ url='http://github.com/mozautomation/mozmill',
+ license='http://www.apache.org/licenses/LICENSE-2.0',
+ packages=find_packages(exclude=['test']),
+ include_package_data=True,
+ package_data = {'': ['*.js', '*.css', '*.html', '*.txt', '*.xpi', '*.rdf', '*.xul', '*.jsm', '*.xml' 'extension'],},
+ zip_safe=False,
+ entry_points="""
+ [console_scripts]
+ jsbridge = jsbridge:cli
+ """,
+ platforms =['Any'],
+ install_requires = requires,
+ classifiers=['Development Status :: 4 - Beta',
+ 'Environment :: Console',
+ 'Intended Audience :: Developers',
+ 'License :: OSI Approved :: Apache Software License',
+ 'Operating System :: OS Independent',
+ 'Topic :: Software Development :: Libraries :: Python Modules',
+ ]
+ )
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/mozmill/MANIFEST.in
@@ -0,0 +1,2 @@
+recursive-include docs *
+recursive-include mozmill/extension *
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/mozmill/docs/Makefile
@@ -0,0 +1,75 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html web pickle htmlhelp latex changes linkcheck
+
+help:
+ @echo "Please use \`make <target>' where <target> is one of"
+ @echo " html to make standalone HTML files"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " changes to make an overview over all changed/added/deprecated items"
+ @echo " linkcheck to check all external links for integrity"
+
+clean:
+ -rm -rf _build/*
+
+html:
+ mkdir -p _build/html _build/doctrees
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
+ @echo
+ @echo "Build finished. The HTML pages are in _build/html."
+
+pickle:
+ mkdir -p _build/pickle _build/doctrees
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
+
+web: pickle
+
+json:
+ mkdir -p _build/json _build/doctrees
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+ mkdir -p _build/htmlhelp _build/doctrees
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in _build/htmlhelp."
+
+latex:
+ mkdir -p _build/latex _build/doctrees
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in _build/latex."
+ @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+ "run these through (pdf)latex."
+
+changes:
+ mkdir -p _build/changes _build/doctrees
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
+ @echo
+ @echo "The overview file is in _build/changes."
+
+linkcheck:
+ mkdir -p _build/linkcheck _build/doctrees
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in _build/linkcheck/output.txt."
new file mode 100644
index 0000000000000000000000000000000000000000..e86b37588750230abe690cd9488c6c38fb5ad607
GIT binary patch
literal 793045
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
Bu>1f3
new file mode 100644
index 0000000000000000000000000000000000000000..15c791446ca392f54af3299a84533327f8b95dc3
GIT binary patch
literal 73110
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
PADCETz_!JLU8V;B-1PDx
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/mozmill/docs/_build/html/_sources/index.txt
@@ -0,0 +1,188 @@
+:mod:`mozmill` --- Full automation of XULRunner applications.
+=============================================================
+
+.. module:: mozmill
+ :synopsis: Full automation of XULRunner applications.
+.. moduleauthor:: Mikeal Rogers <mikeal.rogers@gmail.com>
+.. sectionauthor:: Mikeal Rogers <mikeal.rogers@gmail.com>
+
+Command Line Usage
+------------------
+
+The mozmill command line is versatile and includes a fair amount of debugging options. Even though all these options are available mozmill should run by default without any arguments and find your locally installed Firefox and run with mozmill.
+
+In most modes, ctrl-c will shut down Firefox and exit out of the mozmill Python side as well.
+
+.. code-block:: none
+
+ $ mozmill
+
+.. cmdoption:: -h, --help
+
+ Show help message.
+
+.. cmdoption:: -b <binary>, --binary <binary>
+
+ Specify application binary location.
+
+ Default :class:`mozrunner.Profile` and :class:`mozrunner.Runner` are still
+ :class:`mozrunner.FirefoxProfile` and :class:`mozrunner.FirefoxRunner`. You can
+ change this by creating your own command line utility by subclassing :class:`CLI`
+
+.. cmdoption:: -d <defaultprofile>
+
+ Specify the path to the default **clean** profile used to create new profiles.
+
+.. cmdoption:: -n, --no-new-profile
+
+ Do not create a new fresh profile.
+
+.. cmdoption:: -p <profile>, --profile <profile>
+
+ Specifies a profile to use. Must be used with --no-new-profile.
+
+.. cmdoption:: -w <plugins>, --plugins <plugins>
+
+ Comma seperated list of additional paths to plugins to install.
+
+ Plugins can be either .xpi zip compressed extensions or deflated extension directories.
+
+.. cmdoption:: -l <logfile>, --logfile <logfile>
+
+ Log all events to *logfile*.
+
+.. cmdoption:: --report <uri>
+
+ *Currently in development.*
+
+ POST results to given brasstacks results server at *uri*.
+
+.. cmdoption:: -t <test>, --test <test>
+
+ Run *test*. Can be either single test file or directory of tests.
+
+.. cmdoption:: --showall
+
+ Show all test output.
+
+.. cmdoption:: -D, --debug
+
+ Install debugging extensions and run with -jsconole
+
+.. cmdoption:: --show-errors
+
+ Print all logger errors to the console. When running tests only test failures and skipped
+ tests are printed, this option print all other errors.
+
+.. cmdoption:: -s, --shell
+
+ Starts a Python shell for debugging.
+
+.. cmdoption:: -u, --usecode
+
+ By default --shell mode will use iPython if install and fall back to using the code module.
+ This option forces the use of the code module instead of iPython even when installed.
+
+.. cmdoption:: -P <port>, --port <port>
+
+ Specify port for jsbridge.
+
+Command Line Class
+------------------
+
+.. class:: CLI
+
+ Inherits from :class:`jsbridge.CLI` which inherits from :class:`mozrunner.CLI`.
+
+ All the heavy lifting is handled by jsbridge and mozrunner. If you are subclassing
+ this in order to creat a new command line interface be sure to call :func:`super` on all
+ related methods.
+
+ .. attribute:: runner_class
+
+ Default runner class. Should be subclass of :class:`mozrunner.Runner`.
+ Defaults to :class:`mozrunner.FirefoxRunner`.
+
+ .. attribute:: profile_class
+
+ Default profile class. Should be subclass of :class:`mozruner.Profile`.
+ Defaults to :class:`mozrunner.FirefoxProfile`.
+
+Running MozMill from Python
+---------------------------
+
+.. class:: MozMill([runner_class[, profile_class[, jsbridge_port]]])
+
+ Manages an instance of Firefox w/ jsbridge and provides facilities for running tests and
+ keeping track of results with callback methods.
+
+ Default *runner_class* is :class:`mozrunner.FirefoxRunner`. Value should be a subclass of
+ :class:`mozrunner.Runner`.
+
+ Default *profile_class* is :class:`mozrunner.FirefoxProfile`. Value should be a subclass of
+ :class:`mozrunner.Profile`.
+
+ Default *jsbridge_port* is `24242`.
+
+ .. attribute:: runner_class
+
+ Set during initialization to subclass of :class:`mozrunner.Runner`.
+
+ .. attribute:: profile_class
+
+ Set during initialization to subclass of :class:`mozrunner.Profile`.
+
+ .. attribute:: jsbridge_port
+
+ Set during initialization to :class:`numbers.Integral`.
+
+ .. method:: start([profile[, runner]])
+
+ Start mozrunner and jsbridge pre-requisites.
+
+ *profile* should be an instance of a `mozrunner.Profile` subclass. If one is not passed
+ an instance of `self.profile_class` is created. `self.profile` will be set to this
+ value.
+
+ *runner* should be an instance of a `mozrunner.Runner` subclass. If one is not passed an
+ instance of :attr:`runner_class` will be created. :attr:`runner` will be set to this value.
+
+ This method will also run `runner.start()` and :func:`mozrunner.wait_and_create_network`
+ and sets :attr:`back_channel` and :attr:`bridge` to instances of
+ :class:`jsbridge.BackChannel` and :class:`jsbridge.Bridge` respectively.
+
+ .. attribute:: profile
+
+ Set during :meth:`start` to subclass of :class:`mozrunner.Profile`.
+
+ .. attribute:: runner
+
+ Set during :meth:`start` to subclass of :class:`mozrunner.Runner`.
+
+ .. attribute:: back_channel
+
+ Set during :meth:`start` to subclass of :class:`jsbridge.BackChannel`.
+
+ .. attribute:: bridge
+
+ Set during :meth:`start` to subclass of :class:`jsbridge.Bridge`
+
+ .. method:: run_tests(test[, report])
+
+ Run *test* in live Firefox using :attr:`bridge`.
+
+ Adds local listeners :meth:`endTest_listener` and :meth:`endRunner_listener` to
+ `"endTest"` and `"endRunner"` events using :meth:`jsbridge.BackChannel.add_listener` of
+ :attr:`back_channel`.
+
+ When tests are done the results are posted to a results server at *report* if passed.
+
+ .. method:: endTest_listener(test)
+
+ When a test is finished the test object will be passed to this callback.
+
+ .. method:: endRunner_listener(obj)
+
+ When all the tests are done running this callback will be fired.
+
+
\ No newline at end of file
new file mode 100644
index 0000000000000000000000000000000000000000..7fb82154a1748d507925865d3fbf7508d62483e5
GIT binary patch
literal 202
zc%17D@N?(olHy`uVBq!ia0vp^j6kfx!3HGlw@oMq2^0spJ29*~C-V}>;VkfoEM{Qf
z76xHPhFNnYfP(BLp1!W^HyC+E#mt?nx10eANtU=qlsM<-=BDPAFgO>bCYGe8D3oWG
zWGJ|M`UZqI@`(c#nR~i8hHzY8+H1+jpulh_>fir3VfEN66+L<?4$M=cq8XZmq*xT0
q7F)Q=oS3J(I{(|@x%uL6VqQL2#_By`CBGoh2nJ7AKbLh*2~7Zv?Ki9d
new file mode 100644
--- /dev/null
+++ b/mail/test/resources/mozmill/docs/_build/html/_static/default.css
@@ -0,0 +1,657 @@
+/**
+ * Sphinx Doc Design
+ */
+
+body {
+ font-family: sans-serif;
+ font-size: 100%;
+ background-color: #11303d;
+ color: #000;
+ margin: 0;
+ padding: 0;
+}
+
+/* :::: LAYOUT :::: */
+
+div.document {
+ background-color: #1c4e63;
+}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}
+
+div.body {
+ background-color: white;
+ padding: 0 20px 30px 20px;
+}
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+}
+
+div.clearer {
+ clear: both;
+}
+
+div.footer {
+ color: #fff;
+ width: 100%;
+ padding: 9px 0 9px 0;
+ text-align: center;
+ font-size: 75%;
+}
+
+div.footer a {
+ color: #fff;
+ text-decoration: underline;
+}
+
+div.related {
+ background-color: #133f52;
+ color: #fff;
+ width: 100%;
+ line-height: 30px;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+div.related a {
+ color: white;
+}
+
+/* ::: TOC :::: */
+div.sphinxsidebar h3 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: white;
+ font-size: 1.4em;
+ font-weight: normal;
+ margin: 0;
+ padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+ color: white;
+}
+
+div.sphinxsidebar h4 {
+ font-family: 'Trebuchet MS', sans-serif;
+ color: white;
+ font-size: 1.3em;
+ font-weight: normal;
+ margin: 5px 0 0 0;
+ padding: 0;
+}
+
+div.sphinxsidebar p {
+ color: white;
+}
+
+div.sphinxsidebar p.topless {
+ margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+ margin: 10px;
+ padding: 0;
+ list-style: none;
+ color: white;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar a {
+ color: #98dbcc;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+/* :::: MODULE CLOUD :::: */
+div.modulecloud {
+ margin: -5px 10px 5px 10px;
+ padding: 10px;
+ line-height: 160%;
+ border: 1px solid #cbe7e5;
+ background-color: #f2fbfd;
+}
+
+div.modulecloud a {
+ padding: 0 5px 0 5px;
+}
+
+/* :::: SEARCH :::: */
+ul.search {
+ margin: 10px 0 0 20px;
+ padding: 0;
+}
+
+ul.search li {
+ padding: 5px 0 5px 20px;
+ background-image: url(file.png);
+ background-repeat: no-repeat;
+ background-position: 0 7px;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li div.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+