Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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
Exemple #9
0
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