mirror of
https://gitlab.com/foxixus/neomovies_mobile.git
synced 2025-10-27 19:58:50 +05:00
refactor: Remove test README and clean up emoji from CI tests
- Remove test/integration/README.md as requested - Remove all emoji from CI environment test print statements - Keep release workflow intact for GitHub Actions APK builds - Maintain clean code style without decorative elements
This commit is contained in:
@@ -1,124 +0,0 @@
|
|||||||
# Integration Tests
|
|
||||||
|
|
||||||
Этот каталог содержит интеграционные тесты для NeoMovies Mobile App.
|
|
||||||
|
|
||||||
## Описание тестов
|
|
||||||
|
|
||||||
### `torrent_integration_test.dart`
|
|
||||||
Тестирует торрент функциональность с использованием реальной магнет ссылки на короткометражный фильм **Sintel** от Blender Foundation.
|
|
||||||
|
|
||||||
**Что тестируется:**
|
|
||||||
- ✅ Парсинг реальной магнет ссылки
|
|
||||||
- ✅ Добавление, пауза, возобновление и удаление торрентов
|
|
||||||
- ✅ Получение информации о торрентах и файлах
|
|
||||||
- ✅ Управление приоритетами файлов
|
|
||||||
- ✅ Обнаружение видео файлов
|
|
||||||
- ✅ Производительность операций
|
|
||||||
- ✅ Обработка ошибок и таймаутов
|
|
||||||
|
|
||||||
**Используемые данные:**
|
|
||||||
- **Фильм**: Sintel (2010) - официальный короткометражный фильм от Blender Foundation
|
|
||||||
- **Лицензия**: Creative Commons Attribution 3.0
|
|
||||||
- **Размер**: ~700MB (1080p версия)
|
|
||||||
- **Официальный сайт**: https://durian.blender.org/
|
|
||||||
|
|
||||||
### `ci_environment_test.dart`
|
|
||||||
Проверяет корректность работы тестового окружения в CI/CD pipeline.
|
|
||||||
|
|
||||||
**Что тестируется:**
|
|
||||||
- ✅ Определение GitHub Actions окружения
|
|
||||||
- ✅ Валидация Dart/Flutter среды
|
|
||||||
- ✅ Проверка сетевого подключения
|
|
||||||
- ✅ Доступность тестовой инфраструктуры
|
|
||||||
|
|
||||||
## Запуск тестов
|
|
||||||
|
|
||||||
### Локально
|
|
||||||
```bash
|
|
||||||
# Все интеграционные тесты
|
|
||||||
flutter test test/integration/
|
|
||||||
|
|
||||||
# Конкретный тест
|
|
||||||
flutter test test/integration/torrent_integration_test.dart
|
|
||||||
flutter test test/integration/ci_environment_test.dart
|
|
||||||
```
|
|
||||||
|
|
||||||
### В GitHub Actions
|
|
||||||
Тесты автоматически запускаются в CI pipeline:
|
|
||||||
```yaml
|
|
||||||
- name: Run Integration tests
|
|
||||||
run: flutter test test/integration/ --reporter=expanded
|
|
||||||
env:
|
|
||||||
CI: true
|
|
||||||
GITHUB_ACTIONS: true
|
|
||||||
```
|
|
||||||
|
|
||||||
## Особенности
|
|
||||||
|
|
||||||
### Mock Platform Channel
|
|
||||||
Все тесты используют mock Android platform channel, поэтому:
|
|
||||||
- ❌ Реальная загрузка торрентов НЕ происходит
|
|
||||||
- ✅ Тестируется вся логика обработки без Android зависимостей
|
|
||||||
- ✅ Работают на любой платформе (Linux/macOS/Windows)
|
|
||||||
- ✅ Быстрое выполнение в CI
|
|
||||||
|
|
||||||
### Переменные окружения
|
|
||||||
Тесты адаптируются под разные окружения:
|
|
||||||
- `GITHUB_ACTIONS=true` - запуск в GitHub Actions
|
|
||||||
- `CI=true` - запуск в любой CI системе
|
|
||||||
- `RUNNER_OS` - операционная система в GitHub Actions
|
|
||||||
|
|
||||||
### Безопасность
|
|
||||||
- Используется только **открытый контент** под Creative Commons лицензией
|
|
||||||
- Никакие авторские права не нарушаются
|
|
||||||
- Mock тесты не выполняют реальные сетевые операции
|
|
||||||
|
|
||||||
## Магнет ссылка Sintel
|
|
||||||
|
|
||||||
```
|
|
||||||
magnet:?xt=urn:btih:08ada5a7a6183aae1e09d831df6748d566095a10
|
|
||||||
&dn=Sintel
|
|
||||||
&tr=udp://tracker.opentrackr.org:1337
|
|
||||||
&ws=https://webtorrent.io/torrents/
|
|
||||||
```
|
|
||||||
|
|
||||||
**Почему Sintel?**
|
|
||||||
- 🎬 Профессиональное качество (3D анимация)
|
|
||||||
- 📜 Свободная лицензия (Creative Commons)
|
|
||||||
- 🌐 Широко доступен в торрент сетях
|
|
||||||
- 🧪 Часто используется для тестирования
|
|
||||||
- 📏 Подходящий размер для тестов (~700MB)
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### Таймауты в CI
|
|
||||||
Если тесты превышают лимиты времени:
|
|
||||||
```dart
|
|
||||||
// Увеличьте таймауты для CI
|
|
||||||
final timeout = Platform.environment['CI'] == 'true'
|
|
||||||
? Duration(seconds: 10)
|
|
||||||
: Duration(seconds: 5);
|
|
||||||
```
|
|
||||||
|
|
||||||
### Сетевые ошибки
|
|
||||||
В ограниченных CI средах:
|
|
||||||
```dart
|
|
||||||
try {
|
|
||||||
// Сетевая операция
|
|
||||||
} catch (e) {
|
|
||||||
// Graceful fallback
|
|
||||||
print('Network unavailable in CI: $e');
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Platform Channel ошибки
|
|
||||||
Убедитесь, что mock правильно настроен:
|
|
||||||
```dart
|
|
||||||
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
|
|
||||||
.setMockMethodCallHandler(
|
|
||||||
const MethodChannel('com.neo.neomovies_mobile/torrent'),
|
|
||||||
(MethodCall methodCall) async {
|
|
||||||
return _handleMethodCall(methodCall);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
```
|
|
||||||
@@ -16,7 +16,7 @@ void main() {
|
|||||||
print(' Platform: ${Platform.operatingSystem}');
|
print(' Platform: ${Platform.operatingSystem}');
|
||||||
|
|
||||||
if (isGitHubActions || isCI) {
|
if (isGitHubActions || isCI) {
|
||||||
print('✅ Running in CI/GitHub Actions environment');
|
print('Running in CI/GitHub Actions environment');
|
||||||
expect(isCI, isTrue, reason: 'CI environment variable should be set');
|
expect(isCI, isTrue, reason: 'CI environment variable should be set');
|
||||||
|
|
||||||
if (isGitHubActions) {
|
if (isGitHubActions) {
|
||||||
@@ -24,7 +24,7 @@ void main() {
|
|||||||
print(' GitHub Actions Runner OS: $runnerOS');
|
print(' GitHub Actions Runner OS: $runnerOS');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
print('🔧 Running in local development environment');
|
print('Running in local development environment');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test should always pass regardless of environment
|
// Test should always pass regardless of environment
|
||||||
@@ -42,7 +42,7 @@ void main() {
|
|||||||
// Check if running in CI and validate expected environment
|
// Check if running in CI and validate expected environment
|
||||||
final isCI = Platform.environment['CI'] == 'true';
|
final isCI = Platform.environment['CI'] == 'true';
|
||||||
if (isCI) {
|
if (isCI) {
|
||||||
print('✅ Dart environment validated in CI');
|
print('Dart environment validated in CI');
|
||||||
|
|
||||||
// CI should have these basic characteristics
|
// CI should have these basic characteristics
|
||||||
expect(Platform.operatingSystem, anyOf('linux', 'macos', 'windows'));
|
expect(Platform.operatingSystem, anyOf('linux', 'macos', 'windows'));
|
||||||
@@ -61,9 +61,9 @@ void main() {
|
|||||||
// Test with a reliable endpoint
|
// Test with a reliable endpoint
|
||||||
final socket = await Socket.connect('8.8.8.8', 53, timeout: const Duration(seconds: 5));
|
final socket = await Socket.connect('8.8.8.8', 53, timeout: const Duration(seconds: 5));
|
||||||
socket.destroy();
|
socket.destroy();
|
||||||
print('✅ Network connectivity available');
|
print('Network connectivity available');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print('ℹ️ Limited network connectivity: $e');
|
print('Limited network connectivity: $e');
|
||||||
// Don't fail the test - some CI environments have restricted network
|
// Don't fail the test - some CI environments have restricted network
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ void main() {
|
|||||||
expect(setUp, isNotNull, reason: 'Test setup functions should be available');
|
expect(setUp, isNotNull, reason: 'Test setup functions should be available');
|
||||||
expect(tearDown, isNotNull, reason: 'Test teardown functions should be available');
|
expect(tearDown, isNotNull, reason: 'Test teardown functions should be available');
|
||||||
|
|
||||||
print('✅ Test infrastructure validated');
|
print('Test infrastructure validated');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user