ВА
import os
import time
import shutil
from os import path
from sys import argv
def reg_error_feature(feature):
time.sleep(10)
if not os.path.exists(f"{ci_errors}{feature}"):
os.makedirs(f"{ci_errors}{feature}")
else:
for file_obj in os.listdir(f"{ci_errors}{feature}"):
file_path = os.path.join(f"{ci_errors}{feature}", file_obj)
if os.path.isfile(file_path):
os.unlink(file_path)
directory = f"{ci_errors}{feature}/BDD_logs/"
if not os.path.exists(directory):
os.makedirs(directory)
else:
for file_obj in os.listdir(directory):
file_path = os.path.join(directory, file_obj)
if os.path.isfile(file_path):
os.unlink(file_path)
shutil.copyfile(f"{workspace}/BDD_log.txt", f"{ci_errors}{feature}/BDD_log.txt")
shutil.copyfile(f"{workspace}/BDD_result.txt", f"{ci_errors}{feature}/BDD_result.txt")
shutil.copyfile(f"{features_files}/{feature}.feature", f"{ci_errors}{feature}/{feature}.feature")
shutil.copyfile(f"{features_files}/{feature}.json", f"{ci_errors}{feature}/{feature}.json")
shutil.copyfile(f"{features_files}/{feature}.str", f"{ci_errors}{feature}/{feature}.str")
#Скриншоты
directory = f"{workspace}/screenshots/"
files = os.listdir(directory)
for index in files:
shutil.copyfile(f"{directory}{index}", f"{ci_errors}{feature}/{index}")
#Логи
directory = f"{workspace}/BDD_logs/"
files = os.listdir(directory)
for index in files:
shutil.copyfile(f"{directory}{index}", f"{ci_errors}{feature}/BDD_logs/{index}")
#Удаляем скриншоты
directory = f"{workspace}/screenshots/"
for file_obj in os.listdir(directory):
file_path = os.path.join(directory, file_obj)
if os.path.isfile(file_path):
os.unlink(file_path)
#Генерируем ошибку в формате СППР
subprocess.call(f"{platforma1c} ENTERPRISE /F\"{workspace}/buildTM\" /EXECUTE \"{workspace}/src/GenerateErrorJSON.epf\" /C \"JsonParams={workspace}/src/MakeJSONError.json;Преобразовать;FeatureCode={feature}\"")
subprocess.call(f"{platforma1c} ENTERPRISE /F\"{workspace}/buildTM\" /EXECUTE \"{workspace}/src/MakeErrorBDD.epf\" /C \"JsonParams={workspace}/src/GenerateParamError_{feature}.json;Преобразовать\"")
#Основной блок
script, workspace, ci_errors = argv
#workspace = "E:/Jenkins/Slave1/workspace/KA_NightBuild"
#ci_errors = "E:/Jenkins/ci_errors/"
platforma1c = "\"C:/Program Files/1cv8/8.3.14.1694/bin/1cv8.exe\""
#Каталог из которого будем брать фичи
features_files = f"{workspace}/features/Night_KA_Demo"
allure_directory = f"{workspace}/allure-results/"
allure_directory_temp = f"{workspace}/alluretemp/"
#Формирование списка исключений
file_iskl = open(f"{workspace}/src/iskl.txt")
list_iskl = [line.strip() for line in file_iskl]
file_iskl.close()
#Формирование списка запуска ТМ и ТК в одной базе
file_tmtk = open(f"{workspace}/src/tmtk.txt")
list_tmtk = [line.strip() for line in file_tmtk]
file_tmtk.close()
#База для тестирования
subprocess.call(f"{platforma1c} CREATEINFOBASE File={workspace}/build_i /UseTemplate \"{workspace}/FilesNightBuild/1cv8.dt\" /DisableStartupMessages /DisableStartupDialogs")
#Копируем для ускорения старта
shutil.copyfile(f"{workspace}/build_i/1cv8.1cd", f"{workspace}/copybase/1cv8.1cd")
#Получаем список фич в переменную files
files = os.listdir(features_files)
#Фильтруем список
feature_json = filter(lambda x: x.endswith('.json'), files)
for index_a in feature_json:
name_f = os.path.basename(index_a)
index = path.splitext(name_f)[0]
#Если фича в списке исключений, то не обрабатываем ее
if index in list_iskl:
continue
#Копируем 1cv8.1cd в каталог выполнения
shutil.copyfile(f"{workspace}/copybase/1cv8.1cd", f"{workspace}/build_i/1cv8.1cd")
#Пауза, способ борьбы с заблокированной таблицей SESSION (не стартует тестменеджер)
time.sleep(60)