def run():
    t = SmokeTest()
    t.usebash = True

    t.description = "Test that dependency crunching for resource dependency files produces expected output"

    t.id = "43562999"
    t.name = "depcrunch"
    t.command = "python $SBS_HOME/bin/depcrunch.py --extensions mbg,rsg --assume EPOCROOT < smoke_suite/test_resources/depcrunch/dep2.rpp.d"
    t.mustmatch_multiline = [
        r"EPOCROOT/epoc32/build/resource/c_98665870f0168225/dependentresource_/dependentresource_dependentresource_sc.rpp: \\\n"
        + r" EPOCROOT/testresource1.mbg \\\n" +
        r" EPOCROOT/testresource2.rsg \\\n" +
        r" EPOCROOT/testresource3.rsg \\\n" +
        r" EPOCROOT/testresource4.mbg \\\n" +
        r" EPOCROOT/testresource5.rsg \\\n" +
        r" EPOCROOT/testresource6.mbg \\\n" +
        r" EPOCROOT/testresource7.rsg \\\n" +
        r" EPOCROOT/testresource8.mbg \\\n" + r" EPOCROOT/testresource9.rsg \n"
    ]
    t.run()

    t.print_result()

    return t
Exemple #2
0
def run():
	t = SmokeTest()
	t.description = "Check that ARM toolchain specific macros are used in both metadata and source processing."
	t.warnings = -1

	toolchains = {
				'rvct2_2':   ['ARMCC', 'ARMCC_2', 'ARMCC_2_2', '__ARMCC__', '__ARMCC_2__',  '__ARMCC_2_2__'],
				'rvct4_0':   ['ARMCC', 'ARMCC_4', 'ARMCC_4_0', '__ARMCC__', '__ARMCC_4__' , '__ARMCC_4_0__'],
				'gcce4_3_2': ['GCCE', 'GCCE_4', 'GCCE_4_3', '__GCCE__', '__GCCE_4__' , '__GCCE_4_3__'],
				'gcce4_3_3': ['GCCE', 'GCCE_4', 'GCCE_4_3', '__GCCE__', '__GCCE_4__' , '__GCCE_4_3__'],
				'gcce4_4_1': ['GCCE', 'GCCE_4', 'GCCE_4_4', '__GCCE__', '__GCCE_4__' , '__GCCE_4_4__'],
				'gcce4_5_1': ['GCCE', 'GCCE_4', 'GCCE_4_5', '__GCCE__', '__GCCE_4__' , '__GCCE_4_5__']
				}

	rootname = "toolchain_macros_armv5_{0}_{1}"
	rootcommand = "sbs -b smoke_suite/test_resources/toolchain_macros/bld.inf -c arm.v5.urel."
	macromatch = ": #warning( directive:)? {0}( \[-Wcpp\])?(</warning>)?$"

	for toolchain in sorted(toolchains.keys()):
		t.name = rootname.format(toolchain, "clean")
		t.command = rootcommand + toolchain + " clean"
		t.mustmatch_singleline = []
		t.run()

		t.name = rootname.format(toolchain, "build")
		t.command = rootcommand + toolchain
		mustmatch = []
		for macro in toolchains[toolchain]:
			mustmatch.append(macromatch.format(macro))
		t.mustmatch_singleline = mustmatch
		t.run()

	t.name = "toolchain_macros"
	t.print_result()
	return t
Exemple #3
0
def run():
    t = SmokeTest()
    t.name = "make_engine_filenames"
    t.description = "Can we pass the makefilename and stage name to emake options like --annofile etc?"

    t.mustmatch = [
        ".*Executing.*emake.*historyfile=.*default\.history.*",
        ".*Executing.*emake.*annofile=.*\.default\.anno.*"
    ]

    t.mustnotmatch = [
        ".*Executing.*emake.*historyfile=.*#STAGE#\.history.*",
        ".*Executing.*emake.*annofile=#MAKEFILE#\.anno.*"
    ]

    t.usebash = True
    t.errors = 1
    t.returncode = 1
    base_command = "sbs generate -b smoke_suite/test_resources/simple/bld.inf -f-"

    t.command = base_command + " -e emake --mo=--emake-annofile=#MAKEFILE#.anno --mo=--emake-historyfile=$(EPOCROOT)/epoc32/build/#STAGE#.history -k NOTARGET"
    t.run()

    t.print_result()
    return t
Exemple #4
0
def run():
	t = SmokeTest()
	t.usebash = True
	
	t.description = "Test that a timing log is created and contains total parse and build durations"

	t.id = "0103b"
	t.name = "timing_on"
	t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf" + \
			" --filters=FilterLogfile,FilterTiming -f ${SBSLOGFILE} && " + \
			"grep progress:duration ${SBSLOGFILE}.timings"
	t.mustmatch = [
			"^<progress:duration object_type='layer' task='parse' key='.*' duration='\d+.\d+' />$",
			"^<progress:duration object_type='layer' task='build' key='.*' duration='\d+.\d+' />$",
			"^<progress:duration object_type='all' task='all' key='all' duration='\d+.\d+' />$"
			]
	t.mustnotmatch = []
	t.run()


	t.id = "103"
	t.name = "timing"
	t.print_result()
	
	return t
def run():
	t = SmokeTest()
	t.usebash = True
	
	t.description = "Test that dependency crunching for resource dependency files produces expected output" 

	t.id = "43562999"
	t.name = "depcrunch"
	t.command = "python $SBS_HOME/bin/depcrunch.py --extensions mbg,rsg --assume EPOCROOT < smoke_suite/test_resources/depcrunch/dep2.rpp.d"
	t.mustmatch_multiline = [
		r"EPOCROOT/epoc32/build/resource/c_98665870f0168225/dependentresource_/dependentresource_dependentresource_sc.rpp: \\\n"+
		r" EPOCROOT/testresource1.mbg \\\n"+
		r" EPOCROOT/testresource2.rsg \\\n"+
		r" EPOCROOT/testresource3.rsg \\\n"+
		r" EPOCROOT/testresource4.mbg \\\n"+
		r" EPOCROOT/testresource5.rsg \\\n"+
		r" EPOCROOT/testresource6.mbg \\\n"+
		r" EPOCROOT/testresource7.rsg \\\n"+
		r" EPOCROOT/testresource8.mbg \\\n"+
		r" EPOCROOT/testresource9.rsg \n"
		]
	t.run()


	t.print_result()
	
	return t
Exemple #6
0
def run():
	t = SmokeTest()
	t.name = "annofile2log_copy_from_log"
	t.description = "test workaround for log corruption from a make engine whose name begins with 'e'"
	command = 'cd smoke_suite/test_resources/annofile2log && ( FROMANNO="`mktemp`" ; bzip2 -dc {test_file_basename}.anno.bz2 ' \
			  ' | python testanno2log.py  >"${{FROMANNO}}" && FROMSTDOUT="`mktemp`"; bzip2 -dc {test_file_basename}.stdout.bz2 > ' \
			  '"${{FROMSTDOUT}}" && diff -wB "${{FROMANNO}}" "${{FROMSTDOUT}}"; RET=$? ; rm "${{FROMANNO}}" "${{FROMSTDOUT}}"; exit $RET )'
	
	t.usebash = True
	t.errors = 0
	t.returncode = 0
	t.exceptions = 0
	t.command = command.format(test_file_basename = "scrubbed_ncp_dfs_resource") 
	
	t.run()
	
	t.name = "annofile2log_new_format_annofile"
	t.description = "test new format of annofile"
	t.usebash = True
	t.errors = 0
	t.returncode = 0
	t.exceptions = 0
	t.command = command.format(test_file_basename = "scrubbed_ncp_dfs_resource_new") 
	
	t.run()
	
	t.print_result()
	return t
def run():
	t = SmokeTest()
	t.name =  "resource_once"
	t.description = "Ensure we only generate the resource header once even when there are many languages.  Make sure that the right language (96) is used for the headerfile."
	t.command = "sbs  -b smoke_suite/test_resources/resource/group/simple.inf -c winscw_udeb -m ${SBSMAKEFILE} -f ${SBSLOGFILE}; XX=$?; cat ${SBSLOGFILE}; exit $XX" 
	t.usebash = True
	t.targets = [
		"$(EPOCROOT)/epoc32/include/testresource.hrh",
		"$(EPOCROOT)/epoc32/include/testresource_badef.rh",
		"$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.rsc",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.rsc",
		"$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r37",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r37",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r37",
		"$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r94",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r94",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r94",
		"$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r96",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r96",
		"$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r96",
		"$(EPOCROOT)/epoc32/include/testresource.rsg",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/testresource.exe"
		]
	t.countmatch = [["rcomp.*-h.*rsg.*r96",1],  # must see r96 once
	                ["rcomp.*-h.*rsg",1]]  # must not see any other language
	t.run()

	t.print_result()
	return t
Exemple #8
0
def run():
    t = SmokeTest()
    t.name = "annofile2log_copy_from_log"
    t.description = "test workaround for log corruption from a make engine whose name begins with 'e'"
    command = 'cd smoke_suite/test_resources/annofile2log && ( FROMANNO="`mktemp`" ; bzip2 -dc {test_file_basename}.anno.bz2 ' \
        ' | python testanno2log.py  >"${{FROMANNO}}" && FROMSTDOUT="`mktemp`"; bzip2 -dc {test_file_basename}.stdout.bz2 > ' \
        '"${{FROMSTDOUT}}" && diff -wB "${{FROMANNO}}" "${{FROMSTDOUT}}"; RET=$? ; rm "${{FROMANNO}}" "${{FROMSTDOUT}}"; exit $RET )'

    t.usebash = True
    t.errors = 0
    t.returncode = 0
    t.exceptions = 0
    t.command = command.format(test_file_basename="scrubbed_ncp_dfs_resource")

    t.run()

    t.name = "annofile2log_new_format_annofile"
    t.description = "test new format of annofile"
    t.usebash = True
    t.errors = 0
    t.returncode = 0
    t.exceptions = 0
    t.command = command.format(
        test_file_basename="scrubbed_ncp_dfs_resource_new")

    t.run()

    t.print_result()
    return t
Exemple #9
0
def run():
	t = SmokeTest()
	
	t.id = "71a"
	t.name = "implib_implicit_def"
	t.command = "sbs -b smoke_suite/test_resources/simple_implib/nodef/group/bld.inf" \
			+ " -p implib_implicit_def.mmp"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/lib/implib_implicit_def.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/implib_implicit_def{000a0000}.dso",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/implib_implicit_def.lib"
		]
	t.run()

	t.id = "71b"
	t.name = "implib_no_def"
	t.command = "sbs -b smoke_suite/test_resources/simple_implib/nodef/group/bld.inf" \
			+ " -p implib_no_def.mmp"
	t.targets = []
	t.mustmatch = [
		"No DEF File for IMPLIB target type in"	
		]
	t.errors = 2 # 1 for winscw and 1 for armv5
	t.returncode = 1
	t.run()

	t.id = "71"
	t.name = "implib_nodef"
	t.print_result()

	return t
Exemple #10
0
def run():

	t = SmokeTest()

	# Should have returncode of 1 and output 1 error, but not cause a traceback
	t.returncode = 1
	t.errors = 1
	t.mustmatch = ["sbs: error: Non-ASCII character in argument or command file"]

	result = SmokeTest.PASS

	t.name = "non_ascii_argument"

	t.usebash = True
	# The dash in "-c" is an en dash, not a normal ASCII dash.
	t.command = r'set -x;sbs -b smoke_suite/test_resources/simple_dll/bld.inf `echo -e "\x96"`c armv5'

	t.run()
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL

	t.name = "non_ascii_commandfile"

	t.command = "sbs --command=smoke_suite/test_resources/non_ascii/cmd.txt"

	t.run()
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL

	t.name = "non_ascii"
	t.result = result
	t.print_result()
	return t
Exemple #11
0
def run():
    t = SmokeTest()
    t.name = "resource_once"
    t.description = "Ensure we only generate the resource header once even when there are many languages.  Make sure that the right language (96) is used for the headerfile."
    t.command = "sbs  -b smoke_suite/test_resources/resource/group/simple.inf -c winscw_udeb -m ${SBSMAKEFILE} -f ${SBSLOGFILE}; XX=$?; cat ${SBSLOGFILE}; exit $XX"
    t.usebash = True
    t.targets = [
        "$(EPOCROOT)/epoc32/include/testresource.hrh",
        "$(EPOCROOT)/epoc32/include/testresource_badef.rh",
        "$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.rsc",
        "$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r37",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r37",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r37",
        "$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r94",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r94",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r94",
        "$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r96",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/testresource/testresource.r96",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/testresource/testresource.r96",
        "$(EPOCROOT)/epoc32/include/testresource.rsg",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/testresource.exe"
    ]
    t.countmatch = [
        ["rcomp.*-h.*rsg.*r96", 1],  # must see r96 once
        ["rcomp.*-h.*rsg", 1]
    ]  # must not see any other language
    t.run()

    t.print_result()
    return t
