Przeglądaj źródła

Reuse metamodel_name as much as possible, and fix some broken tests

Yentl Van Tendeloo 8 lat temu
rodzic
commit
57cec11a4e
2 zmienionych plików z 24 dodań i 6 usunięć
  1. 5 2
      integration/test_mvc.py
  2. 19 4
      wrappers/modelverse.py

+ 5 - 2
integration/test_mvc.py

@@ -35,7 +35,10 @@ class TestModelverseCore(unittest.TestCase):
         login("admin", "admin")
 
     def tearDown(self):
-        kill(self.proc)
+        try:
+            kill(self.proc)
+        except:
+            print("Got exception during teardown.")
 
     def test_list(self):
         assert model_list() == expected_model_list
@@ -49,7 +52,7 @@ class TestModelverseCore(unittest.TestCase):
         assert model_list_full() == set(list(expected_model_full_list) + [("Empty", "SimpleClassDiagrams", "admin", "nobody", "200")])
 
     def test_model_verify(self):
-        assert verify("SimpleClassDiagrams") == "OK"
+        assert verify("SimpleClassDiagrams", "SimpleClassDiagrams") == "OK"
 
     def test_model_empty_instantiate(self):
         model_add("Empty", "SimpleClassDiagrams")

+ 19 - 4
wrappers/modelverse.py

@@ -55,6 +55,9 @@ class InvalidMode(ModelverseException):
 class InterfaceMismatch(ModelverseException):
     pass
 
+class UnknownMetamodellingHierarchy(ModelverseException):
+    pass
+
 # Helper functions and configuration: do not use yourself!
 taskname = None
 address = None
@@ -365,14 +368,24 @@ def model_list_full():
 
     return lst
 
-def verify(model, metamodel):
+def verify(model_name, metamodel_name=None):
     """Verify if a model conforms to its metamodel."""
     _goto_mode(MODE_MODELLING)
-    _input(["verify", model, metamodel])
+
+    if metamodel_name is None:
+        global registered_metamodels
+
+        if model_name not in registered_metamodels:
+            raise UnknownMetamodellingHierarchy(model_name)
+
+        metamodel_name = registered_metamodels[model_name]
+
+    _input(["verify", model_name, metamodel_name])
     return _handle_output("Success: ", split=" ")
 
-def model_overwrite(model_name, metamodel_name, new_model=None):
+def model_overwrite(model_name, new_model=None, metamodel_name=None):
     """Upload a new model and overwrite an existing model."""
+    global registered_metamodels
     if mode not in [MODE_MODELLING, MODE_MODIFY, MODE_MANUAL]:
         raise InvalidMode()
 
@@ -387,6 +400,9 @@ def model_overwrite(model_name, metamodel_name, new_model=None):
     if mode == MODE_MODIFY:
         _goto_mode(MODE_MODELLING)
 
+    if metamodel_name is None:
+        metamodel_name = registered_metamodels[model_name]
+
     if mode == MODE_MODELLING:
         _input(["model_overwrite", model_name, metamodel_name])
     elif mode == MODE_MANUAL:
@@ -398,7 +414,6 @@ def model_overwrite(model_name, metamodel_name, new_model=None):
     _input(compiled)
     _output("Success")
 
-    global registered_metamodels
     registered_metamodels[model_name] = metamodel_name
 
 def user_logout():