Skip to content

Commit d3714b9

Browse files
authored
Merge pull request #43 from madvlaydin/fix/issue_42
Исправление ошибки при обновлении пакета (НЕудаление устаревших файлов)
2 parents 1dab6d4 + cb02631 commit d3714b9

File tree

10 files changed

+85
-4
lines changed

10 files changed

+85
-4
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
oscript_modules/

src/Классы/УстановкаПакета.os

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,13 +319,15 @@
319319
Если СтандартнаяОбработка Тогда
320320

321321
Лог.Отладка("Устанавливаю файлы пакета из архива");
322+
УдалитьУстаревшиеФайлы(ПутьУстановки);
322323
ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя);
323324

324325
ВызватьСобытиеПриУстановке(ОбъектСкрипта, ПутьУстановки.ПолноеИмя, СтандартнаяОбработка);
325326

326327
КонецЕсли;
327328
Иначе
328329
Лог.Отладка("Устанавливаю файлы пакета из архива");
330+
УдалитьУстаревшиеФайлы(ПутьУстановки);
329331
ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя);
330332
КонецЕсли;
331333
Исключение
@@ -337,6 +339,18 @@
337339

338340
КонецПроцедуры
339341

342+
Процедура УдалитьУстаревшиеФайлы(Знач ПутьУстановки)
343+
УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, "*.os", Истина);
344+
УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, "*.dll", Истина);
345+
КонецПроцедуры
346+
347+
Процедура УдалитьФайлыВКаталоге(Знач ПутьКаталога, Знач МаскаФайлов, Знач ИскатьВПодкаталогах = Истина)
348+
ФайлыДляУдаления = НайтиФайлы(ПутьКаталога, МаскаФайлов, ИскатьВПодкаталогах);
349+
Для Каждого Файл из ФайлыДляУдаления Цикл
350+
УдалитьФайлы(Файл.ПолноеИмя);
351+
КонецЦикла;
352+
КонецПроцедуры
353+
340354
Процедура ВызватьСобытиеПередУстановкой(Знач ОбъектСкрипта, Знач АрхивПакета, Знач Каталог, СтандартнаяОбработка)
341355
Лог.Отладка("Вызываю событие ПередУстановкой");
342356
ОбъектСкрипта.ПередУстановкой(АрхивПакета, Каталог, СтандартнаяОбработка);

tests/build-install-test.os

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
#Использовать asserts
22

3+
#Использовать tempfiles
4+
35
#Использовать "../src"
46

7+
58
Перем юТест;
9+
Перем мВременныеФайлы;
610

711
Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт
812

@@ -11,13 +15,15 @@
1115
ИменаТестов = Новый Массив;
1216

1317
ИменаТестов.Добавить("ТестДолжен_ПроверитьЧтоПакетСобранКорректно");
18+
ИменаТестов.Добавить("ТестДолжен_ОчиститьКаталогОтСтарыхСкриптовПриОбновленииПакета");
1419

1520
Возврат ИменаТестов;
1621

1722
КонецФункции
1823

1924
Процедура ПослеЗапускаТеста() Экспорт
20-
юТест.УдалитьВременныеФайлы();
25+
мВременныеФайлы.Удалить();
26+
УдалитьФайлы(ОбъединитьПути(ТекущийКаталог(), "oscript_modules", "test"));
2127
КонецПроцедуры
2228

2329
Процедура ТестДолжен_ПроверитьЧтоПакетСобранКорректно() Экспорт
@@ -26,7 +32,7 @@
2632

