fixes to test cases
diff --git a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
index 3afd9bb..5ae47d7 100644
--- a/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
@@ -55,7 +55,7 @@
 			order by account asc""", pi.name, as_dict=1)
 		self.assertTrue(gl_entries)
 
-		expected_values = sorted([
+		expected_values = dict((d[0], d) for d in [
 			["_Test Payable - _TC", 0, 720],
 			["Stock Received But Not Billed - _TC", 750.0, 0],
 			["Expenses Included In Valuation - _TC", 0.0, 250.0],
@@ -64,9 +64,9 @@
 		])
 
 		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_values[i][0], gle.account)
-			self.assertEquals(expected_values[i][1], gle.debit)
-			self.assertEquals(expected_values[i][2], gle.credit)
+			self.assertEquals(expected_values[gle.account][0], gle.account)
+			self.assertEquals(expected_values[gle.account][1], gle.debit)
+			self.assertEquals(expected_values[gle.account][2], gle.credit)
 
 		set_perpetual_inventory(0)
 
@@ -88,7 +88,7 @@
 			order by account asc""", pi.name, as_dict=1)
 		self.assertTrue(gl_entries)
 
-		expected_values = sorted([
+		expected_values = dict((d[0], d) for d in [
 			["_Test Payable - _TC", 0, 720],
 			["Stock Received But Not Billed - _TC", 500.0, 0],
 			["_Test Account Shipping Charges - _TC", 100.0, 0],
@@ -96,9 +96,9 @@
 		])
 
 		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_values[i][0], gle.account)
-			self.assertEquals(expected_values[i][1], gle.debit)
-			self.assertEquals(expected_values[i][2], gle.credit)
+			self.assertEquals(expected_values[gle.account][0], gle.account)
+			self.assertEquals(expected_values[gle.account][1], gle.debit)
+			self.assertEquals(expected_values[gle.account][2], gle.credit)
 
 		set_perpetual_inventory(0)
 
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index ad49d46..3988a9e 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -4,6 +4,7 @@
 
 import frappe
 import unittest, copy
+import time
 from erpnext.accounts.utils import get_stock_and_account_difference
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
 from erpnext.projects.doctype.time_log_batch.test_time_log_batch import *
@@ -221,7 +222,7 @@
 
 		self.assertTrue(gl_entries)
 
-		expected_values = sorted([
+		expected_values = dict((d[0], d) for d in [
 			[si.debit_to, 1500, 0.0],
 			[test_records[3]["items"][0]["income_account"], 0.0, 1163.45],
 			[test_records[3]["taxes"][0]["account_head"], 0.0, 130.31],
@@ -235,10 +236,10 @@
 			["_Test Account Service Tax - _TC", 16.88, 0.0],
 		])
 
-		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_values[i][0], gle.account)
-			self.assertEquals(expected_values[i][1], gle.debit)
-			self.assertEquals(expected_values[i][2], gle.credit)
+		for gle in gl_entries:
+			self.assertEquals(expected_values[gle.account][0], gle.account)
+			self.assertEquals(expected_values[gle.account][1], gle.debit)
+			self.assertEquals(expected_values[gle.account][2], gle.credit)
 
 		# cancel
 		si.cancel()
@@ -439,7 +440,7 @@
 
 		self.assertTrue(gl_entries)
 
-		expected_values = sorted([
+		expected_values = dict((d[0], d) for d in [
 			[si.debit_to, 630.0, 0.0],
 			[test_records[1]["items"][0]["income_account"], 0.0, 500.0],
 			[test_records[1]["taxes"][0]["account_head"], 0.0, 80.0],
@@ -447,9 +448,9 @@
 		])
 
 		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_values[i][0], gle.account)
-			self.assertEquals(expected_values[i][1], gle.debit)
-			self.assertEquals(expected_values[i][2], gle.credit)
+			self.assertEquals(expected_values[gle.account][0], gle.account)
+			self.assertEquals(expected_values[gle.account][1], gle.debit)
+			self.assertEquals(expected_values[gle.account][2], gle.credit)
 
 		# cancel
 		si.cancel()
@@ -502,7 +503,8 @@
 			[si.debit_to, 0.0, 600.0],
 			["_Test Account Bank Account - _TC", 600.0, 0.0]
 		])
-		for i, gle in enumerate(gl_entries):
+
+		for i, gle in enumerate(sorted(gl_entries, key=lambda gle: gle.account)):
 			self.assertEquals(expected_gl_entries[i][0], gle.account)
 			self.assertEquals(expected_gl_entries[i][1], gle.debit)
 			self.assertEquals(expected_gl_entries[i][2], gle.credit)
@@ -574,16 +576,16 @@
 			order by account asc, debit asc""", si.name, as_dict=1)
 		self.assertTrue(gl_entries)
 
-		expected_gl_entries = sorted([
+		expected_gl_entries = dict((d[0], d) for d in [
 			[si.debit_to, 630.0, 0.0],
 			[si_doc.get("items")[0]["income_account"], 0.0, 500.0],
 			[si_doc.get("taxes")[0]["account_head"], 0.0, 80.0],
 			[si_doc.get("taxes")[1]["account_head"], 0.0, 50.0],
 		])
 		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_gl_entries[i][0], gle.account)
-			self.assertEquals(expected_gl_entries[i][1], gle.debit)
-			self.assertEquals(expected_gl_entries[i][2], gle.credit)
+			self.assertEquals(expected_gl_entries[gle.account][0], gle.account)
+			self.assertEquals(expected_gl_entries[gle.account][1], gle.debit)
+			self.assertEquals(expected_gl_entries[gle.account][2], gle.credit)
 
 		si.cancel()
 		gle = frappe.db.sql("""select * from `tabGL Entry`
@@ -605,16 +607,16 @@
 			order by account asc""", si.name, as_dict=1)
 		self.assertTrue(gl_entries)
 
-		expected_values = sorted([
+		expected_values = dict((d[0], d) for d in [
 			[si.debit_to, 630.0, 0.0],
 			[test_records[1]["items"][0]["income_account"], 0.0, 500.0],
 			[test_records[1]["taxes"][0]["account_head"], 0.0, 80.0],
 			[test_records[1]["taxes"][1]["account_head"], 0.0, 50.0],
 		])
 		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_values[i][0], gle.account)
-			self.assertEquals(expected_values[i][1], gle.debit)
-			self.assertEquals(expected_values[i][2], gle.credit)
+			self.assertEquals(expected_values[gle.account][0], gle.account)
+			self.assertEquals(expected_values[gle.account][1], gle.debit)
+			self.assertEquals(expected_values[gle.account][2], gle.credit)
 
 		set_perpetual_inventory(0)
 
@@ -630,16 +632,16 @@
 			order by account asc""", si.name, as_dict=1)
 		self.assertTrue(gl_entries)
 
