Skip to content

Commit 623ec49

Browse files
bivlkedclaude
andcommitted
docs: update CLAUDE.md with v2.13 knowledge
- Update version from 2.12 to 2.13 - Add tests/ folder to project structure - Document Pester testing framework (94 tests) - Add CI/CD Pester job description - Update completed tasks list with v2.11-v2.13 features - Add v2.13 fixes to known issues table - Expand testing section with Pester commands - Add notes about Pester implementation details Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 45ea6b0 commit 623ec49

1 file changed

Lines changed: 76 additions & 24 deletions

File tree

CLAUDE.md

Lines changed: 76 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# WinClean - Инструкции для Claude
22

3-
> Последнее обновление: 2026-01-17
4-
> Текущая версия скрипта: 2.12
3+
> Последнее обновление: 2026-01-18
4+
> Текущая версия скрипта: 2.13
55
66
---
77

@@ -11,7 +11,7 @@
1111

1212
| Параметр | Значение |
1313
|----------|----------|
14-
| **Версия** | 2.12 |
14+
| **Версия** | 2.13 |
1515
| **Язык** | PowerShell 7.1+ |
1616
| **Платформа** | Windows 11 (23H2/24H2/25H2) |
1717
| **Лицензия** | MIT |
@@ -22,8 +22,8 @@
2222
### Статус публикации
2323

2424
- **GitHub**: ✅ Опубликован, активно развивается
25-
- **PSGallery**: ✅ Опубликован (v2.12, 17.01.2026)
26-
- **CI/CD**: ✅ GitHub Actions с PSScriptAnalyzer
25+
- **PSGallery**: ✅ Опубликован (v2.13, 18.01.2026)
26+
- **CI/CD**: ✅ GitHub Actions (PSScriptAnalyzer + Pester)
2727

2828
---
2929

@@ -41,11 +41,14 @@ CleanScript/
4141
├── CLAUDE.md # Этот файл — инструкции для Claude
4242
├── assets/
4343
│ └── logo.svg # Логотип проекта
44+
├── tests/ # Pester тесты (v2.13+)
45+
│ ├── Helpers.Tests.ps1 # Unit-тесты helper-функций (52 теста)
46+
│ └── Fixes.Tests.ps1 # Валидационные тесты исправлений (42 теста)
4447
├── docs/ # Черновики документации (НЕ в git!)
4548
│ ├── habr-article.md # Статья для Хабра
4649
│ └── habr-article-info.md # Документация по статье
4750
└── .github/
48-
├── workflows/ci.yml # GitHub Actions CI
51+
├── workflows/ci.yml # GitHub Actions CI (lint + syntax + Pester)
4952
├── PULL_REQUEST_TEMPLATE.md
5053
└── ISSUE_TEMPLATE/ # Шаблоны issues (bug, feature, question)
5154
```
@@ -73,7 +76,7 @@ WinClean.ps1 — монолитный скрипт (~2700 строк) с мод
7376
### Ключевые переменные
7477

7578
```powershell
76-
$script:Version = "2.10" # Единый источник версии
79+
$script:Version = "2.13" # Единый источник версии
7780
$script:Stats = [hashtable]::Synchronized(@{...}) # Thread-safe статистика
7881
$script:LogPath = "..." # Путь к лог-файлу
7982
$script:ProtectedPaths = @(...) # Защищённые пути (никогда не удаляются)
@@ -153,24 +156,51 @@ Publish-PSResource -Path .\WinClean.ps1 -Repository PSGallery -ApiKey $env:PSGAL
153156

154157
Файл: `.github/workflows/ci.yml`
155158

