Skip to content

Commit 15610a3

Browse files
committed
Merge branch 'pr-119' into develop
2 parents ba554da + e8eaddc commit 15610a3

8 files changed

+213
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
2+
#Использовать 1commands
3+
#Использовать asserts
4+
5+
Перем БДД; //контекст фреймворка 1bdd
6+
Перем Лог;
7+
8+
// Метод выдает список шагов, реализованных в данном файле-шагов
9+
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
10+
БДД = КонтекстФреймворкаBDD;
11+
12+
ВсеШаги = Новый Массив;
13+
14+
ВсеШаги.Добавить("ЯЗаменяюВФайлеВРабочемКаталогеСтрокуНаСтроку");
15+
16+
Возврат ВсеШаги;
17+
КонецФункции
18+
19+
// Реализация шагов
20+
21+
// Процедура выполняется перед запуском каждого сценария
22+
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
23+
24+
КонецПроцедуры
25+
26+
// Процедура выполняется после завершения каждого сценария
27+
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
28+
29+
КонецПроцедуры
30+
31+
// Я заменяю в файле "file.txt" в рабочем каталоге строку "строка поиска" на строку "строка замены"
32+
Процедура ЯЗаменяюВФайлеВРабочемКаталогеСтрокуНаСтроку(Знач ПутьФайла, Знач СтрокаПоиска, Знач СтрокаЗамены) Экспорт
33+
ПолныйПутьФайла = ОбъединитьПути(РабочийКаталог(), ПутьФайла);
34+
Чтение = Новый ЧтениеТекста(ПолныйПутьФайла, КодировкаТекста.UTF8NoBOM);
35+
Текст = Чтение.Прочитать();
36+
Текст = СтрЗаменить(Текст, СтрокаПоиска, СтрокаЗамены);
37+
Чтение.Закрыть();
38+
Запись = Новый ЗаписьТекста(ПолныйПутьФайла, КодировкаТекста.UTF8NoBOM);
39+
Запись.Записать(Текст);
40+
Запись.Закрыть();
41+
КонецПроцедуры
42+
43+
//{ Служебные методы
44+
45+
Функция РабочийКаталог()
46+
Возврат БДД.ПолучитьИзКонтекста("РабочийКаталог");
47+
КонецФункции
48+
49+
50+
//}
51+
52+
Лог = Логирование.ПолучитьЛог("bdd");
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# language: ru
2+
3+
Функционал: Выполнение строковых операций с файлами
4+
Как Пользователь
5+
Я хочу иметь возможность выполнять разные строковые операции с файлами
6+
Чтобы я мог проще тестировать фичи
7+
8+
Контекст:
9+
Допустим я создаю временный каталог и сохраняю его в контекст
10+
И я сохраняю каталог проекта в контекст
11+
И я устанавливаю временный каталог как рабочий каталог
12+
И я установил рабочий каталог как текущий каталог
13+
14+
Сценарий: Замена подстроки в файле
15+
Когда я копирую файл "fixture.txt" из каталога "tests" проекта в подкаталог "" рабочего каталога
16+
И я заменяю в файле "fixture.txt" в рабочем каталоге строку "строка поиска" на строку "строка замены"
17+
Тогда файл "fixture.txt" в рабочем каталоге содержит "строка замены"
18+
И файл "fixture.txt" в рабочем каталоге не содержит "строка поиска"
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# language: ru
2+
3+
Функционал: Выполнение операций по разборке на исходники
4+
Как Пользователь
5+
Я хочу иметь возможность разбирать внешние файлы на исходники
6+
Чтобы я мог проще следить за изменениями в коде
7+
8+
Контекст:
9+
Допустим я создаю временный каталог и сохраняю его в контекст
10+
И я сохраняю каталог проекта в контекст
11+
И я устанавливаю временный каталог как рабочий каталог
12+
И я установил рабочий каталог как текущий каталог
13+
14+
Сценарий: Разборка файла из заданной папки
15+
Когда я выполняю команду "oscript" с параметрами "<КаталогПроекта>/v8files-extractor.os --decompile <КаталогПроекта>/tests/Fixture.epf <РабочийКаталог>"
16+
Тогда в рабочем каталоге существует каталог "Fixture"
17+
И в подкаталоге "Fixture" рабочего каталога существует файл "renames.txt"
18+
И в подкаталоге "Fixture" рабочего каталога существует каталог "Form"
19+
И в подкаталоге "Fixture" рабочего каталога существует каталог "Макеты"
20+
И в подкаталоге "Fixture" рабочего каталога существует каталог "und"
21+
22+
Сценарий: Разборка каталога с вложенными каталогами
23+
Когда я создаю каталог "bin" в рабочем каталоге
24+
И я создаю каталог "1" в подкаталоге "bin" рабочего каталога
25+
И я копирую файл "Fixture.epf" из каталога "tests" проекта в подкаталог "bin/1" рабочего каталога
26+
И я создаю каталог "src" в рабочем каталоге
27+
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/v8files-extractor.os --decompile <РабочийКаталог>/bin <РабочийКаталог>/src"
28+
Тогда в рабочем каталоге существует каталог "src/1/Fixture"
29+
И в подкаталоге "src/1/Fixture" рабочего каталога существует файл "renames.txt"
30+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "Form"
31+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "Макеты"
32+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "und"
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# language: ru
2+
3+
Функционал: Выполнение операций по разборке на исходники с помощью хука pre-commit
4+
Как Пользователь
5+
Я хочу иметь возможность разбирать внешние файлы на исходники с помощью хука pre-commit
6+
Чтобы я не делал вручную разборку при commit'е
7+
8+
Контекст:
9+
Допустим я создаю временный каталог и сохраняю его в контекст
10+
И я сохраняю каталог проекта в контекст
11+
И я устанавливаю временный каталог как рабочий каталог
12+
И я установил рабочий каталог как текущий каталог
13+
И Я выполняю команду "git" с параметрами 'init'
14+
И Я выполняю команду "git" с параметрами "config --local core.quotepath false"
15+
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/v8files-extractor.os --install"
16+
17+
Сценарий: Разборка изменений по журналу Git с вложенными каталогами
18+
Когда я создаю каталог "1" в рабочем каталоге
19+
И я копирую файл "Fixture.epf" из каталога "tests" проекта в подкаталог "1" рабочего каталога
20+
И я создаю каталог "src" в рабочем каталоге
21+
И я выполняю команду "git" с параметрами "add -A ."
22+
И я выполняю команду "git" с параметрами "status"
23+
И я выполняю команду "git" с параметрами 'commit -m "init commit"'
24+
Тогда в рабочем каталоге существует каталог "src/1/Fixture"
25+
И в подкаталоге "src/1/Fixture" рабочего каталога существует файл "renames.txt"
26+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "Form"
27+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "Макеты"
28+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "und"
29+
И вывод команды "git" содержит "create mode 100644 1/Fixture.epf"
30+
31+
Сценарий: Разборка изменений по журналу Git с вложенными каталогами с удалением бинарников из кэша
32+
Когда я создаю каталог "1" в рабочем каталоге
33+
И я копирую файл "Fixture.epf" из каталога "tests" проекта в подкаталог "1" рабочего каталога
34+
И я создаю каталог "src" в рабочем каталоге
35+
И я заменяю в файле ".git/hooks/pre-commit" в рабочем каталоге строку "v8files-extractor.os --git-precommit src" на строку "v8files-extractor.os --git-precommit src --remove-orig-bin-files"
36+
И Файл ".git/hooks/pre-commit" в рабочем каталоге содержит "oscript -encoding=utf-8 .git/hooks/v8files-extractor.os --git-precommit src --remove-orig-bin-files"
37+
И я выполняю команду "git" с параметрами "add -A ."
38+
И я выполняю команду "git" с параметрами "status"
39+
И я выполняю команду "git" с параметрами 'commit -m "init commit"'
40+
Тогда в рабочем каталоге существует каталог "src/1/Fixture"
41+
И в подкаталоге "src/1/Fixture" рабочего каталога существует файл "renames.txt"
42+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "Form"
43+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "Макеты"
44+
И в подкаталоге "src/1/Fixture" рабочего каталога существует каталог "und"
45+
И вывод команды "git" не содержит "create mode 100644 1/Fixture.epf"
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# language: ru
2+
3+
Функционал: Выполнение операций с репозиторием Git
4+
Как Пользователь
5+
Я хочу иметь возможность выполнять различные операции с репозиторием Git
6+
Чтобы я мог проще устанавливать precommit1c в свой репозиторий
7+
8+
Контекст:
9+
Допустим Я создаю временный каталог и сохраняю его в контекст
10+
И Я сохраняю каталог проекта в контекст
11+
И Я устанавливаю временный каталог как рабочий каталог
12+
И Я установил рабочий каталог как текущий каталог
13+
И Я выполняю команду "git" с параметрами 'init'
14+
15+
Сценарий: Проверка настроек репозитория Git (простой отрицательный)
16+
Когда Я копирую файл "v8files-extractor.os" из каталога "" проекта в подкаталог ".git/hooks" рабочего каталога
17+
И Я выполняю команду "oscript" с параметрами '.git/hooks/v8files-extractor.os --git-check-config'
18+
Тогда вывод команды "oscript" содержит "У текущего репозитария не заданы необходимые настройки!"
19+
20+
Сценарий: Проверка настроек репозитория Git (простой положительный)
21+
Когда Я копирую файл "v8files-extractor.os" из каталога "" проекта в подкаталог ".git/hooks" рабочего каталога
22+
И Я выполняю команду "git" с параметрами "config --local core.quotepath false"
23+
И Я выполняю команду "oscript" с параметрами ".git/hooks/v8files-extractor.os --git-check-config"
24+
Тогда вывод команды "oscript" не содержит "У текущего репозитария не заданы необходимые настройки!"
25+
26+
Сценарий: Установка precommit1c в репозиторий
27+
Когда Я выполняю команду "git" с параметрами "config --local core.quotepath false"
28+
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/v8files-extractor.os --install"
29+
Тогда В рабочем каталоге существует каталог ".git/hooks"
30+
И В рабочем каталоге существует каталог ".git/hooks/v8Reader"
31+
И В рабочем каталоге существует каталог ".git/hooks/tools"
32+
И В рабочем каталоге существует файл ".git/hooks/v8Reader/V8Reader.epf"
33+
И В рабочем каталоге существует файл ".git/hooks/pre-commit"
34+
И В рабочем каталоге существует файл ".git/hooks/v8files-extractor.os"
35+
И В рабочем каталоге существует файл ".git/hooks/tools/v8unpack.exe"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# language: ru
2+
3+
Функционал: Сборка внешних файлов из исходников
4+
Как Пользователь
5+
Я хочу иметь возможность собирать внешние файлы из исходников
6+
Чтобы я мог не делать этого вручную
7+
8+
Контекст:
9+
Допустим я создаю временный каталог и сохраняю его в контекст
10+
И я сохраняю каталог проекта в контекст
11+
И я устанавливаю временный каталог как рабочий каталог
12+
И я установил рабочий каталог как текущий каталог
13+
14+
Сценарий: Сборка файла из заданной папки
15+
Когда я создаю каталог "bin" в рабочем каталоге
16+
И я выполняю команду "oscript" с параметрами "<КаталогПроекта>\v8files-extractor.os --compile <КаталогПроекта>\src\tests\Fixture <РабочийКаталог>\bin"
17+
Тогда в подкаталоге "bin" рабочего каталога существует файл "Fixture.epf"

