├── .gitignore
├── .travis.yml
├── build.cmd
├── features
└── build.feature
├── packagedef
├── readme.md
├── src
├── cfe2cf.os
├── Классы
│ ├── КомандаИзКаталогаИсходныхФайлов.os
│ ├── КомандаИзФайлаРасширения.os
│ └── КонверторРасширений.os
└── Модули
│ ├── ОбработкаФайлов.os
│ └── ПараметрыПриложения.os
├── tasks
├── coverage.os
└── test.os
├── tests
└── Конвертация_test.os
└── travis-ci.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | *.ospx
2 | tests.xml
3 | coverage/*
4 | bin
5 | tests-reports/*
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: required
2 | language: generic
3 |
4 | notifications:
5 | email: false
6 | env:
7 | global:
8 | - CHANNEL=dev
9 | - PACKAGE_NAME=cfe2cf
10 | matrix:
11 | - OSCRIPT_VERSION=1_0_20
12 | - OSCRIPT_VERSION=night-build
13 | matrix:
14 | allow_failures:
15 | - env: OSCRIPT_VERSION=night-build
16 |
17 | services:
18 | - docker
19 |
20 | addons:
21 | sonarqube: true
22 |
23 | jdk:
24 | - oraclejdk8
25 |
26 | before_install:
27 | # Load cached docker images
28 | - if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi
29 |
30 | before_script:
31 | - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
32 | - chmod +x ./cc-test-reporter
33 | - ./cc-test-reporter before-build
34 |
35 | after_script:
36 | - ./cc-test-reporter after-build --prefix "/home/travis/build/khorevaa/cli/coverage/" --exit-code $TRAVIS_TEST_RESULT
37 |
38 | before_cache:
39 | # Save tagged docker images
40 | - >
41 | mkdir -p $HOME/docker && docker images -a --filter='dangling=false' --format '{{.Repository}}:{{.Tag}} {{.ID}}'
42 | | xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz'
43 | install:
44 | - docker pull evilbeaver/onescript:1.0.19
45 |
46 | script:
47 | - docker version
48 | - docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
49 | - grep 'Результат прогона тестов <Да>' /tmp/test.log
50 | after_success:
51 | # - bash <(curl -s https://codecov.io/bash)
52 | # - ./sonar-qube.sh
53 |
54 | cache:
55 | directories:
56 | - '$HOME/.m2/repository'
57 | - '$HOME/.sonar/cache'
58 | - '$HOME/docker'
59 | jobs:
60 | include:
61 | - stage: Сборка и публикация github
62 | script: skip
63 | before_deploy:
64 | - docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; oscript -make src/cfe2cf.os cfe2cf.exe ; exit'
65 | deploy:
66 | - provider: releases
67 | api_key: "$GITHUB_OAUTH_TOKEN"
68 | file_glob: true
69 | file: $PACKAGE_NAME*.exe
70 | skip_cleanup: true
71 | on:
72 | branch: master
73 | tags: true
74 |
--------------------------------------------------------------------------------
/build.cmd:
--------------------------------------------------------------------------------
1 | oscript -make ./src/cfe2cf.os ./bin/cfe2cf.exe
--------------------------------------------------------------------------------
/features/build.feature:
--------------------------------------------------------------------------------
1 | # language: ru
2 |
3 | Функционал: Проверка сборки продукта
4 | Как Пользователь
5 | Я хочу автоматически проверять сборку моего продукта
6 | Чтобы гарантировать возможность установку моего продукта у пользователей
7 |
8 | Контекст: Отключение отладки в логах
9 | Допустим Я выключаю отладку лога с именем "oscript.app.cfe2cf"
10 | И Я очищаю параметры команды "opm" в контексте
11 |
12 | Сценарий: Выполнение команды без параметров
13 | Когда Я добавляю параметр "build ." для команды "opm"
14 | И Я выполняю команду "opm"
15 | Тогда Вывод команды "opm" содержит "Сборка пакета завершена"
16 | И Вывод команды "opm" не содержит "Внешнее исключение"
17 | И Код возврата команды "opm" равен 0
--------------------------------------------------------------------------------
/packagedef:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////
2 | // Описание пакета для сборки и установки
3 | // Полную документацию см. на hub.oscript.io/packaging
4 | //
5 |
6 | Описание.Имя("cfe2cf")
7 | .Версия("0.0.1")
8 | .Автор("Denis Kharchenko")
9 | .АдресАвтора("kharchenkodenis@gmail.com")
10 | .Описание("Приложение - Конвертор расширения .cfe в конфигурацию .cf")
11 | .ВерсияСреды("1.0.20")
12 | .ВключитьФайл("src")
13 | ///.ВключитьФайл("docs")
14 | //.ВключитьФайл("tests")
15 | //.ВключитьФайл("package-loader.os")
16 | //.ВключитьФайл("packagedef")
17 | .ЗависитОт("logos", "1.1.1")
18 | .ЗависитОт("cli", "0.9.10")
19 | .ЗависитОт("v8runner", "1.2.0")
20 | .ЗависитОт("fs")
21 | //.ЗависитОт("datetime", "0.1.0")
22 | .ЗависитОт("v8find")
23 | //.ЗависитОт("1bdd") // Необходимо установил для тестирования
24 | //.ЗависитОт("1testrunner") // Необходимо установил для тестирования
25 | // .ОпределяетКласс("КомандаИзКаталогаИсходныхФайлов", "src/Классы/КомандаИзКаталогаИсходныхФайлов.os")
26 | // .ОпределяетКласс("КомандаИзФайлаРасширения", "src/Классы/КомандаИзФайлаРасширения.os")
27 | // .ОпределяетКласс("КонверторРасширений", "src/Классы/КонверторРасширений.os")
28 | .ИсполняемыйФайл("src/cfe2cf.os","cfe2cf");
29 | ;
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | [](https://github.com/best-tech/cfe2cf/stargazers)
2 | [](https://github.com/best-tech/cfe2cf/releases)
3 |
4 | # Приложение - Конвертор расширения .cfe в конфигурацию .cf
5 |
6 | #### Поддерживаются режимы работы:
7 |
8 | - Конвертация из файла расширения (.cfe)
9 | - Конвертация из исходных файлов расширения
10 |
11 | ```
12 | Приложение: cfe2cf
13 | Конвертор расширения .cfe в конфигурацию .cf
14 |
15 | Строка запуска: cfe2cf [ОПЦИИ] КОМАНДА [аргументы...]
16 |
17 | Опции:
18 | -v, --version показать версию и выйти
19 |
20 | Доступные команды:
21 | f, file Конвертация из файла расширения (.cfe) в файл конфигурации (.cf)
22 | s, source Конвертация из исходных файлов расширения (.cfe) в файл конфигурации (.cf)
23 |
24 | Для вывода справки по доступным командам наберите: cfe2cf КОМАНДА --help
25 | ```
26 |
27 | ## Конвертация файла расширения
28 | Пример:
29 |
30 | `cfe2cf file -t c:/temp path/to/ext.cfe ИмяРасширения path/to/conf.cf`
31 |
32 | ```
33 | Команда: f, file
34 | Конвертация из файла расширения (.cfe) в файл конфигурации (.cf)
35 |
36 | Строка запуска: cfe2cf f [ОПЦИИ] SRC NAME OUTPUT
37 |
38 | Аргументы:
39 | SRC Путь к входному файлу расширения (.cfe)
40 | NAME Имя расширения (-Extension)
41 | OUTPUT Путь к выходному файлу конфигурации (.cf)
42 |
43 | Опции:
44 | -t, --tempdir Путь к каталогу временных файлов
45 | ```
46 |
47 | ## Конвертация из исходных файлов
48 |
49 | Пример:
50 |
51 | `cfe2cf file -t c:/temp path/to/ext.src ИмяРасширения path/to/conf.cf`
52 |
53 | ```
54 | Команда: s, source
55 | Конвертация из исходных файлов расширения (.cfe) в файл конфигурации (.cf)
56 |
57 | Строка запуска: cfe2cf s [ОПЦИИ] SRC NAME OUTPUT
58 |
59 | Аргументы:
60 | SRC Путь папке исходных файлов
61 | NAME Имя расширения (-Extension)
62 | OUTPUT Путь к выходному файлу конфигурации (.cf)
63 |
64 | Опции:
65 | -t, --tempdir Путь к каталогу временных файлов
66 | ```
67 |
68 | ### Собрать cfe2cf.exe
69 |
70 | `oscript -make src/cfe2cf.os cfe2cf.exe`
--------------------------------------------------------------------------------
/src/cfe2cf.os:
--------------------------------------------------------------------------------
1 | #Использовать logos
2 | #Использовать cli
3 | #Использовать "."
4 |
5 | Перем Лог;
6 |
7 | ///////////////////////////////////////////////////////////////////////////////
8 |
9 | Процедура ВыполнитьПриложение()
10 |
11 | Приложение = Новый КонсольноеПриложение("cfe2cf", "Конвертор расширения .cfe в конфигурацию .cf");
12 | Приложение.Версия("v version", ПараметрыПриложения.Версия());
13 |
14 | Приложение.ДобавитьКоманду("f file", "Конвертация из файла расширения (.cfe) в файл конфигурации (.cf)", Новый КомандаИзФайлаРасширения);
15 | Приложение.ДобавитьКоманду("s source", "Конвертация из исходных файлов расширения (.cfe) в файл конфигурации (.cf)", Новый КомандаИзКаталогаИсходныхФайлов);
16 |
17 | Приложение.Запустить(АргументыКоманднойСтроки);
18 |
19 | КонецПроцедуры // ВыполнениеКоманды()
20 |
21 |
22 | ///////////////////////////////////////////////////////
23 |
24 | Лог = Логирование.ПолучитьЛог(ПараметрыПриложения.ИмяЛога());
25 |
26 | Попытка
27 |
28 | ВыполнитьПриложение();
29 |
30 | Исключение
31 |
32 | Сообщить(ОписаниеОшибки());
33 |
34 | КонецПопытки;
--------------------------------------------------------------------------------
/src/Классы/КомандаИзКаталогаИсходныхФайлов.os:
--------------------------------------------------------------------------------
1 | #Использовать cli
2 | #Использовать fs
3 | #Использовать logos
4 |
5 | Перем Лог;
6 |
7 | Процедура ОписаниеКоманды(Команда) Экспорт
8 |
9 | Команда.Опция("t tempdir", "", "Путь к каталогу временных файлов");
10 | Команда.Опция("p platform","","Версия платформы");
11 |
12 | Команда.Аргумент("SRC", "", "Путь папке исходных файлов");
13 | Команда.Аргумент("NAME", "", "Имя расширения (-Extension)");
14 | Команда.Аргумент("OUTPUT", "", "Путь к выходному файлу конфигурации (.cf)");
15 |
16 | КонецПроцедуры
17 |
18 | Процедура ВыполнитьКоманду(Знач Команда) Экспорт
19 |
20 | ИмяФайлаРасширения = Команда.ЗначениеАргумента("SRC");
21 | ИмяРасширения = Команда.ЗначениеАргумента("NAME");
22 | ИмяФайлаКонфигурации = Команда.ЗначениеАргумента("OUTPUT");
23 | КаталогВременныхФайлов = Команда.ЗначениеОпции("tempdir");
24 | ВерсияПлатформы = Команда.ЗначениеОпции("platform");
25 |
26 | Конвертор = Новый КонверторРасширений();
27 |
28 | Конвертор.ИсходныйПуть = ИмяФайлаРасширения;
29 | Конвертор.ИмяРасширения = ИмяРасширения;
30 | Конвертор.ИмяФайлаКонфигурации = ИмяФайлаКонфигурации;
31 | Конвертор.КаталогВременныхФайлов = КаталогВременныхФайлов;
32 | Конвертор.ВерсияПлатформы = ВерсияПлатформы;
33 |
34 | Конвертор.ВыполнитьПреобразованиеИзИсходныхФайловРасширения();
35 |
36 | УдалитьФайлы(Конвертор.КаталогВременныхФайлов);
37 |
38 | Конвертор.Лог.Информация(СтрШаблон("ОПЕРАЦИЯ ЗАВЕРШЕНА"));
39 |
40 | КонецПроцедуры
41 |
42 | Лог = Логирование.ПолучитьЛог("oscript.lib.cfe2cf.test");
--------------------------------------------------------------------------------
/src/Классы/КомандаИзФайлаРасширения.os:
--------------------------------------------------------------------------------
1 | #Использовать cli
2 | #Использовать fs
3 |
4 | Процедура ОписаниеКоманды(Команда) Экспорт
5 |
6 | Команда.Опция("t tempdir", "", "Путь к каталогу временных файлов");
7 | Команда.Опция("pl platform","","Версия платформы");
8 |
9 | Команда.Аргумент("SRC", "", "Путь к входному файлу расширения (.cfe)");
10 | Команда.Аргумент("NAME", "", "Имя расширения (-Extension)");
11 | Команда.Аргумент("OUTPUT", "", "Путь к выходному файлу конфигурации (.cf)");
12 |
13 | КонецПроцедуры
14 |
15 | Процедура ВыполнитьКоманду(Знач Команда) Экспорт
16 |
17 | ИмяФайлаРасширения = Команда.ЗначениеАргумента("SRC");
18 | ИмяРасширения = Команда.ЗначениеАргумента("NAME");
19 | ИмяФайлаКонфигурации = Команда.ЗначениеАргумента("OUTPUT");
20 | КаталогВременныхФайлов = Команда.ЗначениеОпции("tempdir");
21 | ВерсияПлатформы = Команда.ЗначениеОпции("platform");
22 |
23 | Конвертор = Новый КонверторРасширений();
24 |
25 | Конвертор.ИсходныйПуть = ИмяФайлаРасширения;
26 | Конвертор.ИмяРасширения = ИмяРасширения;
27 | Конвертор.ИмяФайлаКонфигурации = ИмяФайлаКонфигурации;
28 | Конвертор.КаталогВременныхФайлов = КаталогВременныхФайлов;
29 | Конвертор.ВерсияПлатформы = ВерсияПлатформы;
30 |
31 | Конвертор.ВыполнитьПреобразованиеИзФайлаРасширения();
32 |
33 | УдалитьФайлы(Конвертор.КаталогВременныхФайлов);
34 |
35 | Конвертор.Лог.Информация(СтрШаблон("ОПЕРАЦИЯ ЗАВЕРШЕНА"));
36 |
37 | КонецПроцедуры
38 |
39 |
--------------------------------------------------------------------------------
/src/Классы/КонверторРасширений.os:
--------------------------------------------------------------------------------
1 | #Использовать fs
2 | #Использовать logos
3 | #Использовать v8runner
4 | #Использовать v8find
5 |
6 | Перем Лог Экспорт;
7 |
8 | Перем ИсходныйПуть Экспорт;
9 | Перем ИмяРасширения Экспорт;
10 | Перем ИмяФайлаКонфигурации Экспорт;
11 | Перем КаталогВременныхФайлов Экспорт;
12 | Перем ВерсияПлатформы Экспорт;
13 |
14 |
15 | Перем Конфигуратор;
16 | Перем ИмяВременнойБазы;
17 | Перем КаталогИсходныхФайлов;
18 |
19 | Процедура ВыполнитьПреобразованиеИзФайлаРасширения() Экспорт
20 |
21 | Инициализировать();
22 |
23 | ПодготовитьИсходныеФайлыИзФайлаРасширения();
24 |
25 | ОтредактироватьИЗагрузитьИсходныеФайлы();
26 |
27 | ВыгрузитьФайлКонфигурации();
28 |
29 | КонецПроцедуры
30 |
31 | Процедура ВыполнитьПреобразованиеИзИсходныхФайловРасширения() Экспорт
32 |
33 | Инициализировать();
34 |
35 | СкопироватьИсходныеФайлы();
36 |
37 | ОтредактироватьИЗагрузитьИсходныеФайлы();
38 |
39 | ВыгрузитьФайлКонфигурации();
40 |
41 | КонецПроцедуры
42 |
43 | Процедура СкопироватьИсходныеФайлы()
44 |
45 | ФС.КопироватьСодержимоеКаталога(ИсходныйПуть, КаталогИсходныхФайлов);
46 |
47 | КонецПроцедуры
48 |
49 |
50 | Процедура Инициализировать()
51 |
52 | ФайлРасширения = Новый Файл(ИсходныйПуть);
53 |
54 | Если Не ФайлРасширения.Существует() Тогда
55 | ТекстОшибки = СтрШаблон("Файл не существует по пути %1", ИсходныйПуть);
56 | Лог.Ошибка(ТекстОшибки);
57 | ВызватьИсключение ТекстОшибки;
58 | КонецЕсли;
59 |
60 | Если Не ЗначениеЗаполнено(КаталогВременныхФайлов) Тогда
61 | КаталогВременныхФайлов = ПолучитьИмяВременногоФайла("tmp");
62 | ФС.ОбеспечитьКаталог(КаталогВременныхФайлов);
63 | Лог.Информация(СтрШаблон("Подготовлен каталог %1", КаталогВременныхФайлов))
64 | КонецЕсли;
65 |
66 | ФС.ОбеспечитьКаталог(КаталогВременныхФайлов);
67 |
68 | Если Не ФС.КаталогПустой(КаталогВременныхФайлов) Тогда
69 | ТекстОшибки = СтрШаблон("Каталог временных файлов должен быть пуст: %1", КаталогВременныхФайлов);
70 | Лог.Ошибка(ТекстОшибки);
71 | ВызватьИсключение ТекстОшибки;
72 | КонецЕсли;
73 |
74 | ИмяВременнойБазы = ОбъединитьПути(КаталогВременныхФайлов, "database");
75 | ФС.ОбеспечитьКаталог(ИмяВременнойБазы);
76 |
77 | КаталогИсходныхФайлов = ОбъединитьПути(КаталогВременныхФайлов, "src");
78 | ФС.ОбеспечитьКаталог(КаталогИсходныхФайлов);
79 |
80 | Если ЗначениеЗаполнено(ВерсияПлатформы) Тогда
81 | ПоискПлатформы = Новый МенеджерПлатформы1С();
82 |
83 | СисИнфо = Новый СистемнаяИнформация;
84 | ЭтоWindows = Найти(НРег(СисИнфо.ВерсияОС), "windows") > 0;
85 | Это64ОС = СисИнфо.Это64БитнаяОперационнаяСистема;
86 | Лог.Информация(СисИнфо.ВерсияОС);
87 | Если Не ЭтоWindows Тогда
88 | ПоискПлатформы.ДобавитьКаталоГПоиска(ОбъединитьПути("/opt","1C"), РазрядностьПлатформы.x86);
89 | Если Это64ОС Тогда
90 | ПоискПлатформы.ДобавитьКаталоГПоиска(ОбъединитьПути("/opt","1C"), РазрядностьПлатформы.x64);
91 | КонецЕсли;
92 | КонецЕсли;
93 |
94 | ПутьКПлатформе = ПоискПлатформы.ПутьКПредприятию(ВерсияПлатформы, РазрядностьПлатформы.x64);
95 |
96 | Если ЗначениеЗаполнено(ПутьКПлатформе) Тогда
97 | Конфигуратор.ПутьКПлатформе1С(ПутьКПлатформе);
98 | Иначе
99 | Лог.Ошибка(СтрШаблон("Не найдена платформа указанной версии %1. Будет использована платформа по-умолчанию", ВерсияПлатформы));
100 | КонецЕсли;
101 | КонецЕсли;
102 |
103 | Лог.Информация(СтрШаблон("Создаю временную базу %1", ИмяВременнойБазы));
104 | Конфигуратор.СоздатьФайловуюБазу(ИмяВременнойБазы);
105 |
106 | КонецПроцедуры
107 |
108 | Процедура ПодготовитьИсходныеФайлыИзФайлаРасширения()
109 |
110 | Конфигуратор.УстановитьКонтекст("/F" + ИмяВременнойБазы, "", "");
111 |
112 | Лог.Информация(СтрШаблон("Загружаю расширение"));
113 |
114 | ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска();
115 | ПараметрыЗапуска.Добавить(СтрШаблон("/LoadCfg""%1"" -Extension %2", ИсходныйПуть, ИмяРасширения));
116 | Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска);
117 |
118 | Лог.Информация(СтрШаблон("Выгружаю расширение в исходные файлы %1", КаталогИсходныхФайлов));
119 |
120 | ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска();
121 | ПараметрыЗапуска.Добавить(СтрШаблон("/DumpConfigToFiles""%1"" -Extension %2", КаталогИсходныхФайлов, ИмяРасширения));
122 | Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска);
123 |
124 | КонецПроцедуры
125 |
126 | Процедура ОтредактироватьИЗагрузитьИсходныеФайлы()
127 |
128 | Конфигуратор.УстановитьКонтекст("/F" + ИмяВременнойБазы, "", "");
129 |
130 | Лог.Информация(СтрШаблон("Редактирую файлы"));
131 |
132 | ОбработкаФайлов.ВыполнитьОбработкуИсходныхФайловРасширения(КаталогИсходныхФайлов);
133 |
134 | Лог.Информация(СтрШаблон("Загружаю исходные файлы в базу"));
135 |
136 | ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска();
137 | ПараметрыЗапуска.Добавить(СтрШаблон("/LoadConfigFromFiles ""%1""", КаталогИсходныхФайлов));
138 |
139 | Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска);
140 |
141 | КонецПроцедуры
142 |
143 | Процедура ВыгрузитьФайлКонфигурации()
144 |
145 | Конфигуратор.УстановитьКонтекст("/F" + ИмяВременнойБазы, "", "");
146 |
147 | Лог.Информация(СтрШаблон("Сохраняю конфигурацию %1", ИмяФайлаКонфигурации));
148 |
149 | ПараметрыЗапуска = Конфигуратор.ПолучитьПараметрыЗапуска();
150 | ПараметрыЗапуска.Добавить(СтрШаблон("/DumpCfg ""%1"" ", ИмяФайлаКонфигурации));
151 |
152 | Конфигуратор.ВыполнитьКоманду(ПараметрыЗапуска);
153 |
154 | КонецПроцедуры
155 |
156 | Конфигуратор = Новый УправлениеКонфигуратором();
157 | Лог = Логирование.ПолучитьЛог("oscript.lib.cfe2cf.test");
--------------------------------------------------------------------------------
/src/Модули/ОбработкаФайлов.os:
--------------------------------------------------------------------------------
1 | Процедура ВыполнитьОбработкуИсходныхФайловРасширения(Знач КаталогИсходныхФайлов) Экспорт
2 |
3 | ПутьКОсновномуФайлу = ОбъединитьПути(КаталогИсходныхФайлов, "Configuration.xml");
4 |
5 | ФайлКонфигурации = Новый Файл(ПутьКОсновномуФайлу);
6 |
7 | Если Не ФайлКонфигурации.Существует() Тогда
8 | ТекстОшибки = СтрШаблон("Файл не существует по пути %1", ПутьКОсновномуФайлу);
9 | ВызватьИсключение ТекстОшибки;
10 | КонецЕсли;
11 |
12 | ТекстовыйДокумент = Новый ТекстовыйДокумент;
13 | ТекстовыйДокумент.Прочитать(ПутьКОсновномуФайлу);
14 |
15 | ТекстФайл = ТекстовыйДокумент.ПолучитьТекст();
16 | ТекстФайл = СтрЗаменить(ТекстФайл, "Customization", "");
17 | ТекстФайл = СтрЗаменить(ТекстФайл, "AddOn", "");
18 | ТекстФайл = СтрЗаменить(ТекстФайл, "Patch", "");
19 | ТекстФайл = СтрЗаменить(ТекстФайл, "Adopted", "");
20 | ТекстФайл = СтрЗаменить(ТекстФайл, "ConfigurationExtensionCompatibilityMode", "CompatibilityMode");
21 |
22 | ТекстовыйДокумент.УстановитьТекст(ТекстФайл);
23 |
24 | ТекстовыйДокумент.Записать(ПутьКОсновномуФайлу);
25 |
26 | НайденныеФайлы = НайтиФайлы(КаталогИсходныхФайлов, "*.xml", Истина);
27 | Для каждого Файл Из НайденныеФайлы Цикл
28 | ТекстовыйДокумент = Новый ТекстовыйДокумент;
29 | ТекстовыйДокумент.Прочитать(Файл.ПолноеИмя);
30 |
31 | ТекстФайл = ТекстовыйДокумент.ПолучитьТекст();
32 | ТекстФайл = СтрЗаменить(ТекстФайл, "Adopted", "");
33 |
34 | ТекстовыйДокумент.УстановитьТекст(ТекстФайл);
35 |
36 | ТекстовыйДокумент.Записать(Файл.ПолноеИмя);
37 | КонецЦикла;
38 |
39 | КонецПроцедуры
--------------------------------------------------------------------------------
/src/Модули/ПараметрыПриложения.os:
--------------------------------------------------------------------------------
1 | Функция ИмяПриложения() Экспорт
2 | Возврат "cfe2cf";
3 | КонецФункции
4 |
5 | Функция ИмяЛога() Экспорт
6 | Возврат "oscript.app.cfe2cf";
7 | КонецФункции
8 |
9 | Функция Версия() Экспорт
10 | Возврат "0.0.1";
11 | КонецФункции
--------------------------------------------------------------------------------
/tasks/coverage.os:
--------------------------------------------------------------------------------
1 | #Использовать "../src"
2 | #Использовать 1commands
3 | #Использовать fs
4 | #Использовать coverage
5 |
6 |
7 | ФС.ОбеспечитьПустойКаталог("coverage");
8 | ПутьКСтат = "coverage/stat.json";
9 |
10 | Команда = Новый Команда;
11 | Команда.УстановитьКоманду("oscript");
12 | Команда.ДобавитьПараметр("-encoding=utf-8");
13 | Команда.ДобавитьПараметр(СтрШаблон("-codestat=%1", ПутьКСтат));
14 | Команда.ДобавитьПараметр("tasks/test.os");
15 | Команда.ПоказыватьВыводНемедленно(Истина);
16 |
17 | КодВозврата = Команда.Исполнить();
18 |
19 | Файл_Стат = Новый Файл(ПутьКСтат);
20 |
21 | ИмяПакета = "cfe2cf";
22 |
23 | ПроцессорГенерации = Новый ГенераторОтчетаПокрытия();
24 |
25 | ПроцессорГенерации.ОтносительныеПути()
26 | .ФайлСтатистики(Файл_Стат.ПолноеИмя)
27 | .GenericCoverage()
28 | .Cobertura()
29 | .Clover(ИмяПакета)
30 | .Сформировать();
31 |
32 | ЗавершитьРаботу(КодВозврата);
--------------------------------------------------------------------------------
/tasks/test.os:
--------------------------------------------------------------------------------
1 | #Использовать "../src"
2 | #Использовать 1bdd
3 | #Использовать 1testrunner
4 |
5 | Функция ПрогнатьТесты()
6 |
7 | Тестер = Новый Тестер;
8 |
9 | ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests");
10 | ПутьКОтчетуJUnit = ОбъединитьПути(ТекущийСценарий().Каталог, "..");
11 |
12 | КаталогТестов = Новый Файл(ПутьКТестам);
13 | Если Не КаталогТестов.Существует() Тогда
14 | Сообщить(СтрШаблон("Не найден каталог тестов %1", ПутьКТестам));
15 | Возврат Истина;
16 | КонецЕсли;
17 |
18 | РезультатТестирования = Тестер.ТестироватьКаталог(
19 | КаталогТестов,
20 | Новый Файл(ПутьКОтчетуJUnit)
21 | );
22 |
23 | Успешно = РезультатТестирования = 0;
24 |
25 | Возврат Успешно;
26 | КонецФункции // ПрогнатьТесты()
27 |
28 | Функция ПрогнатьФичи()
29 |
30 | ПутьОтчетаJUnit = "./bdd-log.xml";
31 |
32 | КаталогФич = ОбъединитьПути(".", "features");
33 |
34 | Файл_КаталогФич = Новый Файл(КаталогФич);
35 | Если Не Файл_КаталогФич.Существует() Тогда
36 | Сообщить(СтрШаблон("Не найден каталог фич %1", КаталогФич));
37 | Возврат Истина;
38 | КонецЕсли;
39 |
40 | ИсполнительБДД = Новый ИсполнительБДД;
41 | РезультатыВыполнения = ИсполнительБДД.ВыполнитьФичу(Файл_КаталогФич, Файл_КаталогФич);
42 | ИтоговыйРезультатВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);
43 |
44 | СтатусВыполнения = ИсполнительБДД.ВозможныеСтатусыВыполнения().НеВыполнялся;
45 | Если РезультатыВыполнения.Строки.Количество() > 0 Тогда
46 |
47 | СтатусВыполнения = ИсполнительБДД.ПолучитьИтоговыйСтатусВыполнения(РезультатыВыполнения);
48 |
49 | КонецЕсли;
50 |
51 | ГенераторОтчетаJUnit = Новый ГенераторОтчетаJUnit;
52 | ГенераторОтчетаJUnit.Сформировать(РезультатыВыполнения, СтатусВыполнения, ПутьОтчетаJUnit);
53 |
54 | Сообщить(СтрШаблон("Результат прогона фич <%1>
55 | |", ИтоговыйРезультатВыполнения));
56 |
57 | Возврат ИтоговыйРезультатВыполнения <> ИсполнительБДД.ВозможныеСтатусыВыполнения().Сломался;
58 | КонецФункции // ПрогнатьФичи()
59 |
60 | ТестыПрошли = Истина;
61 |
62 | Попытка
63 | ТестыПрошли = ПрогнатьТесты();
64 |
65 | Исключение
66 | ТестыПрошли = Ложь;
67 | Сообщить(СтрШаблон("Тесты через 1testrunner выполнены неудачно
68 | |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
69 | КонецПопытки;
70 |
71 | ФичиПрошли = Истина;
72 |
73 | Попытка
74 | ФичиПрошли = ПрогнатьФичи();
75 | Исключение
76 | ФичиПрошли = Ложь;
77 | Сообщить(СтрШаблон("Тесты поведения через 1bdd выполнены неудачно
78 | |%1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
79 | КонецПопытки;
80 |
81 | Если Не ТестыПрошли Или Не ФичиПрошли Тогда
82 | ВызватьИсключение "Тестирование завершилось неудачно!";
83 | Иначе
84 | Сообщить(СтрШаблон("Результат прогона тестов <%1>
85 | |", ТестыПрошли));
86 | КонецЕсли;
--------------------------------------------------------------------------------
/tests/Конвертация_test.os:
--------------------------------------------------------------------------------
1 | #Использовать logos
2 | #использовать "../src"
3 |
4 | Перем Лог;
5 | Перем юТест;
6 |
7 | Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт
8 |
9 | юТест = Тестирование;
10 |
11 | ИменаТестов = Новый Массив;
12 |
13 | ИменаТестов.Добавить("ТестДолжен_ВыгрузитьРасширениеИЗагрузитьКонфиуграцию");
14 |
15 | Возврат ИменаТестов;
16 |
17 | КонецФункции
18 |
19 | Процедура ТестДолжен_ВыгрузитьРасширениеИЗагрузитьКонфиуграцию() Экспорт
20 |
21 |
22 | КонецПроцедуры
23 |
24 | Лог = Логирование.ПолучитьЛог("oscript.lib.cfe2cf.test");
--------------------------------------------------------------------------------
/travis-ci.sh:
--------------------------------------------------------------------------------
1 | set -e
2 | echo "Устанавливаю версию OScript <$OSCRIPT_VERSION>"
3 | curl http://oscript.io/downloads/$OSCRIPT_VERSION/deb > oscript.deb
4 | dpkg -i oscript.deb
5 | rm -f oscript.deb
6 |
7 | opm install v8runner;
8 | opm install cli;
9 | opm install coverage;
10 |
11 | opm install;
12 |
13 | opm run coverage;
14 |
15 |
16 | # oscript ./tasks/coverage.os
--------------------------------------------------------------------------------