-		expected_values = sorted([
+		expected_values = dict((d[0], d) for d in [
 			[si.debit_to, 630.0, 0.0],
 			[test_records[1]["items"][0]["income_account"], 0.0, 500.0],
 			[test_records[1]["taxes"][0]["account_head"], 0.0, 80.0],
 			[test_records[1]["taxes"][1]["account_head"], 0.0, 50.0],
 		])
 		for i, gle in enumerate(gl_entries):
-			self.assertEquals(expected_values[i][0], gle.account)
-			self.assertEquals(expected_values[i][1], gle.debit)
-			self.assertEquals(expected_values[i][2], gle.credit)
+			self.assertEquals(expected_values[gle.account][0], gle.account)
+			self.assertEquals(expected_values[gle.account][1], gle.debit)
+			self.assertEquals(expected_values[gle.account][2], gle.credit)
 
 		set_perpetual_inventory(0)
 
@@ -733,7 +735,7 @@
 			"delivery_document_no"))
 
 	def test_serialize_status(self):
-		from erpnext.stock.doctype.serial_no.serial_no import SerialNoStatusError, get_serial_nos
+		from erpnext.stock.doctype.serial_no.serial_no import SerialNoStatusError, get_serial_nos, SerialNoDuplicateError
 		from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
 
 		se = make_serialized_item()
