gecko/testing/mochitest
William Lachance 54d781abf7 Bug 795496 - Make mozdevice raise exceptions on error;r=ahal,jmaher
It turns out that relying on the user to check return codes for every
command was non-intuitive and resulted in many hard to trace bugs.
Now most functinos just return "None", and raise a DMError when there's an
exception. The exception to this are functions like dirExists, which now return
booleans, and throw exceptions on error. This is a fairly major refactor,
and also involved the following internal changes:

* Removed FileError and AgentError exceptions, replaced with DMError
  (having to manage three different types of exceptions was confusing,
  all the more so when we're raising them)
* Docstrings updated to remove references to return values where no
  longer relevant
* pushFile no longer will create a directory to accomodate the file
  if it doesn't exist (this makes it consistent with devicemanagerADB)
* dmSUT we validate the file, but assume that we get something back
  from the agent, instead of falling back to manual validation in the
  case that we didn't
* isDir and dirExists had the same intention, but different
  implementations for dmSUT. Replaced the dmSUT impl of getDirectory
  with that of isDir's (which was much simpler). Removed
  isDir from devicemanager.py, since it wasn't used externally
* killProcess modified to check for process existence before running
  (since the actual internal kill command will throw an exception
  if the process doesn't exist)

In addition to all this, more unit tests have been added to test these
changes for devicemanagerSUT.
2012-10-04 11:28:07 -04:00
..
chrome Bug 774032 bonus - Use @DEPTH@ and @relativesrcdir@ in Makefile.in. r=ted 2012-08-04 20:26:44 +02:00
dynamic Bug 774032 bonus - Use @DEPTH@ and @relativesrcdir@ in Makefile.in. r=ted 2012-08-04 20:26:44 +02:00
MochiKit Bug 774032 bonus - Use @DEPTH@ and @relativesrcdir@ in Makefile.in. r=ted 2012-08-04 20:26:44 +02:00
pywebsocket bug 752776. Mozilla tweaks to pywebsocket v631. r=mcmanus 2012-05-16 17:04:46 -07:00
roboextender Bug 774032 bonus - Use @DEPTH@ and @relativesrcdir@ in Makefile.in. r=ted 2012-08-04 20:26:44 +02:00
ssltunnel Bug 789847 - Remove PR_CALLBACK usage from tree 2012-09-25 11:18:38 -05:00
static Bug 774032 bonus - Use @DEPTH@ and @relativesrcdir@ in Makefile.in. r=ted 2012-08-04 20:26:44 +02:00
tests b=683143,792462; Some tests call SimpleTest.finish() twice/guard against that; r=ehsan 2012-10-01 17:51:10 -04:00
android.json Bug 789392 - Allow mozapp frames to window.close() themselves. r=bz 2012-10-04 00:44:50 -04:00
browser-harness.xul Bug 733631 - Create a unit test infrastructure for the webapp runtime. r=myk,felipc,ctalbert 2012-06-29 15:52:43 -07:00
browser-test-overlay.xul Bug 728294 - Part 3 - Analyze cycle collection logs on testsuite shutdown to detected leaked windows; r=ted,smaug 2012-08-03 12:36:59 +02:00
browser-test.js bug 770770: refactor webapp runtime test harness to reduce complexity/special-casing; r=adw 2012-08-14 15:27:26 -07:00
cc-analyzer.js Bug 728294 - Part 3 - Analyze cycle collection logs on testsuite shutdown to detected leaked windows; r=ted,smaug 2012-08-03 12:36:59 +02:00
chrome-harness.js Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
gen_template.pl
harness-overlay.xul Backout cfac7b6a1f9c (bug 728893) for mochitest-1 orange 2012-05-23 11:56:03 +01:00
harness.xul
install.rdf
jar.mn Bug 762908 - Rip enablePrivilege out of spidermonkey tests. r=ted 2012-09-20 09:06:50 -04:00
Makefile.in Bug 762908 - Rip enablePrivilege out of spidermonkey tests. r=ted 2012-09-20 09:06:50 -04:00
plain-loop.html Backout cfac7b6a1f9c (bug 728893) for mochitest-1 orange 2012-05-23 11:56:03 +01:00
pywebsocket_wrapper.py Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
README.txt
redirect.html
runtests.py Bug 787916 - Hide Mochitest test table with --close-when-done option. r=jmaher 2012-09-19 01:28:39 +02:00
runtestsb2g.py Bug 795496 - Make mozdevice raise exceptions on error;r=ahal,jmaher 2012-10-04 11:28:07 -04:00
runtestsremote.py Bug 795496 - Make mozdevice raise exceptions on error;r=ahal,jmaher 2012-10-04 11:28:07 -04:00
runtestsvmware.py Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
server.js Bug 787916 - Hide Mochitest test table with --close-when-done option. r=jmaher 2012-09-19 01:28:39 +02:00

 ----------------
 mochitest README
 ----------------

Steps to get started:

 1.) Run the runtests.pl script to start the server.
 
     Currently, the test script automatically determines the location
     of *Firefox*.

 2.) gen_template.pl will generate test templates for HTML, XUL, and XHTML.
     Read the comment at the top of the file for usage instructions.

 3.) Write a test.


Example test:

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=345656
-->
<head>
  <title>Test for Bug 345656</title>
  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>        
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none">
  
</div>
<pre id="test">
<script class="testbody" type="text/javascript">

/** Test for Bug 345656 **/
//
//add information to show on the test page
//
$("display").innerHTML = "doing stuff...";

//
// The '$' is function is shorthand for getElementById. This is the same thing:
//
document.getElementById("display").innerHTML = "doing stuff...";

//
// you can add content that you don't want to clutter 
// the display to the content div.
//
// You can write directly, or you can use MochiKit functions
// to do it in JS like this:
//
appendChildNodes($("content"),
                 DIV({class: "qux"},
                     SPAN({id: "span42"}, "content"))
                 );

//
// the ok() function is like assert
//
ok(true, "checking to see if true is true);

//
// this will fail
//
ok(1==2, "1 equals 2?");


//
// this will be marked as a todo.
// When we fix 1 so it equals 2, we'll need to change this 
// function to ok() or is().
//
todo(1==2, "1 equals 2?");

//
// is() takes two args
//
myVar = "foo";
is(myVar, "foo", "checking to see if myVar is 'foo'");

//
// Tests can run in event handlers.
// Call this to tell SimpleTest to wait for SimpleTest.finish() 
//
SimpleTest.waitForExplicitFinish();

//
// event handler:
//
function event_fired(ev) {
  is(ev.newValue, "width: auto;", "DOMAttrModified event reports correct newValue");
  SimpleTest.finish(); // trigger the end of our test sequence
}

//
// Hook up the event. Mochikit.Signal has many conveniences for this, if you want.
//
$("content").addEventListener("DOMAttrModified", event_fired, false);

//
// Fire the event.
//
$("content").style.width = "auto";

</script>
</pre>
</body>
</html>