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() 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
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
def run(): t = SmokeTest() t.name = "slim_debug" t.description = """Exercise the slim_debug variant, checking that command line arguments are applied selectively.""" t.usebash = True t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c armv5.slimdebug -f-" 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.o", "createstaticdll_dll/armv5/urel/CreateStaticDLL.o" ]) t.mustnotmatch_singleline = [ "\+.*armcc.*--no_debug_macros --remove_unneeded_entities.*--DNDEBUG" ] t.mustmatch_singleline = [ "\+.*armcc.*--no_debug_macros --remove_unneeded_entities.*-D_DEBUG" ] t.run() return t
def run(): t = SmokeTest() t.name = "slim_debug" t.description = """Exercise the slim_debug variant, checking that command line arguments are applied selectively.""" t.usebash = True t.command = "sbs -b smoke_suite/test_resources/simple_dll/bld.inf -c armv5.slimdebug -f-" 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.o", "createstaticdll_dll/armv5/urel/CreateStaticDLL.o" ]) t.mustnotmatch_singleline = ["\+.*armcc.*--no_debug_macros --remove_unneeded_entities.*--DNDEBUG"] t.mustmatch_singleline = ["\+.*armcc.*--no_debug_macros --remove_unneeded_entities.*-D_DEBUG"] t.run() 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 <- a dependency", "non_existent_&_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.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 <- a dependency", "non_existent_&_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.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(): 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=%s < 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 % "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 % "FilterComp[]" t.run() # with a parameter t.name = "sbs_filter_one_param" t.command = command % "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 % "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(): t = SmokeTest() t.id = "51a" t.name = "tools2_exe_lib" t.command = "sbs -b smoke_suite/test_resources/tools2/bld.inf -c tools2" t.targets = [ "$(EPOCROOT)/epoc32/release/tools2/deb/libtool_lib1.a", "$(EPOCROOT)/epoc32/release/tools2/deb/libtool_lib2.a", "$(EPOCROOT)/epoc32/release/tools2/deb/tool_exe.exe", "$(EPOCROOT)/epoc32/release/tools2/rel/libtool_lib1.a", "$(EPOCROOT)/epoc32/release/tools2/rel/libtool_lib2.a", "$(EPOCROOT)/epoc32/release/tools2/rel/tool_exe.exe", "$(EPOCROOT)/epoc32/tools/tool_exe.exe", ] t.addbuildtargets( "smoke_suite/test_resources/tools2/bld.inf", [ "libtool_lib1_a/libtool_lib1_lib/tools2/rel/tool_lib1_b.o", "libtool_lib1_a/libtool_lib1_lib/tools2/rel/tool_lib1_a.o", "libtool_lib2_a/libtool_lib2_lib/tools2/rel/tool_lib2_b.o", "libtool_lib2_a/libtool_lib2_lib/tools2/rel/tool_lib2_a.o", "libtool_lib1_a/libtool_lib1_lib/tools2/deb/tool_lib1_b.o", "libtool_lib1_a/libtool_lib1_lib/tools2/deb/tool_lib1_a.o", "libtool_lib2_a/libtool_lib2_lib/tools2/deb/tool_lib2_a.o", "libtool_lib2_a/libtool_lib2_lib/tools2/deb/tool_lib2_b.o", "tool_exe_exe/tool_exe_exe/tools2/rel/tool_exe_a.o", "tool_exe_exe/tool_exe_exe/tools2/rel/tool_exe_b.o", "tool_exe_exe/tool_exe_exe/tools2/deb/tool_exe_b.o", "tool_exe_exe/tool_exe_exe/tools2/deb/tool_exe_a.o", ], ) t.run("windows") # tools2 output is platform dependent if t.result == SmokeTest.SKIP: t.targets = [ "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/tool_exe", "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/libtool_lib1.a", "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/deb/libtool_lib2.a", "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/tool_exe", "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/libtool_lib1.a", "$(EPOCROOT)/epoc32/release/tools2/$(HOSTPLATFORM_DIR)/rel/libtool_lib2.a", "$(EPOCROOT)/epoc32/tools/tool_exe", ] t.addbuildtargets( "smoke_suite/test_resources/tools2/bld.inf", [ "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib1_b.o", "libtool_lib1_a/libtool_lib1_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib1_a.o", "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib2_b.o", "libtool_lib2_a/libtool_lib2_lib/tools2/rel/$(HOSTPLATFORM_DIR)/tool_lib2_a.o", "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib1_b.o", "libtool_lib1_a/libtool_lib1_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib1_a.o", "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib2_a.o", "libtool_lib2_a/libtool_lib2_lib/tools2/deb/$(HOSTPLATFORM_DIR)/tool_lib2_b.o", "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM_DIR)/tool_exe_a.o", "tool_exe_exe/tool_exe_exe/tools2/rel/$(HOSTPLATFORM_DIR)/tool_exe_b.o", "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM_DIR)/tool_exe_b.o", "tool_exe_exe/tool_exe_exe/tools2/deb/$(HOSTPLATFORM_DIR)/tool_exe_a.o", ], ) t.run("linux") # tools2 output is platform dependent t.id = "51b" t.name = "tools2_nohrh" t.usebash = True t.command = "sbs -b smoke_suite/test_resources/tools2/bootstrap.inf -c tools2.nohrh -f -" t.targets = ["$(EPOCROOT)/epoc32/include/bootstrap_header_abc.h"] t.mustmatch_singleline = ["empty\.hrh"] t.mustnotmatch_singleline = ["Symbian_OS.hrh", "symbian_os.hrh", "feature_settings.hrh"] t.run() t.id = "51" t.name = "tools2" t.print_result() return t