tests/fixture.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Первая строка
2+
Это строка поиска
3+
Ещё одна строка

v8files-extractor.os

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
мВозможныеКоманды = Новый Структура;
3939
мВозможныеКоманды.Вставить("Декомпилировать", "--decompile");
4040
мВозможныеКоманды.Вставить("Помощь", "--help");
41+
мВозможныеКоманды.Вставить("ПроверитьКонфигГит", "--git-check-config");
4142
мВозможныеКоманды.Вставить("ОбработатьИзмененияИзГит", "--git-precommit");
4243
мВозможныеКоманды.Вставить("Компилировать", "--compile");
4344
мВозможныеКоманды.Вставить("Установить", "--install");
@@ -63,6 +64,7 @@
6364

6465
ДобавитьОписаниеКомандыДекомпилировать(Парсер);
6566
ДобавитьОписаниеКомандыПомощь(Парсер);
67+
ДобавитьОписаниеКомандыПроверитьКонфигГит(Парсер);
6668
ДобавитьОписаниеКомандыИзмененияПоЖурналуГит(Парсер);
6769
ДобавитьОписаниеКомандыКомпилировать(Парсер);
6870
ДобавитьОписаниеКомандыУстановить(Парсер);
@@ -84,6 +86,8 @@
8486
Декомпилировать(Аргументы.ЗначенияПараметров["ПутьВходящихДанных"], Аргументы.ЗначенияПараметров["ВыходнойКаталог"]);
8587
ИначеЕсли Команда = ВозможныеКоманды().Помощь Тогда
8688
ВывестиСправку();
89+
ИначеЕсли Команда = ВозможныеКоманды().ПроверитьКонфигГит Тогда
90+
ПроверитьНастройкиРепозитарияГит();
8791
ИначеЕсли Команда = ВозможныеКоманды().ОбработатьИзмененияИзГит Тогда
8892
ОбработатьИзмененияИзГит(Аргументы.ЗначенияПараметров["ВыходнойКаталог"], Аргументы.ЗначенияПараметров["--remove-orig-bin-files"]);
8993
ИначеЕсли Команда = ВозможныеКоманды().Компилировать Тогда
@@ -123,6 +127,11 @@
123127
Парсер.ДобавитьКоманду(ОписаниеКоманды);
124128
КонецПроцедуры
125129

130+
Процедура ДобавитьОписаниеКомандыПроверитьКонфигГит(Знач Парсер)
131+
ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().ПроверитьКонфигГит);
132+
Парсер.ДобавитьКоманду(ОписаниеКоманды);
133+
КонецПроцедуры
134+
126135
Процедура ДобавитьОписаниеКомандыИзмененияПоЖурналуГит(Знач Парсер)
127136

128137
ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().ОбработатьИзмененияИзГит);
@@ -423,6 +432,8 @@
423432

424433
Сообщить(" --help");
425434
Сообщить(" Показ этого экрана");
435+
Сообщить(" --git-check-config");
436+
Сообщить(" Проверка настроек репозитория git");
426437
Сообщить(" --git-precommit outputPath [--remove-orig-bin-files]");
427438
Сообщить(" Запустить чтение индекса из git и определить список файлов для разбора, разложить их и добавить исходники в индекс");
428439
Сообщить(" Если передан флаг --remove-orig-bin-files, обработанные файлы epf/ert будут удалены из индекса git");

0 commit comments

Comments
 (0)