-
Notifications
You must be signed in to change notification settings - Fork 32
feat: Добавить команду opm uninstall #260
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
Draft
Copilot
wants to merge
6
commits into
master
Choose a base branch
from
copilot/add-package-uninstall-command
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from all commits
Commits
Show all changes
6 commits
Select commit
Hold shift + click to select a range
723ad34
Initial plan
Copilot 6162bfb
feat: add opm uninstall command to remove installed packages
Copilot 341f690
revert command name back to 'un uninstall' per industry convention
Copilot 61f56d7
fix: use КаталогПрограммы() for global script directory on all platforms
Copilot a001f81
test: add coverage for launch script deletion and error on missing pa…
Copilot 14a14ab
test: create test package with executable dynamically instead of fixture
Copilot File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| /////////////////////////////////////////////////////////////////////////////////////////////////// | ||
| // Прикладной интерфейс | ||
|
|
||
| Процедура ОписаниеКоманды(Знач КомандаПриложения) Экспорт | ||
|
|
||
| КомандаПриложения.Опция("l local", Ложь, "Удалить пакет из локального каталога oscript_modules"); | ||
|
|
||
| КомандаПриложения.Аргумент("PACKAGE", "", "Имя пакета для удаления") | ||
| .Обязательный(); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт | ||
|
|
||
| УдалениеИзЛокальногоКаталога = КомандаПриложения.ЗначениеОпции("local"); | ||
| ИмяПакета = КомандаПриложения.ЗначениеАргумента("PACKAGE"); | ||
|
|
||
| РежимУстановки = РежимУстановкиПакетов.Глобально; | ||
| Если УдалениеИзЛокальногоКаталога Тогда | ||
| РежимУстановки = РежимУстановкиПакетов.Локально; | ||
| КонецЕсли; | ||
|
|
||
| РаботаСПакетами.УдалитьПакет(ИмяПакета, РежимУстановки); | ||
|
|
||
| КонецПроцедуры |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,195 @@ | ||
| #Использовать "../src/core" | ||
| #Использовать asserts | ||
| #Использовать fs | ||
| #Использовать tempfiles | ||
|
|
||
| Перем юТест; | ||
| Перем мВременныеФайлы; | ||
|
|
||
| Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт | ||
|
|
||
| юТест = Тестирование; | ||
|
|
||
| ИменаТестов = Новый Массив; | ||
|
|
||
| ИменаТестов.Добавить("ТестДолжен_УдалитьЛокальноУстановленныйПакет"); | ||
| ИменаТестов.Добавить("ТестДолжен_УдалитьГлобальноУстановленныйПакет"); | ||
| ИменаТестов.Добавить("ТестДолжен_УдалитьЛокальныеСкриптыЗапуска"); | ||
| ИменаТестов.Добавить("ТестДолжен_УдалитьГлобальныеСкриптыЗапуска"); | ||
| ИменаТестов.Добавить("ТестДолжен_ВыброситьИсключениеДляНеустановленногоПакета"); | ||
|
|
||
| Возврат ИменаТестов; | ||
|
|
||
| КонецФункции | ||
|
|
||
| Процедура ПередЗапускомТеста() Экспорт | ||
| КонецПроцедуры | ||
|
|
||
| Процедура ПослеЗапускаТеста() Экспорт | ||
| мВременныеФайлы.Удалить(); | ||
|
|
||
| МассивКаталогов = Новый Массив; | ||
| МассивКаталогов.Добавить(ОбъединитьПути(ТекущийКаталог(), "oscript_modules", "test")); | ||
| МассивКаталогов.Добавить(ОбъединитьПути(ТекущийКаталог(), "oscript_modules", "testapp")); | ||
|
|
||
| Для Каждого ПутьККаталогу Из МассивКаталогов Цикл | ||
| Если ФС.КаталогСуществует(ПутьККаталогу) Тогда | ||
| УдалитьФайлы(ПутьККаталогу); | ||
| КонецЕсли; | ||
| КонецЦикла; | ||
| КонецПроцедуры | ||
|
|
||
| Функция СобратьТестовыйПакет() | ||
|
|
||
| Сборщик = Новый СборщикПакета; | ||
| КаталогСборки = мВременныеФайлы.СоздатьКаталог(); | ||
|
|
||
| Сборщик.СобратьПакет( | ||
| ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage", "testpackage-0.3.1"), | ||
| Неопределено, КаталогСборки); | ||
|
|
||
| Возврат Новый Файл(ОбъединитьПути(КаталогСборки, "test-0.3.1.ospx")); | ||
|
|
||
| КонецФункции | ||
|
|
||
| Функция СобратьТестовыйПакетСПриложением() | ||
|
|
||
| КаталогИсходников = мВременныеФайлы.СоздатьКаталог(); | ||
|
|
||
| // Создаём исходники тестового пакета с исполняемым файлом | ||
| КаталогПриложения = ОбъединитьПути(КаталогИсходников, "folder"); | ||
| СоздатьКаталог(КаталогПриложения); | ||
|
|
||
| ЗаписьТекста = Новый ЗаписьТекста(ОбъединитьПути(КаталогПриложения, "main.os")); | ||
| ЗаписьТекста.ЗаписатьСтроку("Сообщить(""Привет"");"); | ||
| ЗаписьТекста.Закрыть(); | ||
|
|
||
| ЗаписьТекста = Новый ЗаписьТекста(ОбъединитьПути(КаталогИсходников, "packagedef")); | ||
| ЗаписьТекста.ЗаписатьСтроку("Описание.Имя(""testapp"")"); | ||
| ЗаписьТекста.ЗаписатьСтроку(" .Версия(""1.0.0"")"); | ||
| ЗаписьТекста.ЗаписатьСтроку(" .ВключитьФайл(""folder"")"); | ||
| ЗаписьТекста.ЗаписатьСтроку(" .ИсполняемыйФайл(""folder/main.os"");"); | ||
| ЗаписьТекста.Закрыть(); | ||
|
|
||
| Сборщик = Новый СборщикПакета; | ||
| КаталогСборки = мВременныеФайлы.СоздатьКаталог(); | ||
|
|
||
| Сборщик.СобратьПакет(КаталогИсходников, Неопределено, КаталогСборки); | ||
|
|
||
| Возврат Новый Файл(ОбъединитьПути(КаталогСборки, "testapp-1.0.0.ospx")); | ||
|
|
||
| КонецФункции | ||
|
|
||
| Процедура ТестДолжен_УдалитьЛокальноУстановленныйПакет() Экспорт | ||
|
|
||
| ФайлПакета = СобратьТестовыйПакет(); | ||
|
|
||
| // Устанавливаем пакет локально | ||
| Установщик = Новый МенеджерУстановкиПакетов(); | ||
| Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально); | ||
| Установщик.УстановитьПакетИзАрхива(ФайлПакета.ПолноеИмя, Истина); | ||
|
|
||
| ПутьКПакету = ОбъединитьПути(КонстантыOpm.ЛокальныйКаталогУстановкиПакетов, "test"); | ||
| Ожидаем.Что(ФС.КаталогСуществует(ПутьКПакету), "Каталог пакета должен существовать после установки").ЭтоИстина(); | ||
|
|
||
| // Удаляем пакет | ||
| РаботаСПакетами.УдалитьПакет("test", РежимУстановкиПакетов.Локально); | ||
|
|
||
| // Проверяем, что каталог пакета удалён | ||
| Ожидаем.Что(ФС.КаталогСуществует(ПутьКПакету), "Каталог пакета не должен существовать после удаления").ЭтоЛожь(); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| Процедура ТестДолжен_УдалитьГлобальноУстановленныйПакет() Экспорт | ||
|
|
||
| ФайлПакета = СобратьТестовыйПакет(); | ||
|
|
||
| // Устанавливаем пакет глобально | ||
| Установщик = Новый МенеджерУстановкиПакетов(); | ||
| Установщик.СоздаватьФайлыЗапуска(Ложь); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @copilot нужны тесты на удаление файлов запуска тоже. Не халтурь. Нужно 100% покрытие нового кода
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Добавил 3 новых теста (14a14ab):
|
||
| Установщик.УстановитьПакетИзАрхива(ФайлПакета.ПолноеИмя); | ||
|
|
||
| КаталогСистемныхБиблиотек = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system")); | ||
| ПутьКПакету = ОбъединитьПути(КаталогСистемныхБиблиотек, "test"); | ||
| Ожидаем.Что(ФС.КаталогСуществует(ПутьКПакету), "Каталог пакета должен существовать после глобальной установки").ЭтоИстина(); | ||
|
|
||
| // Удаляем пакет глобально | ||
| РаботаСПакетами.УдалитьПакет("test", РежимУстановкиПакетов.Глобально); | ||
|
|
||
| // Проверяем, что каталог пакета удалён | ||
| Ожидаем.Что(ФС.КаталогСуществует(ПутьКПакету), "Каталог пакета не должен существовать после глобального удаления").ЭтоЛожь(); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| Процедура ТестДолжен_УдалитьЛокальныеСкриптыЗапуска() Экспорт | ||
|
|
||
| ФайлПакета = СобратьТестовыйПакетСПриложением(); | ||
|
|
||
| // Устанавливаем пакет локально с файлами запуска | ||
| Установщик = Новый МенеджерУстановкиПакетов(); | ||
| Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально); | ||
| Установщик.УстановитьПакетИзАрхива(ФайлПакета.ПолноеИмя, Истина); | ||
|
|
||
| КаталогСкриптов = ОбъединитьПути(КонстантыOpm.ЛокальныйКаталогУстановкиПакетов, "bin"); | ||
| ПутьКПакету = ОбъединитьПути(КонстантыOpm.ЛокальныйКаталогУстановкиПакетов, "testapp"); | ||
|
|
||
| Ожидаем.Что(ФС.КаталогСуществует(ПутьКПакету), "Каталог пакета должен существовать после установки").ЭтоИстина(); | ||
|
|
||
| // Проверяем, что скрипт запуска создан (sh-скрипт на Linux) | ||
| ПутьКСкрипту = ОбъединитьПути(КаталогСкриптов, "testapp"); | ||
| Ожидаем.Что(ФС.ФайлСуществует(ПутьКСкрипту), "Скрипт запуска должен существовать после установки").ЭтоИстина(); | ||
|
|
||
| // Удаляем пакет | ||
| РаботаСПакетами.УдалитьПакет("testapp", РежимУстановкиПакетов.Локально); | ||
|
|
||
| // Проверяем, что каталог пакета удалён | ||
| Ожидаем.Что(ФС.КаталогСуществует(ПутьКПакету), "Каталог пакета не должен существовать после удаления").ЭтоЛожь(); | ||
|
|
||
| // Проверяем, что скрипт запуска удалён | ||
| Ожидаем.Что(ФС.ФайлСуществует(ПутьКСкрипту), "Скрипт запуска не должен существовать после удаления").ЭтоЛожь(); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| Процедура ТестДолжен_УдалитьГлобальныеСкриптыЗапуска() Экспорт | ||
|
|
||
| ФайлПакета = СобратьТестовыйПакетСПриложением(); | ||
|
|
||
| // Устанавливаем пакет глобально с файлами запуска | ||
| Установщик = Новый МенеджерУстановкиПакетов(); | ||
| Установщик.УстановитьПакетИзАрхива(ФайлПакета.ПолноеИмя); | ||
|
|
||
| КаталогСистемныхБиблиотек = ОбъединитьПути(КаталогПрограммы(), ПолучитьЗначениеСистемнойНастройки("lib.system")); | ||
| ПутьКПакету = ОбъединитьПути(КаталогСистемныхБиблиотек, "testapp"); | ||
|
|
||
| Ожидаем.Что(ФС.КаталогСуществует(ПутьКПакету), "Каталог пакета должен существовать после глобальной установки").ЭтоИстина(); | ||
|
|
||
| // Проверяем, что скрипт запуска создан | ||
| КаталогСкриптов = КаталогПрограммы(); | ||
| ПутьКСкрипту = ОбъединитьПути(КаталогСкриптов, "testapp"); | ||
| Ожидаем.Что(ФС.ФайлСуществует(ПутьКСкрипту), "Скрипт запуска должен существовать после глобальной установки").ЭтоИстина(); | ||
|
|
||
| // Удаляем пакет глобально | ||
| РаботаСПакетами.УдалитьПакет("testapp", РежимУстановкиПакетов.Глобально); | ||
|
|
||
| // Проверяем, что каталог пакета удалён | ||
| Ожидаем.Что(ФС.КаталогСуществует(ПутьКПакету), "Каталог пакета не должен существовать после глобального удаления").ЭтоЛожь(); | ||
|
|
||
| // Проверяем, что скрипт запуска удалён | ||
| Ожидаем.Что(ФС.ФайлСуществует(ПутьКСкрипту), "Скрипт запуска не должен существовать после глобального удаления").ЭтоЛожь(); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| Процедура ТестДолжен_ВыброситьИсключениеДляНеустановленногоПакета() Экспорт | ||
|
|
||
| ИсключениеВыброшено = Ложь; | ||
| Попытка | ||
| РаботаСПакетами.УдалитьПакет("несуществующий-пакет", РежимУстановкиПакетов.Локально); | ||
| Исключение | ||
| ИсключениеВыброшено = Истина; | ||
| КонецПопытки; | ||
|
|
||
| Ожидаем.Что(ИсключениеВыброшено, "Должно быть выброшено исключение для неустановленного пакета").ЭтоИстина(); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| мВременныеФайлы = Новый МенеджерВременныхФайлов; | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.