-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_install.sh
More file actions
executable file
·312 lines (262 loc) · 9.46 KB
/
test_install.sh
File metadata and controls
executable file
·312 lines (262 loc) · 9.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
#!/bin/bash
# Test script para install.sh
# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
test_passed=0
test_failed=0
print_test_status() {
echo -e "${BLUE}[TEST]${NC} $1"
}
print_test_success() {
echo -e "${GREEN}[PASS]${NC} $1"
((test_passed++))
}
print_test_failure() {
echo -e "${RED}[FAIL]${NC} $1"
((test_failed++))
}
print_test_warning() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
# Función para simular la función ask_user del script original
ask_user() {
local question=$1
local default_answer=${2:-y}
echo -n "$question (y/n) [default: $default_answer]: "
# Simular timeout para tests
if [ "$SIMULATE_TIMEOUT" = "true" ]; then
echo # Nueva línea
echo "Timeout simulado, usando default: $default_answer"
[[ $default_answer == "y" ]] && return 0 || return 1
fi
# Simular respuesta del usuario
if [ -n "$SIMULATE_ANSWER" ]; then
echo "$SIMULATE_ANSWER"
case $SIMULATE_ANSWER in
[Yy]) return 0 ;;
[Nn]) return 1 ;;
*)
echo "Respuesta inválida, usando default: $default_answer"
[[ $default_answer == "y" ]] && return 0 || return 1
;;
esac
fi
# Si no hay simulación, usar default
echo "$default_answer"
[[ $default_answer == "y" ]] && return 0 || return 1
}
# Función para verificar si un comando existe (simulada)
command_exists() {
case $1 in
"brew")
[ "$SIMULATE_BREW_EXISTS" = "true" ] && return 0 || return 1 ;;
"code")
[ "$SIMULATE_CODE_EXISTS" = "true" ] && return 0 || return 1 ;;
"git")
return 0 ;; # git siempre existe en nuestros tests
*)
return 1 ;;
esac
}
# Test 1: Verificar función ask_user con respuesta Y
test_ask_user_yes() {
print_test_status "Probando ask_user con respuesta 'y'"
SIMULATE_ANSWER="y"
if ask_user "¿Instalar aplicación de prueba?" "y" >/dev/null 2>&1; then
print_test_success "ask_user devuelve 0 (éxito) con respuesta 'y'"
else
print_test_failure "ask_user debería devolver 0 con respuesta 'y'"
fi
unset SIMULATE_ANSWER
}
# Test 2: Verificar función ask_user con respuesta N
test_ask_user_no() {
print_test_status "Probando ask_user con respuesta 'n'"
SIMULATE_ANSWER="n"
if ask_user "¿Instalar aplicación de prueba?" "y" >/dev/null 2>&1; then
print_test_failure "ask_user debería devolver 1 con respuesta 'n'"
else
print_test_success "ask_user devuelve 1 (fallo) con respuesta 'n'"
fi
unset SIMULATE_ANSWER
}
# Test 3: Verificar función ask_user con timeout
test_ask_user_timeout() {
print_test_status "Probando ask_user con timeout (default: y)"
SIMULATE_TIMEOUT="true"
if ask_user "¿Instalar aplicación de prueba?" "y" >/dev/null 2>&1; then
print_test_success "ask_user usa default 'y' correctamente con timeout"
else
print_test_failure "ask_user debería usar default 'y' con timeout"
fi
unset SIMULATE_TIMEOUT
}
# Test 4: Verificar función ask_user con timeout y default 'n'
test_ask_user_timeout_default_no() {
print_test_status "Probando ask_user con timeout (default: n)"
SIMULATE_TIMEOUT="true"
if ask_user "¿Instalar aplicación de prueba?" "n" >/dev/null 2>&1; then
print_test_failure "ask_user debería usar default 'n' con timeout"
else
print_test_success "ask_user usa default 'n' correctamente con timeout"
fi
unset SIMULATE_TIMEOUT
}
# Test 5: Verificar que el script principal existe y es ejecutable
test_script_exists() {
print_test_status "Verificando que install.sh existe"
if [ -f "install.sh" ]; then
print_test_success "install.sh existe"
else
print_test_failure "install.sh no existe"
return
fi
if [ -x "install.sh" ]; then
print_test_success "install.sh es ejecutable"
else
print_test_failure "install.sh no es ejecutable (ejecuta: chmod +x install.sh)"
fi
}
# Test 6: Verificar que el script contiene todas las funciones necesarias
test_script_functions() {
print_test_status "Verificando funciones en install.sh"
if grep -q "ask_user()" install.sh; then
print_test_success "Función ask_user encontrada en install.sh"
else
print_test_failure "Función ask_user no encontrada en install.sh"
fi
if grep -q "command_exists()" install.sh; then
print_test_success "Función command_exists encontrada en install.sh"
else
print_test_failure "Función command_exists no encontrada en install.sh"
fi
if grep -q "create_backup()" install.sh; then
print_test_success "Función create_backup encontrada en install.sh"
else
print_test_failure "Función create_backup no encontrada en install.sh"
fi
}
# Test 7: Verificar que todas las aplicaciones están incluidas
test_applications_included() {
print_test_status "Verificando que todas las aplicaciones están incluidas"
apps=("visual-studio-code" "cursor" "sublime-text" "postman" "dbeaver-community" "obsidian" "notion" "raycast" "ghostty" "cleanshot")
for app in "${apps[@]}"; do
if grep -q "$app" install.sh; then
print_test_success "Aplicación $app encontrada en el script"
else
print_test_failure "Aplicación $app no encontrada en el script"
fi
done
}
# Test 8: Verificar sintaxis del script
test_script_syntax() {
print_test_status "Verificando sintaxis del script"
if bash -n install.sh 2>/dev/null; then
print_test_success "Sintaxis del script es correcta"
else
print_test_failure "El script tiene errores de sintaxis"
echo "Ejecuta: bash -n install.sh para ver los errores"
fi
}
# Test 9: Verificar que .zshrc existe
test_zshrc_exists() {
print_test_status "Verificando que .zshrc existe"
if [ -f ".zshrc" ]; then
print_test_success ".zshrc existe"
else
print_test_failure ".zshrc no existe"
fi
}
# Test 10: Verificar que uninstall.sh existe
test_uninstall_exists() {
print_test_status "Verificando que uninstall.sh existe"
if [ -f "uninstall.sh" ]; then
print_test_success "uninstall.sh existe"
else
print_test_failure "uninstall.sh no existe"
fi
if [ -x "uninstall.sh" ]; then
print_test_success "uninstall.sh es ejecutable"
else
print_test_failure "uninstall.sh no es ejecutable (ejecuta: chmod +x uninstall.sh)"
fi
}
# Test 11: Verificar configuraciones del sistema
test_system_configurations() {
print_test_status "Verificando configuraciones del sistema en el script"
# Verificar configuración de capturas
if grep -q "Documents/Screenshots" install.sh; then
print_test_success "Configuración de capturas de pantalla encontrada"
else
print_test_failure "Configuración de capturas de pantalla no encontrada"
fi
# Verificar configuración de wallpapers
if grep -q "Documents/Wallpapers" install.sh; then
print_test_success "Configuración de wallpapers encontrada"
else
print_test_failure "Configuración de wallpapers no encontrada"
fi
# Verificar configuración de Ghostty
if grep -q "background-opacity" install.sh; then
print_test_success "Configuración de transparencia de Ghostty encontrada"
else
print_test_failure "Configuración de transparencia de Ghostty no encontrada"
fi
# Verificar fuente Nerd Font
if grep -q "font-meslo-lg-nerd-font" install.sh; then
print_test_success "Instalación de fuente Nerd Font encontrada"
else
print_test_failure "Instalación de fuente Nerd Font no encontrada"
fi
}
# Test 12: Verificar scripts de wallpaper
test_wallpaper_scripts() {
print_test_status "Verificando generación de scripts de wallpaper"
if grep -q "change-wallpaper.sh" install.sh; then
print_test_success "Script de cambio de wallpaper encontrado"
else
print_test_failure "Script de cambio de wallpaper no encontrado"
fi
if grep -q "wallpaper.jpg" install.sh; then
print_test_success "Archivo de ejemplo de wallpaper encontrado"
else
print_test_failure "Archivo de ejemplo de wallpaper no encontrado"
fi
if grep -q "osascript" install.sh; then
print_test_success "Comando de cambio de wallpaper (osascript) encontrado"
else
print_test_failure "Comando de cambio de wallpaper (osascript) no encontrado"
fi
}
# Ejecutar todos los tests
echo "🧪 Ejecutando tests para dotfiles..."
echo "======================================"
test_ask_user_yes
test_ask_user_no
test_ask_user_timeout
test_ask_user_timeout_default_no
test_script_exists
test_script_functions
test_applications_included
test_script_syntax
test_zshrc_exists
test_uninstall_exists
test_system_configurations
test_wallpaper_scripts
echo "======================================"
echo "📊 Resultados de los tests:"
echo -e "${GREEN}✅ Tests pasados: $test_passed${NC}"
echo -e "${RED}❌ Tests fallidos: $test_failed${NC}"
if [ $test_failed -eq 0 ]; then
echo -e "${GREEN}🎉 ¡Todos los tests pasaron!${NC}"
echo "El script está listo para ejecutar."
exit 0
else
echo -e "${RED}❌ Algunos tests fallaron${NC}"
echo "Por favor, revisa los errores antes de ejecutar el script."
exit 1
fi