예제 #1
0
        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
예제 #2
0
        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
예제 #3
0
        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
예제 #4
0
        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"