@@ -751,7 +753,10 @@
 		si.insert()
 
 		self.assertRaises(SerialNoStatusError, si.submit)
-		
+
+		# hack! because stock ledger entires are already inserted and are not rolled back!
+		self.assertRaises(SerialNoDuplicateError, si.cancel)
+
 def create_sales_invoice(**args):
 	si = frappe.new_doc("Sales Invoice")
 	args = frappe._dict(args)
@@ -759,13 +764,13 @@
 		si.posting_date = args.posting_date
 	if args.posting_time:
 		si.posting_time = args.posting_time
-	
+
 	si.company = args.company or "_Test Company"
 	si.customer = args.customer or "_Test Customer"
 	si.debit_to = args.debit_to or "Debtors - _TC"
 	si.update_stock = args.update_stock
 	si.is_pos = args.is_pos
-	
+
 	si.append("items", {
 		"item_code": args.item or args.item_code or "_Test Item",
 		"warehouse": args.warehouse or "_Test Warehouse - _TC",
@@ -775,7 +780,7 @@
 		"cost_center": "_Test Cost Center - _TC",
 		"serial_no": args.serial_no
 	})
-	
+
 	if not args.do_not_save:
 		si.insert()
 		if not args.do_not_submit:
diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py
index c640b8b..4d1eafb 100644
--- a/erpnext/controllers/stock_controller.py
+++ b/erpnext/controllers/stock_controller.py
@@ -197,7 +197,7 @@
 		sl_dict.update(args)
 		return sl_dict
 
-	def make_sl_entries(self, sl_entries, is_amended=None, allow_negative_stock=False, 
+	def make_sl_entries(self, sl_entries, is_amended=None, allow_negative_stock=False,
 			via_landed_cost_voucher=False):
 		from erpnext.stock.stock_ledger import make_sl_entries
 		make_sl_entries(sl_entries, is_amended, allow_negative_stock, via_landed_cost_voucher)
@@ -237,7 +237,11 @@
 			if not existing_gle or not compare_existing_and_expected_gle(existing_gle,
 				expected_gle):
 					_delete_gl_entries(voucher_type, voucher_no)
-					voucher_obj.make_gl_entries(repost_future_gle=False)
+					try:
+						voucher_obj.make_gl_entries(repost_future_gle=False)
+					except:
+						print voucher_obj.as_json()
+						raise
 		else:
 			_delete_gl_entries(voucher_type, voucher_no)
 
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index bf33e0d..187cef0 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -197,7 +197,7 @@
 		"float_precision": 3,
 		'date_format': frappe.db.get_value("Country", args.get("country"), "date_format"),
 		'number_format': number_format,
-		'enable_scheduler': 1
+		'enable_scheduler': 1 if not frappe.flags.in_test else 0
 	})
 	system_settings.save()
 
diff --git a/erpnext/setup/page/setup_wizard/test_setup_wizard.py b/erpnext/setup/page/setup_wizard/test_setup_wizard.py
index 63c0dd4..acc2459 100644
--- a/erpnext/setup/page/setup_wizard/test_setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/test_setup_wizard.py
@@ -6,9 +6,10 @@
 
 from erpnext.setup.page.setup_wizard.test_setup_data import args
 from erpnext.setup.page.setup_wizard.setup_wizard import setup_account
+import frappe.utils.scheduler
 
 if __name__=="__main__":
 	frappe.connect()
 	frappe.local.form_dict = frappe._dict(args)
 	setup_account()
-	
\ No newline at end of file
+	frappe.utils.scheduler.disable_scheduler()
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index c006a07..0d3288c 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -18,10 +18,10 @@
 
 	def test_reco_for_fifo(self):
 		self._test_reco_sle_gle("FIFO")
-		
+
 	def test_reco_for_moving_average(self):
 		self._test_reco_sle_gle("Moving Average")
