def test012():
    test_file = "test012.txt"
    test_file_path = find_file(test_file)
    
    class SimpleInfra(InfraModel):
        testbox = StaticServer("testbox", find_ip())
    infra = SimpleInfra("simple")
    
    class SimpleNamespace(NamespaceModel):
        with_variables(Var("DEST", "/tmp/!{FILE}"),
                       Var("FILE", test_file),
                       Var("var1", "summat"),
                       Var("var2", "or"),
#                        Var("var3", "the"),  #This one is to be missing
                       Var("var4", "other"))
        target = Role("target", host_ref=SimpleInfra.testbox)
    ns = SimpleNamespace()
        
    class SimpleConfig(ConfigModel):
        reset = CommandTask("reset", "/bin/rm -rf !{DEST}", removes="!{DEST}",
                            task_role=SimpleNamespace.target)
        process = ProcessCopyFileTask("pcf", "!{DEST}",
                                      src=test_file_path,
                                      task_role=SimpleNamespace.target,
                                      repeat_count=1)
        with_dependencies(reset | process)
    cfg = SimpleConfig()
    
    ea = AnsibleExecutionAgent(config_model_instance=cfg,
                               namespace_model_instance=ns,
                               no_delay=True)
    try:
        ea.perform_config()
        assert False, "this should have raised an exception about not finding var3"
    except ExecutionException, _:
        found_it = False
        for _, _, value, _ in ea.get_aborted_tasks():
            if 'var3' in value.message:
                found_it = True
                break
        assert found_it, "an exception was raised, but not about missing var3"
test012: this checks ProcessCopyFileTask if not all Vars are supplied.
dataset/ETHPy150Open haxsaw/actuator/src/tests/ansible_tests.py/test012