diff --git a/pym/portage/tests/ebuild/test_doebuild_spawn.py b/pym/portage/tests/ebuild/test_doebuild_spawn.py
index 6c66f81..ae9a5c5 100644
--- a/pym/portage/tests/ebuild/test_doebuild_spawn.py
+++ b/pym/portage/tests/ebuild/test_doebuild_spawn.py
@@ -1,12 +1,15 @@
 # Copyright 2010-2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
+import textwrap
+
 from portage import os
 from portage import _python_interpreter
 from portage import _shell_quote
 from portage.const import EBUILD_SH_BINARY
 from portage.package.ebuild.config import config
 from portage.package.ebuild.doebuild import spawn as doebuild_spawn
+from portage.package.ebuild._spawn_nofetch import spawn_nofetch
 from portage.tests import TestCase
 from portage.tests.resolver.ResolverPlayground import ResolverPlayground
 from portage.util._async.SchedulerInterface import SchedulerInterface
@@ -24,8 +27,27 @@
 	"""
 
 	def testDoebuildSpawn(self):
-		playground = ResolverPlayground()
+
+		ebuild_body = textwrap.dedent("""
+			pkg_nofetch() { : ; }
+		""")
+
+		ebuilds = {
+			'sys-apps/portage-2.1': {
+				'EAPI'      : '2',
+				'IUSE'      : 'build doc epydoc python3 selinux',
+				'KEYWORDS'  : 'x86',
+				'LICENSE'   : 'GPL-2',
+				'RDEPEND'   : '>=app-shells/bash-3.2_p17 >=dev-lang/python-2.6',
+				'SLOT'      : '0',
+				"MISC_CONTENT": ebuild_body,
+			}
+		}
+
+		playground = ResolverPlayground(ebuilds=ebuilds)
 		try:
+			root_config = playground.trees[playground.eroot]['root_config']
+			portdb = root_config.trees["porttree"].dbapi
 			settings = config(clone=playground.settings)
 			if "__PORTAGE_TEST_HARDLINK_LOCKS" in os.environ:
 				settings["__PORTAGE_TEST_HARDLINK_LOCKS"] = \
@@ -33,18 +55,9 @@
 				settings.backup_changes("__PORTAGE_TEST_HARDLINK_LOCKS")
 
 			cpv = 'sys-apps/portage-2.1'
-			metadata = {
-				'EAPI'      : '2',
-				'INHERITED' : 'python eutils',
-				'IUSE'      : 'build doc epydoc python3 selinux',
-				'KEYWORDS'  : 'x86',
-				'LICENSE'   : 'GPL-2',
-				'PROVIDE'   : 'virtual/portage',
-				'RDEPEND'   : '>=app-shells/bash-3.2_p17 >=dev-lang/python-2.6',
-				'SLOT'      : '0',
-				'repository': 'gentoo',
-			}
-			root_config = playground.trees[playground.eroot]['root_config']
+			metadata = dict(zip(Package.metadata_keys,
+				portdb.aux_get(cpv, Package.metadata_keys)))
+
 			pkg = Package(built=False, cpv=cpv, installed=False,
 				metadata=metadata, root_config=root_config,
 				type_name='ebuild')
@@ -86,5 +99,7 @@
 			ebuild_phase.start()
 			ebuild_phase.wait()
 			self.assertEqual(ebuild_phase.returncode, os.EX_OK)
+
+			spawn_nofetch(portdb, portdb.findname(cpv), settings=settings)
 		finally:
 			playground.cleanup()
