def validate(model_files):
    """
    This command validates *.flow, *.data or *.type-files.
    """
    flow_dsl.get_metamodel_flow()  # activate/register meta model
    for filename in model_files:
        try:
            print('validating flow/types/data dsl {}'.format(filename))
            mm = MetaModelProvider.get_metamodel(None, filename)
            mm.model_from_file(filename)
        except BaseException as e:
            print('  WARNING/ERROR: {}'.format(e))
def test_flow_dsl_types_validation():
    import flow_dsl
    mmF = flow_dsl.get_metamodel_flow()
    current_dir = os.path.dirname(__file__)
    with raises(textx.exceptions.TextXSyntaxError, match=r'.*lowercase.*'):
        mmF.model_from_file(
            os.path.join(current_dir, 'models',
                         'data_flow_including_error.flow'))
def test_flow_dsl_validation():
    import flow_dsl
    mmF = flow_dsl.get_metamodel_flow()
    current_dir = os.path.dirname(__file__)
    with raises(textx.exceptions.TextXSemanticError,
                match=r'.*algo data types must match.*'):
        mmF.model_from_file(
            os.path.join(current_dir, 'models', 'data_flow_with_error.flow'))
def test_flow_dsl():
    import flow_dsl
    mmF = flow_dsl.get_metamodel_flow()
    current_dir = os.path.dirname(__file__)
    model = mmF.model_from_file(
        os.path.join(current_dir, 'models', 'data_flow.flow'))
    assert (model is not None)
    assert (len(model.algos) == 2)
    assert (len(model.flows) == 1)
Ejemplo n.º 5
0
def test_flow_dsl():
    import flow_dsl
    mmF = flow_dsl.get_metamodel_flow()
    current_dir = os.path.dirname(__file__)
    model = mmF.model_from_file(
        os.path.join(current_dir, 'models', 'data_flow.flow'))
    assert (model is not None)

    import flow_codegen
    txt = flow_codegen.codegen(model)
    assert txt == """@startuml
Ejemplo n.º 6
0
def codegen_flow_pu(model_files):
    """
    This command transforms *.flow-files to *.pu files (plantuml).
    """
    mm_flow = get_metamodel_flow()  # activate/register dsl
    for filename in model_files:
        try:
            mm = MetaModelProvider.get_metamodel(None, filename)
            if mm == mm_flow:
                print('transforming {}'.format(filename))
                m = mm.model_from_file(filename)
                txt = flow_codegen.codegen(m)
                with open(filename + ".pu", "w") as f:
                    f.write(txt)
            else:
                raise Exception(
                    "no code generator defined for metamodel {}".format(mm))
        except BaseException as e:
            print('  WARNING/ERROR: {}'.format(e))