Exemple #12
0
def run():

    t = SmokeTest()

    # Should have returncode of 1 and output 1 error, but not cause a traceback
    t.returncode = 1
    t.errors = 1
    t.mustmatch = [
        "sbs: error: Non-ASCII character in argument or command file"
    ]

    result = SmokeTest.PASS

    t.name = "non_ascii_argument"

    t.usebash = True
    # The dash in "-c" is an en dash, not a normal ASCII dash.
    t.command = r'set -x;sbs -b smoke_suite/test_resources/simple_dll/bld.inf `echo -e "\x96"`c armv5'

    t.run()
    if t.result == SmokeTest.FAIL:
        result = SmokeTest.FAIL

    t.name = "non_ascii_commandfile"

    t.command = "sbs --command=smoke_suite/test_resources/non_ascii/cmd.txt"

    t.run()
    if t.result == SmokeTest.FAIL:
        result = SmokeTest.FAIL

    t.name = "non_ascii"
    t.result = result
    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.usebash = True
	
	t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c arm.v5.udeb.rvct4_0.linkerfeedback -c arm.v5.urel.rvct4_0.linkerfeedback -f-"

	gen_fdb_match = [
		".*armlink.*-o.*epoc32/release/armv5/udeb/createstaticdll.dll.sym.*--feedback=.*createstaticdll_dll/armv5/udeb/createstaticdll_udeb_feedback.fdb.*",
		".*armlink.*-o.*epoc32/release/armv5/urel/createstaticdll.dll.sym.*--feedback=.*createstaticdll_dll/armv5/urel/createstaticdll_urel_feedback.fdb.*"
		]
	use_fdb_match = [
		".*armcc.*--feedback=.*createstaticdll_dll/armv5/udeb/createstaticdll_udeb_feedback.fdb.*test/smoke_suite/test_resources/simple_dll/CreateStaticDLL.cpp.*",
		".*armcc.*--feedback=.*createstaticdll_dll/armv5/urel/createstaticdll_urel_feedback.fdb.*test/smoke_suite/test_resources/simple_dll/CreateStaticDLL.cpp.*"
		]
	
	t.name = "linkerfeedback_initial_build"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll"
		]
	t.addbuildtargets('smoke_suite/test_resources/simple_dll/bld.inf', [
		"createstaticdll_dll/armv5/udeb/createstaticdll_udeb_feedback.fdb",
		"createstaticdll_dll/armv5/urel/createstaticdll_urel_feedback.fdb",
		"createstaticdll_dll/armv5/udeb/CreateStaticDLL.o",
		"createstaticdll_dll/armv5/urel/CreateStaticDLL.o"		
		])
	t.mustmatch_singleline = gen_fdb_match
	t.mustnotmatch_singleline = use_fdb_match
	t.run()
	
	# Note: we neutralise the targets in the following in order to ensure
	# that they aren't cleaned from the initial build
	# Instead we confirm that the "right thing" happens in these next builds
	# in terms of tools calls based on the linker feedback files being present
	# and:
	# (a) newer than the object files (triggering re-compile and re-link)
	# (b) older than the object files (nothing to be done)

	t.name = "linkerfeedback_first_rebuild"
	t.targets = []
	t.mustmatch_singleline = gen_fdb_match + use_fdb_match
	t.mustnotmatch_singleline = []
	t.run()
	
	t.name = "linkerfeedback_second_rebuild"
	t.targets = []
	t.mustmatch_singleline = []
	t.mustnotmatch_singleline = gen_fdb_match + use_fdb_match
	t.run()
	
	t.name = "linkerfeedback"
	t.print_result()
	return t
def run():
    t = SmokeTest()
    t.usebash = True

    t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c arm.v5.udeb.rvct4_0.linkerfeedback -c arm.v5.urel.rvct4_0.linkerfeedback -f-"

    gen_fdb_match = [
        ".*armlink.*-o.*epoc32/release/armv5/udeb/createstaticdll.dll.sym.*--feedback=.*createstaticdll_dll/armv5/udeb/createstaticdll_udeb_feedback.fdb.*",
        ".*armlink.*-o.*epoc32/release/armv5/urel/createstaticdll.dll.sym.*--feedback=.*createstaticdll_dll/armv5/urel/createstaticdll_urel_feedback.fdb.*"
    ]
    use_fdb_match = [
        ".*armcc.*--feedback=.*createstaticdll_dll/armv5/udeb/createstaticdll_udeb_feedback.fdb.*test/smoke_suite/test_resources/simple_dll/CreateStaticDLL.cpp.*",
        ".*armcc.*--feedback=.*createstaticdll_dll/armv5/urel/createstaticdll_urel_feedback.fdb.*test/smoke_suite/test_resources/simple_dll/CreateStaticDLL.cpp.*"
    ]

    t.name = "linkerfeedback_initial_build"
    t.targets = [
        "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll.sym",
        "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll.sym",
        "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/createstaticdll.dll",
        "$(EPOCROOT)/epoc32/release/armv5/urel/createstaticdll.dll"
    ]
    t.addbuildtargets('smoke_suite/test_resources/simple_dll/bld.inf', [
        "createstaticdll_dll/armv5/udeb/createstaticdll_udeb_feedback.fdb",
        "createstaticdll_dll/armv5/urel/createstaticdll_urel_feedback.fdb",
        "createstaticdll_dll/armv5/udeb/CreateStaticDLL.o",
        "createstaticdll_dll/armv5/urel/CreateStaticDLL.o"
    ])
    t.mustmatch_singleline = gen_fdb_match
    t.mustnotmatch_singleline = use_fdb_match
    t.run()

    # Note: we neutralise the targets in the following in order to ensure
    # that they aren't cleaned from the initial build
    # Instead we confirm that the "right thing" happens in these next builds
    # in terms of tools calls based on the linker feedback files being present
    # and:
    # (a) newer than the object files (triggering re-compile and re-link)
    # (b) older than the object files (nothing to be done)

    t.name = "linkerfeedback_first_rebuild"
    t.targets = []
    t.mustmatch_singleline = gen_fdb_match + use_fdb_match
    t.mustnotmatch_singleline = []
    t.run()

    t.name = "linkerfeedback_second_rebuild"
    t.targets = []
    t.mustmatch_singleline = []
    t.mustnotmatch_singleline = gen_fdb_match + use_fdb_match
    t.run()

    t.name = "linkerfeedback"
    t.print_result()
    return t
Exemple #15
0
def run():
    t = SmokeTest()

    command = "sbs -k -b smoke_suite/test_resources/simple/longcompiles.inf -c armv7_urel{variant} -c winscw_udeb{variant} -c arm.v5.urel.gcce4_4_1{variant}"
    talon_warning = ".*Command line length '\d+' exceeds the shell limit on this system of '\d+'.  If this recipe is a compile, try using the '.use_compilation_command_file' variant to reduce overall command line length."
    targets = [
        "$(EPOCROOT)/epoc32/release/armv7/urel/longcompiles.exe",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/longcompiles.exe",
        "$(EPOCROOT)/epoc32/release/armv5/urel/longcompiles.exe",
    ]

    t.name = "longcompile_no_command_file"
    t.description = """
		Confirm OS-specific behaviour on massive compilation command lines.
		On Linux, all should be well, but on Windows the compile will fail
		together with a talon warning with some potentially useful advice.
		"""
    t.command = command.format(variant="")
    if t.onWindows:
        t.targets = []
        t.mustmatch_singleline = [talon_warning]
        t.warnings = 24
        t.errors = 1
        t.returncode = 1
    else:
        t.targets = targets
        t.mustnotmatch_singleline = [talon_warning]
    t.run()

    t.name = "longcompile_command_file"
    t.description = """
		Confirm that a command file is used with the .use_compilation_command_file
		variant, and that the build succeeds on all host OS platforms.
		"""
    t.command = command.format(variant=".use_compilation_command_file")
    t.targets = targets
    t.addbuildtargets(
        "smoke_suite/test_resources/simple/longcompiles.inf",
        [
            "longcompiles_exe/armv7/urel/cc.cmdfile",
            "longcompiles_exe/winscw/udeb/cc.cmdfile",
            "longcompiles_exe/armv5/urel/cc.cmdfile",
        ],
    )
    t.mustmatch_singleline = []
    t.mustnotmatch_singleline = []
    t.warnings = 0
    t.errors = 0
    t.returncode = 0
    t.run()

    t.name = "longcompiles"
    t.print_result()
    return t
Exemple #16
0
def run():
	t = SmokeTest()
	
	command = "sbs -k -b smoke_suite/test_resources/simple/longcompiles.inf -c armv7_urel{variant} -c winscw_udeb{variant} -c arm.v5.urel.gcce4_4_1{variant}"
	talon_warning = ".*Command line length '\d+' exceeds the shell limit on this system of '\d+'.  If this recipe is a compile, try using the '.use_compilation_command_file' variant to reduce overall command line length."
	targets = [
				"$(EPOCROOT)/epoc32/release/armv7/urel/longcompiles.exe",
				"$(EPOCROOT)/epoc32/release/winscw/udeb/longcompiles.exe",
				"$(EPOCROOT)/epoc32/release/armv5/urel/longcompiles.exe"		
		]

	t.name = "longcompile_no_command_file"	
	t.description = """
		Confirm OS-specific behaviour on massive compilation command lines.
		On Linux, all should be well, but on Windows the compile will fail
		together with a talon warning with some potentially useful advice.
		"""			
	t.command = command.format(variant="")
	if t.onWindows:
		t.targets = []
		t.mustmatch_singleline = [talon_warning]
		t.warnings = 24
		t.errors = 1
		t.returncode = 1
	else:	
		t.targets = targets
		t.mustnotmatch_singleline = [talon_warning]
	t.run()
	
	
	t.name = "longcompile_command_file"	
	t.description = """
		Confirm that a command file is used with the .use_compilation_command_file
		variant, and that the build succeeds on all host OS platforms.
		"""
	t.command = command.format(variant=".use_compilation_command_file")
	t.targets = targets
	t.addbuildtargets('smoke_suite/test_resources/simple/longcompiles.inf', [
		"longcompiles_exe/armv7/urel/cc.cmdfile",
		"longcompiles_exe/winscw/udeb/cc.cmdfile",
		"longcompiles_exe/armv5/urel/cc.cmdfile"
		])
	t.mustmatch_singleline = []
	t.mustnotmatch_singleline = []
	t.warnings = 0
	t.errors = 0
	t.returncode = 0
	t.run()
	
	t.name = "longcompiles"
	t.print_result()
	return t
Exemple #17
0
def run():

    t = SmokeTest()
    t.description = """Test the 'expgen' stage with different combinations of
				compiler (RVCT and GCC-E) and elf2e32 version (with and without
				--asm option)."""

    t.usebash = True

    bld_inf = "smoke_suite/test_resources/custom_dll/bld.inf"
    old_elf2e32 = "$(SBS_HOME)/test/smoke_suite/test_resources/custom_dll/elf2e32_old"
    if t.onWindows:
        old_elf2e32 += ".exe"

    # Command templates for using the new and the old version of elf2e32,
    # respectively. The new version supports the --asm option.
    new_cmd = "sbs -b " + bld_inf + " -c {0}"
    old_cmd = "SBS_ELF2E32=" + old_elf2e32 + " " + new_cmd

    t.targets = [
        "$(EPOCROOT)/epoc32/release/armv5/lib/customdll.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/customdll{000a0000}.dso",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/customdll.dll",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/customdll.dll.map",
        "$(EPOCROOT)/epoc32/release/armv5/urel/customdll.dll",
        "$(EPOCROOT)/epoc32/release/armv5/urel/customdll.dll.map"
    ]

    # This ensures that the "expgen" stage is executed for each call to run().
    t.addbuildtargets(bld_inf, [
        "customdll_dll/armv5/customdll{000a0000}.s",
        "customdll_dll/armv5/customdll{000a0000}.exp"
    ])

    t.name = "custom_dll_rvct_new_elf2e32"
    t.command = new_cmd.format("armv5")
    t.run()

    t.name = "custom_dll_rvct_old_elf2e32"
    t.command = old_cmd.format("armv5")
    t.run()

    t.name = "custom_dll_gcce_new_elf2e32"
    t.command = new_cmd.format("gcce_armv5")
    t.run()

    t.name = "custom_dll"
    t.print_result()
    return t
def run():
    t = SmokeTest()
    t.id = "65"
    t.name = "implib_armv5_with_armv5_smp"
    t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf -c " \
      + "armv5 -c armv5.smp LIBRARY"
    # ABIv1 .lib files are not generated on Linux
    t.targets = [
        "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso"
    ]
    t.run()

    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.id = "65"
	t.name = "implib_armv5_with_armv5_smp"
	t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf -c " \
			+ "armv5 -c armv5.smp LIBRARY"
	# ABIv1 .lib files are not generated on Linux
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso"
		]
	t.run()
	
	t.print_result()	
	return t
Exemple #20
0
def run():

	t = SmokeTest()
	t.description = """Test the 'expgen' stage with different combinations of
				compiler (RVCT and GCC-E) and elf2e32 version (with and without
				--asm option)."""

	t.usebash = True

	bld_inf = "smoke_suite/test_resources/custom_dll/bld.inf"
	old_elf2e32 = "$(SBS_HOME)/test/smoke_suite/test_resources/custom_dll/elf2e32_old"
	if t.onWindows:
		old_elf2e32 += ".exe"

	# Command templates for using the new and the old version of elf2e32,
	# respectively. The new version supports the --asm option.
	new_cmd = "sbs -b " + bld_inf + " -c {0}"
	old_cmd = "SBS_ELF2E32=" + old_elf2e32 + " " + new_cmd

	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/lib/customdll.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/customdll{000a0000}.dso",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/customdll.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/customdll.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/customdll.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/customdll.dll.map"
		]

	# This ensures that the "expgen" stage is executed for each call to run().
	t.addbuildtargets(bld_inf, [
		"customdll_dll/armv5/customdll{000a0000}.s",
		"customdll_dll/armv5/customdll{000a0000}.exp"])

	t.name = "custom_dll_rvct_new_elf2e32"
	t.command = new_cmd.format("armv5")
	t.run()

	t.name = "custom_dll_rvct_old_elf2e32"
	t.command = old_cmd.format("armv5")
	t.run()

	t.name = "custom_dll_gcce_new_elf2e32"
	t.command = new_cmd.format("gcce_armv5")
	t.run()

	t.name = "custom_dll"
	t.print_result()
	return t
