diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index af52c7a..675d183 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -181,99 +181,99 @@
 		serial_no = frappe.get_doc("Serial No", serial_no)
 		for field, value in field_values.items():
 			self.assertEquals(cstr(serial_no.get(field)), value)
-			
+
 	def test_sales_return_for_non_bundled_items(self):
 		set_perpetual_inventory()
-		
+
 		make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, basic_rate=100)
-		
+
 		actual_qty_0 = get_qty_after_transaction()
-		
+
 		dn = create_delivery_note(qty=5, rate=500)
 
 		actual_qty_1 = get_qty_after_transaction()
 		self.assertEquals(actual_qty_0 - 5, actual_qty_1)
-		
+
 		# outgoing_rate
-		outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note", 
+		outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
 			"voucher_no": dn.name}, "stock_value_difference") / 5
-		
+
 		# return entry
 		dn1 = create_delivery_note(is_return=1, return_against=dn.name, qty=-2, rate=500)
 
 		actual_qty_2 = get_qty_after_transaction()
-			
+
 		self.assertEquals(actual_qty_1 + 2, actual_qty_2)
-		
-		incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry", 
-			{"voucher_type": "Delivery Note", "voucher_no": dn1.name}, 
+
+		incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
+			{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
 			["incoming_rate", "stock_value_difference"])
-			
+
 		self.assertEquals(flt(incoming_rate, 3), abs(flt(outgoing_rate, 3)))
-		
-		gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note", 
+
+		gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
 			"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
-			
+
 		self.assertEquals(gle_warehouse_amount, stock_value_difference)
-		
+
 		set_perpetual_inventory(0)
-		
+
 	def test_return_single_item_from_bundled_items(self):
 		set_perpetual_inventory()
-		
+
 		create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
-		create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", 
+		create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
 			qty=50, rate=100)
-				
+
 		dn = create_delivery_note(item_code="_Test Product Bundle Item", qty=5, rate=500)
 
 		# Qty after delivery
 		actual_qty_1 = get_qty_after_transaction()
 		self.assertEquals(actual_qty_1,  25)
-		
+
 		# outgoing_rate
-		outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note", 
+		outgoing_rate = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
 			"voucher_no": dn.name, "item_code": "_Test Item"}, "stock_value_difference") / 25
-		
+
 		# return 'test item' from packed items
 		dn1 = create_delivery_note(is_return=1, return_against=dn.name, qty=-10, rate=500)
 
 		# qty after return
 		actual_qty_2 = get_qty_after_transaction()
 		self.assertEquals(actual_qty_2, 35)
-		
+
 		# Check incoming rate for return entry
-		incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry", 
-			{"voucher_type": "Delivery Note", "voucher_no": dn1.name}, 
+		incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
+			{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
 			["incoming_rate", "stock_value_difference"])
-			
+
 		self.assertEquals(flt(incoming_rate, 3), abs(flt(outgoing_rate, 3)))
-		
+
 		# Check gl entry for warehouse
-		gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note", 
+		gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
 			"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
-			
+
 		self.assertEquals(gle_warehouse_amount, stock_value_difference)
-		
+
 		set_perpetual_inventory(0)
-		
+
 	def test_return_entire_bundled_items(self):
 		set_perpetual_inventory()
-		
+
 		create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
-		create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", 
+		create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC",
 			qty=50, rate=100)
-		
+
 		dn = create_delivery_note(item_code="_Test Product Bundle Item", qty=5, rate=500)
-		
+
 		#  return bundled item
-		dn1 = create_delivery_note(item_code='_Test Product Bundle Item', is_return=1, 
+		dn1 = create_delivery_note(item_code='_Test Product Bundle Item', is_return=1,
 			return_against=dn.name, qty=-2, rate=500)
 
 		# qty after return
 		actual_qty = get_qty_after_transaction()
 		self.assertEquals(actual_qty, 35)
-		
+
 		# Check incoming rate for return entry
 		incoming_rate, stock_value_difference = frappe.db.get_value("Stock Ledger Entry",
 			{"voucher_type": "Delivery Note", "voucher_no": dn1.name},
@@ -284,11 +284,11 @@
 		# Check gl entry for warehouse
 		gle_warehouse_amount = frappe.db.get_value("GL Entry", {"voucher_type": "Delivery Note",
 			"voucher_no": dn1.name, "account": "_Test Warehouse - _TC"}, "debit")
-			
+
 		self.assertEquals(gle_warehouse_amount, 1400)
-		
+
 		set_perpetual_inventory(0)
-		
+
 	def test_return_for_serialized_items(self):
 		se = make_serialized_item()
 		serial_no = get_serial_nos(se.get("items")[0].serial_no)[0]
@@ -301,65 +301,68 @@
 		})
 
 		# return entry
