<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -27,9 +27,48 @@ button
 	float:right;
 }
 
+#suite-progress, #total-progress
+{
+	background-color: #111;
+	margin-bottom: 10px;
+	border: 1px solid #666;
+	width: 250px;
+	height: 8px;
+	
+	margin: 1px;
+}
+
+#progress-bars {
+	float: left;
+	clear: none;
+}
+
+#current-test-message, #progress-message
+{
+	float: left;
+	font-size: 12px;
+	margin-left: 5px;
+}
+
+.passed-progress, .failed-progress
+{
+	float: left;
+	clear: none;
+	height: 8px;
+}
+
+.passed-progress { 
+	background-color: #3c3;
+}
+
+.failed-progress
+{
+	background-color: #c33;
+}
+
 #header
 {
-	font-size:10px;
+	font-size:12px;
 	margin-bottom:10px;
 	float:right;
 }</diff>
      <filename>apps/drillbit/Resources/drillbit.css</filename>
    </modified>
    <modified>
      <diff>@@ -9,6 +9,8 @@ var total_assertions = 0;
 var total_files = 0;
 var running_assertions = 0;
 var running_completed = 0;
+var running_passed = 0;
+var running_failed = 0;
 var auto_run = false;
 var auto_close = false;
 var debug_tests = false;
@@ -34,6 +36,35 @@ function test_status(name,classname)
 	  .removeClass('passed').addClass(classname.toLowerCase());
 }
 
+function progress(passed,failed,total,progress)
+{
+	var passed_percent = Math.floor((passed/total) * 100);
+	var failed_percent = Math.floor((failed/total) * 100);
+	progress.html(
+		'&lt;div class=&quot;passed-progress&quot; style=&quot;width: '+passed_percent+'%;&quot;&gt;&amp;nbsp;&lt;/div&gt;'+
+		'&lt;div class=&quot;failed-progress&quot; style=&quot;width: '+failed_percent+'%;&quot;&gt;&amp;nbsp;&lt;/div&gt;'
+	);
+}
+
+function suite_progress(passed,failed,total)
+{
+	progress(passed,failed,total,$('#suite-progress'));
+}
+
+function total_progress(passed,failed,total)
+{
+	progress(passed,failed,total,$('#total-progress'));
+	
+	var passed_percent = Math.floor((passed/total) * 100);
+	var failed_percent = Math.floor((failed/total) * 100);
+	$('#progress-message').html('&lt;img src=&quot;images/check_on.png&quot;/&gt;'+passed+'&amp;nbsp;&amp;nbsp; &lt;img src=&quot;images/check_off.png&quot;/&gt;'+failed);
+}
+
+function show_current_test(suite_name, test_name)
+{
+	$('#current-test-message').text(suite_name + ': ' + test_name);
+}
+
 function describe(description,test)
 {
 	current_test_load.description = description;
@@ -58,7 +89,7 @@ function describe(description,test)
 	
 	total_files++;
 	
-	$('#header').html(total_assertions+' assertions in '+total_files+' files');
+	$('#header').html(total_assertions+' tests in '+total_files+' files');
 
 	current_test_load = null;
 }