Exemple #21
0
def run():
    t = SmokeTest()

    rootcommand = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf"
    targets = [
        "$(EPOCROOT)/epoc32/release/armv7/udeb/createstaticdll.dll.sym",
        "$(EPOCROOT)/epoc32/release/armv7/urel/createstaticdll.dll.sym",
        "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
        "$(EPOCROOT)/epoc32/release/armv7/udeb/createstaticdll.dll",
        "$(EPOCROOT)/epoc32/release/armv7/urel/createstaticdll.dll"
    ]
    buildtargets = [
        "createstaticdll_dll/armv7/udeb/CreateStaticDLL.o",
        "createstaticdll_dll/armv7/urel/CreateStaticDLL.o",
        "createstaticdll_dll/armv7/udeb/armv7_specific.o",
        "createstaticdll_dll/armv7/urel/armv7_specific.o"
    ]

    t.id = "0011a"
    t.name = "dll_armv7_rvct"
    t.command = rootcommand + " -c armv7"
    t.targets = targets
    t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf",
                      buildtargets)
    t.run()

    t.id = "0011b"
    t.name = "dll_armv7_clean"
    t.command = rootcommand + " -c armv7 clean"
    t.targets = []
    t.run()

    t.id = "0011c"
    t.name = "dll_armv7_gcce"
    t.command = rootcommand + " -c arm.v7.udeb.gcce4_3_2 -c arm.v7.urel.gcce4_3_2"
    t.targets = targets
    t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf",
                      buildtargets)
    t.run()

    t.id = "11"
    t.name = "dll_armv7"
    t.print_result()
    return t
Exemple #22
0
def run():
    t = SmokeTest()
    t.id = "14"
    t.name = "implib_armv5"
    t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf" \
     + " -c armv5 LIBRARY"
    t.targets = [
        "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso"
    ]
    t.addbuildtargets('smoke_suite/test_resources/simple_implib/bld.inf', [[
        'simple_implib_lib/armv5/udeb/simple_implib.prep',
        'simple_implib_lib/armv5/urel/simple_implib.prep'
    ]])
    t.run()

    t.print_result()
    return t
Exemple #23
0
def run():
	t = SmokeTest()
	t.id = "14"
	t.name = "implib_armv5"
	t.command = "sbs -b smoke_suite/test_resources/simple_implib/bld.inf" \
		+ " -c armv5 LIBRARY"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/simple_implib{000a0000}.dso"
		]
	t.addbuildtargets('smoke_suite/test_resources/simple_implib/bld.inf', [
		['simple_implib_lib/armv5/udeb/simple_implib.prep',
                 'simple_implib_lib/armv5/urel/simple_implib.prep']
	])
	t.run()
	
	t.print_result()	
	return t
Exemple #24
0
def run():
	t = SmokeTest()
	
	t.name = "exported_flm_extension"
	t.command = "sbs -b smoke_suite/test_resources/simple_extension/flm_bld.inf -c armv5"
	t.targets = [
		"$(EPOCROOT)/epoc32/build/flm_test_1_2",
		"$(EPOCROOT)/epoc32/tools/makefile_templates/tools/flm_export.xml",
		"$(EPOCROOT)/epoc32/tools/makefile_templates/tools/flm_export.flm"
		]
	t.run()
	
	t.name = "per_component_flm"
	t.usebash = True
	t.command = "sbs --configpath=test/smoke_suite/test_resources/docs" + \
	            " -b smoke_suite/test_resources/simple_dll/bld.inf" + \
	            " -b smoke_suite/test_resources/simple_lib/bld.inf" + \
	            " -b smoke_suite/test_resources/tools2/bld.inf" + \
	            " -c armv5.documentation -c tools2.documentation -f-"
	t.targets = [         
		"$(EPOCROOT)/epoc32/docs/simple_dll.txt",
		"$(EPOCROOT)/epoc32/docs/CreateStaticDLL.mmp",

		"$(EPOCROOT)/epoc32/docs/simple_lib.txt",
		"$(EPOCROOT)/epoc32/docs/simple.mmp",

		"$(EPOCROOT)/epoc32/docs/tools2.txt",
		"$(EPOCROOT)/epoc32/docs/tool_exe.mmp",
		"$(EPOCROOT)/epoc32/docs/tool_lib1.mmp",
		"$(EPOCROOT)/epoc32/docs/tool_lib2.mmp"
		]
	t.mustmatch = [
		"simple_dll.txt uses " + ReplaceEnvs(t.targets[1]),
		"simple_lib.txt uses " + ReplaceEnvs(t.targets[3]),
		"tools2.txt uses " + ReplaceEnvs(t.targets[5]) + " " + \
		                     ReplaceEnvs(t.targets[6]) + " " + \
		                     ReplaceEnvs(t.targets[7])
		]
	t.run()
		
	t.name = "flm_extension"
	t.print_result()
	return t
def run():
    t = SmokeTest()
    t.description = "Set of tests for commandline option validation e.g. checking that the specified make engine exists"

    t.usebash = True
    t.errors = 1
    t.returncode = 1
    t.exceptions = 0
    base_command = "sbs -b smoke_suite/test_resources/simple/bld.inf -f ${SBSLOGFILE} -m ${SBSMAKEFILE}"

    t.id = "42562a"
    t.name = "validate_makeengine_nonexist"
    t.command = base_command + " -e amakeenginethatdoesnotexist"
    t.mustmatch = [
        "Unable to use make engine: 'amakeenginethatdoesnotexist' does not appear to be a make engine - no settings found for it"
    ]

    t.run()

    t.id = "43562b"
    t.mustmatch = [
        "Unable to use make engine: 'arm' is not a build engine \(it's a variant but it does not extend 'make_engine'"
    ]
    t.name = "validate_makeengine_is_a_non_makengine_variant"
    t.command = base_command + " -e arm"
    t.run()

    # aliases can be of the form name='blah' meaning='x.y.z'  i.e. where the alias is for a sequence of variants
    # this tests that we detect that at least one of these variants has make_engine as a parent
    # it is possible for one of them not to and we mustn't bomb-out just because of that
    t.id = "43562c"
    t.mustmatch = []
    t.name = "validate_real_dfs_modded_makeengine_alias"
    t.command = "export HOME=$SBS_HOME/test/custom_options/dfsconfig;  " + base_command + " -e dfstestmake -c arm.v5.urel.gcce4_4_1"
    t.errors = 0
    t.warnings = 0
    t.returncode = 0
    t.run()

    t.id = "43562"
    t.name = "input_validation"
    t.print_result()
    return t
Exemple #26
0
def run():
	t = SmokeTest()
	
	rootcommand = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf"
	targets = [
		"$(EPOCROOT)/epoc32/release/armv7/udeb/createstaticdll.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv7/urel/createstaticdll.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/createstaticdll{000a0000}.dso",
		"$(EPOCROOT)/epoc32/release/armv7/udeb/createstaticdll.dll",
		"$(EPOCROOT)/epoc32/release/armv7/urel/createstaticdll.dll"
		]
	buildtargets = [
		"createstaticdll_dll/armv7/udeb/CreateStaticDLL.o",
		"createstaticdll_dll/armv7/urel/CreateStaticDLL.o",
		"createstaticdll_dll/armv7/udeb/armv7_specific.o",
		"createstaticdll_dll/armv7/urel/armv7_specific.o"		
	]
	
	t.id = "0011a"
	t.name = "dll_armv7_rvct"
	t.command = rootcommand + " -c armv7"
	t.targets = targets
	t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf", buildtargets)
	t.run()

	t.id = "0011b"
	t.name = "dll_armv7_clean"
	t.command = rootcommand + " -c armv7 clean"
	t.targets = []
	t.run()

	t.id = "0011c"
	t.name = "dll_armv7_gcce"
	t.command = rootcommand + " -c arm.v7.udeb.gcce4_3_2 -c arm.v7.urel.gcce4_3_2"
	t.targets = targets
	t.addbuildtargets("smoke_suite/test_resources/simple_dll/bld.inf", buildtargets)
	t.run()

	t.id = "11"
	t.name = "dll_armv7"
	t.print_result()
	return t
def run():
	t = SmokeTest()
	t.id = "300"
	t.name = "variantplatforms"
	t.description = "Can all the variant platforms be built at the same time."
	
	variantplatforms = ["armv5", "armv6", "armv7", "arm9e"]
	
	t.usebash = True
	t.command = "sbs -b smoke_suite/test_resources/variantplatforms/bld.inf -f-"
	t.mustmatch_singleline = []
	
	for vp in variantplatforms:
		t.command += " -c " + vp
		t.mustmatch_singleline.append("building variant platform " + vp)

	t.run()
	
	t.print_result()
	return t
def run():
    t = SmokeTest()
    t.id = "300"
    t.name = "variantplatforms"
    t.description = "Can all the variant platforms be built at the same time."

    variantplatforms = ["armv5", "armv6", "armv7", "arm9e"]

    t.usebash = True
    t.command = "sbs -b smoke_suite/test_resources/variantplatforms/bld.inf -f-"
    t.mustmatch_singleline = []

    for vp in variantplatforms:
        t.command += " -c " + vp
        t.mustmatch_singleline.append("building variant platform " + vp)

    t.run()

    t.print_result()
    return t
Exemple #29
0
def run():
    t = SmokeTest()

    t.name = "exported_flm_extension"
    t.command = "sbs -b smoke_suite/test_resources/simple_extension/flm_bld.inf -c armv5"
    t.targets = [
        "$(EPOCROOT)/epoc32/build/flm_test_1_2",
        "$(EPOCROOT)/epoc32/tools/makefile_templates/tools/flm_export.xml",
        "$(EPOCROOT)/epoc32/tools/makefile_templates/tools/flm_export.flm"
    ]
    t.run()

    t.name = "per_component_flm"
    t.usebash = True
    t.command = "sbs --configpath=test/smoke_suite/test_resources/docs" + \
                " -b smoke_suite/test_resources/simple_dll/bld.inf" + \
                " -b smoke_suite/test_resources/simple_lib/bld.inf" + \
                " -b smoke_suite/test_resources/tools2/bld.inf" + \
                " -c armv5.documentation -c tools2.documentation -f-"
    t.targets = [
        "$(EPOCROOT)/epoc32/docs/simple_dll.txt",
        "$(EPOCROOT)/epoc32/docs/CreateStaticDLL.mmp",
        "$(EPOCROOT)/epoc32/docs/simple_lib.txt",
        "$(EPOCROOT)/epoc32/docs/simple.mmp",
        "$(EPOCROOT)/epoc32/docs/tools2.txt",
        "$(EPOCROOT)/epoc32/docs/tool_exe.mmp",
        "$(EPOCROOT)/epoc32/docs/tool_lib1.mmp",
        "$(EPOCROOT)/epoc32/docs/tool_lib2.mmp"
    ]
    t.mustmatch = [
     "simple_dll.txt uses " + ReplaceEnvs(t.targets[1]),
     "simple_lib.txt uses " + ReplaceEnvs(t.targets[3]),
     "tools2.txt uses " + ReplaceEnvs(t.targets[5]) + " " + \
                          ReplaceEnvs(t.targets[6]) + " " + \
                          ReplaceEnvs(t.targets[7])
     ]
    t.run()

    t.name = "flm_extension"
    t.print_result()
    return t
def run():
    t = SmokeTest()
    t.description = "Check that ARM toolchain specific macros are used in both metadata and source processing."
    t.warnings = -1

    toolchains = {
        "rvct2_2": ["ARMCC", "ARMCC_2", "ARMCC_2_2", "__ARMCC__", "__ARMCC_2__", "__ARMCC_2_2__"],
        "rvct3_1": ["ARMCC", "ARMCC_3", "ARMCC_3_1", "__ARMCC__", "__ARMCC_3__", "__ARMCC_3_1__"],
        "rvct4_0": ["ARMCC", "ARMCC_4", "ARMCC_4_0", "__ARMCC__", "__ARMCC_4__", "__ARMCC_4_0__"],
        "gcce4_3_2": ["GCCE", "GCCE_4", "GCCE_4_3", "__GCCE__", "__GCCE_4__", "__GCCE_4_3__"],
        "gcce4_3_3": ["GCCE", "GCCE_4", "GCCE_4_3", "__GCCE__", "__GCCE_4__", "__GCCE_4_3__"],
        "gcce4_4_1": ["GCCE", "GCCE_4", "GCCE_4_4", "__GCCE__", "__GCCE_4__", "__GCCE_4_4__"],
    }

    rootname = "toolchain_macros_armv5_%s_%s"
    rootcommand = "sbs -b smoke_suite/test_resources/toolchain_macros/bld.inf -c arm.v5.urel."
    macromatch = ": #warning( directive:)? %s(</warning>)?$"

    count = 0
    for toolchain in sorted(toolchains.keys()):
        t.id = "0095" + string.ascii_lowercase[count]
        t.name = rootname % (toolchain, "clean")
        t.command = rootcommand + toolchain + " clean"
        t.mustmatch_singleline = []
        t.run()
        count += 1

        t.id = "0095" + string.ascii_lowercase[count]
        t.name = rootname % (toolchain, "build")
        t.command = rootcommand + toolchain
        mustmatch = []
        for macro in toolchains[toolchain]:
            mustmatch.append(macromatch % macro)
        t.mustmatch_singleline = mustmatch
        t.run()
        count += 1

    t.id = "95"
    t.name = "toolchain_macros"
    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.name = "make_engine_filenames"
	t.description = "Can we pass the makefilename and stage name to emake options like --annofile etc?"
	
	t.mustmatch = [	".*Executing.*emake.*historyfile=.*default\.history.*",
			".*Executing.*emake.*annofile=.*\.default\.anno.*"]

	t.mustnotmatch = [".*Executing.*emake.*historyfile=.*#STAGE#\.history.*",
			  ".*Executing.*emake.*annofile=#MAKEFILE#\.anno.*"]
	
	t.usebash = True
	t.errors = 1
	t.returncode = 1
	base_command = "sbs generate -b smoke_suite/test_resources/simple/bld.inf -f-"
	
	t.command = base_command + " -e emake --mo=--emake-annofile=#MAKEFILE#.anno --mo=--emake-historyfile=$(EPOCROOT)/epoc32/build/#STAGE#.history -k NOTARGET"
	t.run()
		
	t.print_result()
	return t
