-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Добавил возможность запуска командных файлов на язке PowerShell и др. #2
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Хорошее дополнение библиотеки.
Но есть небольшие замечания.
Исправишь?
КомандныйФайл = Новый КомандныйФайл; | ||
КомандныйФайл.Создать(); | ||
БДД.СохранитьВКонтекст("КомандныйФайл", КомандныйФайл); | ||
СоздатьФайл("",""); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Здесь проще и понятнее написать СоздатьФайл()
, т.к. у этого метода оба параметр по умолчанию пустые строки.
features/КомандныеФайлы.feature
Outdated
@@ -9,7 +9,16 @@ | |||
Контекст: Отключение отладки в логах | |||
Допустим Я выключаю отладку лога с именем "oscript.lib.commands" | |||
|
|||
Сценарий: Выполнение простого командного файла | |||
Сценарий: Выполнение командного файла PowerShell | |||
Когда Я устанавливаю приложение запуска "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
На Линуксе шаг упадет.
Предлагаю в реализацию шага ЯУстанавливаюПриложениеЗапуска
добавить проверку на Линукс
Если Линукс, то отмечать шаг как пропущенный.
Это лучше, чем падающий тест
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тут наверно для Линукса надо вообще весь сценарий проускать, но я не представляю как.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Внутри кода реализации вызови спец.метод БДД.ВыполнитьШаг("Пропускаю шаг в Linux")
Документация на этот метод
ИМХО за счет того, что у нас нет реализации шага Пропускаю шаг в Linux
, твой шаг/сценарий будет отмечен как пропущенный.
Попробуй.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В консоле добавляется сообщение "Пропускаю шаг в Linux".
В отчете bdd-log.xml шаг отмечается как status="passed".
features/КомандныеФайлы.feature
Outdated
Сценарий: Выполнение командного файла PowerShell | ||
Когда Я устанавливаю приложение запуска "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" | ||
И Я создаю командный файл PowerShell "" ".ps1" | ||
И Я добавляю строку "echo PowerShell" в командный файл |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Предлагаю добавить какую-нибудь уникальную для PowerShell-команду, а не псевдоним, который работает и для cmd.
Например, Write-Host PowerShell
readme.md
Outdated
```bsl | ||
КомандныйФайл = Новый КомандныйФайл; | ||
КомандныйФайл.УстановитьПриложение("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"); | ||
КомандныйФайл.Создать(,".ps1"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Предлагаю указать явное пустое имя файла через
КомандныйФайл.Создать("", ".ps1");
PS пропуск параметра выглядит очень плохо
src/КомандныйФайл.os
Outdated
// | ||
// Возвращаемое значение: | ||
// Строка - Путь созданного файла | ||
// | ||
Функция Создать(Знач Путь = "") Экспорт | ||
Функция Создать(Знач Путь = "",Знач Расширение="") Экспорт |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не хватает пробела перед вторым Знач
// Установить путь к приложению. | ||
// | ||
// Параметры: | ||
// ПутьПриложения - Путь приложения (Строка) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Предлагаю добавить пример задания приложения в описание метода
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
src/КомандныйФайл.os
Outdated
@@ -125,7 +140,9 @@ | |||
Команда.УстановитьКодировкуВывода(КодировкаВывода); | |||
Команда.ПоказыватьВыводНемедленно(НемедленнныйВывод); | |||
|
|||
Если ЭтоWindows Тогда | |||
Если НЕ ПустаяСтрока(Приложение) Тогда |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ИМХО здесь точнее Если ЗначениеЗаполнено(Приложение) Тогда
т.к. по умолчанию, без явной инициализации, Приложение
равно Неопределено
И проверка на пустую строку сработает неверно.
И последний вопрос - фичи прогонял? |
Фичи прогонял, но только на Windows. |
@Berckk А откуда такая уверенность? |
После последних своих правок тесты прогонял. Шаги пропускаются? |
БДД.СохранитьВКонтекст("КомандныйФайл", КомандныйФайл); | ||
КонецПроцедуры | ||
|
||
Функция ПропускаюШаг() Экспорт |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1 Экспорт для этого метода не нужен.
2 Название метода предлагать поменять на более точное ПрпускаюШагНаLinux
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
С последними правками шаги пропускаются, но помечаются как успешные.
КонецПроцедуры | ||
|
||
Функция ПропускаюШагВЛинукс() | ||
Если НЕ ЗначениеЗаполнено(ЭтоWindows) Тогда |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Проверка Если НЕ ЗначениеЗаполнено(ЭтоWindows) Тогда
в Линуксе всегда будет срабатывать и выполнять код внутри блока Если.
Т.к. значение ЭтоWindows будет Ложь, а ЗначениеЗаполнено(Ложь) всегда выдает Истину :(
Предлагаю исправить на Если ЭтоWindows = Неопределено Тогда
Сделай это последнее исправления и я принимаю пулл-реквест!
features/КомандныеФайлы.feature
Outdated
Тогда Вывод командного файла содержит "PowerShell" | ||
И Код возврата командного файла равен 0 | ||
|
||
Контекст: Отключение отладки в логах |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Оказывается, я пропустил неверную правку в фиче.
Контекст в фиче должен быть один, их не должно быть несколько.
Поэтому твое добавление контекста не валидно.
Предлагаю
- оставить один контекст.
Контекст: Отключение отладки в логах
Допустим Я выключаю отладку лога с именем "oscript.lib.commands"
- Добавить шаг
Я пропускаю этот сценарий в Линукс
как первый шаг сценарияВыполнение командного файла PowerShell
@@ -75,27 +123,66 @@ | |||
|
|||
//Код возврата командного файла равен 0 | |||
Процедура КодВозвратаКомандногоФайлаРавен(Знач ОжидаемыйКодВозврата) Экспорт | |||
Если ПропускаюШагВЛинукс() Тогда |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Шаг Код возврата командного файла равен 0
является универсальным.
В него не нужно вставлять проверку на линукс, т.к. этот шаг должен работать в линукс
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, но в сценарии с PowerShell в линуксе никого файла на этом шаге нет.
И тесты валятся.
Я поэтому и добавил проверку во все шаги.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
В линуксе можно создать файл с расширением ps1, т.к. расширение ни на что не влияет.
Но тесты выпадут с ошибкой на шаге Я выполняю командный файл
, т.к. Write-Host PowerShell
в линукс не отработает.
Поэтому я изначально спрашивал, как пропустить весь сценарий под линукс.
@@ -67,6 +110,11 @@ | |||
|
|||
//Вывод командного файла содержит "командный файл" | |||
Процедура ВыводКомандногоФайлаСодержит(Знач ОжидаемыйВыводКоманды) Экспорт | |||
Если ПропускаюШагВЛинукс() Тогда |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Шаг Вывод командного файла содержит "командный файл"
является универсальным.
В него не нужно вставлять проверку на линукс, т.к. этот шаг должен работать в линукс
ВывестиТекстФайла(ИмяФайла); | ||
КонецПроцедуры | ||
|
||
//Я сообщаю содержимое командного файла | ||
Процедура ЯСообщаюСодержимоеКомандногоФайла() Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Шаг Я сообщаю содержимое командного файла
является универсальным.
В него не нужно вставлять проверку на линукс, т.к. этот шаг должен работать в линукс
КомандныйФайл = БДД.ПолучитьИзКонтекста("КомандныйФайл"); | ||
|
||
КомандныйФайл.Исполнить(); | ||
КонецПроцедуры | ||
|
||
//Я сообщаю содержимое файла "ИмяФайла" | ||
Процедура ЯСообщаюСодержимоеФайла(Знач ИмяФайла) Экспорт | ||
Если ПропускаюШагВЛинукс() Тогда |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Шаг Я сообщаю содержимое файла "ИмяФайла"
является универсальным.
В него не нужно вставлять проверку на линукс, т.к. этот шаг должен работать в линукс
КонецПроцедуры | ||
|
||
//Я не пропускаю этот сценарий в Линукс | ||
Процедура ЯНЕПропускаюЭтотСценарийВЛинукс() Экспорт |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Шаг ЯНЕПропускаюЭтотСценарийВЛинукс
соответственно не нужен.
Его нужно удалить.
Извини за придирчивость :) |
Возможно, мы друг друга не поняли. |
Рассказываю все. |
Тут важно - именно последующие шаги из этого же сценария выполняются? можешь полный лог от |
Все понятно, наша добавка с пропускаемым шагом на самом деле шаг не пропускает :( Сейчас сделаю последний код-ревью, если не увижу явных проблем, наконец-то замержу пулл-реквест |
@Berckk Большое спасибо! |
Привет.
Добавил указание расширения для командных файлов и возможность указания исполняемых файлов других сценарных языков.