@@ -387,6 +418,7 @@ window.onload = function()
 				
 				us+=&quot;try {\n&quot;;
 				us+=&quot;TitaniumTest.currentTest='&quot; + f + &quot;';\n&quot;;
+				us+=&quot;TitaniumTest.runningTest('&quot;+entry.name+&quot;','&quot; + f + &quot;');\n&quot;;
 				us+=make_function(entry.test[f],'xscope');
 				
 				i = f.indexOf('_as_async');
@@ -467,21 +499,43 @@ window.onload = function()
 		
 		args.push('--results-dir=&quot;' + results_dir + '&quot;');
 		var process = Titanium.Process.launch(app.executable.nativePath(),args);
-		process.onread = function(data)
+		var passed = 0;
+		var failed = 0;
+		process.onread = function(d)
 		{
-			var i = data.indexOf('DRILLBIT_');
-			if (i != -1)
-			{
-				var test_name = data.substring(15,data.length-1);
-				var test_passed = data.indexOf('_PASS:')!=-1;
-				running_completed++;
-				var msg = &quot;Completed: &quot; +entry.name + &quot; ... &quot; + running_completed + &quot;/&quot; + running_assertions;
-				update_status(msg);
-				Titanium.API.debug(&quot;test [&quot;+ test_name + &quot;], passed:&quot;+test_passed);
-			}
-			else
+			var lines = d.split('\n');
+			for (var l = 0; l &lt; lines.length; l++)
 			{
-				Titanium.API.debug(&quot;PROCESS:&quot;+data);
+				var data = lines[l];
+				var i = data.indexOf('DRILLBIT_');
+				if (i != -1)
+				{
+					if (data.indexOf('DRILLBIT_TEST:') != -1) {
+						var comma = data.indexOf(',');
+						var suite_name = data.substring(15,comma);
+						var test_name = data.substring(comma+1,data.length-1);
+					
+						show_current_test(suite_name,test_name);
+						continue;
+					}
+						
+					var test_name = data.substring(15,data.length-1);
+					var test_passed = data.indexOf('_PASS:')!=-1;
+					running_completed++;
+					if (test_passed) { passed++; running_passed++; }
+					else { failed ++; running_failed++; }
+					
+					suite_progress(passed, failed, current_test.assertion_count);
+					total_progress(running_passed, running_failed, total_assertions);
+					
+					var msg = &quot;Completed: &quot; +entry.name + &quot; ... &quot; + running_completed + &quot;/&quot; + running_assertions;
+					update_status(msg);
+					Titanium.API.debug(&quot;test [&quot;+ test_name + &quot;], passed:&quot;+test_passed);
+				}
+				else
+				{
+					Titanium.API.debug(&quot;PROCESS:&quot;+data);
+				}
 			}
 		};
 		var size = 0;</diff>
      <filename>apps/drillbit/Resources/drillbit.js</filename>
    </modified>
    <modified>
      <diff>@@ -257,6 +257,12 @@ TitaniumTest =
 	success:0,
 	failed:0,
 	
+	runningTest:function(suite,name)
+	{
+		Titanium.App.stdout('DRILLBIT_TEST: '+suite+','+name);
+		Titanium.API.debug('DRILLBIT_TEST: '+suite+','+name);
+	},
+	
 	testPassed:function(name, lineNumber)
 	{
 		this.success++;</diff>
      <filename>apps/drillbit/Resources/drillbit_func.js</filename>
    </modified>
    <modified>
      <diff>@@ -7,6 +7,13 @@
 	&lt;link rel=&quot;stylesheet&quot; href=&quot;drillbit.css&quot; type=&quot;text/css&quot; charset=&quot;utf-8&quot;&gt;
 &lt;/head&gt;
 &lt;body&gt;
+	&lt;div id=&quot;progress-bars&quot;&gt;
+		&lt;div id=&quot;suite-progress&quot;&gt;&lt;/div&gt;
+		&lt;div id=&quot;total-progress&quot;&gt;&lt;/div&gt;
+	&lt;/div&gt;
+	&lt;div id=&quot;progress-message&quot;&gt;&lt;img src=&quot;images/check_on.png&quot;/&gt;0&amp;nbsp;&amp;nbsp; &lt;img src=&quot;images/check_off.png&quot;/&gt;0&lt;/div&gt;
+	&lt;div id=&quot;current-test-message&quot;&gt;no tests running&lt;/div&gt;
+	
 	&lt;div id=&quot;header&quot;&gt;&lt;/div&gt;
 	&lt;div id=&quot;table&quot;&gt;&lt;/div&gt;
 	&lt;div&gt;&lt;button id=&quot;run&quot;&gt;Run Tests&lt;/button&gt;&lt;/div&gt;</diff>
      <filename>apps/drillbit/Resources/index.html</filename>
    </modified>
    <modified>
      <diff>@@ -52,5 +52,29 @@ describe(&quot;file-based ajax tests&quot;,
 		{
 			callback.failed('ajax request timed out after 30s');
 		},2000)		
+	},
+	test_query_string_as_async: function(callback)
+	{
+		var timer = 0;
+		$.getJSON('app://url.js?q=1', function(data)
+		{
+			clearTimeout(timer);
+			try
+			{
+				value_of(data).should_be_object();
+				value_of(data.success).should_be_true();
+				value_of(data.abc).should_be(123);
+				callback.passed();
+			}
+			catch(e)
+			{
+				callback.failed(e);
+			}
+		});
+		
+		timer = setTimeout(function()
+		{
+			callback.failed('ajax request timed out after 2s');
+		},2000);
 	}
 });
\ No newline at end of file</diff>
      <filename>apps/drillbit/Resources/tests/ajax_file/ajax_file.js</filename>
    </modified>
    <modified>
      <diff>@@ -68,6 +68,9 @@ describe(&quot;native XHR tests&quot;,
 				else if (this.readyState == xhr.DONE)
 				{
 					clearTimeout(timer);
+					var text = xhr.responseText;
+					value_of(text).should_be_string();
+					value_of(text.length &gt; 0).should_be_true();
 					callback.passed();
 				}
 			}</diff>
      <filename>apps/drillbit/Resources/tests/native_xhr/native_xhr.js</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@
 &lt;width&gt;750&lt;/width&gt;
 &lt;max-width&gt;3000&lt;/max-width&gt;
 &lt;min-width&gt;0&lt;/min-width&gt;
-&lt;height&gt;700&lt;/height&gt;
+&lt;height&gt;725&lt;/height&gt;
 &lt;max-height&gt;3000&lt;/max-height&gt;
 &lt;min-height&gt;0&lt;/min-height&gt;
 &lt;fullscreen&gt;false&lt;/fullscreen&gt;</diff>
      <filename>apps/drillbit/tiapp.xml</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1 @@
-Subproject commit e2bdc35b74870374dc02e546ac63c393452c35c4
+Subproject commit 1c64614565797949df1d60024b986e500409afb1</diff>
      <filename>kroll</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>3b763a3064fb679baaa186afaa6226efd4678019</id>
    </parent>
  </parents>
  <author>
    <name>Marshall Culpepper</name>
    <email>mculpepper@appcelerator.org</email>
  </author>
  <url>http://github.com/marshall/titanium/commit/5b17ec6df295c67657f3220e56c05610d7b623ee</url>
  <id>5b17ec6df295c67657f3220e56c05610d7b623ee</id>
  <committed-date>2009-06-11T16:09:57-07:00</committed-date>
  <authored-date>2009-06-11T16:09:57-07:00</authored-date>
  <message>make drillbit status a good bit more interactive with progress and more detailed status messages. added a unit test for TI-327, TI-329</message>
  <tree>504a0b7e8a7938b45f8f48c9cddfa3d8f0ce18ad</tree>
  <committer>
    <name>Marshall Culpepper</name>
    <email>mculpepper@appcelerator.org</email>
  </committer>
</commit>