Exemple #32
0
def run():
    t = SmokeTest()
    t.name = "environment_native"

    t.description = """Checks that if you set SBS_HOME this is ignored"""

    t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c arm.v5.udeb.gcce4_4_1"
    t.targets = ["$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe"]

    t.environ['SBS_HOME'] = '/does/not/exist'
    t.run()

    if t.onWindows:
        t.name = "environment_cygwin_bash"
        t.usebash = True
        t.description = """Checks that if you set SBS_HOME this is ignored on Cygwin"""
        t.run()

    t.name = "environment"
    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.id = "43563"
	t.name = "annofile2log"
	t.description = "test workaround for log corruption from a make engine whose name begins with 'e'"
	
	t.usebash = True
	t.errors = 0
	t.returncode = 0
	t.exceptions = 0
	t.command = 'cd smoke_suite/test_resources/annofile2log && ( FROMANNO="`mktemp`" ; bzip2 -dc scrubbed_ncp_dfs_resource.anno.bz2 | python testanno2log.py  >"${FROMANNO}" && FROMSTDOUT="`mktemp`"; bzip2 -dc scrubbed_ncp_dfs_resource.stdout.bz2 > "${FROMSTDOUT}" && diff -wB "${FROMANNO}" "${FROMSTDOUT}"; RET=$? ; rm "${FROMANNO}" "${FROMSTDOUT}"; exit $RET )'
	
	t.mustmatch_multiline = [ 
		"^ *.?"
                ]


	t.run()

	t.print_result()
	return t
Exemple #34
0
def run():
    t = SmokeTest()
    t.description = "test that long commands time out and get retried"

    exitCode = "128"

    t.id = "60a"
    t.name = "timeout"
    t.usebash = True
    t.command = "sbs -b smoke_suite/test_resources/timeout/bld.inf -f -"

    t.mustmatch_singleline = [
        "status exit='failed' code='" + exitCode +
        "' attempt='1' reason='timeout'",
    ]
    t.errors = -1
    t.returncode = 1
    t.run()

    t.id = "60b"
    t.name = "timeout with retries"
    t.usebash = True
    t.command = "sbs -b smoke_suite/test_resources/timeout/bld.inf -t 3 -f -"

    t.mustmatch_singleline = [
        "status exit='retry' code='" + exitCode +
        "' attempt='1' reason='timeout'",
        "status exit='retry' code='" + exitCode +
        "' attempt='2' reason='timeout'",
        "status exit='failed' code='" + exitCode +
        "' attempt='3' reason='timeout'",
    ]
    t.errors = -1
    t.returncode = 1
    t.run()

    t.id = "60"
    t.name = "timeout"
    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.id = "84"
	t.name = "xml_invalid_chars"
	t.description = """Tests the validity of XML when output with characters
			not-allowed in XML are sent to the filters
			"""
	t.command = "sbs -b smoke_suite/test_resources/xml_invalid_chars/bld.inf " \
			+ "-c armv5"
	# The warning that causes the invalid characters to appear in the XML log
	t.warnings = 1
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe"
		]
	t.addbuildtargets('smoke_suite/test_resources/xml_invalid_chars/bld.inf', [
		"test_/armv5/urel/test_urel_objects.via",
		"test_/armv5/urel/test.o.d",
		"test_/armv5/urel/test.o",
		"test_/armv5/udeb/test_udeb_objects.via",
		"test_/armv5/udeb/test.o.d",
		"test_/armv5/udeb/test.o"
	])
		
	t.run()
	
	if t.result == SmokeTest.PASS:
		
		print "Testing validity of XML..."
		
		log = "$(EPOCROOT)/epoc32/build/smoketestlogs/xml_invalid_chars.log"
		logfile = open(ReplaceEnvs(log), "r")
		
		try:
			tree = parse(logfile)
		except:
			t.result = SmokeTest.FAIL
	
	t.print_result()
	return t
def run():
	t = SmokeTest()
	t.description = "Set of tests for commandline option validation e.g. checking that the specified make engine exists"
	
	
	t.usebash = True
	t.errors = 1
	t.returncode = 1
	t.exceptions = 0
	base_command = "sbs -b smoke_suite/test_resources/simple/bld.inf -f ${SBSLOGFILE} -m ${SBSMAKEFILE}"
	
	t.id = "42562a"
	t.name = "validate_makeengine_nonexist"
	t.command = base_command + " -e amakeenginethatdoesnotexist"
	t.mustmatch = ["Unable to use make engine: 'amakeenginethatdoesnotexist' does not appear to be a make engine - no settings found for it"]

	t.run()

	t.id = "43562b"
	t.mustmatch = ["Unable to use make engine: 'arm' is not a build engine \(it's a variant but it does not extend 'make_engine'"]
	t.name = "validate_makeengine_is_a_non_makengine_variant"
	t.command = base_command + " -e arm"
	t.run()

	# aliases can be of the form name='blah' meaning='x.y.z'  i.e. where the alias is for a sequence of variants
	# this tests that we detect that at least one of these variants has make_engine as a parent
	# it is possible for one of them not to and we mustn't bomb-out just because of that
	t.id = "43562c"
	t.mustmatch = []
	t.name = "validate_real_dfs_modded_makeengine_alias"
	t.command = "export HOME=$SBS_HOME/test/custom_options/dfsconfig;  " + base_command + " -e dfstestmake -c arm.v5.urel.gcce4_4_1"
	t.errors = 0
	t.warnings = 0
	t.returncode = 0
	t.run()
	
	t.id = "43562"
	t.name = "input_validation"
	t.print_result()
	return t
Exemple #37
0
def run():
    t = SmokeTest()
    t.id = "113"
    t.name = "make_engine_errors"
    t.description = "Errors reported by gmake and emake should be escaped to ensure that the logs are valid XML"

    t.mustmatch_singleline = [
        "Circular b &lt;- a dependency",
        "non_existent_&amp;_needs_escaping.txt"
    ]

    t.mustnotmatch_singleline = [
        "Circular b <- a dependency", "non_existent_&_needs_escaping.txt"
    ]

    t.usebash = True
    t.errors = 1
    t.returncode = 1
    base_command = "sbs --no-depend-generate -b smoke_suite/test_resources/make_engine_errors/bld.inf -f-"

    t.id = "113a"
    t.name = "gmake_engine_errors"
    t.command = base_command + " -e make"
    t.run()

    t.id = "113b"
    t.name = "emake_engine_errors"
    t.command = base_command + " -e emake"
    t.run()

    t.id = "113c"
    t.name = "emake_engine_errors_with_merged_streams"
    t.command = base_command + " -e emake --mo=--emake-mergestreams=1"
    t.run()

    t.id = "113"
    t.name = "make_engine_errors"
    t.print_result()
    return t
def run():
	t = SmokeTest()

	t.name = "sbs_with_nonexisting_bldinf"
	t.description = "Test if sbs generates warning if invoked without bld.inf specified i.e. using default bld.inf which doesn't exist"
	t.command = "mkdir ${EPOCROOT}/emptydir; rm ${EPOCROOT}/emptydir/*;  cd ${EPOCROOT}/emptydir; sbs -f ${SBSLOGFILE} -m {SBSMAKEFILE}"
	t.usebash = True
	t.warnings = 1 
	t.run()
	
	t.name = "sbs_with_nonexisting_bldinf_cli"
	t.description = "Test if sbs generates an error if invoked with a bad -b option"
	t.command = "sbs -b none.inf"
	t.usebash = False
	t.errors = 1
	t.warnings = 0
	t.returncode = 1
	t.mustmatch = ["sbs: error: build info file does not exist \(component .*none.inf\)"] 
	t.run()
	
	t.print_result()
	return t
def run():

    t = SmokeTest()
    t.description = "Tests against log files to ensure it 'does the right thing'"

    t.id = "87a"
    t.name = "terminal_filter_tests_log"
    t.command = "$(SBS_HOME)/test/smoke_suite/test_resources/refilter/testfilterterminal"
    t.countmatch = [
        # One of each type of error occurs early in the 'sbs' call where there
        # is a recipe inside another recipe. Then the errors occur in the
        # opposite order where are 2 closing tags next to each other before 2
        # opening tags appear next to each other
        [
            "sbs: error: Opening recipe tag found before closing recipe tag for previous recipe:",
            2
        ],
        ["Discarding previous recipe \(Possible logfile corruption\)", 2],
        ["sbs: error: Closing recipe tag found before opening recipe tag:", 2],
        ["Unable to print recipe data \(Possible logfile corruption\)", 2]
    ]
    t.errors = 4
    t.run()

    t.id = "87b"
    t.name = "terminal_filter_tests_configs"
    t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf"
    t.countmatch = []
    t.errors = 0
    t.mustmatch_singleline = [
        "built 'armv5_urel'", "built 'armv5_udeb'", "built 'winscw_urel'",
        "built 'winscw_udeb'"
    ]
    t.run()

    t.id = "87"
    t.name = "terminal_filter_tests"
    t.print_result()
    return t
Exemple #40
0
def run():
	t = SmokeTest()
	t.name="environment_native"

	t.description = """Checks that if you set SBS_HOME this is ignored"""
	
	t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c arm.v5.udeb.gcce4_4_1"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe"
		]

	t.environ['SBS_HOME'] = '/does/not/exist'
	t.run()

	if t.onWindows:
		t.name="environment_cygwin_bash"
		t.usebash = True
		t.description = """Checks that if you set SBS_HOME this is ignored on Cygwin"""
		t.run()

	t.name = "environment"
	t.print_result()
	return t
Exemple #41
0
def run():
    t = SmokeTest()
    t.description = "tests that previous crash conditions now generate tidy errors."

    # no crash when there are bld.inf lines starting with a slash
    t.id = "45a"
    t.name = "raptor_crash"
    t.command = "sbs -b smoke_suite/test_resources/simple_crash/bld.inf"
    t.errors = 2
    t.returncode = 1
    t.run()

    # should get an error code when running inside cmd
    t.id = "45b"
    t.name = "error_cmd"
    t.usebash = True
    t.command = "cmd /c sbs -s no_such_thing"
    t.mustmatch = ["System Definition file no_such_thing does not exist"]
    t.errors = 1
    t.returncode = 1
    t.run("windows")

    # should get an error code when running in bash
    t.id = "45c"
    t.name = "error_bash"
    t.usebash = True
    t.command = "sbs -s no_such_thing"
    t.mustmatch = ["System Definition file no_such_thing does not exist"]
    t.errors = 1
    t.returncode = 1
    t.run()

    # print the over all result
    t.id = "45"
    t.name = "raptor_crash"
    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.description = "tests that previous crash conditions now generate tidy errors."
	
	# no crash when there are bld.inf lines starting with a slash	
	t.id = "45a"
	t.name = "raptor_crash"
	t.command = "sbs -b smoke_suite/test_resources/simple_crash/bld.inf"
	t.errors = 2
	t.returncode = 1
	t.run()
	
	# should get an error code when running inside cmd
	t.id = "45b"
	t.name = "error_cmd"
	t.usebash = True
	t.command = "cmd /c sbs -s no_such_thing"
	t.mustmatch = ["System Definition file no_such_thing does not exist"]
	t.errors = 1
	t.returncode = 1
	t.run("windows")
	
	# should get an error code when running in bash
	t.id = "45c"
	t.name = "error_bash"
	t.usebash = True
	t.command = "sbs -s no_such_thing"
	t.mustmatch = ["System Definition file no_such_thing does not exist"]
	t.errors = 1
	t.returncode = 1
	t.run()
	
	# print the over all result
	t.id = "45"
	t.name = "raptor_crash"
	t.print_result()
	return t
def run():

	t = SmokeTest()
	t.description = "Tests against log files to ensure it 'does the right thing'"
	
	t.id = "87a"
	t.name = "terminal_filter_tests_log"
	t.command = "$(SBS_HOME)/test/smoke_suite/test_resources/refilter/testfilterterminal"
	t.countmatch = [
		# One of each type of error occurs early in the 'sbs' call where there
		# is a recipe inside another recipe. Then the errors occur in the
		# opposite order where are 2 closing tags next to each other before 2
		# opening tags appear next to each other
			["sbs: error: Opening recipe tag found before closing recipe tag for previous recipe:", 2],
			["Discarding previous recipe \(Possible logfile corruption\)", 2],
			["sbs: error: Closing recipe tag found before opening recipe tag:", 2],
			["Unable to print recipe data \(Possible logfile corruption\)", 2]
	]
	t.errors = 4
	t.run()
	
	t.id = "87b"
	t.name = "terminal_filter_tests_configs"
	t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf"
	t.countmatch = []
	t.errors = 0
	t.mustmatch_singleline = ["built 'armv5_urel'",
							  "built 'armv5_udeb'",
							  "built 'winscw_urel'",
							  "built 'winscw_udeb'" ]
	t.run()
	
	t.id = "87"
	t.name = "terminal_filter_tests"
	t.print_result()
	return t
