1import os 2import sys 3import subprocess 4import argparse 5import test_utils 6import logging 7import time 8import atexit 9from test_color_formats import run_color_format_tests 10from test_resources_edit import run_resources_edit_tests 11from test_add_widget import run_add_widget_tests 12from test_toolbar import run_toolbar_tests 13from test_copy_paste import run_copy_paste_tests 14from test_copy_paste_between_projects import run_copy_paste_between_projects_tests 15from test_copy_paste_color import run_copy_paste_color_tests 16from test_copy_paste_multi import run_copy_paste_multi_tests 17from test_font import run_font_tests 18from test_multi_themes import run_multi_themes_tests 19from test_scroll_wheel_widget import run_scroll_wheel_widget_tests 20from test_menu_widget import run_menu_widget_tests 21from test_project_import import run_project_import_tests 22from test_trigger_edit import run_trigger_edit_tests 23from test_bidi_text import run_bidi_text_tests 24from test_undo import run_undo_tests 25from test_lock_unlock_widget_pos import run_lock_unlock_widget_pos_tests 26from test_widget_name import run_widget_name_tests 27from test_app_run import run_app_tests 28from test_text_input_text_set import run_text_input_text_set_tests 29from test_pixelmap_edit import run_pixelmap_edit_tests 30from test_radial_slider_widget import run_radial_slider_widget_tests 31from test_project_display_configure import run_project_display_configure_tests 32from test_string_import_export import run_string_import_export_tests 33from test_template import run_template_tests 34from test_synergy_setting import run_synergy_setting_tests 35from test_trigger_target_rename import run_trigger_target_rename_tests 36from test_theme_edit import run_theme_edit_tests 37from test_language_edit import run_language_edit_tests 38from test_guix_lib_version_set import run_guix_lib_version_set_tests 39from test_rich_text_view import run_rich_text_view_tests 40from test_sprite import run_sprite_tests 41from test_gauge import run_gauge_tests 42from test_ml_view import run_ml_view_tests 43from test_generic_scroll_wheel import run_generic_scroll_wheel_tests 44from test_unique_bidi_text_reference_check import run_unique_bidi_text_reference_check_tests 45from test_range_check import run_range_check_tests 46from test_list_resize import run_list_resize_tests 47from test_kerning_flag import run_kerning_flag_tests 48from test_resource_xml import run_resource_xml_tests 49try: 50 from junit_xml import TestSuite 51except ImportError: 52 print("junit_xml module not found. Please install it by running 'pip install junit_xml' if you want to generate JUnit XML report.") 53 54def exit_handler(): 55 test_utils.close_project() 56 test_utils.close_window("main_frame") 57 test_utils.delete_temp_files() 58 59atexit.register(exit_handler) 60 61def output_file_header(): 62 logging.info("*****************************************************") 63 logging.info("* Studio application usage/view test *") 64 logging.info("* *") 65 logging.info("* *") 66 logging.info("*****************************************************") 67 logging.info(" Test date: %s", time.asctime()) 68 logging.info(" Test directory: %s", os.getcwd()) 69 70def __main__(): 71 72 Format = '%(message)s' 73 logging.basicConfig(stream=test_utils.test_log_stream, level=logging.DEBUG, format=Format) 74 75 msbuild_exe_path = "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/MSBuild.exe" 76 project_sln_path = "../../../guix_studio/build/vs_2019/studiox.sln" 77 78 parser = argparse.ArgumentParser(description = "Test Studio UI") 79 parser.add_argument('-b', action='store_true', dest='build_studio', help='Build Studio') 80 parser.add_argument('-c', action='store_true', dest='run_color_format_tests', help = 'Run color format tests') 81 parser.add_argument('--resources_edit', action='store_true', dest='run_resources_edit_tests', help = 'Run resources edit tests') 82 parser.add_argument('-w', action='store_true', dest='run_widget_tests', help = 'Run Widget tests') 83 parser.add_argument('--menu_widget', action='store_true', dest='run_menu_widget_tests', help = 'Run menu widget tests') 84 parser.add_argument('--project_import', action='store_true', dest='run_project_import_tests', help = 'Run project import tests') 85 parser.add_argument('--scroll_wheel_widget', action='store_true', dest='run_scroll_wheel_widget_tests', help = 'Run scroll wheel widget tests') 86 parser.add_argument('-t', action='store_true', dest='run_toolbar_tests', help = 'Run toolbar tests') 87 parser.add_argument('-g', action='store_true', dest='generate', help = 'Generate golden files') 88 parser.add_argument('-s', action='store_true', dest="screenshot", help = "Generate canvas screen shot") 89 parser.add_argument('-p', action='store_true', dest='run_copy_paste_tests', help = 'Run copy/paste tests') 90 parser.add_argument('--copy_paste_between_projects', action='store_true', dest='run_copy_paste_between_projects_tests', help = 'Run copy/paste between projects tests') 91 parser.add_argument('--copy_paste_color', action='store_true', dest='run_copy_paste_color_tests', help = 'Run copy/paste color tests') 92 parser.add_argument('--copy_paste_multi', action='store_true', dest='run_copy_paste_multi_tests', help = 'Run copy/paste multi tests') 93 parser.add_argument('-f', action='store_true', dest='run_font_tests', help = 'Run font tests') 94 parser.add_argument('-m', action='store_true', dest='run_multi_themes_tests', help = 'Run Multi-Themes Tests') 95 parser.add_argument('--trigger_edit', action='store_true', dest='run_trigger_edit_tests', help = 'Run trigger edit tests') 96 parser.add_argument('--trigger_target_rename', action='store_true', dest='run_trigger_target_rename_tests', help = 'Run trigger target rename tests') 97 parser.add_argument('--bidi_text', action='store_true', dest='run_bidi_text_tests', help = 'Run bidi text') 98 parser.add_argument('-u', action='store_true', dest='run_undo_tests', help = 'Run undo tests') 99 parser.add_argument('--lock_unlock_widget_pos', action='store_true', dest='run_lock_unlock_widget_pos_tests', help='Run lock/unlock widget pos tests') 100 parser.add_argument('--widget_name', action='store_true', dest='run_widget_name_tests', help = 'Run widget name tests') 101 parser.add_argument('--run_app', action='store_true', dest='run_app_tests', help='Run app tests') 102 parser.add_argument('--input_text_set', action='store_true', dest='run_text_input_text_set_tests', help = 'Run text input text set tests') 103 parser.add_argument('--pixelmap_edit', action='store_true', dest='run_pixelmap_edit_tests', help='Run pixelmap edit tests') 104 parser.add_argument('--radial_slider_widget', action='store_true', dest='run_radial_slider_widget_tests', help='Run radial slider widget tests') 105 parser.add_argument('--display_configure', action='store_true', dest='run_project_display_configure_tests', help='Run project display configure tests') 106 parser.add_argument('--string_import_export', action='store_true', dest='run_string_import_export_tests', help='Run string import export tests') 107 parser.add_argument('--template', action='store_true', dest='run_template_tests', help='Run template tests') 108 parser.add_argument('--synergy_setting', action='store_true', dest='run_synergy_setting_tests', help='Run synergy setting tests') 109 parser.add_argument('--theme_edit', action='store_true', dest='run_theme_edit_tests', help='Run theme edit tests') 110 parser.add_argument('--language_edit', action='store_true', dest='run_language_edit_tests', help='Run language edit tests') 111 parser.add_argument('--guix_lib_version', action='store_true', dest='run_guix_lib_version_set_tests', help='Run Guix Lib Version Set Tests') 112 parser.add_argument('--rich_text_view', action='store_true', dest='run_rich_text_view_tests', help='Run Rich Text View Tests') 113 parser.add_argument('--sprite', action='store_true', dest='run_sprite_tests', help='Run Sprite Tests') 114 parser.add_argument('--gauge', action='store_true', dest='run_gauge_tests', help='Run Gauge Tests') 115 parser.add_argument('--ml_view', action='store_true', dest='run_ml_view_tests', help='Run Multi Line Text View Tests') 116 parser.add_argument('--generic_scroll_wheel', action='store_true', dest='run_generic_scroll_wheel_tests', help='Run Generic Scroll Wheel Tests') 117 parser.add_argument('--unique_bidi_text_reference', action='store_true', dest='run_unique_bidi_text_reference_check_tests', help='Run Unique Bidi-Text Reference Check Tests') 118 parser.add_argument('--range_check', action='store_true', dest='run_range_check_tests', help='Run Range Check Tests') 119 parser.add_argument('--list_resize', action='store_true', dest='run_list_resize_tests', help='Run List Resize Tests') 120 parser.add_argument('--kerning_flag', action='store_true', dest='run_kerning_flag_tests', help='Run Kerning Flag Tests') 121 parser.add_argument('--resource_xml', action='store_true', dest='run_resource_xml_tests', help='Run Resource XML Tests') 122 parser.add_argument('--output_junit', action='store_true', dest='output_junit', help='Output JUnit XML file') 123 args = parser.parse_args() 124 125 # if the user doesn't specify tests to run, then run them all: 126 if (args.run_color_format_tests is False and 127 args.run_resources_edit_tests is False and 128 args.run_widget_tests is False and 129 args.run_scroll_wheel_widget_tests is False and 130 args.run_menu_widget_tests is False and 131 args.run_toolbar_tests is False and 132 args.run_copy_paste_tests is False and 133 args.run_copy_paste_between_projects_tests is False and 134 args.run_font_tests is False and 135 args.run_multi_themes_tests is False and 136 args.run_project_import_tests is False and 137 args.run_copy_paste_color_tests is False and 138 args.run_copy_paste_multi_tests is False and 139 args.run_trigger_edit_tests is False and 140 args.run_trigger_target_rename_tests is False and 141 args.run_bidi_text_tests is False and 142 args.run_undo_tests is False and 143 args.run_lock_unlock_widget_pos_tests is False and 144 args.run_widget_name_tests is False and 145 args.run_app_tests is False and 146 args.run_widget_name_tests is False and 147 args.run_text_input_text_set_tests is False and 148 args.run_pixelmap_edit_tests is False and 149 args.run_radial_slider_widget_tests is False and 150 args.run_project_display_configure_tests is False and 151 args.run_string_import_export_tests is False and 152 args.run_template_tests is False and 153 args.run_synergy_setting_tests is False and 154 args.run_theme_edit_tests is False and 155 args.run_language_edit_tests is False and 156 args.run_guix_lib_version_set_tests is False and 157 args.run_rich_text_view_tests is False and 158 args.run_sprite_tests is False and 159 args.run_gauge_tests is False and 160 args.run_ml_view_tests is False and 161 args.run_generic_scroll_wheel_tests is False and 162 args.run_unique_bidi_text_reference_check_tests is False and 163 args.run_range_check_tests is False and 164 args.run_list_resize_tests is False and 165 args.run_kerning_flag_tests is False and 166 args.run_resource_xml_tests is False): 167 args.run_color_format_tests = True 168 args.run_resources_edit_tests = True 169 args.run_widget_tests = True 170 args.run_scroll_wheel_widget_tests = True 171 args.run_menu_widget_tests = True 172 args.run_toolbar_tests = True 173 args.run_copy_paste_tests = True 174 args.run_copy_paste_between_projects_tests = True 175 args.run_font_tests = True 176 args.run_multi_themes_tests = True 177 args.run_project_import_tests = True 178 args.run_copy_paste_color_tests = True 179 args.run_copy_paste_multi_tests = True 180 args.run_trigger_edit_tests = True 181 args.run_trigger_target_rename_tests = True 182 args.run_bidi_text_tests = True 183 args.run_undo_tests = True 184 args.run_lock_unlock_widget_pos_tests = True 185 args.run_widget_name_tests = True 186 args.run_app_tests = True 187 args.run_text_input_text_set_tests = True 188 args.run_pixelmap_edit_tests = True 189 args.run_radial_slider_widget_tests= True 190 args.run_project_display_configure_tests = True 191 args.run_string_import_export_tests = True 192 args.run_template_tests = True 193 args.run_synergy_setting_tests = True 194 args.run_theme_edit_tests = True 195 args.run_language_edit_tests = True 196 args.run_guix_lib_version_set_tests = True 197 args.run_rich_text_view_tests = True 198 args.run_sprite_tests = True 199 args.run_gauge_tests = True 200 args.run_ml_view_tests = True 201 args.run_generic_scroll_wheel_tests = True 202 args.run_unique_bidi_text_reference_check_tests = True 203 args.run_range_check_tests = True 204 args.run_list_resize_tests = True 205 args.run_kerning_flag_tests = True 206 args.run_resource_xml_tests = True 207 208 output_file_header() 209 210 if args.build_studio: 211 test_utils.studio_compile(msbuild_exe_path, project_sln_path) 212 213 time_start = time.time() 214 if not test_utils.find_studio_handles(): 215 test_utils.run_studio() 216 while not test_utils.find_studio_handles(): 217 interval = time.time() - time_start 218 if interval > 300: 219 raise Exception("Unable to start and find Studio application") 220 break 221 222 test_utils.read_constants() 223 224 if args.output_junit is True: 225 test_utils.test_log_xml = open("studio_view_test_log.xml", "w") 226 227 test_utils.test_log_txt = open("studio_view_test_log.txt", "w") 228 test_utils.test_log_txt.write(test_utils.test_log_stream.getvalue()) 229 230 #test_utils.clean_up() 231 #run tests 232 233 if args.run_app_tests is True: 234 run_app_tests(args.generate, args.screenshot) 235 236 if args.run_color_format_tests is True: 237 run_color_format_tests(args.generate, args.screenshot) 238 239 if args.run_resources_edit_tests is True: 240 run_resources_edit_tests(args.generate, args.screenshot) 241 242 if args.run_widget_tests is True: 243 run_add_widget_tests(args.generate, args.screenshot) 244 245 if args.run_scroll_wheel_widget_tests is True: 246 run_scroll_wheel_widget_tests(args.generate, args.screenshot) 247 248 if args.run_menu_widget_tests is True: 249 run_menu_widget_tests(args.generate, args.screenshot) 250 251 if args.run_toolbar_tests is True: 252 run_toolbar_tests(args.generate, args.screenshot) 253 254 if args.run_copy_paste_tests is True: 255 run_copy_paste_tests(args.generate, args.screenshot) 256 257 if args.run_copy_paste_between_projects_tests is True: 258 run_copy_paste_between_projects_tests(args.generate, args.screenshot) 259 260 if args.run_copy_paste_color_tests is True: 261 run_copy_paste_color_tests(args.generate, args.screenshot) 262 263 if args.run_copy_paste_multi_tests is True: 264 run_copy_paste_multi_tests(args.generate, args.screenshot) 265 266 if args.run_font_tests is True: 267 run_font_tests(args.generate, args.screenshot) 268 269 if args.run_multi_themes_tests is True: 270 run_multi_themes_tests(args.generate, args.screenshot) 271 272 if args.run_project_import_tests is True: 273 run_project_import_tests(args.generate, args.screenshot) 274 275 if args.run_trigger_edit_tests is True: 276 run_trigger_edit_tests(args.generate, args.screenshot) 277 278 if args.run_trigger_target_rename_tests is True: 279 run_trigger_target_rename_tests(args.generate, args.screenshot) 280 281 if args.run_bidi_text_tests is True: 282 run_bidi_text_tests(args.generate, args.screenshot) 283 284 if args.run_undo_tests is True: 285 run_undo_tests(args.generate, args.screenshot) 286 287 if args.run_lock_unlock_widget_pos_tests is True: 288 run_lock_unlock_widget_pos_tests(args.generate, args.screenshot) 289 290 if args.run_widget_name_tests is True: 291 run_widget_name_tests(args.generate, args.screenshot) 292 293 if args.run_text_input_text_set_tests is True: 294 run_text_input_text_set_tests(args.generate, args.screenshot) 295 296 if args.run_pixelmap_edit_tests is True: 297 run_pixelmap_edit_tests(args.generate, args.screenshot) 298 299 if args.run_radial_slider_widget_tests is True: 300 run_radial_slider_widget_tests(args.generate, args.screenshot) 301 302 if args.run_project_display_configure_tests is True: 303 run_project_display_configure_tests(args.generate, args.screenshot) 304 305 if args.run_string_import_export_tests is True: 306 run_string_import_export_tests(args.generate, args.screenshot) 307 308 if args.run_template_tests is True: 309 run_template_tests(args.generate, args.screenshot) 310 311 if args.run_synergy_setting_tests is True: 312 run_synergy_setting_tests(args.generate, args.screenshot) 313 314 if args.run_theme_edit_tests is True: 315 run_theme_edit_tests(args.generate, args.screenshot) 316 317 if args.run_language_edit_tests is True: 318 run_language_edit_tests(args.generate, args.screenshot) 319 320 if args.run_guix_lib_version_set_tests is True: 321 run_guix_lib_version_set_tests(args.generate, args.screenshot) 322 323 if args.run_rich_text_view_tests is True: 324 run_rich_text_view_tests(args.generate, args.screenshot) 325 326 if args.run_sprite_tests is True: 327 run_sprite_tests(args.generate, args.screenshot) 328 329 if args.run_gauge_tests is True: 330 run_gauge_tests(args.generate, args.screenshot) 331 332 if args.run_ml_view_tests is True: 333 run_ml_view_tests(args.generate, args.screenshot) 334 335 if args.run_generic_scroll_wheel_tests is True: 336 run_generic_scroll_wheel_tests(args.generate, args.screenshot) 337 338 if args.run_unique_bidi_text_reference_check_tests is True: 339 run_unique_bidi_text_reference_check_tests(args.generate, args.screenshot) 340 341 if args.run_range_check_tests is True: 342 run_range_check_tests(args.generate, args.screenshot) 343 344 if args.run_list_resize_tests is True: 345 run_list_resize_tests(args.generate, args.screenshot) 346 347 if args.run_kerning_flag_tests is True: 348 run_kerning_flag_tests(args.generate, args.screenshot) 349 350 if args.run_resource_xml_tests is True: 351 run_resource_xml_tests(args.generate, args.screenshot) 352 353 if args.output_junit is True: 354 ts = TestSuite("my test suite", test_utils.test_cases) 355 test_utils.test_log_xml.write(TestSuite.to_xml_string([ts])) 356 test_utils.test_log_xml.close() 357 358 test_utils.test_log_txt.close() 359 360 if test_utils.get_total_failures() != 0: 361 exit(-1) 362 363 exit(0) 364 365 366 367__main__() 368 369