diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index 69c9a04..4c43b11 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -7,13 +7,13 @@ name: Контроль качества on: [push, pull_request] jobs: build: - if: github.repository == 'khorevaa/gitsync-plugins' + if: github.repository == 'oscript-library/gitsync-plugins' runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest] - oscript_version: ['1.8.3'] + oscript_version: ['1.9.2'] steps: # Загрузка проекта diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 24dd142..bb91b3f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - oscript_version: ['1.8.3'] + oscript_version: ['1.9.2'] package_mask: ["gitsync-plugins-*.ospx"] steps: diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 89799b4..a3f71bb 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -7,24 +7,31 @@ name: Тестирование on: [push, pull_request] jobs: - build: + test: runs-on: ${{ matrix.os }} strategy: - fail-fast: false matrix: - os: [ubuntu-latest] - oscript_version: ['1.8.3'] - + oscript_version: ['1.9.2'] + v8_version: ['8.3.21.1624', '8.3.24.1691'] + edt_version: ['2023.3.6', '2024.2.5'] + os: [windows-latest, ubuntu-22.04] + locale: ['ru_RU'] + fail-fast: false steps: - # Загрузка проекта + - name: Установка локали + if: matrix.os == startsWith(matrix.os, 'windows') + run: | + powershell -Command "Set-WinUILanguageOverride -Language ru-RU" + powershell -Command "Set-WinUserLanguageList ru-RU -Force" + powershell -Command "Set-Culture ru-RU" + powershell -Command "Set-WinSystemLocale ru-RU" + - name: Актуализация - uses: actions/checkout@v2 + uses: actions/checkout@v4.2.2 # Установка OneScript конкретной версии - name: Установка OneScript - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - uses: otymko/setup-onescript@v1.0 + uses: otymko/setup-onescript@v1.5 with: version: ${{ matrix.oscript_version }} @@ -33,16 +40,100 @@ jobs: run: | opm install opm opm install --dev - opm install 1testrunner - opm install 1bdd - opm install notify - opm install coverage - - # Задача тестирования, в результате ожидается успешное выполнение - - name: Тестирование Unit - run: oscript ./tasks/test.os true - - # - name: Тестирование Integrated - # run: | - # docker run -e OSCRIPT_VERSION=${{ matrix.oscript_version }} -v $(pwd):/work_dir harmit/ci-image sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' - # grep 'Результат прогона тестов <Да>' /tmp/test.log \ No newline at end of file + opm install gitsync # TODO: должно быть необязательно + + - name: Подготовка окружения (Linux) + if: startsWith(matrix.os, 'ubuntu') + run: | + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y locales libwebkit2gtk-4.0-37 + sudo localedef -i ${{ matrix.locale }} -c -f UTF-8 -A /usr/share/locale/locale.alias ${{ matrix.locale }}.UTF-8 + + - name: Установка libenchant1c2a (Linux) + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.v8_version, '8.3.21') + run: | + sudo echo "deb http://cz.archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list + sudo apt-get update + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libenchant1c2a + + - name: Установка wine (требуется для Tool1CD) + if: startsWith(matrix.os, 'ubuntu') + run: | + sudo dpkg --add-architecture i386 + sudo apt update + sudo apt install wine -y + + - name: Установка платформы 1С + uses: ovcharenko-di/onec-setup-action@fix/cache-ring-commands-cfg + with: + type: onec # Тип устанавливаемого приложения + onec_version: ${{ matrix.v8_version }} + cache: true + cache_distr: true + env: + ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} + ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} + + - name: Установка Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '11' + + - name: Установка EDT + uses: ovcharenko-di/onec-setup-action@fix/cache-ring-commands-cfg + with: + type: edt # Тип устанавливаемого приложения + edt_version: ${{ matrix.edt_version }} + cache: true + cache_distr: true + env: + ONEC_USERNAME: ${{ secrets.ONEC_USERNAME }} + ONEC_PASSWORD: ${{ secrets.ONEC_PASSWORD }} + + - name: Установка лицензии (Linux) + if: startsWith(matrix.os, 'ubuntu') + run: | + # Создание каталога + sudo mkdir -p /var/1C/licenses + + # Запись лицензии в файл + echo "${{ secrets.ONEC_LICENCE }}" | sudo tee /var/1C/licenses/licence.lic > /dev/null + + # Назначение прав + sudo chmod 777 -R /var/1C/licenses + shell: bash + env: + ONEC_LICENCE: ${{ secrets.ONEC_LICENCE }} + + - name: Установка лицензии (Windows) + if: startsWith(matrix.os, 'windows') + run: | + mkdir "C:\ProgramData\1C\licenses" -Force + echo $Env:ONEC_LICENCE | Out-File -FilePath "C:\ProgramData\1C\licenses\licence.lic" -Encoding ascii + shell: pwsh + env: + ONEC_LICENCE: ${{ secrets.ONEC_LICENCE }} + + - name: Сборка пакета + run: opm build + + - name: Установка gitsync (локально) + run: opm run install-gitsync + + - name: Тестирование + uses: coactions/setup-xvfb@v1 + env: + EDT_VERSION: ${{ matrix.edt_version }} + GITSYNC_V8VERSION: ${{ matrix.v8_version }} + with: + run: oscript ./tasks/test.os + + - name: Публикация отчета + if: always() + uses: mikepenz/action-junit-report@v5 + with: + report_paths: '**/build/reports/*.xml' + fail_on_failure: true + comment: true + check_name: 'Результаты тестов. ОС: ${{ matrix.os }}. Версия 1С: ${{ matrix.v8_version }}. Версия OneScript: ${{ matrix.oscript_version }}' diff --git a/.gitignore b/.gitignore index ef10eb3..fff908e 100644 --- a/.gitignore +++ b/.gitignore @@ -2,13 +2,13 @@ build/* -bin/gitsync/* +bin_gitsync/* bin/gitsync.exe -bin/gitsync.bat +bin/gitsync +bin/build_gitsync.bat tests/*.xml -exec/*.log - +exec.log bdd-log*.xml .enabled-plugins diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c826eaf..63a3aca 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,14 +2,28 @@ Доработка проводится по git-flow. Жду ваших PR. -## Первоначальная настройка +## Требования к окружению -- Необходимо предварительно выполнить команду - - `opm run install-gitsync` - - он устанавливает версию gitsync в каталог bin -- После необходимо собрать и установить плагины из исходников - - `opm run testing-build` +- Установленная Платформа 1С +- Установленная EDT + +## Запуск тестов + +- Установить значение переменной GITSYNC_V8VERSION, например: + - `set GITSYNC_V8VERSION=8.3.21` # Windows + - `export GITSYNC_V8VERSION=8.3.21` # Linux -А вот потом можно запускать тесты ) + По умолчанию версию платформы выберет библиотека v8find -- через команду `opm test` +- Установить значение переменной EDT_VERSION, например: + - `set EDT_VERSION=2023.3.6` # Windows + - `export EDT_VERSION=2023.3.6` # Linux + + По умолчанию используется версия 2022.2.5 + +- Cобрать пакет + - `opm build` +- Выполнить команду, которая устанавливает gitsync в каталог bin_gitsync + - `opm run install-gitsync` +- Запустить тесты + - `opm test` diff --git a/bin/v8unpack/v8unpack.exe b/bin/v8unpack/v8unpack.exe deleted file mode 100644 index af7ade9..0000000 Binary files a/bin/v8unpack/v8unpack.exe and /dev/null differ diff --git a/bin/v8unpack/zlib1.dll b/bin/v8unpack/zlib1.dll deleted file mode 100644 index 1cf8a47..0000000 Binary files a/bin/v8unpack/zlib1.dll and /dev/null differ diff --git a/features/check-authors.feature b/features/check-authors.feature index 65c85c6..1e9e4e2 100644 --- a/features/check-authors.feature +++ b/features/check-authors.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст check-authors Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,18 +15,18 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "check-authors" -Сценарий: Cинхронизация c простым использованием - Допустим Я создаю неполный тестовой файл AUTHORS +Сценарий: Cинхронизация с простым использованием + Допустим Я создаю неполный тестовый файл AUTHORS И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" diff --git a/features/check-comments.feature b/features/check-comments.feature index 38a0762..86dfda9 100644 --- a/features/check-comments.feature +++ b/features/check-comments.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст check-comments Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,12 +15,12 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "check-comments" diff --git a/features/edtExport.feature b/features/edtExport.feature index 50bb491..7a08b64 100644 --- a/features/edtExport.feature +++ b/features/edtExport.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст edtExport Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -16,22 +16,23 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" - И Я добавляю параметр "-P test" для команды "gitsync" + И Я добавляю параметр "--PN test" для команды "gitsync" + И Я вычисляю имя модуля edt по версии из переменной окружения "EDT_VERSION" в переменную "ИмяМодуляEDT" + И Я добавляю параметр "--module" для команды "gitsync" из переменной "ИмяМодуляEDT" И Я выключаю все плагины И Я включаю плагин "edtExport" - И Я включаю плагин "edtExport" Сценарий: Cинхронизация с использованием edtExport Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 @@ -42,19 +43,19 @@ И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 -Сценарий: Cинхронизация хранилища расширения с использованием edtExport c указанием базового проекта +Сценарий: Cинхронизация хранилища расширения с использованием edtExport с указанием базового проекта Допустим Я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилища1С" И я скопировал каталог рабочего окружения EDT в каталог из переменной "РабочееОкружениеEDT" И Я добавляю параметр "-e test" для команды "gitsync" И Я добавляю параметр "-W" для команды "gitsync" из переменной "РабочееОкружениеEDT" - И Я добавляю параметр "-B edtExport" для команды "gitsync" + И Я добавляю параметр "--BP edtExport" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 diff --git a/features/increment.feature b/features/increment.feature index c3503ba..76cbb2f 100644 --- a/features/increment.feature +++ b/features/increment.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст increment Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,11 +15,11 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "increment" @@ -28,7 +28,7 @@ Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы:" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 @@ -39,7 +39,7 @@ И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы:" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 \ No newline at end of file diff --git a/features/limit.feature b/features/limit.feature index 1f79f83..8ae2709 100644 --- a/features/limit.feature +++ b/features/limit.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст limit Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,12 +15,12 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "limit" @@ -30,7 +30,7 @@ И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Количество коммитов должно быть "1" @@ -40,7 +40,7 @@ И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Количество коммитов должно быть "2" @@ -50,7 +50,7 @@ И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Количество коммитов должно быть "6" @@ -62,7 +62,7 @@ И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Количество коммитов должно быть "3" \ No newline at end of file diff --git a/features/smart-tags.feature b/features/smart-tags.feature index 26dea88..cbc6756 100644 --- a/features/smart-tags.feature +++ b/features/smart-tags.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст check-authors Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,12 +15,12 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "smart-tags" @@ -29,7 +29,7 @@ Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Тег "1.0" должен присутствовать в репозитории @@ -39,7 +39,7 @@ И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Тег "1.0" должен присутствовать в репозитории \ No newline at end of file diff --git a/features/step_definitions/edtExport.os b/features/step_definitions/edtExport.os index 7c0464d..efc795a 100644 --- a/features/step_definitions/edtExport.os +++ b/features/step_definitions/edtExport.os @@ -1,6 +1,11 @@ -#Использовать fs +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:MissingReturnedValueDescription-off +// BSLLS:MissingParameterDescription-off + // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd +#Использовать fs + Перем БДД; //контекст фреймворка 1bdd // Метод выдает список шагов, реализованных в данном файле-шагов @@ -10,6 +15,7 @@ ВсеШаги = Новый Массив; ВсеШаги.Добавить("ЯСкопировалКаталогРабочегоОкруженияEDTВКаталогИзПеременной"); + ВсеШаги.Добавить("ЯВычисляюИмяМодуляEdtПоВерсииИзПеременнойОкруженияВПеременную"); Возврат ВсеШаги; КонецФункции @@ -34,6 +40,20 @@ ФС.КопироватьСодержимоеКаталога(ПутьКРабочемуОкружениюEDT(), РабочееОкружениеEDT); КонецПроцедуры +//я вычисляю имя модуля edt по версии из переменной окружения "EDT_VERSION" в переменную "ИмяМодуляEDT" +Процедура ЯВычисляюИмяМодуляEdtПоВерсииИзПеременнойОкруженияВПеременную(Знач ИмяПеременнойОкружения, Знач ИмяПеременной) Экспорт + + ВерсияEDT = ПолучитьПеременнуюСреды(ИмяПеременнойОкружения); + + Если Не ЗначениеЗаполнено(ВерсияEDT) Тогда + ВерсияEDT = "2022.2.5"; // значение по умолчанию + КонецЕсли; + + ИмяМодуля = СтрШаблон("edt@%1:x86_64", ВерсияEDT); + БДД.СохранитьВКонтекст(ИмяПеременной, ИмяМодуля); + +КонецПроцедуры + Функция ПутьКРабочемуОкружениюEDT() Возврат ОбъединитьПути(КаталогFixtures(), "edtWorkspace"); @@ -41,9 +61,9 @@ КонецФункции Функция КаталогFixtures() - Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures"); + Возврат ОбъединитьПути(КореньПроекта(), "tests", "fixtures"); КонецФункции -Функция КаталогГитсинк() +Функция КореньПроекта() Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."); КонецФункции diff --git a/features/step_definitions/increment.os b/features/step_definitions/increment.os index 8c193e4..4d36449 100644 --- a/features/step_definitions/increment.os +++ b/features/step_definitions/increment.os @@ -1,4 +1,7 @@ -#Использовать fs +// BSLLS:MissingParameterDescription-off +// BSLLS:MissingReturnedValueDescription-off + +#Использовать fs // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd @@ -32,7 +35,6 @@ КаталогХранилища1С = БДД.ПолучитьИзКонтекста(ИмяПеременной); ФС.ОбеспечитьПустойКаталог(КаталогХранилища1С); ФС.КопироватьСодержимоеКаталога(ПутьКВременномуФайлуХранилища1С(), КаталогХранилища1С); - // КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(КаталогХранилища1С, "1cv8ddb.1CD")); КонецПроцедуры Функция ПутьКВременномуФайлуХранилища1С() @@ -42,9 +44,9 @@ КонецФункции Функция КаталогFixtures() - Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures"); + Возврат ОбъединитьПути(КореньПроекта(), "tests", "fixtures"); КонецФункции -Функция КаталогГитсинк() +Функция КореньПроекта() Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."); КонецФункции diff --git a/features/step_definitions/limit.os b/features/step_definitions/limit.os index 9424aec..01472b3 100644 --- a/features/step_definitions/limit.os +++ b/features/step_definitions/limit.os @@ -40,7 +40,7 @@ ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); Вывод = ГитРепозиторий.ПолучитьВыводКоманды(); - МассивСтрок = СтрРазделить(Вывод, Символы.ПС); + МассивСтрок = СтрРазделить(Вывод, Символы.ПС, Ложь); КоличествоКоммитов = МассивСтрок.Количество(); diff --git a/features/step_definitions/shared.os b/features/step_definitions/shared.os index eb7a2ac..75fca7a 100644 --- a/features/step_definitions/shared.os +++ b/features/step_definitions/shared.os @@ -1,4 +1,9 @@ -// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd +// BSLLS:UnusedParameters-off +// BSLLS:LatinAndCyrillicSymbolInWord-off +// BSLLS:MissingParameterDescription-off +// BSLLS:MissingReturnedValueDescription-off + +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd #Использовать gitrunner #Использовать asserts #Использовать tempfiles @@ -15,22 +20,22 @@ ВсеШаги.Добавить("ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке"); ВсеШаги.Добавить("ЯСкопировалКаталогТестовогоХранилищаКонфигурацииВоВременныйКаталог"); ВсеШаги.Добавить("ЯСохраняюЗначениеВременногоКаталогаВПеременной"); - ВсеШаги.Добавить("ЯСоздаюТестовойФайлAuthors"); + ВсеШаги.Добавить("ЯСоздаюТестовыйФайлAuthors"); ВсеШаги.Добавить("ЯЗаписываюВФайлVersion"); ВсеШаги.Добавить("ЯИнициализируюBareРепозиторийВоВременномКаталоге"); ВсеШаги.Добавить("ЯИнициализируюСвязьСВнешнимРепозиторием"); ВсеШаги.Добавить("ЯДобавляюПозиционныйПараметрДляКомандыИзПеременной"); ВсеШаги.Добавить("ЯДобавляюПараметрДляКомандыИзПеременной"); ВсеШаги.Добавить("ЯДобавляюПараметрыДляКоманды"); - ВсеШаги.Добавить("ЯСоздаюНеполныйТестовойФайлAuthors"); + ВсеШаги.Добавить("ЯСоздаюНеполныйТестовыйФайлAuthors"); ВсеШаги.Добавить("ЯСоздаюНовыйОбъектГитрепозиторий"); - ВсеШаги.Добавить("ЯУстанавливаюРабочейКаталогВоВременныйКаталог"); + ВсеШаги.Добавить("ЯУстанавливаюРабочийКаталогВоВременныйКаталог"); ВсеШаги.Добавить("ЯВключаюПлагин"); ВсеШаги.Добавить("ЯИнициализируюРепозиторийВКаталогеИзПеременной"); ВсеШаги.Добавить("ЯВыключаюВсеПлагины"); ВсеШаги.Добавить("ЯНаполняюBareРепозиторийИзПеременнойТестовымиДанными"); ВсеШаги.Добавить("ЯУстанавливаюПеременнуюОкруженияИзПеременной"); - ВсеШаги.Добавить("ЯУстанавливаюРабочейКаталогИзПеременной"); + ВсеШаги.Добавить("ЯУстанавливаюРабочийКаталогИзПеременной"); ВсеШаги.Добавить("ВКаталогеИзПеременнойСоздаетсяФайлИлиКаталог"); ВсеШаги.Добавить("ВКаталогеИзПеременнойНеСоздаетсяФайлИлиКаталог"); ВсеШаги.Добавить("ЯОчищаюЗначениеПеременныхОкружения"); @@ -82,8 +87,8 @@ КонецПроцедуры -//Я устанавливаю рабочей каталог из переменной "ПутьКаталогаИсходников" -Процедура ЯУстанавливаюРабочейКаталогИзПеременной(Знач ПутьКаталогаИсходников) Экспорт +//Я устанавливаю рабочий каталог из переменной "ПутьКаталогаИсходников" +Процедура ЯУстанавливаюРабочийКаталогИзПеременной(Знач ПутьКаталогаИсходников) Экспорт ВременныйКаталог = БДД.ПолучитьИзКонтекста(ПутьКаталогаИсходников); УстановитьТекущийКаталог(ОбъединитьПути(ТекущийКаталог(), ВременныйКаталог)); @@ -97,7 +102,6 @@ УстановитьДвижок(Команда); Команда.ДобавитьПараметр(ОбернутьВКавычки(ПутьКГитсинк())); Команда.ДобавитьПараметр("p d -a"); - //Команда.ДобавитьПараметр(ПарамСтрока1); КодВозврата = Команда.Исполнить(); Если Не КодВозврата = 0 Тогда @@ -126,6 +130,8 @@ ГитРепозиторий.УстановитьРабочийКаталог(ВременныйКаталог); ГитРепозиторий.Инициализировать(); + ГитРепозиторий.УстановитьНастройку("user.name", "John Doe", РежимУстановкиНастроекGit.Локально); + ГитРепозиторий.УстановитьНастройку("user.email", "jd@example.com", РежимУстановкиНастроекGit.Локально); КонецПроцедуры @@ -170,8 +176,8 @@ ВременныеФайлы.Удалить(); КонецПроцедуры -//Я устанавливаю рабочей каталог во временный каталог -Процедура ЯУстанавливаюРабочейКаталогВоВременныйКаталог() Экспорт +//Я устанавливаю рабочий каталог во временный каталог +Процедура ЯУстанавливаюРабочийКаталогВоВременныйКаталог() Экспорт УстановитьТекущийКаталог(ВременныеФайлы.СоздатьКаталог()); КонецПроцедуры @@ -212,8 +218,8 @@ КонецПроцедуры -//Я создаю тестовой файл AUTHORS -Процедура ЯСоздаюТестовойФайлAuthors() Экспорт +//Я создаю тестовый файл AUTHORS +Процедура ЯСоздаюТестовыйФайлAuthors() Экспорт ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); ФайлАвторов = Новый ЗаписьТекста; @@ -286,7 +292,7 @@ Процедура ЯДобавляюПараметрДляКомандыИзПеременной(Знач Параметр, Знач ИмяКоманды, Знач ИмяПеременной) Экспорт Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); ЗначениеПеременной = БДД.ПолучитьИзКонтекста(ИмяПеременной); - Команда.ДобавитьПараметр(СтрШаблон("%1 %2", Параметр, ЗначениеПеременной)) + Команда.ДобавитьПараметр(СтрШаблон("%1 %2", Параметр, ЗначениеПеременной)); КонецПроцедуры //Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке @@ -303,21 +309,17 @@ Процедура ЯСкопировалКаталогТестовогоХранилищаКонфигурацииВоВременныйКаталог() Экспорт ВременныйКаталог = БДД.ПолучитьИзКонтекста("ВременныйКаталог"); - КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(ВременныйКаталог, "1cv8ddb.1CD")) + КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(ВременныйКаталог, "1cv8ddb.1CD")); КонецПроцедуры // И Я устанавливаю текущие плагины Процедура ЯУстанавливаюТекущиеПлагины() Экспорт - КаталогПлагинов = ВременныеФайлы.СоздатьКаталог(); - - УстановитьПеременнуюСреды("GITSYNC_PLUGINS_PATH", КаталогПлагинов); - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(КаталогГитсинк()); + КомандаOpm.УстановитьРабочийКаталог(КореньПроекта()); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("run testing-build"); + КомандаOpm.ДобавитьПараметр("run install-plugins"); КодВозврата = КомандаOpm.Исполнить(); @@ -327,8 +329,8 @@ КонецПроцедуры -//Я создаю неполный тестовой файл AUTHORS -Процедура ЯСоздаюНеполныйТестовойФайлAuthors() Экспорт +//Я создаю неполный тестовый файл AUTHORS +Процедура ЯСоздаюНеполныйТестовыйФайлAuthors() Экспорт ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников"); ФайлАвторов = Новый ЗаписьТекста; @@ -345,8 +347,8 @@ Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); Для Каждого Параметр из ТаблицаПараметров Цикл - Команда.ДобавитьПараметр(Параметр[0]) - КонецЦикла + Команда.ДобавитьПараметр(Параметр[0]); + КонецЦикла; КонецПроцедуры @@ -382,16 +384,16 @@ КонецФункции Функция КаталогFixtures() - Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures"); + Возврат ОбъединитьПути(КореньПроекта(), "tests", "fixtures"); КонецФункции -Функция КаталогГитсинк() +Функция КореньПроекта() Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."); КонецФункции Функция ПутьКГитсинк() - Возврат ОбъединитьПути(КаталогГитсинк(), "bin", "gitsync/src/cmd/gitsync.os"); + Возврат ОбъединитьПути(КореньПроекта(), "bin_gitsync", "gitsync/src/cmd/gitsync.os"); КонецФункции diff --git a/features/sync-remote.feature b/features/sync-remote.feature index db066e9..71ff2e0 100644 --- a/features/sync-remote.feature +++ b/features/sync-remote.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,7 +15,7 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" @@ -24,59 +24,61 @@ И Я сохраняю значение временного каталога в переменной "URLРепозитория" И я инициализирую связь "ПутьКаталогаИсходников" с внешним репозиторием "URLРепозитория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "sync-remote" Сценарий: Cинхронизация с использованием push - Допустим Я добавляю параметр "-P" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация с использованием pull и push - Допустим Я добавляю параметр "-GP" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" + И Я добавляю параметр "-G" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация c использованием push-tags - Допустим Я добавляю параметр "-P" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" И Я добавляю параметр "--push-tags" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация c использованием push-every-n-commits - Допустим Я добавляю параметр "-P" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" И Я добавляю параметр "--push-n-commits 1" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 Сценарий: Cинхронизация хранилища все вместе - Допустим Я добавляю параметр "-PGTn=2" для команды "gitsync" + Допустим Я добавляю параметр "--PS" для команды "gitsync" + И Я добавляю параметр "-GTn=2" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 diff --git a/features/tool1CD.feature b/features/tool1CD.feature index d3bf3c5..467f01d 100644 --- a/features/tool1CD.feature +++ b/features/tool1CD.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,12 +15,12 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "tool1CD" @@ -29,7 +29,7 @@ Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Использую tool1CD для работы с хранилищем" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 diff --git a/features/unpackForm.feature b/features/unpackForm.feature index e4a2ed3..a5251d2 100644 --- a/features/unpackForm.feature +++ b/features/unpackForm.feature @@ -7,7 +7,7 @@ Контекст: Тестовый контекст unpackForm Когда Я очищаю параметры команды "gitsync" в контексте - И Я устанавливаю рабочей каталог во временный каталог + И Я устанавливаю рабочий каталог во временный каталог И Я создаю новый объект ГитРепозиторий И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке И Я устанавливаю текущие плагины @@ -15,41 +15,41 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" - И Я создаю тестовой файл AUTHORS + И Я создаю тестовый файл AUTHORS И Я записываю "0" в файл VERSION И я включаю отладку лога с именем "oscript.app.gitsync" И Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "-v" для команды "gitsync" + # И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я выключаю все плагины И Я включаю плагин "unpackForm" -Сценарий: Распаковка форм +Сценарий: Распаковка форм без переименования Допустим Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" - И Вывод команды "gitsync" не содержит "Внешнее исключение" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" + # И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Каталог из переменной "ПутьКаталогаИсходников" содержит файл "Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form/module" -Сценарий: Переименование модулей module в module.bsl +Сценарий: Распаковка форм с Переименованием модулей module в Module.bsl Допустим Я добавляю параметр "-R" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" - И Вывод команды "gitsync" не содержит "Внешнее исключение" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" + # И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 - И Каталог из переменной "ПутьКаталогаИсходников" содержит файл "Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form/module.bsl" + И Каталог из переменной "ПутьКаталогаИсходников" содержит файл "Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form/Module.bsl" -Сценарий: Переименование модулей form в form.txt +Сценарий: Распаковка форм с переименованием модулей form в form.txt Допустим Я добавляю параметр "-F" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" - И Вывод команды "gitsync" не содержит "Внешнее исключение" + Тогда Вывод команды "gitsync" содержит "Завершена синхронизации с git" + # И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 И Каталог из переменной "ПутьКаталогаИсходников" содержит файл "Catalogs/Справочник1/Forms/ФормаСписка/Ext/Form/form.txt" diff --git a/packagedef b/packagedef index 76ede8a..372b7a3 100644 --- a/packagedef +++ b/packagedef @@ -3,47 +3,51 @@ // Полную документацию см. на hub.oscript.io/packaging // Процедура ПередСборкой(Знач РабочийКаталог) Экспорт - - ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); - + + ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); + Сообщить("Запаковка бинарных данных библиотек"); - КомандаOpm = Новый Команда; - - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("run packdata "); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); - + КомандаOpm = Новый Команда; + + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("run pack"); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); + КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда + + Если КодВозврата <> 0 Тогда ВызватьИсключение КомандаOpm.ПолучитьВывод(); КонецЕсли; - - Сообщить("Установка локальных зависимостей библиотек"); - КомандаOpm = Новый Команда; - - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install -l"); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда + + Сообщить("Установка локальных зависимостей библиотек"); + КомандаOpm = Новый Команда; + + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("install -l"); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - + КонецЕсли; + КонецПроцедуры Описание.Имя("gitsync-plugins") - .Версия("1.6.0") + .Версия("1.6.1") .Автор("Khorev A.A. and SilverBulleters") .АдресАвтора("khorevaa@gmail.com,help@silverbulleters.org") .Описание("Набор предустановленных плагинов для gitsync") - .ВерсияСреды("1.7.0") + .ВерсияСреды("1.9.2") .ВключитьФайл("src") .ВключитьФайл("docs") .ВключитьФайл("oscript_modules") .ЗависитОт("strings", "0.4.1") + .РазработкаЗависитОт("1testrunner", "1.9.2") + .РазработкаЗависитОт("1bdd", "1.15.1") + .РазработкаЗависитОт("notify", "0.2.0") + .РазработкаЗависитОт("coverage", "0.7.0") .ОпределяетКласс("Плагин_ИнкрементальнаяВыгрузка", "src/Классы/increment.os") .ОпределяетКласс("Плагин_УстановкиЛимитов", "src/Классы/limit.os") .ОпределяетКласс("Плагин_ПроверкиАвторов", "src/Классы/checkAuthors.os") @@ -59,4 +63,4 @@ .ОпределяетКласс("Плагин_DropConfigDump", "src/Классы/dropConfigDump.os") .ОпределяетКласс("Плагин_DropSupport", "src/Классы/dropSupport.os") .ОпределяетКласс("Плагин_RoboCopy", "src/Классы/roboCopy.os") - ; + ; \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" index a11aaef..d1cca7e 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/edtExport.os" @@ -1,6 +1,7 @@ #Использовать logos #Использовать tempfiles #Использовать fs +#Использовать semver Перем ВерсияПлагина; Перем Лог; @@ -100,27 +101,25 @@ Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды); - КлассРеализации.Опция("P project-name", "", "[*edtExport] Имя проекта") - .ТСтрока() - .ВОкружении("GITSYNC_PROJECT_NAME"); + КлассРеализации.Опция("PN project-name", "", "[*edtExport] Имя проекта") + .ТСтрока() + .ВОкружении("GITSYNC_PROJECT_NAME"); КлассРеализации.Опция("W workspace-location", "", "[*edtExport] расположение рабочей области") - .ТСтрока() - .ВОкружении("GITSYNC_WORKSPACE_LOCATION"); - - КлассРеализации.Опция( - "B base-project-name", - "", - "[*edtExport] имя базового проекта в рабочей области (для расширений))") - .ТСтрока() - .ВОкружении("GITSYNC_BASE_PROJECT_NAME"); - - КлассРеализации.Опция( - "M module", - "", - "[*edtExport] имя установленного модуля edt") - .ТСтрока() - .ВОкружении("GITSYNC_MODULE"); + .ТСтрока() + .ВОкружении("GITSYNC_WORKSPACE_LOCATION"); + + КлассРеализации.Опция("BP base-project-name", + "", + "[*edtExport] имя базового проекта в рабочей области (для расширений))") + .ТСтрока() + .ВОкружении("GITSYNC_BASE_PROJECT_NAME"); + + КлассРеализации.Опция("M module", + "", + "[*edtExport] имя установленного модуля edt") + .ТСтрока() + .ВОкружении("GITSYNC_MODULE"); КонецПроцедуры @@ -185,24 +184,8 @@ Лог.Отладка("Каталог проекта EDT: %1", КаталогПроекта); ФС.ОбеспечитьПустойКаталог(КаталогПроекта); - Команда = Новый Команда; - - Параметры = Новый Массив(); - Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки)); - Параметры.Добавить(СтрШаблон("--workspace-location ""%1""", ВременноеРабочееПространство)); - Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта)); - - Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда - Параметры.Добавить(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта)); - КонецЕсли; + Команда = КомандаКонвертации(КаталогВыгрузки, ВременноеРабочееПространство, КаталогПроекта); - Команда.УстановитьСтрокуЗапуска(СтрШаблон("ring %1 workspace import", ИмяМодуля)); - Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI); - Команда.ДобавитьЛогВыводаКоманды("oscript.lib.gitsync.plugins.edtExport"); - Команда.ДобавитьПараметры(Параметры); - Команда.УстановитьИсполнениеЧерезКомандыСистемы(Истина); - Команда.ПоказыватьВыводНемедленно(Ложь); - Команда.УстановитьПравильныйКодВозврата(0); КодВозврата = Команда.Исполнить(); Лог.Отладка("Код возврата EDT: %1", КодВозврата); @@ -228,6 +211,256 @@ #Область Вспомогательные_процедуры_и_функции +// Функция - получает команду запуска утилиты ring для выполнения конвертации +// +// Возвращаемое значение: +// Команда - команда запуска утилиты ring для выполнения конвертации +// +Функция КомандаКонвертации(КаталогВыгрузки, РабочееПространство, КаталогПроекта) + + ВерсияEDT = ВерсияEDT(); + + Если Лев(ВерсияEDT(), 4) >= "2024" Тогда + Команда = КомандаEdtcli(КаталогВыгрузки, РабочееПространство, КаталогПроекта); + Иначе + Команда = КомандаRing(КаталогВыгрузки, РабочееПространство, КаталогПроекта); + КонецЕсли; + + Команда.УстановитьКодировкуВывода(КодировкаТекста.ANSI); + Команда.ДобавитьЛогВыводаКоманды("oscript.lib.gitsync.plugins.edtExport"); + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Истина); + Команда.ПоказыватьВыводНемедленно(Ложь); + Команда.УстановитьПравильныйКодВозврата(0); + + Возврат Команда; + +КонецФункции // КомандаКонвертации() + +// Функция - получает команду запуска утилиты ring для выполнения конвертации +// +// Возвращаемое значение: +// Команда - команда запуска утилиты ring для выполнения конвертации +// +Функция КомандаRing(КаталогВыгрузки, РабочееПространство, КаталогПроекта) + + Команда = Новый Команда; + + Параметры = Новый Массив(); + Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки)); + Параметры.Добавить(СтрШаблон("--workspace-location ""%1""", РабочееПространство)); + Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта)); + + Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда + Параметры.Добавить(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта)); + КонецЕсли; + + ИсполняемыйФайл = НайтиRing(); + + СтрокаЗапуска = СтрШаблон("%1 %2 workspace import", + ОбернутьВКавычки(ИсполняемыйФайл), + ИмяМодуля); + Команда.УстановитьСтрокуЗапуска(СтрокаЗапуска); + Команда.ДобавитьПараметры(Параметры); + + Возврат Команда; + +КонецФункции // КомандаRing() + +// Функция - получает команду запуска утилиты edtcli для выполнения конвертации +// +// Возвращаемое значение: +// Команда - команда запуска утилиты edtcli для выполнения конвертации +// +Функция КомандаEdtcli(КаталогВыгрузки, РабочееПространство, КаталогПроекта) + + Команда = Новый Команда; + + Параметры = Новый Массив(); + Параметры.Добавить(СтрШаблон("--project ""%1""", КаталогПроекта)); + Параметры.Добавить(СтрШаблон("--configuration-files ""%1""", КаталогВыгрузки)); + + Если Не ПустаяСтрока(ИмяРасширения) И Не ПустаяСтрока(ИмяБазовогоПроекта) Тогда + Параметры.Добавить(СтрШаблон("--base-project-name ""%1""", ИмяБазовогоПроекта)); + КонецЕсли; + + ИсполняемыйФайл = НайтиEdtcli(); + + СтрокаЗапуска = СтрШаблон("%1 -data ""%2"" -command import", + ОбернутьВКавычки(ИсполняемыйФайл), + РабочееПространство); + Команда.УстановитьСтрокуЗапуска(СтрокаЗапуска); + Команда.ДобавитьПараметры(Параметры); + + Возврат Команда; + +КонецФункции // КомандаEdtcli() + +// Функция - выполняет поиск утилиты ring и возвращает полный путь к утилите +// +// Возвращаемое значение: +// Строка - полный путь к утилите ring +// +Функция НайтиRing() Экспорт + + РасположениеRing = НайтиКоманду("ring"); + + Если ЗначениеЗаполнено(РасположениеRing) Тогда + Возврат РасположениеRing; + КонецЕсли; + + Если ЭтоWindows() Тогда + КаталогПрограмм = ПолучитьПеременнуюСреды("ProgramW6432"); + Расширение = ".cmd"; + Иначе + КаталогПрограмм = "/opt"; + Расширение = ""; + КонецЕсли; + ПутьУстановки_1CE = ОбъединитьПути(КаталогПрограмм, "1C", "1CE", "components"); + Файлы = НайтиФайлы(ПутьУстановки_1CE, СтрШаблон("ring%1", Расширение), Истина); + + Если Файлы.Количество() > 0 Тогда + Возврат Файлы[0].ПолноеИмя; + КонецЕсли; + + Возврат ""; + +КонецФункции // НайтиRing() + +// Функция - выполняет поиск утилиты edtcli и возвращает полный путь к утилите +// +// Возвращаемое значение: +// Строка - полный путь к утилите edtcli +// +Функция НайтиEdtcli() Экспорт + + РасположениеEdtcli = НайтиКоманду("1cedtcli"); + + Если ЗначениеЗаполнено(РасположениеEdtcli) Тогда + Возврат РасположениеEdtcli; + КонецЕсли; + + Если ЭтоWindows() Тогда + КаталогПрограмм = ПолучитьПеременнуюСреды("ProgramW6432"); + Расширение = ".exe"; + Иначе + КаталогПрограмм = "/opt"; + Расширение = ""; + КонецЕсли; + ПутьУстановки_1CE = ОбъединитьПути(КаталогПрограмм, "1C", "1CE", "components"); + Файлы = НайтиФайлы(ПутьУстановки_1CE, СтрШаблон("1cedtcli%1", Расширение), Истина); + + Если Файлы.Количество() > 0 Тогда + Возврат Файлы[0].ПолноеИмя; + КонецЕсли; + + Возврат ""; + +КонецФункции // НайтиEdtcli() + +Функция ОбернутьВКавычки(Знач Строка) + Возврат """" + Строка + """"; +КонецФункции + +// Функция - выполняет поиск указанной команды в текущем каталоге или переменной окружения PATH +// +// Параметры: +// ИмяКоманды - Строка - имя команды для поиска +// +// Возвращаемое значение: +// Строка - полный путь к команде +// +Функция НайтиКоманду(Знач ИмяКоманды) + + ЭтоWindows = ЭтоWindows(); + + Команда = Новый Команда(); + Если ЭтоWindows Тогда + Команда.УстановитьКоманду("where"); + Иначе + Команда.УстановитьКоманду("which"); + КонецЕсли; + Команда.ДобавитьПараметр(ИмяКоманды); + + Команда.УстановитьИсполнениеЧерезКомандыСистемы(Ложь); + Команда.ПоказыватьВыводНемедленно(Ложь); + + КодВозврата = Команда.Исполнить(); + + ВыводКоманды = СокрЛП(Команда.ПолучитьВывод()); + + Если КодВозврата = 0 Тогда + Лог.Отладка("Найдена команда ""%1"": %2", ИмяКоманды, ВыводКоманды); + Иначе + Лог.Предупреждение("Команда ""%1"" не найдена в текущем каталоге или в переменной окружения PATH:%2%3", + ИмяКоманды, + Символы.ПС, + ВыводКоманды); + Возврат ""; + КонецЕсли; + + Если ФС.ФайлСуществует(ВыводКоманды) Тогда + Возврат ВыводКоманды; + КонецЕсли; + + Возврат ""; + +КонецФункции // НайтиКоманду() + +// Функция - проверяет, что скрипт выполняется в среде Windows +// +// Возвращаемое значение: +// Булево - Истина - скрипт выполняется в среде Windows +// +Функция ЭтоWindows() Экспорт + + СистемнаяИнформация = Новый СистемнаяИнформация; + Возврат Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; + +КонецФункции // ЭтоWindows() + +// Функция - выполняет поиск утилиты ring и возвращает полный номер последней версии EDT +// +// Возвращаемое значение: +// Строка - полный номер последней версии EDT +// +Функция ВерсияEDT() Экспорт + + РасположениеEdtcli = НайтиEdtcli(); + + ФайлEdtcli = Новый Файл(РасположениеEdtcli); + КаталогEdtcli = Новый Файл(ФайлEdtcli.Путь); + КаталогEdtcli = Новый Файл(КаталогEdtcli.Путь); + + Файлы = НайтиФайлы(КаталогEdtcli.Путь, "1cedt.ini", Истина); + РВ = Новый РегулярноеВыражение("1c-edt-(\d+\.\d+\.\d+)\+"); + + НомераВерсий = Новый Массив(); + + Для Каждого ТекФайл Из Файлы Цикл + КаталогВерсии = Новый Файл(ТекФайл.Путь); + + Совпадения = РВ.НайтиСовпадения(КаталогВерсии.Имя); + + Если Совпадения.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + НомераВерсий.Добавить(Совпадения[0].Группы[1].Значение); + Лог.Отладка("Найдена версия EDT ""%1"" в каталоге ""%2"".", Совпадения[0].Группы[1].Значение, ТекФайл.Путь); + КонецЦикла; + + Версии.СортироватьВерсии(НомераВерсий, "УБЫВ"); + + Если НомераВерсий.Количество() = 0 Тогда + Лог.Предупреждение("Не найдена версия EDT"); + КонецЕсли; + + Лог.Отладка("Найдена версия EDT ""%1"".", НомераВерсий[0]); + + Возврат НомераВерсий[0]; + +КонецФункции // ВерсияEDT() + Процедура ДополнитьИнкрементнуюВыгрузкуПроекта(Конфигуратор, КаталогВыгрузки) ПутьКФайлуДополнительнойВыгрузки = ВременныеФайлы.НовоеИмяФайла(); @@ -390,7 +623,7 @@ Процедура Инициализация() - ВерсияПлагина = "1.3.0"; + ВерсияПлагина = "1.4.0"; Лог = Логирование.ПолучитьЛог(ИмяЛога()); КомандыПлагина = Новый Массив; КомандыПлагина.Добавить("sync"); @@ -406,4 +639,4 @@ #КонецОбласти -Инициализация(); +Инициализация(); \ No newline at end of file diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\320\272\320\260\320\244\320\276\321\200\320\274.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\320\272\320\260\320\244\320\276\321\200\320\274.os" index 2651d5e..fbc0ba4 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\320\272\320\260\320\244\320\276\321\200\320\274.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\260\321\201\320\277\320\260\320\272\320\276\320\262\320\272\320\260\320\244\320\276\321\200\320\274.os" @@ -1,3 +1,5 @@ +// BSLLS:LatinAndCyrillicSymbolInWord-off + #Использовать "../../bindata" #Использовать logos @@ -28,7 +30,7 @@ Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.unpackForm"); КомпонентаГотова = Ложь; - ЭтоСборкаEXE = ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE"; + ЭтоСборкаEXE = ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE"; // BSLLS:MagicNumber-off СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; @@ -62,7 +64,6 @@ КомандаUnpack.ДобавитьПараметр("-P"); КомандаUnpack.ДобавитьПараметр(ФайлРаспаковки); КомандаUnpack.ДобавитьПараметр(КаталогРаспаковки); - // КомандаUnpack.ПоказыватьВыводНемедленно(Истина); КодВозврата = КомандаUnpack.Исполнить(); @@ -87,7 +88,7 @@ Иначе ПутьКФайлу = ЗагрузчикДвоичныхДанных.ПолучитьПутьКФайлу("v8unpack.dll"); - //Лог.Отладка("Выполняю подключение из файла <%1>", ПутьКФайлу); + Лог.Отладка("Выполняю подключение из файла <%1>", ПутьКФайлу); ПодключитьВнешнююКомпоненту(ПутьКФайлу); КонецЕсли; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/syncRemote.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/syncRemote.os" index ec8d0ca..05076ad 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/syncRemote.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/syncRemote.os" @@ -27,7 +27,7 @@ // Строка - текущая версия плагина // Функция Версия() Экспорт - Возврат "1.6.0"; + Возврат "1.6.1"; КонецФункции // Возвращает приоритет выполнения плагина @@ -103,13 +103,15 @@ Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды); - //КлассРеализации.Опция("b branch", "master", "<имя ветки git>").ВОкружении("GITSYNC_BRANCH"); - КлассРеализации.Опция("P push", Ложь, "[*sync-remote] Флаг отправки изменений на удаленный репозиторий") + КлассРеализации.Опция("PS push", Ложь, "[*sync-remote] Флаг отправки изменений на удаленный репозиторий") .Флаг() .ВОкружении("GITSYNC_REMOTE_PUSH"); КлассРеализации.Опция("G pull", Ложь, "[*sync-remote] Флаг получения изменений из удаленный репозитория перед синхронизацией") .Флаг() .ВОкружении("GITSYNC_REMOTE_PULL"); + КлассРеализации.Опция("b branch", "master", "[*sync-remote] Имя ветки") + .ТСтрока() + .ВОкружении("GITSYNC_REMOTE_BRANCH"); КлассРеализации.Опция("T push-tags", Ложь, "[*sync-remote] Флаг отправки тегов по версиям") .Флаг() .ВОкружении("GITSYNC_REMOTE_PUSH_TAGS"); @@ -134,8 +136,9 @@ КоличествоКоммитовДоPush = ПараметрыКоманды.Параметр("push-n-commits", 0); - Лог.Отладка("Установлена отправка изменений <%1> ", ОтправитьИзменения); Лог.Отладка("Установлено получение изменений <%1> ", ПолучитьИзменения); + Лог.Отладка("Установлено имя ветки <%1> ", ИмяВетки); + Лог.Отладка("Установлена отправка изменений <%1> ", ОтправитьИзменения); Лог.Отладка("Установлено количество коммитов <%1>, после которых осуществляется отправка", КоличествоКоммитовДоPush); Лог.Отладка("Установлен флаг отправки меток в значение <%1> выгрузки версий", ОтправлятьТеги); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" index f7cf279..002c053 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" @@ -28,7 +28,7 @@ // Строка - текущая версия плагина // Функция Версия() Экспорт - Возврат "1.6.0"; + Возврат "1.6.1"; КонецФункции // Возвращает приоритет выполнения плагина @@ -160,7 +160,7 @@ .ТСтрока() .ВОкружении("GITSYNC_IBCMD_DB_PWD"); - КлассРеализации.Опция("j ibcmd-threads", "", "[*use-ibcmd] Количество потоков используемых при экспорте") + КлассРеализации.Опция("j ibcmd-threads", "", "[*use-ibcmd] Количество потоков используемых при экспорте") .ТЧисло() .ВОкружении("GITSYNC_IBCMD_THREADS"); @@ -211,8 +211,8 @@ ВыгрузитьКонфигурациюВФайлыIBCMD(Конфигуратор, КаталогВыгрузки); Исключение ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - Лог.Ошибка("Невозможно выгрузить конфигурацию в файлы. Ошибка:%1%2", Символы.ПС, ТекстОшибки); - ВызватьИсключение; + ТекстОшибки = СтрШаблон("Невозможно выгрузить конфигурацию в файлы. Ошибка:%1%2", Символы.ПС, ТекстОшибки); + ВызватьИсключение ТекстОшибки; КонецПопытки; КонецПроцедуры @@ -275,9 +275,10 @@ Если КодВозврата <> 0 Тогда ТекстОшибки = КомандаIBCMD.ПолучитьВывод(); - Лог.КритичнаяОшибка("Не удалось выгрузить конфигурацию в файлы с использованием IBCMD:%1%2", - Символы.ПС, - ТекстОшибки); + ТекстОшибки = СтрШаблон("Не удалось выгрузить конфигурацию в файлы с использованием IBCMD:%1%2", + Символы.ПС, + ТекстОшибки); + ВызватьИсключение ТекстОшибки; КонецЕсли; КонецПроцедуры // ВыгрузитьКонфигурациюВФайлыIBCMD() @@ -335,28 +336,28 @@ КодВозврата = КомандаIBCMD.Исполнить(); - Если КодВозврата <> 0 Тогда - ТекстОшибки = КомандаIBCMD.ПолучитьВывод(); - Лог.КритичнаяОшибка("Не удалось получить информацию об изменениях конфигурации:%1%2", - Символы.ПС, - ТекстОшибки); - КонецЕсли; - - ФайлПроверки = Новый Файл(ПутьКФайлуПроверки); - - Если ФайлПроверки.Существует() Тогда - СтрокаПолныйДамп = "modified: all"; - ЧтениеФайла = Новый ЧтениеТекста(ПутьКФайлуПроверки); - СтрокаПроверки = Лев(ЧтениеФайла.ПрочитатьСтроку(), СтрДлина(СтрокаПолныйДамп)); - - Если Не ПустаяСтрока(СокрЛП(СтрокаПроверки)) Тогда - - Лог.Отладка("Строка проверки на возможность выгрузки конфигурации: <%1> = <%2> ", СтрокаПолныйДамп, СтрокаПроверки); - Результат = НЕ (ВРег(СтрокаПроверки) = ВРег(СтрокаПолныйДамп)); + Если КодВозврата = 0 Тогда + ФайлПроверки = Новый Файл(ПутьКФайлуПроверки); + Если ФайлПроверки.Существует() Тогда + СтрокаПолныйДамп = "modified: all"; + ЧтениеФайла = Новый ЧтениеТекста(ПутьКФайлуПроверки); + СтрокаПроверки = Лев(ЧтениеФайла.ПрочитатьСтроку(), СтрДлина(СтрокаПолныйДамп)); + + Если Не ПустаяСтрока(СокрЛП(СтрокаПроверки)) Тогда + + Лог.Отладка("Строка проверки на возможность выгрузки конфигурации: <%1> = <%2> ", СтрокаПолныйДамп, СтрокаПроверки); + Результат = НЕ (ВРег(СтрокаПроверки) = ВРег(СтрокаПолныйДамп)); + + КонецЕсли; + ЧтениеФайла.Закрыть(); + УдалитьФайлы(ПутьКФайлуПроверки); КонецЕсли; - ЧтениеФайла.Закрыть(); - УдалитьФайлы(ПутьКФайлуПроверки); + Иначе + ТекстОшибки = КомандаIBCMD.ПолучитьВывод(); + Лог.Ошибка("Не удалось получить информацию об изменениях конфигурации:%1%2", + Символы.ПС, + ТекстОшибки); КонецЕсли; Лог.Отладка("Инкрементальная выгрузка конфигурации - %1", ?(Результат, "ВОЗМОЖНА", "НЕВОЗМОЖНА")); diff --git a/tasks/install-gitsync.os b/tasks/install-gitsync.os index 2f1c21d..1153014 100644 --- a/tasks/install-gitsync.os +++ b/tasks/install-gitsync.os @@ -36,20 +36,19 @@ КомандаOpm = Новый Команда; КомандаOpm.УстановитьРабочийКаталог(Каталог); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install"); - КомандаOpm.ДобавитьПараметр("-l"); + КомандаOpm.ДобавитьПараметр("install"); + КомандаOpm.ДобавитьПараметр("-l"); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); - КомандаOpm = Новый Команда; КомандаOpm.УстановитьРабочийКаталог(Каталог); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("build"); - КомандаOpm.ДобавитьПараметр("--mf"); - КомандаOpm.ДобавитьПараметр(ПутьКМанифестуСборки); - КомандаOpm.ДобавитьПараметр(Каталог); + КомандаOpm.ДобавитьПараметр("build"); + КомандаOpm.ДобавитьПараметр("--mf"); + КомандаOpm.ДобавитьПараметр(ПутьКМанифестуСборки); + КомандаOpm.ДобавитьПараметр(Каталог); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); @@ -58,40 +57,42 @@ ВызватьИсключение КомандаOpm.ПолучитьВывод(); КонецЕсли; - МассивФайлов = НайтиФайлы(Каталог, "*.ospx"); + МассивФайлов = НайтиФайлы(Каталог, "gitsync*.ospx"); Если МассивФайлов.Количество() = 0 Тогда ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета gitsync", "Не найден собранный файл пакета gitsync"); КонецЕсли; - ФайлПлагина = МассивФайлов[0].ПолноеИмя; - - КаталогПроектаGitsync = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "bin"); - - УстановитьПеременнуюСреды("OSCRIPTBIN", КаталогПроектаGitsync); - - ФС.ОбеспечитьКаталог(КаталогПроектаGitsync); + ФайлПакетаGitsync = МассивФайлов[0].ПолноеИмя; - Лог.Информация("Установка в каталог проекта <%1>", КаталогПроектаGitsync); + КореньПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); + + // устанавливать gitsync из файла с параметром --dest + // необходимо в каталог, отличный от ./bin, потому что + // на Linux имя каталога установки ./bin/gitsync + // и имя исполняемого файла ./bin/gitsync совпадут + КаталогУстановкиGitsync = ОбъединитьПути(КореньПроекта, "bin_gitsync"); - Лог.Информация("Установка пакета из файла <%1>", ФайлПлагина); + ФС.ОбеспечитьКаталог(КаталогУстановкиGitsync); + + Лог.Информация("Установка в каталог проекта <%1>", КаталогУстановкиGitsync); - УстановитьПеременнуюСреды("OSCRIPTBIN", КаталогПроектаGitsync); + Лог.Информация("Установка пакета из файла <%1>", ФайлПакетаGitsync); КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(КаталогПроектаGitsync); + КомандаOpm.УстановитьРабочийКаталог(КореньПроекта); КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install"); - КомандаOpm.ДобавитьПараметр("-f"); - КомандаOpm.ДобавитьПараметр(ФайлПлагина); - КомандаOpm.ДобавитьПараметр("--dest"); - КомандаOpm.ДобавитьПараметр(КаталогПроектаGitsync); + КомандаOpm.ДобавитьПараметр("install"); + КомандаOpm.ДобавитьПараметр("-f"); + КомандаOpm.ДобавитьПараметр(ФайлПакетаGitsync); + КомандаOpm.ДобавитьПараметр("--dest"); + КомандаOpm.ДобавитьПараметр(КаталогУстановкиGitsync); КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); Если КодВозврата <> 0 Тогда - ВызватьИсключение СтрШаблон("Ошибка установки opm из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); + ВызватьИсключение СтрШаблон("Ошибка установки opm из <%1> по причине <%2>", ФайлПакетаGitsync, КомандаOpm.ПолучитьВывод()); КонецЕсли; КонецПроцедуры @@ -114,5 +115,3 @@ Лог = Логирование.ПолучитьЛог("task.install-opm"); ПолезнаяРабота(); - - diff --git a/tasks/install-plugins.os b/tasks/install-plugins.os new file mode 100644 index 0000000..c2e2eae --- /dev/null +++ b/tasks/install-plugins.os @@ -0,0 +1,38 @@ +#Использовать gitrunner + +Перем Лог; + +Процедура УстановитьТекущиеПлагины(Знач Каталог) + + МассивФайлов = НайтиФайлы(Каталог, "gitsync-plugins*.ospx"); + + Если МассивФайлов.Количество() = 0 Тогда + ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка поиска пакета gitsync-plugins", "Не найден собранный файл пакета gitsync-plugins"); + КонецЕсли; + + ФайлПлагина = МассивФайлов[0].ПолноеИмя; + + ИсполнительGitSync = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "bin_gitsync/gitsync/src/cmd/gitsync.os"); + + Лог.Информация("Установка плагинов из файла <%1>", ФайлПлагина); + + КомандаOpm = Новый Команда; + КомандаOpm.УстановитьРабочийКаталог(Каталог); + КомандаOpm.УстановитьКоманду("oscript"); + КомандаOpm.ДобавитьПараметр(ИсполнительGitSync); + КомандаOpm.ДобавитьПараметр("p i"); + КомандаOpm.ДобавитьПараметр("-f"); + КомандаOpm.ДобавитьПараметр(ФайлПлагина); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение СтрШаблон("Ошибка установки плагинов из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); + КонецЕсли; + +КонецПроцедуры + +Лог = Логирование.ПолучитьЛог("task.install-opm"); + +УстановитьТекущиеПлагины(ОбъединитьПути(ТекущийСценарий().Каталог, "..")); diff --git a/tasks/make.os b/tasks/make.os index de2ccd3..9dfefbb 100644 --- a/tasks/make.os +++ b/tasks/make.os @@ -4,7 +4,6 @@ Перем Лог; Перем КаталогПроекта; - Процедура ВыполнитьСборкуEXE(КаталогУстановки) Лог.Информация("Выполнение создания exe в <%1>", КаталогУстановки); @@ -85,7 +84,6 @@ КонецПроцедуры - Процедура ОбработатьСтруктуруКаталоговПоСоглашению(Путь, МассивПлагинов) КаталогиКлассов = Новый Массив; @@ -100,7 +98,6 @@ КонецЦикла; - КонецПроцедуры Процедура ОбработатьКаталогКлассов(Знач Путь, МассивПлагинов) @@ -112,8 +109,7 @@ Для Каждого Файл Из Файлы Цикл Сообщить(СтрШаблон(" класс (по соглашению) %1, файл %2", Файл.ИмяБезРасширения, Файл.ПолноеИмя)); СтандартнаяОбработка = Ложь; - // ДобавитьКласс(Файл.ПолноеИмя, Файл.ИмяБезРасширения); - + МассивПлагинов.Добавить(Файл.ИмяБезРасширения); КонецЦикла; @@ -126,21 +122,16 @@ КаталогСборки = ВременныеФайлы.СоздатьКаталог(); КаталогУстановки = ОбъединитьПути(КаталогПроекта, "bin"); - ПодготовитьПлагины(КаталогУстановки, КаталогПроекта); - ВыполнитьСборкуEXE(КаталогУстановки); ВременныеФайлы.УдалитьФайл(КаталогСборки); - //ВременныеФайлы.УдалитьФайл(КаталогУстановки); КонецПроцедуры - ФайлКаталогПроекта = Новый Файл(ОбъединитьПути(ТекущийСценарий().Каталог, "..")); КаталогПроекта = ФайлКаталогПроекта.ПолноеИмя; Лог = Логирование.ПолучитьЛог("task.install-opm"); -// Лог.УстановитьУровень(УровниЛОга.отладка); ПолезнаяРабота(); diff --git a/tasks/test.os b/tasks/test.os index 2200b09..3c3725e 100644 --- a/tasks/test.os +++ b/tasks/test.os @@ -27,7 +27,10 @@ Функция ПрогнатьФичи() - ПутьОтчетаJUnit = "./bdd-log.xml"; + ПутьКОтчетам = ОбъединитьПути("build", "reports"); + СоздатьКаталог(ПутьКОтчетам); + + ПутьОтчетаJUnit = ОбъединитьПути(ПутьКОтчетам, "bdd-log.xml"); КаталогФич = ОбъединитьПути(".", "features"); diff --git a/tasks/testing-build.os b/tasks/testing-build.os deleted file mode 100644 index 646b3d1..0000000 --- a/tasks/testing-build.os +++ /dev/null @@ -1,96 +0,0 @@ -#Использовать gitrunner -#Использовать tempfiles -#Использовать fs - -Перем Лог; - -Процедура ПолучитьИсходники(Знач URLРепозитория, Знач Ветка, Знач Каталог) - - ГитРепозиторий = Новый ГитРепозиторий; - - ГитРепозиторий.УстановитьРабочийКаталог(Каталог); - - ГитРепозиторий.КлонироватьРепозиторий(URLРепозитория, Каталог); - ГитРепозиторий.ПерейтиВВетку(Ветка); - -КонецПроцедуры - -Процедура УстановитьПакет(Знач Каталог, ПутьКМанифестуСборки) - - Лог.Информация("Каталог сборки <%1>", Каталог); - - Лог.Информация("Сборка пакета библиотеки"); - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(Каталог); - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("build"); - КомандаOpm.ДобавитьПараметр("--mf"); - КомандаOpm.ДобавитьПараметр(ПутьКМанифестуСборки); - КомандаOpm.ДобавитьПараметр(Каталог); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - - МассивФайлов = НайтиФайлы(Каталог, "*.ospx"); - - Если МассивФайлов.Количество() = 0 Тогда - ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета gitsync", "Не найден собранный файл пакета gitsync"); - КонецЕсли; - - ФайлПлагина = МассивФайлов[0].ПолноеИмя; - - ИсполнительGitSync = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "bin/gitsync/src/cmd/gitsync.os"); - - // ФС.ОбеспечитьКаталог(КаталогПроектаGitsync); - - // Лог.Информация("Установка в каталог проекта <%1>", КаталогПроектаGitsync); - - Лог.Информация("Установка пакета из файла <%1>", ФайлПлагина); - - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(Каталог); - КомандаOpm.УстановитьКоманду("oscript"); - КомандаOpm.ДобавитьПараметр("-encoding=utf-8"); - КомандаOpm.ДобавитьПараметр(ИсполнительGitSync); - КомандаOpm.ДобавитьПараметр("p c -a"); - - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(Каталог); - КомандаOpm.УстановитьКоманду("oscript"); - КомандаOpm.ДобавитьПараметр("-encoding=utf-8"); - КомандаOpm.ДобавитьПараметр(ИсполнительGitSync); - КомандаOpm.ДобавитьПараметр("p i"); - КомандаOpm.ДобавитьПараметр("-f"); - КомандаOpm.ДобавитьПараметр(ФайлПлагина); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение СтрШаблон("Ошибка установки плагинов из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); - КонецЕсли; - - ВременныеФайлы.УдалитьФайл(ФайлПлагина); - -КонецПроцедуры - -Процедура ПолезнаяРабота() - - ПутьКМанифестуСборки = "packagedef"; - - // ПолучитьИсходники(URLРепозитория, Ветка, КаталогСборки); - УстановитьПакет(ОбъединитьПути(ТекущийСценарий().Каталог, ".."), ПутьКМанифестуСборки); - - // ВременныеФайлы.УдалитьФайл(КаталогСборки); - -КонецПроцедуры - -Лог = Логирование.ПолучитьЛог("task.install-opm"); - -ПолезнаяРабота(); - -