Snap CommandRunner Migration (Issue #20 Part 2)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Refactorización
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- go
- Área
- operating-systems, tooling
Línea de trabajo
Empieza comparando la implementación de Snap con las migraciones de CommandRunner de APT ya completadas y las de YUM existentes; después, lee la interfaz de CommandRunner y MockCommandRunner. Comprueba las pruebas actuales de Snap y las rutas de comandos antes de realizar cambios. Se considera que el trabajo está terminado cuando se cumplen los criterios de aceptación, incluida la inyección de dependencias, la ejecución interactiva, el tratamiento de LC_ALL=C, la conservación del comportamiento existente y una cobertura de pruebas sustancial.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
Migrate Snap package manager from direct exec.Command calls to unified CommandRunner interface for consistent, testable command execution architecture.
This is Part 2 of Issue #20 - CommandRunner Pattern Implementation
Background
Following successful APT CommandRunner migration (Issue #27), implement the same architectural patterns for Snap package manager to achieve full consistency across the codebase.
Current State
- Snap: Uses direct
exec.Commandcalls - APT: ✅ Uses CommandRunner (Issue #27 completed)
- YUM: ✅ Uses CommandRunner (already implemented)
- Flatpak: Uses direct
exec.Commandcalls (Issue #20-3)
Scope
- Snap package manager migration from
exec.Commandto CommandRunner - Constructor standardization following APT/YUM patterns
- Dependency injection for comprehensive testing capabilities
- Test coverage expansion (currently 0% coverage for Snap)
Technical Implementation
CommandRunner Integration
- Replace all
exec.Commandcalls with CommandRunner interface - Implement automatic LC_ALL=C handling for consistent English output
- Add built-in interactive mode support via
RunInteractive() - Enable dependency injection for testing
Constructor Pattern
Following APT/YUM standardization:
NewPackageManager()- Production use with default CommandRunnerNewPackageManagerWithCustomRunner()- Testing use with mock CommandRunner
Testing Infrastructure
- Implement comprehensive mock-based testing
- Add environment variable tracking capabilities
- Create cross-platform test scenarios
- Achieve significant test coverage improvement (currently 0%)
Benefits
Architecture Benefits
- ✅ Consistent interface - Same CommandRunner pattern across all package managers
- ✅ Automatic LC_ALL=C - No manual environment setup needed
- ✅ Built-in interactive support - Proper stdin/stdout/stderr handling
- ✅ Unified testing approach - Same mocking patterns across codebase
Testing Benefits
- ✅ Simple mocking - Map-based command mocking vs complex setup
- ✅ Environment testing - Built-in environment variable verification
- ✅ Cross-platform testing - Same tests work across all environments
- ✅ Comprehensive coverage - All command execution paths testable
Acceptance Criteria
- Snap migrated from direct exec.Command to CommandRunner
- Constructor naming follows APT/YUM patterns
- Dependency injection implemented for testing
- Comprehensive test coverage added (target: >80%)
- LC_ALL=C automatically handled
- Interactive mode works consistently
- All existing functionality preserved
- Documentation updated
Priority
Medium Priority - Important architectural consistency improvement, but lower priority than core APT/YUM functionality.
Dependencies
- Requires Issue #27 (APT CommandRunner Migration) completion
- Should follow same patterns established in APT migration
Related Issues
- Part of Issue #20 - CommandRunner Pattern Implementation
- Preceded by Issue #27 (APT CommandRunner Migration)
- Followed by Issue #20-3 (Flatpak CommandRunner Migration)
Implementation Notes
- Follow proven patterns from APT migration (Issue #27)
- Leverage existing CommandRunner interface and MockCommandRunner
- Maintain backward compatibility during migration
- Use established testing frameworks and patterns
- Lenguaje dominante
- Go
- Estrellas
- 17
- Forks
- 8
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bluet/syspkg
-
Dependency DashboardAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
-
apt-fast manager support.Quizá libre de nuevo @bluet la tomó hace 332 días y no hay ningún pull request abierto. Abierto
-
testing
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
Todos los issues de bluet/syspkg
Issues similares
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
open-telemetry/opentelemetry-go-compile-instrumentation#1417 ·
Los mantenedores suelen responder en 2 días
-
agent-research-finding agent-research-recommend chore ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
jordansmall/spindrift#4068 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Type/Task
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
OpenNSW/nsw-srilanka#537 ·
Los mantenedores suelen responder en 1 día
-
security
Dificultad 2/5 1-2 días Aptitud para principiantes 62/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día