def METHOD_NAME(capsys):
    """Check that a scheme generated by a script is what we expect."""
    # Override abstract methods
    class NewScript(Script):
        def get_scheme(self):
            scheme = Scheme("abcd")
            scheme.description = u"\uC3BC and \uC3B6 and <&> f\u00FCr"
            scheme.streaming_mode = scheme.streaming_mode_simple
            scheme.use_external_validation = False
            scheme.use_single_instance = True
            arg1 = Argument("arg1")
            scheme.add_argument(arg1)
            arg2 = Argument("arg2")
            arg2.description = u"\uC3BC and \uC3B6 and <&> f\u00FCr"
            arg2.data_type = Argument.data_type_number
            arg2.required_on_create = True
            arg2.required_on_edit = True
            arg2.validation = "is_pos_int('some_name')"
            scheme.add_argument(arg2)
            return scheme
        def stream_events(self, inputs, ew):
            # not used
            return
    script = NewScript()
    ew = EventWriter(sys.stdout, sys.stderr)
    args = [TEST_SCRIPT_PATH, "--scheme"]
    return_value = script.run_script(args, ew, sys.stderr)
    output = capsys.readouterr()
    assert output.err == ""
    assert return_value == 0
    with data_open("data/scheme_without_defaults.xml") as data:
        found = ET.fromstring(output.out)
        expected = ET.parse(data).getroot()
        assert xml_compare(expected, found)