¿Sabes esas pequeñas tareas repetitivas que de vez en cuando nos toca hacer a todos y que, tras un buen rato, llega alguien y te dice un truco que usa él para hacer eso en una décima de tiempo del que has invertido tú? Pues con este artículo, voy a compartir uno de esos pequeños trucos :P

Voy a plantearte un ejemplo de pequeñas dimensiones para poder explicarme mejor. Ponte en situación: tienes que hacer un proceso que cree un anuncio.

  • Para que la creación sea correcta tenemos los siguientes requisitos:
    • Tener eslogan y tener letra pequeña
    • Hay que crearlos en 3 idiomas: español, inglés y euskera
    • Tiene que tener su fecha de publicación de inicio y la fecha de cuándo deja de verse
    • Debemos saber dónde se va a publicar

  • No debería crearse si:
    • El eslogan o la letra pequeña no tienen texto
    • Falta algún idioma
    • La fecha de publicación ha pasado ya
    • No se indica ningún sitio dónde se vaya a publicar

Tras preparar todos los procesos que abarcan los requisitos, llega el momento de hacer las pruebas unitarias. Como mínimo hay que hacer los siguientes tests unitarios:

  • No rellenar el eslogan → Error
  • No rellenar la letra pequeña → Error
  • No rellenarlo en inglés → Error
  • Poner una fecha de publicación del año pasado → Error
  • No indicar un lugar de publicación → Error
  • Creación correcta: rellenando eslogan, letra pequeña, informar los 3 idiomas, con fecha futura y diciendo dónde se publicará.

Adicionalmente, también nos han pedido un proceso equivalente al del anuncio para crear unas “promociones”, con los mismos requisitos que los anuncios, por lo que las pruebas unitarias podrían ser las mismas. La única diferencia será que se llamará al proceso llamado “Crear promoción” en vez de al de “Crear anuncio”.

Bien, este es un ejemplo tonto y sólo estoy hablando de 6 tests, pero qué pasaría si fueran 50, 100, … ¿te vas a poner a programar todo de nuevo? Pues yo no y aquí es donde intervienen mis pequeños aliados: PowerShell y Notepad++.

Primero, os expongo un resumen de lo que haría en mi caso y luego os detallo más los pasos:

  • Vuelco los 6 archivos de script que contienen los tests a una carpeta llamada “Test nuevo Anuncio”
  • Copio la carpeta y la renombro a “Test nueva Promoción”
  • Con PowerShell cambio el nombre de los archivos de la carpeta de promociones, para que ponga “Promoción”, en vez de “Anuncio” (Así tengo los scripts para ambos casos guardados)
  • Abro Notepad++, y me aseguro de que no tengo ningún otro archivo abierto. Si lo tengo, lanzo “Archivo → Cerrar todas”.
  • Selecciono todos los archivos de “Test nueva Promoción”, los abro con el Notepad++, y uso la funcionalidad REPLACE en “Todos los archivos abiertos” para cambiar “Anuncio” por “Promoción” y guardo todos.
  • Ejecuto los scripts modificados donde correspondan
Es decir que con PowerShell, puedo renombrar de forma masiva archivos (entre otras cosas) y con Notepad++, puedo reemplazar de forma masiva el contenido de esos archivos.

Mola, ¿Verdad?
Ahora vamos a ver más detalladamente los pasos:

  1. Partimos de estos scriptsPN1

  2. Copio la carpeta y la renombro:PN2

  3. Abro el PowerShell y me coloco en el directorio “C:\Pruebas\Test nueva Promoción\” PN3
    PN4

  4. Ejecuto el siguiente comando:
    dir | rename-item -NewName {$_.name -replace "Anuncio","Promoción"}

PN5

¡Listo! Se han renombrado todos los archivos de esa carpeta

PN6

  1. Y ahora abro todos los archivos con el Notepad++, asegurando que no hay ningún otro archivo abierto ajeno a esto. Y reemplazo:
    PN7
    Es probable que tengas que hacer varios reemplazos, en función de tus datos.
    Ten cuidado con los patrones que pones en la búsqueda, no vayas a reemplazar cosas que no quieras reemplazar. Mi consejo: usa “Solo palabras completas” y tal vez “Coincidir MAYÚSCULAS/minúsculas”.

¡¡Todo listo!! Con esto ya tengo todos mis archivos cambiados:

Gracias a este truco he podido crear en menos tiempo las pruebas del segundo proceso.

¿Y tu? ¿Tienes algún aliado que te permite ahorrar tiempo en este tipo de tareas?