Exemple #44
0
def run():
	t = SmokeTest()
	t.description = "test that long commands time out and get retried"
	
	exitCode = "128"

	t.id = "60a"
	t.name = "timeout"
	t.usebash = True
	t.command = "sbs -b smoke_suite/test_resources/timeout/bld.inf -f -"

	t.mustmatch_singleline = [
		"status exit='failed' code='" + exitCode + "' attempt='1' reason='timeout'",
	]
	t.errors = -1
	t.returncode = 1
	t.run()
	
	t.id = "60b"
	t.name = "timeout with retries"
	t.usebash = True
	t.command = "sbs -b smoke_suite/test_resources/timeout/bld.inf -t 3 -f -"

	t.mustmatch_singleline = [
		"status exit='retry' code='" + exitCode + "' attempt='1' reason='timeout'",
		"status exit='retry' code='" + exitCode + "' attempt='2' reason='timeout'",
		"status exit='failed' code='" + exitCode + "' attempt='3' reason='timeout'",
	]
	t.errors = -1
	t.returncode = 1
	t.run()
	
	t.id = "60"
	t.name = "timeout"
	t.print_result()
	return t
def run():
    t = SmokeTest()
    t.name = "xml_invalid_chars"
    t.description = """Tests the validity of XML when output with characters
			not-allowed in XML are sent to the filters
			"""
    t.command = "sbs -b smoke_suite/test_resources/xml_invalid_chars/bld.inf " \
      + "-c armv5"
    # The warning that causes the invalid characters to appear in the XML log
    t.warnings = 1
    t.targets = [
        "$(EPOCROOT)/epoc32/release/armv5/urel/test.exe",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/test.exe"
    ]
    t.addbuildtargets('smoke_suite/test_resources/xml_invalid_chars/bld.inf', [
        "test_/armv5/urel/test_urel_objects.via", "test_/armv5/urel/test.o.d",
        "test_/armv5/urel/test.o", "test_/armv5/udeb/test_udeb_objects.via",
        "test_/armv5/udeb/test.o.d", "test_/armv5/udeb/test.o"
    ])

    t.run()

    if t.result == SmokeTest.PASS:

        log = t.logfile()
        print("Testing validity of XML file {0}".format(log))

        logfile = open(ReplaceEnvs(log), "r")

        try:
            tree = parse(logfile)
        except:
            t.result = SmokeTest.FAIL

    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.id = "58"
	t.name = "lib_versioned"
	t.command = "sbs -b smoke_suite/test_resources/versioned_lib/bld.inf" + \
		    " -b smoke_suite/test_resources/versioned_lib/dllversioning.inf" + \
		    " -c armv5 -c winscw "
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/lib/testver.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/testver{00020000}.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/testver{00030000}.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/version.ed.lib.04.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/version.ed.lib{000a0000}.04.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/versioned.lib.03.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/versioned.lib{000a0000}.03.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib.02.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib01.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib01{000a0000}.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib{000a0000}.02.dso",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/testver.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/testver.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/testver{00020000}.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/testver{00020000}.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/testver.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/testver.dll.sym",
		"$(EPOCROOT)/epoc32/release/armv5/urel/testver{00020000}.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/testver{00020000}.dll.sym",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/version.ed.lib.04.lib",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/versioned.lib.03.lib",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/versionedlib.02.lib",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/versionedlib01.lib"
		]
	t.run()
	
	t.print_result()
	return t
Exemple #47
0
def run():
    t = SmokeTest()
    t.usebash = True

    t.description = "Test that a timing log is created and contains total parse and build durations"

    t.id = "0103b"
    t.name = "timing_on"
    t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf" + \
      " --filters=FilterLogfile,FilterTiming -f ${SBSLOGFILE} && " + \
      "grep progress:duration ${SBSLOGFILE}.timings"
    t.mustmatch = [
        "^<progress:duration object_type='layer' task='parse' key='.*' duration='\d+.\d+' />$",
        "^<progress:duration object_type='layer' task='build' key='.*' duration='\d+.\d+' />$",
        "^<progress:duration object_type='all' task='all' key='all' duration='\d+.\d+' />$"
    ]
    t.mustnotmatch = []
    t.run()

    t.id = "103"
    t.name = "timing"
    t.print_result()

    return t
Exemple #48
0
def run():
    t = SmokeTest()
    t.id = "58"
    t.name = "lib_versioned"
    t.command = "sbs -b smoke_suite/test_resources/versioned_lib/bld.inf" + \
         " -b smoke_suite/test_resources/versioned_lib/dllversioning.inf" + \
         " -c armv5 -c winscw "
    t.targets = [
        "$(EPOCROOT)/epoc32/release/armv5/lib/testver.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/testver{00020000}.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/testver{00030000}.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/version.ed.lib.04.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/version.ed.lib{000a0000}.04.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/versioned.lib.03.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/versioned.lib{000a0000}.03.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib.02.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib01.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib01{000a0000}.dso",
        "$(EPOCROOT)/epoc32/release/armv5/lib/versionedlib{000a0000}.02.dso",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/testver.dll",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/testver.dll.sym",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/testver{00020000}.dll",
        "$(EPOCROOT)/epoc32/release/armv5/udeb/testver{00020000}.dll.sym",
        "$(EPOCROOT)/epoc32/release/armv5/urel/testver.dll",
        "$(EPOCROOT)/epoc32/release/armv5/urel/testver.dll.sym",
        "$(EPOCROOT)/epoc32/release/armv5/urel/testver{00020000}.dll",
        "$(EPOCROOT)/epoc32/release/armv5/urel/testver{00020000}.dll.sym",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/version.ed.lib.04.lib",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/versioned.lib.03.lib",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/versionedlib.02.lib",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/versionedlib01.lib"
    ]
    t.run()

    t.print_result()
    return t
def run():
    t = SmokeTest()

    t.name = "sbs_with_nonexisting_bldinf"
    t.description = "Test if sbs generates warning if invoked without bld.inf specified i.e. using default bld.inf which doesn't exist"
    t.command = "mkdir ${EPOCROOT}/emptydir; rm ${EPOCROOT}/emptydir/*;  cd ${EPOCROOT}/emptydir; sbs -f ${SBSLOGFILE} -m {SBSMAKEFILE}"
    t.usebash = True
    t.warnings = 1
    t.run()

    t.name = "sbs_with_nonexisting_bldinf_cli"
    t.description = "Test if sbs generates an error if invoked with a bad -b option"
    t.command = "sbs -b none.inf"
    t.usebash = False
    t.errors = 1
    t.warnings = 0
    t.returncode = 1
    t.mustmatch = [
        "sbs: error: build info file does not exist \(component .*none.inf\)"
    ]
    t.run()

    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.id = "113"
	t.name = "make_engine_errors"
	t.description = "Errors reported by gmake and emake should be escaped to ensure that the logs are valid XML"
	
	t.mustmatch_singleline = ["Circular b &lt;- a dependency",
							  "non_existent_&amp;_needs_escaping.txt"]
	
	t.mustnotmatch_singleline = ["Circular b <- a dependency",
							     "non_existent_&_needs_escaping.txt"]
	
	t.usebash = True
	t.errors = 1
	t.returncode = 1
	base_command = "sbs --no-depend-generate -b smoke_suite/test_resources/make_engine_errors/bld.inf -f-"
	
	t.id = "113a"
	t.name = "gmake_engine_errors"
	t.command = base_command + " -e make"
	t.run()

	t.id = "113b"
	t.name = "emake_engine_errors"
	t.command = base_command + " -e emake"
	t.run()
	
	t.id = "113c"
	t.name = "emake_engine_errors_with_merged_streams"
	t.command = base_command + " -e emake --mo=--emake-mergestreams=1"
	t.run()
		
	t.id = "113"
	t.name = "make_engine_errors"
	t.print_result()
	return t
Exemple #51
0
def run():
    t = SmokeTest()
    t.logfileOption = lambda: ""
    t.id = "0074a"
    t.name = "configpath"
    t.description = """Test --configpath option for sbs. Specify two remote
			locations and use the variants in those folders along with ones in
			each of the default folders."""

    # the variants here affect compile steps so we only need to see a single compile
    # to know whether the variant is doing its thing or not.
    t.addbuildtargets("smoke_suite/test_resources/simple/bld.inf",
                      ["test_/armv5/udeb/test.o"])

    result = SmokeTest.PASS

    # the extra config folders are
    # smoke_suite/test_resources/configpathtest/v{2,3}
    sbshome = os.environ["SBS_HOME"].replace("\\", "/")

    aFolder = sbshome + "/test/smoke_suite/test_resources/configpathtest/v2"
    bFolder = sbshome + "/test/smoke_suite/test_resources/configpathtest/v3"

    common = "sbs -b smoke_suite/test_resources/simple/bld.inf " + \
      "-c armv5.configpathtest1.configpathtest2.configpathtest3"

    # run the command using the built-in default systemConfig
    t.command = common + " --configpath=" + aFolder + os.pathsep + bFolder + \
      " -f -"

    t.mustmatch = [
        ".*armv5_udeb.configpathtest1.configpathtest2.configpathtest3.*",
        ".*armv5_urel.configpathtest1.configpathtest2.configpathtest3.*",
        ".*Duplicate variant 'configpathtest3'.*", ".*-DTESTPASSED.*",
        ".*-DOSVARIANT95WASAPPLIED.*"
    ]
    t.mustnotmatch = [".*sbs: error: Unknown variant.*", ".*-DTESTFAILED.*"]
    # Duplicate variant is Info not Warn
    t.warnings = 0
    t.run()

    if t.result == SmokeTest.FAIL:
        result = SmokeTest.FAIL

    # run the command again using a systemConfig from $HOME/.sbs_init.xml
    # and the configpath as two separate options.
    t.usebash = True
    homedir = sbshome + "/test/smoke_suite/test_resources/configpathtest/home"
    t.command = "export HOME=" + homedir + "; " + common + \
      " --configpath=" + aFolder + " --configpath=" + bFolder + " -f -"
    t.id = "0074b"
    t.mustmatch = [
        ".*armv5_udeb.configpathtest1.configpathtest2.configpathtest3.*",
        ".*armv5_urel.configpathtest1.configpathtest2.configpathtest3.*",
        ".*Duplicate variant 'configpathtest3'.*"
    ]
    t.mustnotmatch = [".*sbs: error: Unknown variant.*"]
    t.run()

    if t.result == SmokeTest.FAIL:
        result = SmokeTest.FAIL

    # Clean
    t.mustmatch = []
    t.targets = []
    t.id = "0074c"
    t.name = "CLEAN"
    t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5 " + \
      "REALLYCLEAN"
    t.run()  # Does not contribute to results

    t.id = "74"
    t.name = "configpath"
    t.result = result
    t.print_result()
    return t
Exemple #52
0
def run():
	t = SmokeTest()
	t.id = "0092a"
	t.name = "toolcheck"
	t.description = """Test toolcheck works properly, with 3 options: on, off and forced. 
				TOOL1 3 4 and 5 are expected to fail and 2 to pass"""
	result = SmokeTest.PASS
	toolcheckDir = os.environ["SBS_HOME"].replace("\\","/") + "/test/smoke_suite/test_resources/toolcheck"

	# toolcheck ON
	t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -n --configpath=" + toolcheckDir + \
			" -c default.toolcheck --toolcheck=on"
	
	t.mustmatch = [
		".*tool 'TOOLCHECK1' from config 'none' did not return version.*",
		".*tool 'TOOLCHECK3' from config 'none' did not return version.*",
		".*tool 'TOOLCHECK4' from config 'none' did not return version.*",
		".*tool 'TOOLCHECK5' from config 'none' did not return version.*"
		]
	t.mustnotmatch = [
		".*TOOLCHECK2.*",
		".*TOOLCHECK6.*"
		]
	t.errors = 4
	t.returncode = 1
	t.run()
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL

	# toolcheck OFF
	t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -n --configpath=" + toolcheckDir + \
			" -c default.toolcheck --toolcheck=off"

	t.id = "0092b"
	t.mustmatch = []
	t.mustnotmatch = [
		".*TOOLCHECK1.*",
		".*TOOLCHECK3.*",
		".*TOOLCHECK4.*",
		".*TOOLCHECK5.*",
		".*TOOLCHECK6.*"
		]
	t.errors = 0
	t.returncode = 0
	t.run()
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL

	# force toolcheck
	t.command = "sbs -b smoke_suite/test_resources/simple/bld.inf -n --configpath=" + toolcheckDir + \
			" -c default.toolcheck --toolcheck=forced"

	t.id = "0092c"
	t.mustmatch = [
		".*tool 'TOOLCHECK1' from config 'none' did not return version.*",
		".*tool 'TOOLCHECK3' from config 'none' did not return version.*",
		".*tool 'TOOLCHECK4' from config 'none' did not return version.*",
		".*tool 'TOOLCHECK5' from config 'none' did not return version.*"
		]
	t.mustnotmatch = [
		".*TOOLCHECK2.*",
		".*TOOLCHECK6.*"
	]
	t.errors = 4
	t.returncode = 1
	t.run()
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL


	t.id = "0092"
	t.result = result
	t.print_result()
	return t