-		
+
 	def _test_reco_sle_gle(self, valuation_method):
 		set_perpetual_inventory()
 		# [[qty, valuation_rate, posting_date,
@@ -36,7 +36,7 @@
 
 		for d in input_data:
 			repost_stock_as_per_valuation_method(valuation_method)
-			
+
 			last_sle = get_previous_sle({
 				"item_code": "_Test Item",
 				"warehouse": "_Test Warehouse - _TC",
@@ -45,51 +45,51 @@
 			})
 
 			# submit stock reconciliation
-			stock_reco = create_stock_reconciliation(qty=d[0], rate=d[1], 
+			stock_reco = create_stock_reconciliation(qty=d[0], rate=d[1],
 				posting_date=d[2], posting_time=d[3])
-			
+
 			# check stock value
-			sle = frappe.db.sql("""select * from `tabStock Ledger Entry` 
+			sle = frappe.db.sql("""select * from `tabStock Ledger Entry`
 				where voucher_type='Stock Reconciliation' and voucher_no=%s""", stock_reco.name, as_dict=1)
-			
+
 			qty_after_transaction = flt(d[0]) if d[0] != "" else flt(last_sle.get("qty_after_transaction"))
-				
+
 			valuation_rate = flt(d[1]) if d[1] != "" else flt(last_sle.get("valuation_rate"))
-			
+
 			if qty_after_transaction == last_sle.get("qty_after_transaction") \
 				and valuation_rate == last_sle.get("valuation_rate"):
 					self.assertFalse(sle)
 			else:
 				self.assertEqual(sle[0].qty_after_transaction, qty_after_transaction)
 				self.assertEqual(sle[0].stock_value, qty_after_transaction * valuation_rate)
-			
+
 				# no gl entries
-				self.assertTrue(frappe.db.get_value("Stock Ledger Entry", 
+				self.assertTrue(frappe.db.get_value("Stock Ledger Entry",
 					{"voucher_type": "Stock Reconciliation", "voucher_no": stock_reco.name}))
 				self.assertFalse(get_stock_and_account_difference(["_Test Account Stock In Hand - _TC"]))
-					
+
 			stock_reco.cancel()
-			
-			self.assertFalse(frappe.db.get_value("Stock Ledger Entry", 
+
+			self.assertFalse(frappe.db.get_value("Stock Ledger Entry",
 				{"voucher_type": "Stock Reconciliation", "voucher_no": stock_reco.name}))
-				
-			self.assertFalse(frappe.db.get_value("GL Entry", 
+
+			self.assertFalse(frappe.db.get_value("GL Entry",
 				{"voucher_type": "Stock Reconciliation", "voucher_no": stock_reco.name}))
-				
+
 			set_perpetual_inventory(0)
 
 	def insert_existing_sle(self):
 		from erpnext.stock.doctype.stock_entry.test_stock_entry import make_stock_entry
-			
-		make_stock_entry(posting_date="2012-12-15", posting_time="02:00", item_code="_Test Item", 
+
+		make_stock_entry(posting_date="2012-12-15", posting_time="02:00", item_code="_Test Item",
 			target="_Test Warehouse - _TC", qty=10, incoming_rate=700)
 
-		make_stock_entry(posting_date="2012-12-25", posting_time="03:00", item_code="_Test Item", 
+		make_stock_entry(posting_date="2012-12-25", posting_time="03:00", item_code="_Test Item",
 			source="_Test Warehouse - _TC", qty=15)
 
-		make_stock_entry(posting_date="2013-01-05", posting_time="07:00", item_code="_Test Item", 
+		make_stock_entry(posting_date="2013-01-05", posting_time="07:00", item_code="_Test Item",
 			target="_Test Warehouse - _TC", qty=15, incoming_rate=1200)
-			
+
 def create_stock_reconciliation(**args):
 	args = frappe._dict(args)
 	sr = frappe.new_doc("Stock Reconciliation")
@@ -105,7 +105,9 @@
 		"qty": args.qty,
 		"valuation_rate": args.rate
 	})
+
 	sr.insert()
+
 	sr.submit()
 	return sr