-		dn1 = create_delivery_note(item_code="_Test Serialized Item With Series", 
+		dn1 = create_delivery_note(item_code="_Test Serialized Item With Series",
 			is_return=1, return_against=dn.name, qty=-1, rate=500, serial_no=serial_no)
 
 		self.check_serial_no_values(serial_no, {
 			"warehouse": "_Test Warehouse - _TC",
 			"delivery_document_no": ""
 		})
-				
+
 		dn1.cancel()
-		
+
 		self.check_serial_no_values(serial_no, {
 			"warehouse": "",
 			"delivery_document_no": dn.name
 		})
-		
+
 		dn.cancel()
-		
+
 		self.check_serial_no_values(serial_no, {
 			"warehouse": "_Test Warehouse - _TC",
 			"delivery_document_no": "",
 			"purchase_document_no": se.name
 		})
-		
+
 	def test_delivery_of_bundled_items_to_target_warehouse(self):
 		set_perpetual_inventory()
-		
-		create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC", qty=50, rate=100)
-		create_stock_reconciliation(item_code="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", 
+
+		create_stock_reconciliation(item_code="_Test Item", target="_Test Warehouse - _TC",
 			qty=50, rate=100)
-			
+		create_stock_reconciliation(item_code="_Test Item Home Desktop 100",
+			target="_Test Warehouse - _TC",
+			qty=50, rate=100)
+
 		opening_qty_test_warehouse_1 = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
-	
-		dn = create_delivery_note(item_code="_Test Product Bundle Item", 
+
+		dn = create_delivery_note(item_code="_Test Product Bundle Item",
 			qty=5, rate=500, target_warehouse="_Test Warehouse 1 - _TC")
-	
+
 		# qty after delivery
 		actual_qty = get_qty_after_transaction(warehouse="_Test Warehouse - _TC")
 		self.assertEquals(actual_qty, 25)
-		
+
 		actual_qty = get_qty_after_transaction(warehouse="_Test Warehouse 1 - _TC")
 		self.assertEquals(actual_qty, opening_qty_test_warehouse_1 + 25)
-	
+
 		# stock value diff for source warehouse
-		stock_value_difference = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note", 
-			"voucher_no": dn.name, "item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"}, 
+		stock_value_difference = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
+			"voucher_no": dn.name, "item_code": "_Test Item", "warehouse": "_Test Warehouse - _TC"},
 			"stock_value_difference")
-			
+
 		# stock value diff for target warehouse
-		stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note", 
-			"voucher_no": dn.name, "item_code": "_Test Item", "warehouse": "_Test Warehouse 1 - _TC"}, 
+		stock_value_difference1 = frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Delivery Note",
+			"voucher_no": dn.name, "item_code": "_Test Item", "warehouse": "_Test Warehouse 1 - _TC"},
 			"stock_value_difference")
+
 		self.assertEquals(abs(stock_value_difference), stock_value_difference1)
 
 		# Check gl entries
 		gl_entries = get_gl_entries("Delivery Note", dn.name)
 		self.assertTrue(gl_entries)
 
-		stock_value_difference = abs(frappe.db.sql("""select sum(stock_value_difference) 
-			from `tabStock Ledger Entry` where voucher_type='Delivery Note' and voucher_no=%s 
+		stock_value_difference = abs(frappe.db.sql("""select sum(stock_value_difference)
+			from `tabStock Ledger Entry` where voucher_type='Delivery Note' and voucher_no=%s
 			and warehouse='_Test Warehouse - _TC'""", dn.name)[0][0])
 
 		expected_values = {
@@ -368,9 +371,9 @@
 		}
 		for i, gle in enumerate(gl_entries):
 			self.assertEquals([gle.debit, gle.credit], expected_values.get(gle.account))
-		
+
 		set_perpetual_inventory(0)
-	
+
 def create_delivery_note(**args):
 	dn = frappe.new_doc("Delivery Note")
 	args = frappe._dict(args)
diff --git a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
index fa2fa13..cfaa499 100644
--- a/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/test_stock_reconciliation.py
@@ -10,6 +10,7 @@
 from erpnext.accounts.utils import get_fiscal_year, get_stock_and_account_difference
 from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import set_perpetual_inventory
 from erpnext.stock.stock_ledger import get_previous_sle, update_entries_after
+from erpnext.stock.doctype.stock_reconciliation.stock_reconciliation import EmptyStockReconciliationItemsError
 
 class TestStockReconciliation(unittest.TestCase):
 	def setUp(self):
@@ -107,7 +108,10 @@
 		"valuation_rate": args.rate
 	})
 
-	sr.submit()
+	try:
+		sr.submit()
+	except EmptyStockReconciliationItemsError:
+		pass
 	return sr
 
 def repost_stock_as_per_valuation_method(valuation_method):