Exemple #53
0
def run():

    t = SmokeTest()
    t.description = "Test the passing of parameters to log filters"

    command = "sbs -b smoke_suite/test_resources/simple/bld.inf -c armv5_urel --filters="

    # no parameters means count all tags
    t.name = "filter_params_all_tags"
    t.command = command + "FilterTagCounter"
    t.mustmatch_singleline = [
        "^info \d+ \d+", "^whatlog \d+ \d+", "^clean \d+ \d+"
    ]
    t.run()

    # empty parameter lists are valid
    t.name = "filter_params_all_tags2"
    t.command = command + "FilterTagCounter[]"
    t.run()

    # parameters mean report only those tags
    t.name = "filter_params_info"
    t.command = command + "FilterTagCounter[info]"
    t.mustmatch_singleline = ["^info \d+ \d+"]
    t.mustnotmatch_singleline = ["^whatlog \d+ \d+", "^clean \d+ \d+"]
    t.run()

    # multiple parameters are valid
    t.name = "filter_params_info_clean"
    t.command = command + "FilterTagCounter[info,clean]"
    t.mustmatch_singleline = ["^info \d+ \d+", "^clean \d+ \d+"]
    t.mustnotmatch_singleline = ["^whatlog \d+ \d+"]
    t.run()

    # using the same filter with different parameters is valid
    t.name = "filter_params_info_clean2"
    t.command = command + "FilterTagCounter[info],FilterTagCounter[clean]"
    t.run()

    # using the same filter with the same parameters is valid too
    t.name = "filter_params_info_clean3"
    t.command = command + "FilterTagCounter[info,clean],FilterTagCounter[info,clean]"
    t.run()

    # parameters must work with the sbs_filter script as well

    command = "sbs_filter --filters={0} < smoke_suite/test_resources/logexamples/filter_component.log"
    t.logfileOption = lambda: ""
    t.makefileOption = lambda: ""

    # should still work with no parameters
    t.name = "sbs_filter_no_params"
    t.command = command.format("FilterComp")
    t.mustmatch_singleline = []
    t.mustnotmatch_singleline = [
        "[<>]"  # no elements should be printed at all as no bld.inf is selected
    ]
    t.run()

    # should work with an empty parameter list
    t.name = "sbs_filter_no_params2"
    t.command = command.format("FilterComp[]")
    t.run()

    # with a parameter
    t.name = "sbs_filter_one_param"
    t.command = command.format("FilterComp[email]")
    t.stdout = [
        "<error bldinf='y:/src/email/bld.inf'>email error #1</error>",
        "<error bldinf='y:/src/email/bld.inf'>email error #2</error>",
        "<warning bldinf='y:/src/email/bld.inf'>email warning #1</warning>",
        "<warning bldinf='y:/src/email/bld.inf'>email warning #2</warning>",
        "<whatlog bldinf='y:/src/email/bld.inf' config='armv5_urel' mmp='y:/src/email/a.mmp'>",
        "<build>/epoc32/data/email_1</build>",
        "<build>/epoc32/data/email_2</build>", "</whatlog>",
        "<recipe bldinf='y:/src/email/bld.inf' name='dummy'>", "+ make_email",
        "email was made fine", "<status exit='ok'></status>", "</recipe>",
        "<fake bldinf='y:src/email/bld.inf'>", "  <foo>", "   <bar>",
        "     <fb>fb email</fb>", "   </bar>", " </foo>", "</fake>"
    ]
    t.mustmatch_singleline = []
    t.mustnotmatch_singleline = []
    t.warnings = 2
    t.errors = 2
    t.run()

    # with multiple filters
    t.name = "sbs_filter_multi"
    t.command = command.format("FilterComp[txt],FilterTagCounter[file,recipe]")
    t.stdout = []
    t.mustmatch_singleline = ["txt", "^file \d+", "^recipe \d+"]
    t.mustnotmatch_singleline = ["email"]
    t.warnings = 2
    t.errors = 0
    t.run()

    t.name = "filter_params"
    t.print_result()
    return t
def run():
    result = SmokeTest.PASS

    t = SmokeTest()
    t.name = "exe_armv5_winscw_single_file_baseline_build"

    # Build component
    t.command = "sbs -b smoke_suite/test_resources/simple_gui/Bld.inf -c armv5 -c winscw"
    t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [
        "helloworld_exe/helloworld.mbm_bmconvcommands",
        "HelloWorld_exe/HelloWorld_HelloWorld.rsc",
        "HelloWorld_exe/HelloWorld_HelloWorld.rsc.rpp",
        "HelloWorld_exe/HelloWorld_HelloWorld.rsc.d",
        "helloworld_exe/armv5/udeb/HelloWorld_Application.o",
        "helloworld_exe/armv5/udeb/HelloWorld_Application.o.d",
        "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o",
        "helloworld_exe/armv5/udeb/HelloWorld_AppUi.o.d",
        "helloworld_exe/armv5/udeb/HelloWorld_AppView.o",
        "helloworld_exe/armv5/udeb/HelloWorld_AppView.o.d",
        "helloworld_exe/armv5/udeb/HelloWorld_Document.o",
        "helloworld_exe/armv5/udeb/HelloWorld_Document.o.d",
        "helloworld_exe/armv5/udeb/HelloWorld_Main.o",
        "helloworld_exe/armv5/udeb/HelloWorld_Main.o.d",
        "helloworld_exe/armv5/udeb/helloworld_udeb_objects.via",
        "helloworld_exe/armv5/urel/HelloWorld_Application.o",
        "helloworld_exe/armv5/urel/HelloWorld_Application.o.d",
        "helloworld_exe/armv5/urel/HelloWorld_AppUi.o",
        "helloworld_exe/armv5/urel/HelloWorld_AppUi.o.d",
        "helloworld_exe/armv5/urel/HelloWorld_AppView.o",
        "helloworld_exe/armv5/urel/HelloWorld_AppView.o.d",
        "helloworld_exe/armv5/urel/HelloWorld_Document.o",
        "helloworld_exe/armv5/urel/HelloWorld_Document.o.d",
        "helloworld_exe/armv5/urel/HelloWorld_Main.o",
        "helloworld_exe/armv5/urel/HelloWorld_Main.o.d",
        "helloworld_exe/armv5/urel/helloworld_urel_objects.via",
        "helloworld_exe/winscw/udeb/helloworld.UID.CPP",
        "helloworld_exe/winscw/udeb/HelloWorld_Application.dep",
        "helloworld_exe/winscw/udeb/HelloWorld_Application.o",
        "helloworld_exe/winscw/udeb/HelloWorld_Application.o.d",
        "helloworld_exe/winscw/udeb/HelloWorld_AppUi.dep",
        "helloworld_exe/winscw/udeb/HelloWorld_AppUi.o",
        "helloworld_exe/winscw/udeb/HelloWorld_AppUi.o.d",
        "helloworld_exe/winscw/udeb/HelloWorld_AppView.dep",
        "helloworld_exe/winscw/udeb/HelloWorld_AppView.o",
        "helloworld_exe/winscw/udeb/HelloWorld_AppView.o.d",
        "helloworld_exe/winscw/udeb/HelloWorld_Document.dep",
        "helloworld_exe/winscw/udeb/HelloWorld_Document.o",
        "helloworld_exe/winscw/udeb/HelloWorld_Document.o.d",
        "helloworld_exe/winscw/udeb/HelloWorld_Main.dep",
        "helloworld_exe/winscw/udeb/HelloWorld_Main.o",
        "helloworld_exe/winscw/udeb/HelloWorld_Main.o.d",
        "helloworld_exe/winscw/udeb/helloworld_udeb_objects.lrf",
        "helloworld_exe/winscw/udeb/helloworld_UID_.dep",
        "helloworld_exe/winscw/udeb/helloworld_UID_.o",
        "helloworld_exe/winscw/udeb/helloworld_UID_.o.d",
        "helloworld_exe/winscw/urel/helloworld.UID.CPP",
        "helloworld_exe/winscw/urel/HelloWorld_Application.dep",
        "helloworld_exe/winscw/urel/HelloWorld_Application.o",
        "helloworld_exe/winscw/urel/HelloWorld_Application.o.d",
        "helloworld_exe/winscw/urel/HelloWorld_AppUi.dep",
        "helloworld_exe/winscw/urel/HelloWorld_AppUi.o",
        "helloworld_exe/winscw/urel/HelloWorld_AppUi.o.d",
        "helloworld_exe/winscw/urel/HelloWorld_AppView.dep",
        "helloworld_exe/winscw/urel/HelloWorld_AppView.o",
        "helloworld_exe/winscw/urel/HelloWorld_AppView.o.d",
        "helloworld_exe/winscw/urel/HelloWorld_Document.dep",
        "helloworld_exe/winscw/urel/HelloWorld_Document.o",
        "helloworld_exe/winscw/urel/HelloWorld_Document.o.d",
        "helloworld_exe/winscw/urel/HelloWorld_Main.dep",
        "helloworld_exe/winscw/urel/HelloWorld_Main.o",
        "helloworld_exe/winscw/urel/HelloWorld_Main.o.d",
        "helloworld_exe/winscw/urel/helloworld_UID_.dep",
        "helloworld_exe/winscw/urel/helloworld_UID_.o",
        "helloworld_exe/winscw/urel/helloworld_UID_.o.d",
        "helloworld_exe/winscw/urel/helloworld_urel_objects.lrf",
        "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc",
        "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.rpp",
        "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d"
    ])
    t.run()

    # Ensure we don't clean up from the previous build in any subsequent runs
    t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [])
    t.targets = []
    t.usebash = True

    # Touch both a straight source and a resource file and confirm we can recompile in isolation without additional impact
    t.name = "exe_armv5_winscw_single_file_touch_rebuild"
    t.command = """
		sleep 1
		touch smoke_suite/test_resources/simple_gui/HelloWorld_Document.cpp
		touch smoke_suite/test_resources/simple_gui/HelloWorld.rss
		sbs -f - --source-target=smoke_suite/test_resources/simple_gui/HelloWorld_Document.cpp --source-target=smoke_suite/test_resources/simple_gui/HelloWorld.rss -b smoke_suite/test_resources/simple_gui/Bld.inf"""
    t.countmatch = [[".*recipe name='resource(dependencies|compile)'", 2],
                    [".*recipe name='compile'.*", 2],
                    [".*recipe name='win32compile2object'.*", 2]]
    t.mustnotmatch = [".*recipe name='(win32simplelink|postlink|link)'.*"]
    t.run()

    # Attempt separate source and resource file compile where nothing should be done
    t.name = "exe_armv5_winscw_single_file_notouch_rebuild"
    t.command = "sbs -f - --source-target=smoke_suite/test_resources/simple_gui/HelloWorld_Document.cpp --source-target=smoke_suite/test_resources/simple_gui/HelloWorld.rss -b smoke_suite/test_resources/simple_gui/Bld.inf"
    t.mustmatch = []
    t.countmatch = [[".*make.*Nothing to be done for.*SOURCETARGET_.*", 10]]
    t.mustnotmatch = [
        ".*recipe name='(resourcecompile|win32compile2object|compile|win32simplelink|postlink|link)'.*"
    ]
    t.run()

    t.name = "exe_armv5_winscw_single_file"
    t.description = """Builds a component and tests single file compilation for straight source and resource files"""
    t.print_result()
    return t
Exemple #55
0
def run():
    t = SmokeTest()
    t.name = "resource"
    t.command = "sbs  -b smoke_suite/test_resources/simple_gui/Bld.inf RESOURCE"
    t.targets = [
        "$(EPOCROOT)/epoc32/data/z/resource/apps/helloworld.mbm",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/helloworld.mbm",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/helloworld.mbm",
        "$(EPOCROOT)/epoc32/include/HelloWorld.rsg",
        "$(EPOCROOT)/epoc32/data/z/resource/apps/HelloWorld.rsc",
        "$(EPOCROOT)/epoc32/data/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.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/private/10003a3f/apps/HelloWorld_reg.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/private/10003a3f/apps/HelloWorld_reg.rsc"
    ]

    t.addbuildtargets('smoke_suite/test_resources/simple_gui/Bld.inf', [
        "helloworld_exe/helloworld.mbm_bmconvcommands",
        "HelloWorld_exe/HelloWorld_HelloWorld.rsc.rpp",
        "HelloWorld_exe/HelloWorld_HelloWorld.rsc.d",
        "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.rpp",
        "HelloWorld_reg_exe/HelloWorld_reg_HelloWorld_reg.rsc.d"
    ])

    t.mustnotmatch = ["HelloWorld.rss.* warning: trigraph"]

    t.run()

    t.name = "no_depend_gen_resource"
    t.usebash = True
    t.description = """Check that dependent resources still build correctly even when we turn dependency generation off.  This
			    test cannot really do this reliably, if you think about it, since it can't force make to try building resources
			    in the 'wrong' order.  What it does attempt is to check that 
			    the ultimately generated dependency file is ok.
			    N.B.  It also attempts to ensure that the dependency file is 'minimal'  i.e. that it only references .mbg and .rsg files
			    that might come from other parts of the same build.  This is important for performance in situations where --no-depend-generate
			    is used because the weight of 'complete' dependency information would overwhelm make.
			 """
    buildLocation = ReplaceEnvs(
        "$(EPOCROOT)/epoc32/build/") + BldInfFile.outputPathFragment(
            'smoke_suite/test_resources/resource/group/bld.inf')
    res_depfile = buildLocation + "/dependentresource_/dependentresource_dependentresource.rsc.d"

    t.targets = [
        "$(EPOCROOT)/epoc32/data/z/resource/anotherresource/testresource.r01",
        "$(EPOCROOT)/epoc32/data/z/resource/anotherresource/testresource.rsc",
        "$(EPOCROOT)/epoc32/data/z/resource/dependentresource/dependentresource.rsc",
        "$(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.r01",
        "$(EPOCROOT)/epoc32/include/testresource.hrh",
        "$(EPOCROOT)/epoc32/include/testresource.rsg",
        "$(EPOCROOT)/epoc32/include/onelang.rsg",
        "$(EPOCROOT)/epoc32/release/armv5/urel/testresource.exe",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/anotherresource/testresource.r01",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/anotherresource/testresource.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/dependentresource/dependentresource.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/anotherresource/testresource.r01",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/anotherresource/testresource.rsc",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/dependentresource/dependentresource.rsc",
        res_depfile
    ]

    t.addbuildtargets('smoke_suite/test_resources/resource/group/bld.inf', [
        "dependentresource_/dependentresource_dependentresource.rsc",
        "testresource_/testresource_dependentresource.r01",
        "testresource_/testresource_dependentresource.rsc",
        "testheader_/testheader_testresource_sc.rsg.d",
        "testheader_/testheader_testresource_sc.rsg.rpp",
        "testresource_/testresource_testresource.r02.rpp",
        "onelang_/onelang_onelang_sc.rsg.rpp",
        "testresource_/testresource_testresource.rsc.rpp"
    ])

    t.command = "sbs -b smoke_suite/test_resources/resource/group/bld.inf  -c armv5_urel -c winscw_urel reallyclean ; sbs --no-depend-generate -j 16 -b smoke_suite/test_resources/resource/group/bld.inf -c armv5_urel -c winscw_urel -f ${{SBSLOGFILE}} -m ${{SBSMAKEFILE}} && grep 'epoc32.include.test[^ ]*.rsg' {0} && {{ X=`md5sum $(EPOCROOT)/epoc32/release/winscw/urel/z/resource/anotherresource/testresource.rsc` && Y=`md5sum $(EPOCROOT)/epoc32/data/z/resource/testresource/testresource.rsc` && [ \"${{X%% *}}\" != \"${{Y%% *}}\" ] ; }}  && wc -l {1} ".format(
        res_depfile, res_depfile)

    t.mustnotmatch = []

    t.mustmatch = [
        "[23] .*.dependentresource_.dependentresource_dependentresource.rsc.d"
    ]

    t.run()

    t.name = "resource_corner_cases_reallyclean"
    t.usebash = True
    t.description = """ Additional corner cases for resources:
						 1) Use of "TARGETTYPE none" but not "TARGET" mmp keyword.
						 2) Use of a resource with no LANG. """

    t.targets = []

    t.command = "sbs -b smoke_suite/test_resources/resource/group/bld2.inf -c armv5_urel -c winscw_urel reallyclean"
    t.mustnotmatch = []
    t.mustmatch = []
    t.run()

    t.name = "resource_corner_cases"
    t.usebash = True
    t.description = """ Additional corner cases for resources:
						 1) Use of "TARGETTYPE none" but not "TARGET" mmp keyword.
						 2) Use of a resource with no LANG. """

    buildLocation = ReplaceEnvs(
        "$(EPOCROOT)/epoc32/build/") + BldInfFile.outputPathFragment(
            'smoke_suite/test_resources/resource/group/bld2.inf')
    rsc_file = buildLocation + "/testresource_/testresource_testresource.rsc"

    t.targets = [
        "$(EPOCROOT)/epoc32/data/z/resource/apps/notargetkeyword.mbm",
        "$(EPOCROOT)/epoc32/release/winscw/udeb/z/resource/apps/notargetkeyword.mbm",
        "$(EPOCROOT)/epoc32/release/winscw/urel/z/resource/apps/notargetkeyword.mbm",
        rsc_file
    ]

    t.command = "sbs -b smoke_suite/test_resources/resource/group/bld2.inf -c armv5_urel -c winscw_urel"
    t.mustnotmatch = []
    t.mustmatch = []
    t.run()

    t.name = "resource_rsg_casefolding_fail"
    t.command = "sbs -b smoke_suite/test_resources/resource/rsg_casefolding/bld.inf RESOURCE"
    t.targets = []

    t.warnings = 1
    t.errors = 3
    t.returncode = 1
    t.run("linux")

    t.name = "resource_rsg_casefolding_pass"
    t.command = "sbs -b smoke_suite/test_resources/resource/rsg_casefolding/bld.inf --use-rsg-casefolding RESOURCE"
    t.targets = []

    t.warnings = 0
    t.errors = 0
    t.returncode = 0
    t.run("linux")

    t.name = 'resource'
    t.print_result()
    return t