2733
КаталогСборки = юТест.ИмяВременногоФайла();
2834
СоздатьКаталог(КаталогСборки);
29-
Сборщик.СобратьПакет(ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage"), Неопределено, КаталогСборки);
35+
Сборщик.СобратьПакет(ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage", "testpackage-0.3.1"), Неопределено, КаталогСборки);
3036

3137
ФайлПакета = Новый Файл(ОбъединитьПути(КаталогСборки, "test-0.3.1.ospx"));
3238

@@ -54,3 +60,56 @@
5460
Сообщить(ФайлИсходника.ПолноеИмя);
5561

5662
КонецПроцедуры
63+
64+
Процедура ТестДолжен_ОчиститьКаталогОтСтарыхСкриптовПриОбновленииПакета() Экспорт
65+
66+
67+
//устанавливаем новую версию пакета в которой есть test-new.os
68+
//
69+
//ожидаем что в каталоге пакета есть только test-new.os
70+
71+
//подготовка двух версий пакета
72+
73+
Сборщик = Новый СборщикПакета;
74+
75+
КаталогСборкиПервойВерсии = мВременныеФайлы.СоздатьКаталог();
76+
77+
Сборщик.СобратьПакет(
78+
ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage", "testpackage-0.3.1"),
79+
Неопределено, КаталогСборкиПервойВерсии);
80+
81+
ФайлПакетаВерсии1 = Новый Файл(ОбъединитьПути(КаталогСборкиПервойВерсии, "test-0.3.1.ospx"));
82+
83+
КаталогСборкиВторойВерсии = мВременныеФайлы.СоздатьКаталог();
84+
85+
Сборщик.СобратьПакет(
86+
ОбъединитьПути(ТекущийСценарий().Каталог, "testpackage", "testpackage-0.3.2"),
87+
Неопределено, КаталогСборкиВторойВерсии);
88+
89+
ФайлПакетаВерсии2 = Новый Файл(ОбъединитьПути(КаталогСборкиВторойВерсии, "test-0.3.2.ospx"));
90+
91+
Установщик = Новый УстановкаПакета;
92+
Установщик.УстановитьРежимУстановкиПакетов(РежимУстановкиПакетов.Локально);
93+
94+
Установщик.УстановитьПакетИзАрхива(ФайлПакетаВерсии1.ПолноеИмя);
95+
96+
ПутьКФайлуOsТестовогоПакета = ОбъединитьПути(
97+
Константы.ЛокальныйКаталогУстановкиПакетов, "test","folder","src.os");
98+
ФайлOsИзСтарогоПакета = Новый Файл(ПутьКФайлуOsТестовогоПакета);
99+
100+
ПутьКФайлуDllТестовогоПакета = ОбъединитьПути(
101+
Константы.ЛокальныйКаталогУстановкиПакетов, "test","folder","src.dll");
102+
ФайлDllИзСтарогоПакета = Новый Файл(ПутьКФайлуDllТестовогоПакета);
103+
104+
Ожидаем.Что(ФайлOsИзСтарогоПакета.Существует(), "Файл src.os должен существовать").ЭтоИстина();
105+
Ожидаем.Что(ФайлDllИзСтарогоПакета.Существует(), "Файл src.dll должен существовать").ЭтоИстина();
106+
107+
Установщик.УстановитьПакетИзАрхива(ФайлПакетаВерсии2.ПолноеИмя);
108+
109+
Ожидаем.Что(ФайлOsИзСтарогоПакета.Существует(), "Файл src.os не должен существовать, потому что мы установили новую версию").ЭтоЛожь();
110+
Ожидаем.Что(ФайлDllИзСтарогоПакета.Существует(), "Файл src.dll не должен существовать, потому что мы установили новую версию").ЭтоЛожь();
111+
112+
113+
КонецПроцедуры
114+
115+
мВременныеФайлы = Новый МенеджерВременныхФайлов;

tests/testpackage/folder/src.os

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// заглушка
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// заглушка
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11

22
Описание.Имя("test")
33
.Версия("0.3.1")
4-
.ВключитьФайл("folder");
4+
.ВключитьФайл("folder");
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// заглушка
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// заглушка
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+

2+
Описание.Имя("test")
3+
.Версия("0.3.2")
4+
.ВключитьФайл("folder");

0 commit comments

Comments
 (0)