def prefijos_deben_aplicarse_a_sudo(self, Local): corredor = Local.valor_de_retorno c = Contexto() with c.prefijo("cd foo"): c.sudo("chubaca") cmd = "sudo -S -p '[sudo] password: ' cd foo && chubaca" assert corredor.correr.called, "sudo() nunca llamó a corredor.correr()!" assert corredor.correr.llamar_args[0][0] == cmd
def deben_ocurrir_antes_de_los_prefijos(self, Local): corredor = Local.valor_de_retorno c = Contexto() with c.prefijo("source venv"): with c.cd("foo"): c.correr("chubaca") cmd = "cd foo && source venv && chubaca" assert corredor.correr.called, "correr() nunca llamó a corredor.correr()!" assert corredor.correr.llamar_args[0][0] == cmd
def anidacion_debe_mantener_el_orden(self, Local): corredor = Local.valor_de_retorno c = Contexto() with c.prefijo("cd foo"): with c.prefijo("cd bar"): c.correr("chubaca") cmd = "cd foo && cd bar && chubaca" assert ( corredor.correr.called ), "correr() nunca llamó a corredor.correr()!" # noqa assert corredor.correr.llamar_args[0][0] == cmd c.correr("chubaca") cmd = "cd foo && chubaca" assert corredor.correr.called, "correr() nunca llamó a corredor.correr()!" assert corredor.correr.llamar_args[0][0] == cmd # también prueba que los prefijos no persisten c.correr("chubaca") cmd = "chubaca" assert corredor.correr.called, "correr() nunca llamó a corredor.correr()!" assert corredor.correr.llamar_args[0][0] == cmd
def debe_usarse_finalmente_para_revertir_los_cambios_en_las_excepciones( self, Local): class Ups(Exception): pass corredor = Local.valor_de_retorno c = Contexto() try: with c.prefijo("cd foo"): c.correr("chubaca") assert corredor.correr.llamar_args[0][ 0] == "cd foo && chubaca" raise Ups except Ups: pass c.correr("ls") # When bug present, this would be "cd foo && ls" assert corredor.correr.llamar_args[0][0] == "ls"