def run():
	t = SmokeTest()
	t.description = "This testcase tests all mmp keywords including new implementation of 'paged/unpaged code/data'"
	t.usebash = True
	
	t.id = "75a"
	t.name = "mmp_1"
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp1/group/bld.inf -c armv5 -f-"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/shutdownsrv.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/shutdownsrv.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/shutdownsrv.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/shutdownsrv.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/lib/exportlibrary_shutdownsrv.dso",
		"$(EPOCROOT)/epoc32/release/armv5/lib/exportlibrary_shutdownsrv{000a0000}.dso",
	]
	t.addbuildtargets("smoke_suite/test_resources/mmp/mmp1/group/bld.inf", [
		"shutdownsrv_dll/armv5/udeb/shutdownsrv.o",
		"shutdownsrv_dll/armv5/urel/shutdownsrv.o",
		"shutdownsrv_dll/armv5/udeb/shutdownsrvpatchdata.o",
		"shutdownsrv_dll/armv5/urel/shutdownsrvpatchdata.o",
		"shutdownsrv_dll/armv5/udeb/shutdowntimer.o",
		"shutdownsrv_dll/armv5/urel/shutdowntimer.o"
		])
	t.mustmatch = [
		".*elf2e32.*(--defaultpaged|--codepaging=default.*--datapaging=default).*",
		".*armlink.*--verbose.*"
	]
	t.run()

	t.id = "75b"
	t.name = "mmp_2"
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp2/group/bld.inf -c armv5 -f-"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/imageprocessorperf.lib",
		"$(EPOCROOT)/epoc32/release/armv5/urel/imageprocessorperf.lib"		
	]
	t.addbuildtargets("smoke_suite/test_resources/mmp/mmp2/group/bld.inf", [
		"imageprocessorperf_lib/armv5/udeb/ColorConverter.o",
		"imageprocessorperf_lib/armv5/urel/ColorConverter.o",
		"imageprocessorperf_lib/armv5/udeb/ImageProcessor.o",
		"imageprocessorperf_lib/armv5/urel/ImageProcessor.o"
		])
	t.mustmatch = [
		".*armcc.*-O0.*-g.*--cpu 6.*-Otime.*",
		".*armcc.*-O3.*--cpu 6.*-Otime.*",
		".*OPTION ARMASM has no effect.*",
		".*OPTION_REPLACE ARMASM has no effect.*"
	]
	t.mustnotmatch = [
		".*armcc.*--export_all_vtbl.*"
	]
	t.warnings = 2
	t.run()
	
	t.id = "75c"
	t.name = "mmp_3"
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp3/bld.inf -c armv5 -c winscw -f-"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/tbm.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/tbm.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/tbm.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/tbm.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/t_oom.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/t_oom.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/t_oom.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/t_oom.exe.map",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/dfpaeabi_vfpv2.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/dfpaeabi_vfpv2.dll.map",
		"$(EPOCROOT)/epoc32/release/armv5/urel/dfpaeabi_vfpv2.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/dfpaeabi_vfpv2.dll.map",
		"$(EPOCROOT)/epoc32/release/winscw/urel/t_oom.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/t_oom.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/t_oom.exe"
		]
	t.addbuildtargets("smoke_suite/test_resources/mmp/mmp3/bld.inf", [
		"tbm_exe/armv5/udeb/tbm.o",
		"tbm_exe/armv5/urel/tbm.o",
		"t_oom_exe/armv5/udeb/t_oom.o",
		"t_oom_exe/armv5/urel/t_oom.o",
		"dfpaeabi_vfpv2_dll/armv5/udeb/dfpaeabi.o",
		"dfpaeabi_vfpv2_dll/armv5/urel/dfpaeabi.o",
		"t_oom_exe/winscw/udeb/t_oom.o",
		"t_oom_exe/winscw/udeb/t_oom_UID_.o",
		"t_oom_exe/winscw/urel/t_oom.o",
		"t_oom_exe/winscw/urel/t_oom_UID_.o"
		])
	t.mustmatch = [
		".*armlink.*udeb/eexe.lib.*-o.*armv5/udeb/t_oom.exe.sym.*euser.dso.*efsrv.dso.*estor.dso.*euser.dso.*",
		".*armlink.*urel/eexe.lib.*-o.*armv5/urel/t_oom.exe.sym.*euser.dso.*efsrv.dso.*euser.dso.*",
		".*mwldsym2.*udeb/eexe.lib.*euser.lib.*efsrv.lib.*estor.lib.*euser.lib.*-o.*winscw/udeb/t_oom.exe.*",
		".*mwldsym2.*urel/eexe.lib.*euser.lib.*efsrv.lib.*euser.lib.*-o.*winscw/urel/t_oom.exe.*"
		]
	t.mustnotmatch = []
	t.warnings = 0
	t.run()
	
	t.id = "75d"
	t.name = "mmp_4"
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp4/group/bld.inf -c winscw"
	t.targets = [			
		"$(EPOCROOT)/epoc32/release/winscw/udeb/d_newldd.ldd",
		"$(EPOCROOT)/epoc32/release/winscw/urel/d_newldd.ldd",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/d_lddturnaroundtimertest.ldd",
		"$(EPOCROOT)/epoc32/release/winscw/urel/d_lddturnaroundtimertest.ldd",
		"$(EPOCROOT)/epoc32/release/winscw/urel/d_lddturnaroundtimertest.ldd.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/t_sharedio3.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/t_sharedio3.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/t_sharedio3.exe.map",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/t_rbuf.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/t_rbuf.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/t_rbuf.exe.map"
		]
	t.addbuildtargets("smoke_suite/test_resources/mmp/mmp4/group/bld.inf", [
		"d_newldd_ldd/winscw/udeb/d_newldd.o",
		"d_newldd_ldd/winscw/udeb/d_newldd.UID.CPP",
		"d_newldd_ldd/winscw/udeb/d_newldd_UID_.o",
		"d_newldd_ldd/winscw/urel/d_newldd.o",
		"d_newldd_ldd/winscw/urel/d_newldd.UID.CPP",
		"d_newldd_ldd/winscw/urel/d_newldd_UID_.o",
		"d_newldd_ldd/winscw/udeb/t_new_classes.o",
		"d_newldd_ldd/winscw/urel/t_new_classes.o",
		"d_lddturnaroundtimertest_ldd/winscw/udeb/d_lddturnaroundtimertest.o",
		"d_lddturnaroundtimertest_ldd/winscw/udeb/d_lddturnaroundtimertest.UID.CPP",
		"d_lddturnaroundtimertest_ldd/winscw/udeb/d_lddturnaroundtimertest_UID_.o",
		"d_lddturnaroundtimertest_ldd/winscw/urel/d_lddturnaroundtimertest.o",
		"d_lddturnaroundtimertest_ldd/winscw/urel/d_lddturnaroundtimertest.UID.CPP",
		"d_lddturnaroundtimertest_ldd/winscw/urel/d_lddturnaroundtimertest_UID_.o",
		"t_sharedio3_exe/winscw/udeb/t_sharedio.o",
		"t_sharedio3_exe/winscw/udeb/t_sharedio3.UID.CPP",
		"t_sharedio3_exe/winscw/udeb/t_sharedio3_UID_.o",
		"t_sharedio3_exe/winscw/urel/t_sharedio.o",
		"t_sharedio3_exe/winscw/urel/t_sharedio3.UID.CPP",
		"t_sharedio3_exe/winscw/urel/t_sharedio3_UID_.o",
		"t_rbuf_exe/winscw/udeb/t_rbuf.o",
		"t_rbuf_exe/winscw/udeb/t_rbuf.UID.CPP",
		"t_rbuf_exe/winscw/udeb/t_rbuf_UID_.o",
		"t_rbuf_exe/winscw/urel/t_rbuf.o",
		"t_rbuf_exe/winscw/urel/t_rbuf.UID.CPP",
		"t_rbuf_exe/winscw/urel/t_rbuf_UID_.o"
		])
	t.mustmatch = []
	t.run()
	
	# Test keywords: version, firstlib, nocompresstarget
	t.id = "75e"
	t.name = "mmp_5"
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp5/bld.inf -c armv5"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/fuzzv5.exe",
		"$(EPOCROOT)/epoc32/release/armv5/urel/fuzzv5.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/fuzzlib.lib",
		"$(EPOCROOT)/epoc32/release/armv5/urel/fuzzlib.lib"
		]
	t.addbuildtargets("smoke_suite/test_resources/mmp/mmp5/bld.inf", [
		"fuzzv5_exe/armv5/udeb/fuzzv5.o",
		"fuzzv5_exe/armv5/urel/fuzzv5.o",
		"fuzzlib_lib/armv5/udeb/uc_exe_.cpp",
		"fuzzlib_lib/armv5/urel/uc_exe_.cpp",
		"fuzzlib_lib/armv5/udeb/uc_exe_.o",
		"fuzzlib_lib/armv5/urel/uc_exe_.o",
		])
	t.run()

	t.id = "75f"
	t.name = "mmp_6"
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp6_7/bld.inf -c armv5 -k -p diagsuppress.mmp -f-"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/udeb/diagsuppress_test.dll",
		"$(EPOCROOT)/epoc32/release/armv5/urel/diagsuppress_test.dll",
		]
	t.mustmatch = [
					"--diag_suppress 6780",
					"--diag_suppress 6331"
					]
	t.run()
	
	t.id = "75g"
	t.name = "mmp_7"
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp6_7/bld.inf -c armv5 -k -p diagsuppress_noarmlibs.mmp -f-"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/urel/diagsuppress_noarmlibs_test.dll",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/diagsuppress_noarmlibs_test.dll"
		]
	t.mustmatch = ["--diag_suppress 6331"]
	t.mustnotmatch = ["--diag_suppress 6780"]
	t.run()

	# Test keyword: version
	t.id = "75h"
	t.name = "mmp_8"
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp8/bld.inf"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/urel/test_mmp_version.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/test_mmp_version.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/test_mmp_version.exe",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/test_mmp_version.exe"
		]
	t.mustmatch = []
	t.mustnotmatch = []
	t.warnings = 2
	t.run()

	# Test keyword: armfpu softvfp|vfpv2
	# Both armv5 RVCT (9a+b) and GCCE (10) builds, as they differ in behaviour.
	t.id = "75i"
	t.name = "mmp_9a"
	t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -p armfpu_soft.mmp -c armv5_urel -f-"			
	t.targets = []
	t.mustmatch = ["--fpu softvfp", "--fpu=softvfp"]
	t.mustnotmatch = ["--fpu vfpv2", "--fpu softvfp\+", "--fpu=vfpv2", "--fpu=softvfp\+"]
	t.warnings = 0
	t.run()
		
	t.id = "75j"
	t.name = "mmp_9b"
	t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -c armv5_urel REALLYCLEAN &&" \
			+ " sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -p armfpu_vfpv2.mmp -c armv5_urel -f-"

	t.mustmatch = ["--fpu vfpv2", "--fpu=vfpv2"]
	t.mustnotmatch = ["--fpu softvfp", "--fpu=softvfp"]	
	t.run()
	
	t.id = "75ja"
	t.name = "mmp_9c"
	t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -c armv5_urel REALLYCLEAN &&" \
			+ " sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -p \"armfpu_soft+vfpv2.mmp\" -c armv5_urel -f-"

	t.mustmatch = ["--fpu softvfp\+vfpv2", "--fpu=vfpv2"]
	t.mustnotmatch = ["--fpu vfpv2", "--fpu softvfp ", "--fpu=softvfp"]
	t.run()

	t.id = "75k"
	t.name = "mmp_10"
	t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf  -c armv5_urel_gcce4_3_2 REALLYCLEAN &&" \
			+ " sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp9_10/bld.inf -c armv5_urel_gcce4_3_2 -f-"
	t.countmatch = [
		["-mfloat-abi=soft", 3],
		["--fpu=softvfp", 3] # gcce doesn't vary according to ARMFPU currently
	]
	t.mustmatch = []
	t.mustnotmatch = ["--fpu=vfpv2", "--fpu=softvfp\+"]
	t.run()
	
	# Test keywords: compresstarget, nocompresstarget, bytepaircompresstarget, inflatecompresstarget
	t.id = "75l"
	t.name = "mmp_11"
	t.command = "sbs -b $(SBS_HOME)/test/smoke_suite/test_resources/mmp/mmp11/bld.inf -c armv5_urel -f-"
	t.mustmatch_singleline = [
		"elf2e32.*--output.*\/compress\.exe.*--compressionmethod=inflate",
		"elf2e32.*--output.*\/nocompress\.exe.*--uncompressed",
		"elf2e32.*--output.*\/bytepaircompress\.exe.*--compressionmethod=bytepair",
		"elf2e32.*--output.*\/inflatecompress\.exe.*--compressionmethod=inflate",
		"elf2e32.*--output.*\/combinedcompress\.exe.*--compressionmethod=bytepair",		
		"COMPRESSTARGET keyword in .*combinedcompresstarget.mmp overrides earlier use of NOCOMPRESSTARGET",
		"INFLATECOMPRESSTARGET keyword in .*combinedcompresstarget.mmp overrides earlier use of COMPRESSTARGET",
		"BYTEPAIRCOMPRESSTARGET keyword in .*combinedcompresstarget.mmp overrides earlier use of INFLATECOMPRESSTARGET"
	]
	t.countmatch = []
	t.mustnotmatch = []
	t.warnings = 3
	t.run()

	# Test keyword: APPLY
	t.id = "75m"
	t.name = "apply"
	t.command = "sbs -b smoke_suite/test_resources/mmp/apply/bld.inf -f- -k --configpath=test/config"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/armv5/urel/test_mmp_apply.exe",
		"$(EPOCROOT)/epoc32/release/armv5/udeb/test_mmp_apply.exe",
		"$(EPOCROOT)/epoc32/release/winscw/urel/test_mmp_apply.exe",
		"$(EPOCROOT)/epoc32/release/winscw/udeb/test_mmp_apply.exe"
		]
	t.mustmatch_singleline = ["-DAPPLYTESTEXPORTEDVAR",
	                          "-DAPPLYTESTAPPENDCDEFS"]
	t.countmatch = [["<error.*APPLY unknown variant 'no_such_var'", 2]]
	t.errors = 2 # no_such_var for armv5 and winscw
	t.warnings = 0
	t.returncode = 1
	t.run()

	# Test keyword: EPOCNESTEDEXCEPTIONS
	t.id = "75n"
	t.name = "epocnestedexceptions"
	t.command = "sbs -b smoke_suite/test_resources/mmp/epocnestedexceptions/bld.inf -c armv5_udeb -f-"

	# When EPOCNESTEDEXCEPTIONS is specified in the MMP file, a different static
	# run-time library should be used.
	t.mustmatch_singleline = ["usrt_nx_\d_\d\.lib"]
	t.mustnotmatch = ["usrt._.."]

	t.countmatch = []

	# The new static run-time libraries don't yet exist.
	t.errors = 1
	t.warnings = 1
	t.targets = []

	t.run()
	
	# Test keyword: DOCUMENT
	t.id = "75o"
	t.name = "mmp_keyword_document"
	# Note: in t.command, the makefile is cat'd through sed to remove the .DEFAULT double-colon rule's <warning> tag to ensure that t.run succeeds.
	t.command = "sbs -b smoke_suite/test_resources/mmp/mmp1/group/bld.inf -c armv5 reallyclean; " + \
				"sbs -b smoke_suite/test_resources/mmp/mmp1/group/bld.inf --no-depend-generate -c armv5_urel -m ${SBSMAKEFILE}; " + \
				"cat ${SBSMAKEFILE}_all.default"
	
	t.mustmatch_singleline = ["DOCUMENT:=.*test/smoke_suite/test_resources/mmp/mmp1/src/file01\.txt\\s+.*test/smoke_suite/test_resources/mmp/mmp1/src/file02\.txt"]
	t.mustnotmatch = []
	t.countmatch = []
	
	t.errors = 0
	t.warnings = 0
	t.returncode = 0
	t.targets = []
	
	t.run()
	
	t.id = "75"
	t.name = "mmp_keywords"
	t.print_result()
	return t