156-
**Проверки:**
157-
- PSScriptAnalyzer (Warning, Error)
158-
- Синтаксис PowerShell
159+
**Проверки (3 job'а):**
160+
1. **lint** — PSScriptAnalyzer (Warning, Error)
161+
2. **syntax** — Проверка синтаксиса PowerShell
162+
3. **test** — Pester тесты (94 теста, запускается после lint и syntax)
159163

160164
**Исключения PSScriptAnalyzer** (допустимые для CLI):
161165
- PSAvoidUsingWriteHost — это интерактивная утилита
162166
- PSAvoidUsingEmptyCatchBlock — намеренное подавление ошибок
163167
- PSUseShouldProcessForStateChangingFunctions — не применимо
164168

169+
### Pester тесты (v2.13+)
170+
171+
**Структура тестов:**
172+
- `tests/Helpers.Tests.ps1` — 52 unit-теста helper-функций
173+
- `tests/Fixes.Tests.ps1` — 42 валидационных теста исправлений
174+
175+
**Тестируемые функции:**
176+
- Format-FileSize, ConvertFrom-HumanReadableSize
177+
- Get-FolderSize, Test-PathProtected
178+
- Test-InteractiveConsole, Test-PendingReboot
179+
- Write-Log, Get-RecycleBinSize
180+
181+
**Особенности реализации:**
182+
- Функции определены напрямую в `BeforeAll` (AST-парсинг не работает в контексте Pester)
183+
- Используются regex-паттерны для locale-независимых сравнений (`"^1[,.]00 KB$"`)
184+
- Параметризованные тесты преобразованы в отдельные `It` блоки
185+
186+
**Запуск локально:**
187+
```powershell
188+
Install-Module Pester -Force -Scope CurrentUser -MinimumVersion 5.0
189+
Invoke-Pester ./tests -Output Detailed
190+
```
191+
165192
---
166193

167194
## 7. Текущие задачи и планы
168195

169196
### Выполнено (январь 2026)
170197

171-
- [x] Публикация в PSGallery (v2.9, затем v2.10)
198+
- [x] Публикация в PSGallery (v2.9 v2.13)
172199
- [x] CI/CD с PSScriptAnalyzer
173200
- [x] Функция авто-проверки обновлений (v2.10)
201+
- [x] Таймауты для winget/DISM (v2.11)
202+
- [x] PS 7.4+ совместимость, улучшенная статистика (v2.12)
203+
- [x] **Pester тесты — 94 теста** (v2.13)
174204
- [x] Документация EN/RU синхронизирована
175205
- [x] Issue templates (bug, feature, question)
176206
- [x] Черновик статьи для Хабра
@@ -179,6 +209,7 @@ Publish-PSResource -Path .\WinClean.ps1 -Repository PSGallery -ApiKey $env:PSGAL
179209

180210
- [ ] Публикация статьи на Хабре (песочница)
181211
- [ ] Скриншоты для статьи
212+
- [ ] Интеграционное тестирование в Hyper-V VM
182213

183214
### Планы на будущее
184215

@@ -275,6 +306,12 @@ Publish-PSResource -Path .\WinClean.ps1 -Repository PSGallery -ApiKey $env:PSGAL
275306

276307
| Проблема | Решение | Версия |
277308
|----------|---------|--------|
309+
| Docker regex не парсит новый формат | Обновлён regex для обоих форматов | 2.13 |
310+
| Browser cache отрицательные значения | `[math]::Max(0, ...)` | 2.13 |
311+
| Temp paths дублируются | GetFullPath + Group-Object | 2.13 |
312+
| Get-FolderSize медленный | Добавлен флаг `-File` | 2.13 |
313+
| PS 7.4 удалил `-UseBasicParsing` | Удалён deprecated параметр | 2.12 |
314+
| winget статистика при ошибках | Проверка exit code | 2.12 |
278315
| PSWindowsUpdate зависает при установке | TLS 1.2 + таймауты | 2.9 |
279316
| Disk Cleanup зависает | Уменьшен таймаут до 7 мин | 2.8 |
280317
| TotalFreedBytes всегда 0 | Заменён Interlocked на += | 2.3 |
@@ -284,32 +321,38 @@ Publish-PSResource -Path .\WinClean.ps1 -Repository PSGallery -ApiKey $env:PSGAL
284321

285322
## 12. Тестирование
286323

287-
### Быстрая проверка
324+
### Автоматические тесты (безопасно на рабочей машине)
288325

289326
```powershell
290-
# Режим предпросмотра (без изменений)
291-
.\WinClean.ps1 -ReportOnly
292-
```
293-
294-
### PSScriptAnalyzer
327+
# Pester тесты (94 теста, без изменений системы)
328+
Invoke-Pester ./tests -Output Detailed
295329
296-
```powershell
330+
# PSScriptAnalyzer
297331
Invoke-ScriptAnalyzer -Path .\WinClean.ps1 -Severity Warning,Error
298-
```
299-
300-
### Синтаксис
301332
302-
```powershell
333+
# Проверка синтаксиса
303334
$null = [scriptblock]::Create((Get-Content .\WinClean.ps1 -Raw))
304335
```
305336

306-
### Полный запуск
337+
### Ручное тестирование
307338

308339
```powershell
309-
# Требует Admin, создаёт Restore Point
340+
# Режим предпросмотра (без изменений)
341+
.\WinClean.ps1 -ReportOnly
342+
343+
# Полный запуск (требует Admin, создаёт Restore Point)
310344
.\WinClean.ps1
311345
```
312346

347+
### Тестирование в изоляции
348+
349+
Для полного интеграционного тестирования рекомендуется Hyper-V VM:
350+
1. Создать VM с Windows 11 Pro
351+
2. Создать snapshot "Clean-Install"
352+
3. Создать "грязную" систему (кэши, корзина, temp файлы)
353+
4. Создать snapshot "Dirty-System"
354+
5. Запустить полный прогон и проверить результаты
355+
313356
---
314357

315358
## 13. Контакты и ресурсы
@@ -329,6 +372,7 @@ $null = [scriptblock]::Create((Get-Content .\WinClean.ps1 -Raw))
329372
3. **Обновлять CHANGELOG** — каждое изменение должно быть задокументировано
330373
4. **Версия в нескольких местах** — см. раздел "Версионирование"
331374
5. **docs/ не в git** — черновики и рабочие материалы
375+
6. **Запускать Pester тесты** после изменений helper-функций
332376

333377
### Что помнить о проекте
334378

@@ -337,4 +381,12 @@ $null = [scriptblock]::Create((Get-Content .\WinClean.ps1 -Raw))
337381
- Поддерживает -ReportOnly для безопасного предпросмотра
338382
- Лог сохраняется в `%TEMP%\WinClean_*.log`
339383
- Опубликован в PSGallery — нужен API ключ для публикации
384+
- **94 Pester теста** в CI/CD — регрессии отслеживаются автоматически
340385
- Статья для Хабра готова, ждёт скриншоты
386+
387+
### Особенности Pester тестов
388+
389+
- Функции **определены напрямую в BeforeAll** — AST-парсинг не работает в Pester
390+
- Используются **regex для locale-независимости** (`"^1[,.]00 KB$"` вместо точного сравнения)
391+
- `-ForEach` параметризация преобразована в **отдельные It блоки** для надёжности
392+
- Тесты **не модифицируют систему** — безопасны для запуска на рабочей машине

0 commit comments

Comments
 (0)