def execute(self): if int(float(util.SFDC_API_VERSION)) <= 28 or config.connection.get_plugin_client_setting("mm_use_legacy_test_ui", False): #raise MMException("This command requires mm_api_version to be set to 29.0 or higher.") return RunUnitTestsCommand(params=self.params,args=self.args).execute() project = config.project sfdc_client = config.sfdc_client generate_logs = self.params.get("generate_logs", False) if generate_logs: NewQuickTraceFlagCommand(params={"running_user_only":True}).execute() test_classes = self.params.get("classes", None) debug('running tests for') debug(test_classes) if test_classes == None or test_classes == []: #need to run all tests in project classes = [] triggers = [] test_classes = [] for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","classes")): for filename in filenames: if "test" in filename.lower() and "-meta.xml" not in filename: test_classes.append(util.get_file_name_no_extension(filename)) elif "-meta.xml" not in filename: classes.append(util.get_file_name_no_extension(filename)) for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","triggers")): for filename in filenames: if "-meta.xml" not in filename: triggers.append(util.get_file_name_no_extension(filename)) else: #user has specified certain tests to run classes = [] triggers = [] for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","classes")): for filename in filenames: if "test" not in filename.lower() and "-meta.xml" not in filename: classes.append(util.get_file_name_no_extension(filename)) for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","triggers")): for filename in filenames: if "-meta.xml" not in filename: triggers.append(util.get_file_name_no_extension(filename)) params = { "files" : test_classes } test_results = sfdc_client.run_async_apex_tests(params, False) params = { "classes" : classes, "triggers" : triggers, "test_classes" : test_classes } coverage_report = sfdc_client.get_apex_test_coverage(params, transform_ids=True) debug(">>>>>>>>>>") debug(coverage_report) result = { "test_results" : test_results, "coverage" : coverage_report } if self.args.respond_with_html: html = util.generate_html_response(self.args.operation, result, self.params) return util.generate_success_response(html, "html") else: return result
def check_for_conflicts(self, files): local_store = self.get_local_store() retrieve_result = self.project.get_retrieve_result({"files": files}) properties = retrieve_result.fileProperties for f in files: ext = util.get_file_extension_no_period(f) apex_type = util.get_meta_type_by_suffix(ext) apex_entity_api_name = util.get_file_name_no_extension(f) body_field = 'Body' if apex_type['xmlName'] == 'ApexPage' or apex_type[ 'xmlName'] == 'ApexComponent': body_field = 'Markup' api_name_plus_extension = apex_entity_api_name + "." + ext server_property = None for p in properties: if p["fullName"] == apex_entity_api_name: server_property = p try: config.api_name_to_id_dict[p["fullName"]] = p["id"] except: pass break if api_name_plus_extension in local_store and server_property != None: local_store_entry = local_store[api_name_plus_extension] local_last_modified_date = local_store_entry[ "lastModifiedDate"] server_last_modified_date = server_property['lastModifiedDate'] last_modified_name = server_property['lastModifiedByName'] qr = self.project.sfdc_client.execute_query( "Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'" .format(body_field, apex_type['xmlName'], apex_entity_api_name)) # lets use the soap endpoint here to help the folks being affected by their proxy refusing REST requests bc of Authorization header # https://github.com/joeferraro/MavensMate-SublimeText/issues/315#issuecomment-35996112 # try: # qr = self.project.sfdc_client.query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name)) # except: # qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name)) body = qr['records'][0][body_field] body = body.encode('utf-8') if str(local_last_modified_date) != str( server_last_modified_date ) or local_store_entry['mmState'] == 'dirty': if local_store_entry['mmState'] != 'dirty': local_store_entry['mmState'] = 'dirty' msg = util.generate_request_for_action_response( "The local version of your file and the server copy are out of sync.\n\n{0} was last modified by {1} on {2}." .format(apex_entity_api_name, last_modified_name, server_last_modified_date), 'compile', ["Diff With Server", "Operation Canceled"], tmp_file_path=util.put_tmp_file_on_disk( apex_entity_api_name, body, apex_type.get('suffix', ''))) self.mark_dirty(api_name_plus_extension) return True, msg return False, None
def execute(self): project = config.project classes = [] triggers = [] if os.path.isdir(os.path.join(project.location,"src","classes")): for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","classes")): for filename in filenames: if "test" not in filename.lower() and "-meta.xml" not in filename: classes.append(util.get_file_name_no_extension(filename)) if os.path.isdir(os.path.join(project.location,"src","triggers")): for dirname, dirnames, filenames in os.walk(os.path.join(project.location,"src","triggers")): for filename in filenames: if "-meta.xml" not in filename: triggers.append(util.get_file_name_no_extension(filename)) params = { "classes" : classes, "triggers" : triggers } return config.sfdc_client.get_apex_test_coverage(params, True)
def execute(self): project = config.project classes = [] triggers = [] if os.path.isdir(os.path.join(project.location, "src", "classes")): for dirname, dirnames, filenames in os.walk( os.path.join(project.location, "src", "classes")): for filename in filenames: if "test" not in filename.lower( ) and "-meta.xml" not in filename: classes.append( util.get_file_name_no_extension(filename)) if os.path.isdir(os.path.join(project.location, "src", "triggers")): for dirname, dirnames, filenames in os.walk( os.path.join(project.location, "src", "triggers")): for filename in filenames: if "-meta.xml" not in filename: triggers.append( util.get_file_name_no_extension(filename)) params = {"classes": classes, "triggers": triggers} return config.sfdc_client.get_apex_test_coverage(params, True)
def sync_with_server(self, files): local_store = self.get_local_store() retrieve_result = self.project.get_retrieve_result({"files": files}) properties = retrieve_result.fileProperties for f in files: debug('\n\n\n\nFILE BRO ----->') ext = util.get_file_extension_no_period(f) apex_type = util.get_meta_type_by_suffix(ext) apex_entity_api_name = util.get_file_name_no_extension(f) body_field = 'Body' if apex_type['xmlName'] == 'ApexPage' or apex_type[ 'xmlName'] == 'ApexComponent': body_field = 'Markup' api_name_plus_extension = apex_entity_api_name + "." + ext server_property = None for p in properties: if p["fullName"] == apex_entity_api_name: server_property = p try: config.api_name_to_id_dict[p["fullName"]] = p["id"] except: pass break debug(api_name_plus_extension) if api_name_plus_extension in local_store and server_property != None: local_store_entry = local_store[api_name_plus_extension] local_last_modified_date = local_store_entry[ "lastModifiedDate"] server_last_modified_date = server_property['lastModifiedDate'] last_modified_name = server_property['lastModifiedByName'] qr = self.project.sfdc_client.execute_query( "Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'" .format(body_field, apex_type['xmlName'], apex_entity_api_name)) body = qr['records'][0][body_field] body = body.encode('utf-8') msg = util.generate_sync_response( "Server version was last modified by {0} on {1}.".format( last_modified_name, server_last_modified_date), tmp_file_path=util.put_tmp_file_on_disk( apex_entity_api_name, body, apex_type.get('suffix', ''))) return msg return None
def check_for_conflicts(self, files): local_store = self.get_local_store() retrieve_result = self.project.get_retrieve_result({"files":files}) properties = retrieve_result.fileProperties for f in files: ext = util.get_file_extension_no_period(f) apex_type = util.get_meta_type_by_suffix(ext) apex_entity_api_name = util.get_file_name_no_extension(f) body_field = 'Body' if apex_type['xmlName'] == 'ApexPage' or apex_type['xmlName'] == 'ApexComponent': body_field = 'Markup' api_name_plus_extension = apex_entity_api_name+"."+ext server_property = None for p in properties: if p["fullName"] == apex_entity_api_name: server_property = p try: config.api_name_to_id_dict[p["fullName"]] = p["id"] except: pass break if api_name_plus_extension in local_store and server_property != None: local_store_entry = local_store[api_name_plus_extension] local_last_modified_date = local_store_entry["lastModifiedDate"] server_last_modified_date = server_property['lastModifiedDate'] last_modified_name = server_property['lastModifiedByName'] qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name)) # lets use the soap endpoint here to help the folks being affected by their proxy refusing REST requests bc of Authorization header # https://github.com/joeferraro/MavensMate-SublimeText/issues/315#issuecomment-35996112 # try: # qr = self.project.sfdc_client.query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name)) # except: # qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name)) body = qr['records'][0][body_field] body = body.encode('utf-8') if str(local_last_modified_date) != str(server_last_modified_date) or local_store_entry['mmState'] == 'dirty': if local_store_entry['mmState'] != 'dirty': local_store_entry['mmState'] = 'dirty' msg = util.generate_request_for_action_response( "The local version of your file and the server copy are out of sync.\n\n{0} was last modified by {1} on {2}." .format(apex_entity_api_name, last_modified_name, server_last_modified_date), 'compile', ["Diff With Server","Operation Canceled"], tmp_file_path=util.put_tmp_file_on_disk(apex_entity_api_name, body, apex_type.get('suffix', '')) ) self.mark_dirty(api_name_plus_extension) return True, msg return False, None
def sync_with_server(self, files): local_store = self.get_local_store() retrieve_result = self.project.get_retrieve_result({"files":files}) properties = retrieve_result.fileProperties for f in files: debug('\n\n\n\nFILE BRO ----->') ext = util.get_file_extension_no_period(f) apex_type = util.get_meta_type_by_suffix(ext) apex_entity_api_name = util.get_file_name_no_extension(f) body_field = 'Body' if apex_type['xmlName'] == 'ApexPage' or apex_type['xmlName'] == 'ApexComponent': body_field = 'Markup' api_name_plus_extension = apex_entity_api_name+"."+ext server_property = None for p in properties: if p["fullName"] == apex_entity_api_name: server_property = p try: config.api_name_to_id_dict[p["fullName"]] = p["id"] except: pass break debug(api_name_plus_extension) if api_name_plus_extension in local_store and server_property != None: local_store_entry = local_store[api_name_plus_extension] local_last_modified_date = local_store_entry["lastModifiedDate"] server_last_modified_date = server_property['lastModifiedDate'] last_modified_name = server_property['lastModifiedByName'] qr = self.project.sfdc_client.execute_query("Select LastModifiedById, LastModifiedDate, LastModifiedBy.Name, {0} From {1} Where Name = '{2}'".format(body_field, apex_type['xmlName'], apex_entity_api_name)) body = qr['records'][0][body_field] body = body.encode('utf-8') msg = util.generate_sync_response( "Server version was last modified by {0} on {1}.".format(last_modified_name, server_last_modified_date), tmp_file_path=util.put_tmp_file_on_disk(apex_entity_api_name, body, apex_type.get('suffix', '')) ) return msg return None
def execute(self): if int(float(util.SFDC_API_VERSION) ) <= 28 or config.connection.get_plugin_client_setting( "mm_use_legacy_test_ui", False): #raise MMException("This command requires mm_api_version to be set to 29.0 or higher.") return RunUnitTestsCommand(params=self.params, args=self.args).execute() project = config.project sfdc_client = config.sfdc_client generate_logs = self.params.get("generate_logs", False) if generate_logs: NewQuickTraceFlagCommand(params={ "running_user_only": True }).execute() test_classes = self.params.get("classes", None) debug('running tests for') debug(test_classes) if test_classes == None or test_classes == []: #need to run all tests in project classes = [] triggers = [] test_classes = [] for dirname, dirnames, filenames in os.walk( os.path.join(project.location, "src", "classes")): for filename in filenames: if "test" in filename.lower( ) and "-meta.xml" not in filename: test_classes.append( util.get_file_name_no_extension(filename)) elif "-meta.xml" not in filename: classes.append( util.get_file_name_no_extension(filename)) for dirname, dirnames, filenames in os.walk( os.path.join(project.location, "src", "triggers")): for filename in filenames: if "-meta.xml" not in filename: triggers.append( util.get_file_name_no_extension(filename)) else: #user has specified certain tests to run classes = [] triggers = [] for dirname, dirnames, filenames in os.walk( os.path.join(project.location, "src", "classes")): for filename in filenames: if "test" not in filename.lower( ) and "-meta.xml" not in filename: classes.append( util.get_file_name_no_extension(filename)) for dirname, dirnames, filenames in os.walk( os.path.join(project.location, "src", "triggers")): for filename in filenames: if "-meta.xml" not in filename: triggers.append( util.get_file_name_no_extension(filename)) params = {"files": test_classes} test_results = sfdc_client.run_async_apex_tests(params, False) params = { "classes": classes, "triggers": triggers, "test_classes": test_classes } coverage_report = sfdc_client.get_apex_test_coverage( params, transform_ids=True) debug(">>>>>>>>>>") debug(coverage_report) result = {"test_results": test_results, "coverage": coverage_report} if self.args.respond_with_html: html = util.generate_html_response(self.args.operation, result, self.params) return util.generate_success_response(html, "html") else: return result