def buscarC10(repo, df): print("Iniciando criterio de búsqueda nº 10 en el repo: " + repo.full_name) encontrado = False log = conf.config.cLogs + "/log_buscarC10_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo.full_name.split("/")[1]) contents = repo.get_contents("") while contents: content_file = contents.pop(0) auxiliares.escribirLog(f, str(content_file)) if "test" in content_file.path.lower() or "tests" in content_file.path.lower(): if content_file.type == "dir": auxiliares.escribirLog(f, "Accediendo a carpeta " + content_file.path) contents2 = repo.get_contents(content_file.path) while contents2: content_file = contents2.pop(0) auxiliares.escribirLog(f, str(content_file)) # Obtenemos el fichero en el que nos encontramos, no la ruta completa. fActual = auxiliares.obtenerFicheroIt(content_file.path.lower()) if fActual.endswith("it") \ or fActual.startswith("it") \ or "e2e" in fActual \ or "system" in fActual \ or "itest" in fActual: auxiliares.escribirLog(f, "Adding " + content_file.path) encontrado = True auxiliares.actualizarDataFrame(Criterios.criterio10.value, repo.full_name, content_file.path, df) break break auxiliares.cerrarLog(f) return encontrado
def buscarEnSrcTests(repo, criterio, df): print("Buscando '" + criterio +"' en carpeta src/test del repo: " + repo.full_name) encontrado = False log = conf.config.cLogs + "/log_buscarEnSrcTests_" + criterio + "_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo.full_name.split("/")[1]) contents = repo.get_contents("") while contents: content_file = contents.pop(0) if content_file.path.lower() == "src": if content_file.type == "dir": contents = repo.get_contents(content_file.path) while contents: content_file = contents.pop(0) if content_file.path.lower() in ["src/test"]: auxiliares.escribirLog(f, "Accediendo a carpeta " + content_file.path) if content_file.type == "dir": #contents.extend(repo.get_contents(content_file.path)) contents = repo.get_contents(content_file.path) while contents: content_file = contents.pop(0) if content_file.type == "dir": if criterio in content_file.path.lower(): auxiliares.escribirLog(f, "Adding " + content_file.path) encontrado = True auxiliares.actualizarDataFrame(criterio, repo.full_name, content_file.path, df) break else: contents.extend(repo.get_contents(content_file.path)) break auxiliares.cerrarLog(f) return encontrado
def buscarC11(repo, df): print("Iniciando criterio de búsqueda nº 11 en el repo: " + repo.full_name) encontrado = False log = conf.config.cLogs + "/log_buscarC11_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo.full_name.split("/")[1]) contents = repo.get_contents("") while contents: content_file = contents.pop(0) # Con esto se consigue que busque el fichero "pom.xml" y "build.xml" y no que contenga dichos literales. # Por ejemplo: HolaQueTal_pom.xml no lo tendría en cuenta. ¿Debería tenerlos en cuenta? # Obtenemos el fichero en el que nos encontramos, no la ruta completa. fActual = auxiliares.obtenerFicheroIt(content_file.path.lower()) if "pom.xml" in fActual: try: decoded = auxiliares.getFileContent(repo, content_file.path) isSelenium = 'selenium' in str(decoded) isRestassured = 'rest-assured' in str(decoded) if isSelenium or isRestassured: auxiliares.escribirLog(f, "Adding " + content_file.path) encontrado = True auxiliares.actualizarDataFrame(Criterios.criterio11.value, repo.full_name, content_file.path, df) break else: auxiliares.escribirLog(f, "Literales 'selenium' y 'rest-assured' no encontrados") #Con el siguiente break el programa solamente comprobaría el primer 'pom.xml' que encuentre. #Quitándolo, si el primer 'pom.xml' que encuentre no es ni selenium ni restassured, seguiría buscando algún 'pom.xml' que cumpla la condición. break except: auxiliares.escribirLog(f, "Error obteniendo el contenido del pom.xml") raise elif "build.xml" in fActual: try: decoded = auxiliares.getFileContent(repo, content_file.path) isSelenium = 'selenium' in str(decoded) isRestassured = 'restassured' in str(decoded) if isSelenium or isRestassured: auxiliares.escribirLog(f, "Adding " + content_file.path) encontrado = True auxiliares.actualizarDataFrame(Criterios.criterio11.value, repo.full_name, content_file.path, df) break else: auxiliares.escribirLog(f, "Literales 'selenium' y 'rest-assured' no encontrados") # Con el siguiente break el programa solamente comprobaría el primer 'build.xml' que encuentre. # Quitándolo, si el primer 'build.xml' que encuentre no es ni selenium ni restassured, seguiría buscando algún 'build.xml' que cumpla la condición. break except: auxiliares.escribirLog(f, "Error obteniendo el contenido del build.xml") raise else: if content_file.type == "dir": contents.extend(repo.get_contents(content_file.path)) auxiliares.cerrarLog(f) return encontrado
def buscarTodaCarpetaEnRepoLocal2(repo, lFicheros, criterio, df): log = conf.config.cLogs + "/log_buscarEnRepoLocal_" + criterio + "_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo + ", criterio: " + criterio) print("--> Analizando repositorio: " + repo + ", criterio: " + criterio) encontrado = False contador = 0 minLimit = conf.config.SEARCH_TIME_LIMIT # minutos segLimit = minLimit * 60 # segundos tIni = time.perf_counter() tFin = tIni + 1 while len(lFicheros)>0 and (tFin - tIni) <= segLimit: tFin = time.perf_counter() e = lFicheros.pop(0) auxiliares.escribirLog(f, e) fActual = auxiliares.obtenerFicheroIt(e) print(e) if os.path.isdir(e): #print(e + "[CARPETA]") if criterio in e.lower(): if contador >= conf.config.ITEMS_FOUND_LIMIT: lFicheros = [] break else: auxiliares.escribirLog(f, "Adding " + e) repo = repo.replace("*_*", "/") auxiliares.actualizarDataFrame(criterio, repo, e, df) encontrado = True contador = contador + 1 else: contentAux = os.listdir(e) content = obtenerRutaCompletaE(e, contentAux) for c in content: lFicheros.insert(0, c) elif os.path.isfile(e): #print(e + "[FICHERO]") if criterio in e.lower(): if contador >= conf.config.ITEMS_FOUND_LIMIT: break else: auxiliares.escribirLog(f, "Adding " + e) repo = repo.replace("*_*", "/") auxiliares.actualizarDataFrame(criterio, repo, e, df) encontrado = True contador = contador + 1 auxiliares.cerrarLog(f) return encontrado
def buscarEnRaiz(repo, criterio, df): print("Buscando '" + criterio +"' en la raiz del repo: " + repo.full_name) encontrado = False log = conf.config.cLogs + "/log_buscarEnRaiz_" + criterio + "_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo.full_name.split("/")[1]) contents = repo.get_contents("") for content_file in contents: auxiliares.escribirLog(f, str(content_file)) if criterio in content_file.path.lower(): auxiliares.escribirLog(f, "Adding " + content_file.path) encontrado = True auxiliares.actualizarDataFrame(criterio, repo.full_name, content_file.path, df) break auxiliares.cerrarLog(f) return encontrado
def buscarFicherosCI_Local(repo, lFicheros, df): log = conf.config.cLogs + "/log_buscarC12Local_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo + ", criterio 12 (ci-files)") print("--> Analizando repositorio: " + repo + ", criterio 12 (ci-files)") encontrado = False contador = 0 minLimit = conf.config.SEARCH_TIME_LIMIT # minutos segLimit = minLimit * 60 # segundos tIni = time.perf_counter() tFin = tIni + 1 while len(lFicheros) > 0 and (tFin - tIni) <= segLimit: tFin = time.perf_counter() e = lFicheros.pop(0) auxiliares.escribirLog(f, e) if os.path.isdir(e): #print(e + "[CARPETA]") contentAux = os.listdir(e) content = obtenerRutaCompletaE(e, contentAux) for c in content: lFicheros.insert(0, c) elif os.path.isfile(e): #print(e + "[FICHERO]") if "jenkinsfile" in e.lower() \ or ".travis-ci.yml" in e.lower() \ or ".travis.yml" in e.lower() \ or ".circle-ci.yml" in e.lower() \ or ".circle.yml" in e.lower() \ or ".github/workflows/pipeline.yml" in e.lower() \ or ".azure-pipelines/pipelines.yml" in e.lower() \ or ".gitlab-ci.yml" in e.lower(): if contador >= conf.config.ITEMS_FOUND_LIMIT: break else: auxiliares.escribirLog(f, "Adding " + e) repo = repo.replace("*_*", "/") auxiliares.actualizarDataFrame(Criterios.criterio12.value, repo, e, df) encontrado = True contador = contador + 1 #break auxiliares.cerrarLog(f) return encontrado
def buscarEnRepo(repo, criterio, df): print("Buscando repositorios recursivamente: '" + criterio + "' en el repo: " + repo.full_name) encontrado = False log = conf.config.cLogs + "/log_buscarEnRepo_" + criterio + "_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo.full_name.split("/")[1]) contents = repo.get_contents("") while contents: content_file = contents.pop(0) auxiliares.escribirLog(f, str(content_file)) if criterio in content_file.path.lower(): auxiliares.escribirLog(f, "Adding " + content_file.path) encontrado = True auxiliares.actualizarDataFrame(criterio, repo.full_name, content_file.path, df) break else: if content_file.type == "dir": contents.extend(repo.get_contents(content_file.path)) auxiliares.cerrarLog(f) return encontrado
def buscarC11_Local(repo, lFicheros, df): log = conf.config.cLogs + "/log_buscarC11Local_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo + ", criterio 11") print("--> Analizando repositorio: " + repo + ", criterio 10") encontrado = False contador = 0 minLimit = conf.config.SEARCH_TIME_LIMIT # minutos segLimit = minLimit * 60 # segundos tIni = time.perf_counter() tFin = tIni + 1 while len(lFicheros) > 0 and (tFin - tIni) <= segLimit: tFin = time.perf_counter() e = lFicheros.pop(0) auxiliares.escribirLog(f, e) fActual = auxiliares.obtenerFicheroIt(e.lower()) if os.path.isdir(e): #print(e + "[CARPETA]") contentAux = os.listdir(e) content = obtenerRutaCompletaE(e, contentAux) for c in content: lFicheros.insert(0, c) elif os.path.isfile(e): #print(e + "[FICHERO]") if "pom.xml" in fActual or "build.xml" in fActual: fXml = open(e, 'r', encoding="ISO-8859-1") xmlContent = fXml.read() fXml.close() if "selenium-java" in xmlContent or "rest-assured" in xmlContent: if contador >= conf.config.ITEMS_FOUND_LIMIT: break else: auxiliares.escribirLog(f, "Adding " + e) repo = repo.replace("*_*", "/") auxiliares.actualizarDataFrame(Criterios.criterio11.value, repo, e, df) encontrado = True contador = contador + 1 #break auxiliares.cerrarLog(f) return encontrado
def buscarC10_Local(repo, lFicheros, df): log = conf.config.cLogs + "/log_buscarC10Local_" + conf.config.fechaEjecucion + ".log" f = auxiliares.abrirLog(log) auxiliares.escribirLog(f, "--> Analizando repositorio: " + repo + ", criterio 10" ) print("--> Analizando repositorio: " + repo + ", criterio 10") encontrado = False contador = 0 minLimit = conf.config.SEARCH_TIME_LIMIT # minutos segLimit = minLimit * 60 # segundos tIni = time.perf_counter() tFin = tIni + 1 while len(lFicheros) > 0 and (tFin - tIni) <= segLimit: tFin = time.perf_counter() e = lFicheros.pop(0) auxiliares.escribirLog(f, e) fActual = auxiliares.obtenerFicheroIt(e) print(e) if os.path.isdir(e): #print(e + "[CARPETA]") contentAux = os.listdir(e) content = obtenerRutaCompletaE(e, contentAux) for c in content: lFicheros.insert(0, c) elif os.path.isfile(e): #print(e + "[FICHERO]") if fActual.endswith("IT.java") \ or "e2e" in fActual \ or "integration_test" in fActual \ or "integrationtest" in fActual: if contador >= conf.config.ITEMS_FOUND_LIMIT: break else: auxiliares.escribirLog(f, "Adding " + e) repo = repo.replace("*_*", "/") auxiliares.actualizarDataFrame(Criterios.criterio10.value, repo, e, df) encontrado = True contador = contador + 1 #break auxiliares.cerrarLog(f) return encontrado