Esempio n. 1
0
def run():
	t = AntiTargetSmokeTest()
	t.usebash = True
	
	genericTargets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/dependency.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/dependency.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/dependency.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/dependency.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/dependency.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/dependency.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/dependency.exe",
		"$(EPOCROOT)/epoc32/include/dependency.rsg",
		"$(EPOCROOT)/epoc32/data/z/resource/apps/dependency.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/dependency.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/dependency.rsc",
		"$(EPOCROOT)/epoc32/include/main.rsg",
		"$(EPOCROOT)/epoc32/data/z/resource/apps/main.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/main.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/main.rsc"
		]
	windowsTargets = [
		"$(EPOCROOT)/epoc32/release/tools2/rel/dependency.exe",
		"$(EPOCROOT)/epoc32/tools/dependency.exe"
	]
	linuxTargets = [
		"$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/dependency",
		"$(EPOCROOT)/epoc32/tools/dependency"
	]

	# Set general host platform specifics from first test run, but assume Windows initially
	hostPlatform = "windows"
	hostPlatformTargets = genericTargets + windowsTargets
	hostPlatformOffset = ""

	t.name = "baseline_build"
	t.description = "Build a component with source and resource files that are dependent on header files exported in the build"
	t.command = """
		cp smoke_suite/test_resources/dependencies/src/dependency1.cpp smoke_suite/test_resources/dependencies/dependency.cpp
		cp smoke_suite/test_resources/dependencies/src/dependency1.rss smoke_suite/test_resources/dependencies/dependency.rss
		sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""		
	t.mustnotmatch = [
		"<warning>Missing dependency detected: .*</warning>"
	]
	t.targets = hostPlatformTargets
	t.run(hostPlatform)
	if t.result == AntiTargetSmokeTest.SKIP:
		hostPlatform = "linux"
		hostPlatformTargets = genericTargets + linuxTargets
		hostPlatformOffset = "$(HOSTPLATFORM32_DIR)/"
		t.targets = hostPlatformTargets
		t.run(hostPlatform)
	
	# Ensure we don't clean up from the previous build in the following two tests
	t.targets = []
	
	# Core expected outcome for the following two tests
	t.mustmatch = [
		".*recipe name='compile' target='.*dependency\.o'",
		".*recipe name='win32compile2object' target='.*dependency\.o'",
		".*recipe name='compile2object' target='.*dependency\.o'",
		".*recipe name='resourcecompile' target='.*dependency\.rsc'"
	]
	t.countmatch = [
		[".*recipe name='compile'", 2],
		[".*recipe name='win32compile2object'", 2],
		[".*recipe name='compile2object'", 1],
		[".*recipe name='resourcecompile", 2]
	]

	
	t.name ="touched_header_dependencies"
	t.description = "Touch the exported header files and check that only the related source and resource files are re-built"
	t.command = """
		sleep 1
		touch $(EPOCROOT)/epoc32/include/dependency.h
		touch $(EPOCROOT)/epoc32/include/dependency.rh
		sbs -f- -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
	t.run()

	
	t.name ="redundant_header_dependencies"
	t.description = """
		Build the component again, but manipulate it so that (a) it no longer has a dependency on the exported header files and
		(b) the header files have been removed and (c) the header files are no longer exported.  Check that only the related source
		and resource files are re-built"""
	t.command = """
		cp smoke_suite/test_resources/dependencies/src/dependency2.cpp smoke_suite/test_resources/dependencies/dependency.cpp
		cp smoke_suite/test_resources/dependencies/src/dependency2.rss smoke_suite/test_resources/dependencies/dependency.rss
		rm -rf $(EPOCROOT)/epoc32/include/dependency.h
		rm -rf $(EPOCROOT)/epoc32/include/dependency.rh
		sbs -f- --noexport -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
	t.mustnotmatch = []
	# Note that the resource build does not exhibit a missing dependency as its dependency files are generated in a separate stage where
	# the target file isn't actually a target of that stage
	t.mustmatch.extend([
		"<warning>Missing dependency detected: .*/epoc32/include/dependency.h</warning>"
		])
	t.warnings = 1
	t.run()
	

	t.name ="invalid_dependency_files"
	t.description = "Invalidate dependency files, then make sure we can clean and re-build successfully"
	buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment('smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
        # use one long bash command so that we can capture 
	# the output in a way that isn't messed up with all the ordering confused.
	t.command = " echo \"making directory for logfile ${{SBSLOGFILE}}\" ; mkdir -p `dirname ${{SBSLOGFILE}} 2>/dev/null` ; {{ sleep 1 ; set -x ; \
touch smoke_suite/test_resources/dependencies/dependency.cpp; \
echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> {0}/armv5/urel/dependency.o.d ; \
echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> {0}/winscw/urel/dependency.o.d ;\
echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> {0}/dependency_exe/tools2/rel/{1}/dependency.o.d ;\
echo INVALIDATE_RESOURCE_DEPENDENCY_FILE >> {0}/dependency__resource_apps.rsc.d ;\
sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel ;\
sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel clean ;\
sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel ; }} > ${{SBSLOGFILE}} 2>&1; grep 'missing separator' ${{SBSLOGFILE}} ".format(buildLocation, hostPlatformOffset)
	# We expect an error from the first build due to the deliberate dependency file corruption
	t.mustmatch = [
		".*dependency.o.d:[0-9]+: \*\*\* missing separator"
		]
	t.countmatch = []
	t.warnings = 0
	t.errors = 0 
	t.targets = hostPlatformTargets
	t.run(hostPlatform)


	t.name ="no_depend_include"
	t.description = "Invalidate dependency files in order to confirm they aren't processed when --no-depend-include is used"
	buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment('smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
	t.command = """
		sleep 1
		touch smoke_suite/test_resources/dependencies/dependency.cpp
		echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> """+buildLocation+"""/armv5/urel/dependency.o.d
		echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> """+buildLocation+"""/winscw/urel/dependency.o.d
		echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> """+buildLocation+"""/dependency_exe/tools2/rel/"""+hostPlatformOffset+"""dependency.o.d
		sbs --no-depend-include -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
	t.mustmatch = []
	t.errors = 0		
	t.targets = hostPlatformTargets
	t.run(hostPlatform)


	t.name ="no_depend_generate"
	t.description = "Invalidate and remove dependency files in order to confirm they are neither included nor re-generated when --no-depend-generate is used"
	buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment('smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
	t.command = """
		sleep 1
		touch smoke_suite/test_resources/dependencies/dependency.cpp
		touch smoke_suite/test_resources/dependencies/main.cpp
		echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> """+buildLocation+"""/armv5/urel/dependency.o.d
		echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> """+buildLocation+"""/winscw/urel/dependency.o.d
		echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> """+buildLocation+"""/dependency_exe/tools2/rel/"""+hostPlatformOffset+"""dependency.o.d
		sbs --no-depend-generate -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
	t.antitargets = [
		buildLocation+"/armv5/urel/main.o.d",
		buildLocation+"/armv5/udeb/main.o.d",
		buildLocation+"/winscw/urel/main.o.d",
		buildLocation+"/winscw/udeb/main.o.d",
		buildLocation+"/dependency_exe/tools2/rel/"+hostPlatformOffset+"main.o.d"
		]
	t.targets = hostPlatformTargets
	t.run(hostPlatform)
	
	# clean-up
	os.remove("smoke_suite/test_resources/dependencies/dependency.cpp")
	os.remove("smoke_suite/test_resources/dependencies/dependency.rss")

	t.name = "dependencies"
	t.print_result()
	return t
Esempio n. 2
0
def run():

	t = AntiTargetSmokeTest()
	t.name = "unfrozen_savespace"

	t.command = "sbs -b smoke_suite/test_resources/unfrozen/bld.inf -k -c winscw -c armv5 CLEAN" \
				" && sbs -b smoke_suite/test_resources/unfrozen/bld.inf -c winscw.savespace -c armv5.savespace"

	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/lib/unfrozensymbols.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/unfrozensymbols{000a0000}.dso",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/lib/unfrozensymbols2.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/unfrozensymbols2{000a0000}.dso",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols2.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols2.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols2.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols3.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols3.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/unfrozensymbols3.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/test_unfrozen.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/test_unfrozen.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/test_unfrozen.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/unfrozensymbols.dll",
		"$(EPOCROOT)/epoc32/release/winscw/urel/unfrozensymbols.dll.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/unfrozensymbols2.dll",
		"$(EPOCROOT)/epoc32/release/winscw/urel/unfrozensymbols2.dll.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/test_unfrozen.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/test_unfrozen.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols2.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols2.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols2.dll.map",	
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols3.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols3.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/unfrozensymbols3.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/test_unfrozen.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/test_unfrozen.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/test_unfrozen.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/unfrozensymbols.dll",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/unfrozensymbols.lib",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/unfrozensymbols2.dll",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/unfrozensymbols2.lib",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/unfrozensymbols3.dll",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/test_unfrozen.exe"
		]

	t.antitargets = []

	t.addbuildantitargets('smoke_suite/test_resources/unfrozen/bld.inf', [
		"test_unfrozen_/armv5/udeb",
		"test_unfrozen_/armv5/urel",
		"test_unfrozen_/winscw/udeb",
		"test_unfrozen_/winscw/urel"
		# TODO: Add these anti targets once we figure out how to actually delete
		# them.
		# "unfrozensymbols2_dll/armv5/udeb",
		# "unfrozensymbols2_dll/armv5/urel",
		# "unfrozensymbols2_dll/winscw/udeb",
		# "unfrozensymbols2_dll/winscw/urel",
		# "unfrozensymbols_dll/armv5/udeb",
		# "unfrozensymbols_dll/armv5/urel",
		# "unfrozensymbols_dll/winscw/udeb",
		# "unfrozensymbols_dll/winscw/urel"
		] )

	t.countmatch = [
			[".*Elf2e32: Warning: New Symbol .* found, export\(s\) not yet Frozen.*", 26],
			[".*\.def\(\d\) : .*@\d.*", 18]
		]

	t.warnings = 8
	t.run()
	return t
Esempio n. 3
0
def run():
    t = AntiTargetSmokeTest()
    t.usebash = True

    # Unordered layer logging tests
    unorderedcommand = 'sbs -f- -s smoke_suite/test_resources/sysdef/system_definition_simple.xml'
    unorderedtargets = [
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/simple1.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple1.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple1.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/simple2.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple2.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple2.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/simple3.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple3.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple3.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/simple4.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple4.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple4.exe.map"
    ]

    unorderedbuildtargets = [
        "{COMPONENT}_/armv5/udeb/simple.o", "{COMPONENT}_/armv5/urel/simple.o",
        "{COMPONENT}_/winscw/udeb/simple.o",
        "{COMPONENT}_/winscw/udeb/{COMPONENT}_UID_.o",
        "{COMPONENT}_/winscw/udeb/{COMPONENT}.UID.CPP",
        "{COMPONENT}_/winscw/urel/simple.o",
        "{COMPONENT}_/winscw/urel/{COMPONENT}_UID_.o",
        "{COMPONENT}_/winscw/urel/{COMPONENT}.UID.CPP"
    ]

    t.name = "sysdef_layers"
    t.description = "Test system definition building and layer logging"
    t.command = unorderedcommand
    t.targets = unorderedtargets
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/simple/simple1/bld.inf',
        [x.format(COMPONENT="simple1") for x in unorderedbuildtargets])
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/simple/simple2/bld.inf',
        [x.format(COMPONENT="simple2") for x in unorderedbuildtargets])
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/simple/simple3/bld.inf',
        [x.format(COMPONENT="simple3") for x in unorderedbuildtargets])
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/simple/simple4/bld.inf',
        [x.format(COMPONENT="simple4") for x in unorderedbuildtargets])
    t.countmatch = [["<recipe .*layer='layer1' .*>", 24],
                    ["<recipe .*layer='layer2' .*>", 24]]
    t.run()

    # System definition layer test with PP on
    t.name = "sysdef_layers_pp"
    t.description = "Test system definition layer building and logging with parallel processing on"
    t.command = unorderedcommand + " --pp on"
    t.countmatch = [["<recipe .*layer='layer1' .*>", 24],
                    ["<recipe .*layer='layer2' .*>", 24]]
    t.run()

    # Ordered layer building and logging tests
    orderedcommand = 'sbs -f- -s smoke_suite/test_resources/sysdef/system_definition_order_layer_test.xml ' + \
      '-l "Metadata Export" -l "Build Generated Source" -l "Component with Layer Dependencies" -o'

    t.name = "sysdef_layers_ordered"
    t.description = "Test system definition ordered layer building and logging"
    t.command = orderedcommand
    t.targets = [
        "$(SBS_HOME)/test/smoke_suite/test_resources/sysdef/build_gen_source/exported.inf",
        "$(SBS_HOME)/test/smoke_suite/test_resources/sysdef/build_gen_source/exported.mmh",
        "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm",
        "$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/HelloWorld_reg.rsc",
        "$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc",
        "$(EPOCROOT)/epoc32/include/HelloWorld.rsg",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe.sym",
        "$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.mbm",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/helloworld.exe",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/HelloWorld_reg.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/HelloWorld.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.mbm",
        "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/HelloWorld_reg.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/HelloWorld.rsc",
    ]
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/build_gen_source/bld.inf', [
            "HelloWorld_/HelloWorld_HelloWorld.rsc.rpp",
            "HelloWorld_/HelloWorld_HelloWorld.rsc",
            "HelloWorld_/HelloWorld_HelloWorld.rsc.d"
        ])
    t.addbuildtargets('smoke_suite/test_resources/sysdef/dependent/bld.inf', [
        "helloworld_exe/armv5/udeb/HelloWorld_Application.o",
        "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o",
        "helloworld_exe/armv5/udeb/HelloWorld_AppView.o",
        "helloworld_exe/armv5/udeb/HelloWorld_Document.o",
        "helloworld_exe/armv5/udeb/HelloWorld_Main.o",
        "helloworld_exe/armv5/urel/HelloWorld_Application.o",
        "helloworld_exe/armv5/urel/HelloWorld_AppUi.o",
        "helloworld_exe/armv5/urel/HelloWorld_AppView.o",
        "helloworld_exe/armv5/urel/HelloWorld_Document.o",
        "helloworld_exe/armv5/urel/HelloWorld_Main.o",
        "helloworld_exe/winscw/udeb/HelloWorld_Application.o",
        "helloworld_exe/winscw/udeb/HelloWorld_AppUi.o",
        "helloworld_exe/winscw/udeb/HelloWorld_AppView.o",
        "helloworld_exe/winscw/udeb/HelloWorld_Document.o",
        "helloworld_exe/winscw/udeb/HelloWorld_Main.o",
        "helloworld_exe/winscw/udeb/helloworld.UID.CPP",
        "helloworld_exe/winscw/udeb/helloworld_UID_.o",
        "helloworld_exe/winscw/urel/HelloWorld_Application.o",
        "helloworld_exe/winscw/urel/HelloWorld_AppUi.o",
        "helloworld_exe/winscw/urel/HelloWorld_AppView.o",
        "helloworld_exe/winscw/urel/HelloWorld_Document.o",
        "helloworld_exe/winscw/urel/HelloWorld_Main.o",
        "helloworld_exe/winscw/urel/helloworld.UID.CPP",
        "helloworld_exe/winscw/urel/helloworld_UID_.o",
        "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.rpp",
        "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d"
    ])
    t.countmatch = [
        [
            "<recipe .*layer='Component with Layer Dependencies' component='dependent'.*>",
            33
        ],
        [
            "<recipe .*layer='Build Generated Source' component='build generated source'.*>",
            3
        ]
    ]
    t.run()

    t.name = "sysdef_layers_ordered_pp"
    t.description = "Test system definition ordered layer building and logging with parallel processing on"
    t.command = orderedcommand + " --pp on"
    t.run()

    # package definition building and logging tests
    packagecommand = 'sbs -f- -s smoke_suite/test_resources/sysdef/package_definition.xml'
    packagetargets = [
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/simple1.exe",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/simple2.exe",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/simple3.exe",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/simple4.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple1.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple1.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple2.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple2.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple3.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple3.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple4.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/simple4.exe.map"
    ]

    t.name = "sysdef_layers_pkgdef"
    t.description = "Test package definition building and layer logging"
    t.command = packagecommand
    t.targets = packagetargets
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/simple/simple1/bld.inf',
        [x.format(COMPONENT="simple1") for x in unorderedbuildtargets])
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/simple/simple2/bld.inf',
        [x.format(COMPONENT="simple2") for x in unorderedbuildtargets])
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/simple/simple3/bld.inf',
        [x.format(COMPONENT="simple3") for x in unorderedbuildtargets])
    t.addbuildtargets(
        'smoke_suite/test_resources/sysdef/simple/simple4/bld.inf',
        [x.format(COMPONENT="simple4") for x in unorderedbuildtargets])
    t.countmatch = [["<recipe .*layer='package1' .*>", 24],
                    ["<recipe .*layer='package2' .*>", 24]]
    t.run()

    t.name = "sysdef_layers_pkgdef_pp"
    t.description = "Test package definition building and layer logging with parallel processing on"
    t.command = packagecommand + " --pp on"
    t.run()

    t.id = "48"
    t.name = "sysdef_layers"
    return t
Esempio n. 4
0
def run():
	t = AntiTargetSmokeTest()
	t.usebash = True

	# Unordered layer logging tests
	unorderedcommand = 'sbs -f- -s smoke_suite/test_resources/sysdef/system_definition_simple.xml'
	unorderedtargets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/simple1.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple1.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple1.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/simple2.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple2.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple2.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/simple3.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple3.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple3.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/simple4.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple4.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple4.exe.map"
		]

	unorderedbuildtargets = [
		"{COMPONENT}_/armv5/udeb/simple.o",
		"{COMPONENT}_/armv5/urel/simple.o",
		"{COMPONENT}_/winscw/udeb/simple.o",
		"{COMPONENT}_/winscw/udeb/{COMPONENT}_UID_.o",
		"{COMPONENT}_/winscw/udeb/{COMPONENT}.UID.CPP",
		"{COMPONENT}_/winscw/urel/simple.o",
		"{COMPONENT}_/winscw/urel/{COMPONENT}_UID_.o",
		"{COMPONENT}_/winscw/urel/{COMPONENT}.UID.CPP"
		]

	t.name = "sysdef_layers"
	t.description = "Test system definition building and layer logging"
	t.command = unorderedcommand
	t.targets = unorderedtargets
	t.addbuildtargets('smoke_suite/test_resources/sysdef/simple/simple1/bld.inf',
	  [x.format(COMPONENT="simple1") for x in unorderedbuildtargets])
	t.addbuildtargets('smoke_suite/test_resources/sysdef/simple/simple2/bld.inf',
	  [x.format(COMPONENT="simple2") for x in unorderedbuildtargets])
	t.addbuildtargets('smoke_suite/test_resources/sysdef/simple/simple3/bld.inf',
	  [x.format(COMPONENT="simple3") for x in unorderedbuildtargets])
	t.addbuildtargets('smoke_suite/test_resources/sysdef/simple/simple4/bld.inf',
	  [x.format(COMPONENT="simple4") for x in unorderedbuildtargets])
	t.countmatch = [
		["<recipe .*layer='layer1' .*>", 24],
		["<recipe .*layer='layer2' .*>", 24]
		]
	t.run()

	# System definition layer test with PP on
	t.name = "sysdef_layers_pp"
	t.description = "Test system definition layer building and logging with parallel processing on"
	t.command = unorderedcommand + " --pp on"
	t.countmatch = [
		["<recipe .*layer='layer1' .*>", 24],
		["<recipe .*layer='layer2' .*>", 24]
		]
	t.run()

	# Ordered layer building and logging tests
	orderedcommand = 'sbs -f- -s smoke_suite/test_resources/sysdef/system_definition_order_layer_test.xml ' + \
			'-l "Metadata Export" -l "Build Generated Source" -l "Component with Layer Dependencies" -o'

	t.name = "sysdef_layers_ordered"
	t.description = "Test system definition ordered layer building and logging"
	t.command = orderedcommand
	t.targets = [
		"$(SBS_HOME)/test/smoke_suite/test_resources/sysdef/build_gen_source/exported.inf",
		"$(SBS_HOME)/test/smoke_suite/test_resources/sysdef/build_gen_source/exported.mmh",
		"$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm",
		"$(EPOCROOT)/epoc32/data/z/private/10003a3f/apps/HelloWorld_reg.rsc",
		"$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc",
		"$(EPOCROOT)/epoc32/include/HelloWorld.rsg",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/helloworld.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/helloworld.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.mbm",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/helloworld.exe",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/HelloWorld_reg.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/HelloWorld.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.mbm",
		"$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/helloworld.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/HelloWorld_reg.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/HelloWorld.rsc",
		]
	t.addbuildtargets('smoke_suite/test_resources/sysdef/build_gen_source/bld.inf', [
		"HelloWorld_/HelloWorld_HelloWorld.rsc.rpp",
		"HelloWorld_/HelloWorld_HelloWorld.rsc",
		"HelloWorld_/HelloWorld_HelloWorld.rsc.d"
		])
	t.addbuildtargets('smoke_suite/test_resources/sysdef/dependent/bld.inf', [
		"helloworld_exe/armv5/udeb/HelloWorld_Application.o",
		"helloworld_exe/armv5/udeb/HelloWorld_AppUi.o",
		"helloworld_exe/armv5/udeb/HelloWorld_AppView.o",
		"helloworld_exe/armv5/udeb/HelloWorld_Document.o",
		"helloworld_exe/armv5/udeb/HelloWorld_Main.o",
		"helloworld_exe/armv5/urel/HelloWorld_Application.o",
		"helloworld_exe/armv5/urel/HelloWorld_AppUi.o",
		"helloworld_exe/armv5/urel/HelloWorld_AppView.o",
		"helloworld_exe/armv5/urel/HelloWorld_Document.o",
		"helloworld_exe/armv5/urel/HelloWorld_Main.o",
		"helloworld_exe/winscw/udeb/HelloWorld_Application.o",
		"helloworld_exe/winscw/udeb/HelloWorld_AppUi.o",
		"helloworld_exe/winscw/udeb/HelloWorld_AppView.o",
		"helloworld_exe/winscw/udeb/HelloWorld_Document.o",
		"helloworld_exe/winscw/udeb/HelloWorld_Main.o",
		"helloworld_exe/winscw/udeb/helloworld.UID.CPP",
		"helloworld_exe/winscw/udeb/helloworld_UID_.o",
		"helloworld_exe/winscw/urel/HelloWorld_Application.o",
		"helloworld_exe/winscw/urel/HelloWorld_AppUi.o",
		"helloworld_exe/winscw/urel/HelloWorld_AppView.o",
		"helloworld_exe/winscw/urel/HelloWorld_Document.o",
		"helloworld_exe/winscw/urel/HelloWorld_Main.o",
		"helloworld_exe/winscw/urel/helloworld.UID.CPP",
		"helloworld_exe/winscw/urel/helloworld_UID_.o",
		"HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.rpp",
		"HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d"
		])
	t.countmatch = [
		["<recipe .*layer='Component with Layer Dependencies' component='dependent'.*>", 33],
		["<recipe .*layer='Build Generated Source' component='build generated source'.*>", 3]		
		]
	t.run()

	t.name = "sysdef_layers_ordered_pp"
	t.description = "Test system definition ordered layer building and logging with parallel processing on"
	t.command = orderedcommand + " --pp on"
	t.run()

	# package definition building and logging tests
	packagecommand = 'sbs -f- -s smoke_suite/test_resources/sysdef/package_definition.xml'
	packagetargets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple1.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple2.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple3.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/simple4.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple1.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple2.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple3.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/simple4.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/simple1.exe",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/simple2.exe",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/simple3.exe",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/simple4.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple1.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple1.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple2.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple2.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple3.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple3.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple4.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/simple4.exe.map"
		]

	t.name = "sysdef_layers_pkgdef"
	t.description = "Test package definition building and layer logging"
	t.command = packagecommand
	t.targets = packagetargets
	t.addbuildtargets('smoke_suite/test_resources/sysdef/simple/simple1/bld.inf',
	  [x.format(COMPONENT="simple1") for x in unorderedbuildtargets])
	t.addbuildtargets('smoke_suite/test_resources/sysdef/simple/simple2/bld.inf',
	  [x.format(COMPONENT="simple2") for x in unorderedbuildtargets])
	t.addbuildtargets('smoke_suite/test_resources/sysdef/simple/simple3/bld.inf',
	  [x.format(COMPONENT="simple3") for x in unorderedbuildtargets])
	t.addbuildtargets('smoke_suite/test_resources/sysdef/simple/simple4/bld.inf',
	  [x.format(COMPONENT="simple4") for x in unorderedbuildtargets])
	t.countmatch = [
		["<recipe .*layer='package1' .*>", 24],
		["<recipe .*layer='package2' .*>", 24]
		]
	t.run()

	t.name = "sysdef_layers_pkgdef_pp"
	t.description = "Test package definition building and layer logging with parallel processing on"
	t.command = packagecommand + " --pp on"
	t.run()

	t.id = "48"
	t.name = "sysdef_layers"
	return t
Esempio n. 5
0
def run():
    t = AntiTargetSmokeTest()
    t.usebash = True

    genericTargets = [
        "$(EPOCROOT)/epoc32/release/armv5/udeb/dependency.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/dependency.exe.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/dependency.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/dependency.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/urel/dependency.exe",
        "$(EPOCROOT)/epoc32/release/winscw/urel/dependency.exe.map",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/dependency.exe",
        "$(EPOCROOT)/epoc32/include/dependency.rsg",
        "$(EPOCROOT)/epoc32/data/z/resource/apps/dependency.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/dependency.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/dependency.rsc",
        "$(EPOCROOT)/epoc32/include/main.rsg",
        "$(EPOCROOT)/epoc32/data/z/resource/apps/main.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/main.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/main.rsc"
    ]
    windowsTargets = [
        "$(EPOCROOT)/epoc32/release/tools2/rel/dependency.exe",
        "$(EPOCROOT)/epoc32/tools/dependency.exe"
    ]
    linuxTargets = [
        "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM32_DIR)/rel/dependency",
        "$(EPOCROOT)/epoc32/tools/dependency"
    ]

    # Set general host platform specifics from first test run, but assume Windows initially
    hostPlatform = "windows"
    hostPlatformTargets = genericTargets + windowsTargets
    hostPlatformOffset = ""

    t.name = "baseline_build"
    t.description = "Build a component with source and resource files that are dependent on header files exported in the build"
    t.command = """
		cp smoke_suite/test_resources/dependencies/src/dependency1.cpp smoke_suite/test_resources/dependencies/dependency.cpp
		cp smoke_suite/test_resources/dependencies/src/dependency1.rss smoke_suite/test_resources/dependencies/dependency.rss
		sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
    t.mustnotmatch = ["<warning>Missing dependency detected: .*</warning>"]
    t.targets = hostPlatformTargets
    t.run(hostPlatform)
    if t.result == AntiTargetSmokeTest.SKIP:
        hostPlatform = "linux"
        hostPlatformTargets = genericTargets + linuxTargets
        hostPlatformOffset = "$(HOSTPLATFORM32_DIR)/"
        t.targets = hostPlatformTargets
        t.run(hostPlatform)

    # Ensure we don't clean up from the previous build in the following two tests
    t.targets = []

    # Core expected outcome for the following two tests
    t.mustmatch = [
        ".*recipe name='compile' target='.*dependency\.o'",
        ".*recipe name='win32compile2object' target='.*dependency\.o'",
        ".*recipe name='compile2object' target='.*dependency\.o'",
        ".*recipe name='resourcecompile' target='.*dependency\.rsc'"
    ]
    t.countmatch = [[".*recipe name='compile'", 2],
                    [".*recipe name='win32compile2object'", 2],
                    [".*recipe name='compile2object'", 1],
                    [".*recipe name='resourcecompile", 2]]

    t.name = "touched_header_dependencies"
    t.description = "Touch the exported header files and check that only the related source and resource files are re-built"
    t.command = """
		sleep 1
		touch $(EPOCROOT)/epoc32/include/dependency.h
		touch $(EPOCROOT)/epoc32/include/dependency.rh
		sbs -f- -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
    t.run()

    t.name = "redundant_header_dependencies"
    t.description = """
		Build the component again, but manipulate it so that (a) it no longer has a dependency on the exported header files and
		(b) the header files have been removed and (c) the header files are no longer exported.  Check that only the related source
		and resource files are re-built"""
    t.command = """
		cp smoke_suite/test_resources/dependencies/src/dependency2.cpp smoke_suite/test_resources/dependencies/dependency.cpp
		cp smoke_suite/test_resources/dependencies/src/dependency2.rss smoke_suite/test_resources/dependencies/dependency.rss
		rm -rf $(EPOCROOT)/epoc32/include/dependency.h
		rm -rf $(EPOCROOT)/epoc32/include/dependency.rh
		sbs -f- --noexport -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
    t.mustnotmatch = []
    # Note that the resource build does not exhibit a missing dependency as its dependency files are generated in a separate stage where
    # the target file isn't actually a target of that stage
    t.mustmatch.extend([
        "<warning>Missing dependency detected: .*/epoc32/include/dependency.h</warning>"
    ])
    t.warnings = 1
    t.run()

    t.name = "invalid_dependency_files"
    t.description = "Invalidate dependency files, then make sure we can clean and re-build successfully"
    buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment(
        'smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
    # use one long bash command so that we can capture
    # the output in a way that isn't messed up with all the ordering confused.
    t.command = " echo \"making directory for logfile ${{SBSLOGFILE}}\" ; mkdir -p `dirname ${{SBSLOGFILE}} 2>/dev/null` ; {{ sleep 1 ; set -x ; \
touch smoke_suite/test_resources/dependencies/dependency.cpp; \
echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> {0}/armv5/urel/dependency.o.d ; \
echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> {0}/winscw/urel/dependency.o.d ;\
echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> {0}/dependency_exe/tools2/rel/{1}/dependency.o.d ;\
echo INVALIDATE_RESOURCE_DEPENDENCY_FILE >> {0}/dependency__resource_apps.rsc.d ;\
sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel ;\
sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel clean ;\
sbs -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel ; }} > ${{SBSLOGFILE}} 2>&1; grep 'missing separator' ${{SBSLOGFILE}} ".format(
        buildLocation, hostPlatformOffset)
    # We expect an error from the first build due to the deliberate dependency file corruption
    t.mustmatch = [".*dependency.o.d:[0-9]+: \*\*\* missing separator"]
    t.countmatch = []
    t.warnings = 0
    t.errors = 0
    t.targets = hostPlatformTargets
    t.run(hostPlatform)

    t.name = "no_depend_include"
    t.description = "Invalidate dependency files in order to confirm they aren't processed when --no-depend-include is used"
    buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment(
        'smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
    t.command = """
		sleep 1
		touch smoke_suite/test_resources/dependencies/dependency.cpp
		echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> """ + buildLocation + """/armv5/urel/dependency.o.d
		echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> """ + buildLocation + """/winscw/urel/dependency.o.d
		echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> """ + buildLocation + """/dependency_exe/tools2/rel/""" + hostPlatformOffset + """dependency.o.d
		sbs --no-depend-include -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
    t.mustmatch = []
    t.errors = 0
    t.targets = hostPlatformTargets
    t.run(hostPlatform)

    t.name = "no_depend_generate"
    t.description = "Invalidate and remove dependency files in order to confirm they are neither included nor re-generated when --no-depend-generate is used"
    buildLocation = "$(EPOCROOT)/epoc32/build/" + BldInfFile.outputPathFragment(
        'smoke_suite/test_resources/dependencies/bld.inf') + "/dependency_"
    t.command = """
		sleep 1
		touch smoke_suite/test_resources/dependencies/dependency.cpp
		touch smoke_suite/test_resources/dependencies/main.cpp
		echo INVALIDATE_ARMV5_DEPENDENCY_FILE >> """ + buildLocation + """/armv5/urel/dependency.o.d
		echo INVALIDATE_WINSCW_DEPENDENCY_FILE >> """ + buildLocation + """/winscw/urel/dependency.o.d
		echo INVALIDATE_TOOLS2_DEPENDENCY_FILE >> """ + buildLocation + """/dependency_exe/tools2/rel/""" + hostPlatformOffset + """dependency.o.d
		sbs --no-depend-generate -b smoke_suite/test_resources/dependencies/bld.inf -c default -c tools2_rel"""
    t.antitargets = [
        buildLocation + "/armv5/urel/main.o.d",
        buildLocation + "/armv5/udeb/main.o.d",
        buildLocation + "/winscw/urel/main.o.d",
        buildLocation + "/winscw/udeb/main.o.d", buildLocation +
        "/dependency_exe/tools2/rel/" + hostPlatformOffset + "main.o.d"
    ]
    t.targets = hostPlatformTargets
    t.run(hostPlatform)

    # clean-up
    os.remove("smoke_suite/test_resources/dependencies/dependency.cpp")
    os.remove("smoke_suite/test_resources/dependencies/dependency.rss")

    t.name = "dependencies"
    t.print_result()
    return t