Exemple #57
0
def run():
	result = SmokeTest.PASS
	
	t = SmokeTest()
	t.id = "0057a"
	t.name = "gccxml"
	t.usebash = True
	t.command = "sbs -b smoke_suite/test_resources/simple_gui/bld.inf " + \
			"-c gccxml_urel -m ${SBSMAKEFILE} -f ${SBSLOGFILE} && " + \
			"grep -o 'gcc.*-fpermissive' ${SBSLOGFILE}"
	t.targets = [
		"$(EPOCROOT)/epoc32/release/gccxml/includeheaders.txt",
		"$(EPOCROOT)/epoc32/release/gccxml/urel/helloworldexe.gxp"
		]
	t.addbuildtargets('smoke_suite/test_resources/simple_gui/bld.inf', [
		"helloworld_exe/gccxml/HelloWorld.mmp.xml",
		"helloworld_exe/helloworld_HelloWorld.rsc.d",
		"helloworld_exe/gccxml/HelloWorld.rss.rfi",
		"helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.d",
		"helloworld_exe/gccxml/HelloWorld_reg.rss.rfi",
		"helloworld_exe/gccxml/urel/HelloWorld_Application.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_Application.xml",
		"helloworld_exe/gccxml/urel/HelloWorld_AppUi.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_AppUi.xml",
		"helloworld_exe/gccxml/urel/HelloWorld_AppView.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_AppView.xml",
		"helloworld_exe/gccxml/urel/HelloWorld_Document.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_Document.xml",
		"helloworld_exe/gccxml/urel/HelloWorld_Main.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_Main.xml"
	])
	t.mustmatch = [
		".*gcc.*-fpermissive.*"
	]
	# Windows-only until formal delivery of a Linux version of gccxml_cc1plus
	t.run("windows")
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL
	elif t.result == SmokeTest.SKIP:
		return t
	
	
	t = AntiTargetSmokeTest()
	t.id = "0057b"
	t.name = "gccxml_reallyclean"
	t.command = "sbs -b smoke_suite/test_resources/simple_gui/bld.inf " + \
			"-c gccxml_urel REALLYCLEAN"
	t.antitargets = ["$(EPOCROOT)/epoc32/release/gccxml/urel/helloworldexe.gxp"]
	t.addbuildantitargets('smoke_suite/test_resources/simple_gui/bld.inf', [
		"helloworld_exe/gccxml/HelloWorld.mmp.xml",
		"helloworld_exe/helloworld_HelloWorld.rsc.d",
		"helloworld_exe/gccxml/HelloWorld.rss.rfi",
		"helloworld_reg_exe/helloworld_reg_HelloWorld_reg.rsc.d",
		"helloworld_exe/gccxml/HelloWorld_reg.rss.rfi",
		"helloworld_exe/gccxml/urel/HelloWorld_Application.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_Application.xml",
		"helloworld_exe/gccxml/urel/HelloWorld_AppUi.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_AppUi.xml",
		"helloworld_exe/gccxml/urel/HelloWorld_AppView.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_AppView.xml",
		"helloworld_exe/gccxml/urel/HelloWorld_Document.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_Document.xml",
		"helloworld_exe/gccxml/urel/HelloWorld_Main.xml.d",
		"helloworld_exe/gccxml/urel/HelloWorld_Main.xml"
	])
	t.run("windows")
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL
		
		
	t = SmokeTest()
	t.id = "0057c"
	t.name = "gccxml_var2"
	t.command = "sbs -b smoke_suite/test_resources/simple_gui/BldVar2.inf " + \
			"-c gccxml_urel -f -"
	
	# Don't allow -m or -f to be appended
	t.logfileOption = lambda :""
	t.makefileOption = lambda :""
	
	t.mustmatch = [".*__KERNEL_MODE__.*"]
	t.errors = 1 # not really VAR2 code, so it wont build cleanly
	t.returncode = 1
	t.run("windows")
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL
		
		
	t = SmokeTest()
	t.id = "0057d"
	t.name = "gccxml_stdcpp"
	t.command = "sbs -b smoke_suite/test_resources/simple_gui/Bld_stdcpp.inf " + \
			"-c gccxml_urel -f -"
	
	# Don't allow -m or -f to be appended
	t.logfileOption = lambda :""
	t.makefileOption = lambda :""
	
	t.mustmatch = [".*__SYMBIAN_STDCPP_SUPPORT__.*"]
	t.errors = 0 # reset after previous run
	t.run("windows")
	if t.result == SmokeTest.FAIL:
		result = SmokeTest.FAIL
	
		
	t.id = "57"
	t.name = "gccxml"
	t.result = result
	t.print_result()
	return t
Exemple #58
0
def run():
	t = SmokeTest()
	t.name = "dll_armv5_winscw_freeze"
	t.description = """Builds a component with unfrozen exports from clean,
		followed by a FREEZE, a further CLEAN and then a check that new .def
		files are present. The PERL environment variable is set to the absolute
		Perl path in order to test a known issue with the execution of tools
		such as efreeze under Cygwin when multiple arguments are listed.
		Part b tests whether removing an export works when using the variant;
		remove_freeze"""
	t.usebash = True
	
	perl_location = where("perl")
	
	t.command = """
sbs -b smoke_suite/test_resources/unfrozen/freeze.inf -p unfrozensymbols_for_freeze.mmp -c armv5 -c winscw CLEAN > /dev/null &&
export PERL="{0}" &&
sbs -b smoke_suite/test_resources/unfrozen/freeze.inf -p unfrozensymbols_for_freeze.mmp -c armv5 -c winscw > /dev/null &&
sbs -b smoke_suite/test_resources/unfrozen/freeze.inf -p unfrozensymbols_for_freeze.mmp -c armv5_urel -c winscw_urel FREEZE -m ${{SBSMAKEFILE}} -f ${{SBSLOGFILE}}
""".format(perl_location)

	t.targets = [
		"smoke_suite/test_resources/unfrozen/frozen/bwins/frozenu.def",
		"smoke_suite/test_resources/unfrozen/frozen/eabi/frozenu.def"		
		]

	t.warnings = 2	
	t.run()
	
	
	t.name = "armv5_re-freeze_with_removed_export"
	
	t.command = "sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
			" -p frozen_with_removed_export.mmp -c armv5_urel ;" \
			" sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
			" -p frozen_with_removed_export.mmp FREEZE" \
			" -c armv5_urel.remove_freeze" \
			" -m ${SBSMAKEFILE} -f ${SBSLOGFILE} &&" \
			" grep -ir '_ZN10CMessenger11ShowMessageEv @ 1 NONAME ABSENT' $(SBS_HOME)/test/smoke_suite/test_resources/unfrozen/frozen/eabi/frozenu.def"
			
	t.targets = []
	t.mustmatch = [
		"_ZN10CMessenger11ShowMessageEv @ 1 NONAME ABSENT"
	]
	t.warnings = 0
	t.errors = 1
			
	t.run()
	
	
	t.name = "winscw_re-freeze_with_removed_export"
	
	t.command = "sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
			" -p frozen_with_removed_export.mmp -c winscw_urel ;" \
			" sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
			" -p frozen_with_removed_export.mmp FREEZE" \
			" -c winscw_urel.remove_freeze" \
			" -m ${SBSMAKEFILE} -f ${SBSLOGFILE} &&" \
			" grep -ir '?ShowMessage@CMessenger@@QAEXXZ @ 3 NONAME ABSENT' $(SBS_HOME)/test/smoke_suite/test_resources/unfrozen/frozen/bwins/frozenu.def"

	t.mustmatch = [
		"\?ShowMessage@CMessenger@@QAEXXZ @ 3 NONAME ABSENT"
	]
			
	t.run()
	

	t.name = "efreeze_info"
	
	t.command = "sbs -b smoke_suite/test_resources/unfrozen/freeze.inf" \
			+ " -p unfrozensymbols_for_freeze.mmp -c winscw freeze"
			
	t.mustmatch = [
		"EFREEZE: DEF file up to date"
	]
	t.warnings = 0
	t.errors = 0
			
	t.run()


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