瀏覽代碼

Patched bug in transformation_signature that was unable to resolve model

Yentl Van Tendeloo 7 年之前
父節點
當前提交
8de3f9a8c7
共有 4 個文件被更改,包括 57 次插入8 次删除
  1. 1 1
      bootstrap/core_algorithm.alc
  2. 54 5
      unit/test_all.py
  3. 1 1
      wrappers/classes/modelverse.xml
  4. 1 1
      wrappers/modelverse_SCCD.py

+ 1 - 1
bootstrap/core_algorithm.alc

@@ -2302,7 +2302,7 @@ String function cmd_transformation_signature(transformation_name : String):
 
 	if (model_id != ""):
 		if (is_nominal_instance(core, model_id, "Transformation")):
-			if (allow_execute(current_user_id, transformation_name)):
+			if (allow_execute(current_user_id, model_id)):
 				String result
 				String elem
 				Element inputs

+ 54 - 5
unit/test_all.py

@@ -2214,7 +2214,7 @@ class TestModelverse(unittest.TestCase):
         try:
             define_attribute("users/user/test/b", "a", "abc", "a")
             self.fail()
-        except NoSimpleClassDiagramsModel:
+        except UnknownM3:
             pass
 
     def test_op_read_defined_attrs(self):
@@ -2282,7 +2282,7 @@ class TestModelverse(unittest.TestCase):
         try:
             read_defined_attrs("users/user/test/b", "a")
             self.fail()
-        except NoSimpleClassDiagramsModel:
+        except UnknownM3:
             pass
 
     def test_op_undefine_attribute(self):
@@ -2460,7 +2460,7 @@ class TestModelverse(unittest.TestCase):
         try:
             attribute_optional("users/user/test/b", "a", "b", False)
             self.fail()
-        except NoSimpleClassDiagramsModel:
+        except UnknownM3:
             pass
         
         # Attribute not defined here
@@ -2564,7 +2564,7 @@ class TestModelverse(unittest.TestCase):
         try:
             attribute_type("users/user/test/b", "a", "b", "a")
             self.fail()
-        except NoSimpleClassDiagramsModel:
+        except UnknownM3:
             pass
 
         # Attribute not defined here
@@ -2675,7 +2675,7 @@ class TestModelverse(unittest.TestCase):
         try:
             attribute_name("users/user/test/b", "a", "b", "c")
             self.fail()
-        except NoSimpleClassDiagramsModel:
+        except UnknownM3:
             pass
 
     def test_op_group_create(self):
@@ -3873,6 +3873,55 @@ class TestModelverse(unittest.TestCase):
         except CallbackOnEmptySignature:
             assert "h" not in model_list("users/user/test")
 
+        # Add transformation with unknown metamodel in signature (input)
+        try:
+            transformation_add_MANUAL({"MODEL_A": "adbdsf"}, {"MODEL_B": "users/user/test/A"}, "users/user/test/i")
+            self.fail()
+        except UnknownModel:
+            assert "i" not in model_list("users/user/test")
+
+        # Add transformation with unknown metamodel in signature (output)
+        try:
+            transformation_add_MANUAL({"MODEL_A": "users/user/test/A"}, {"MODEL_B": "adfad"}, "users/user/test/j")
+            self.fail()
+        except UnknownModel:
+            assert "j" not in model_list("users/user/test")
+
+        # Add transformation with unreadable metamodel in signature (input)
+        try:
+            transformation_add_MANUAL({"MODEL_A": "administration/core"}, {"MODEL_B": "users/user/test/B"}, "users/user/test/k")
+            self.fail()
+        except ReadPermissionDenied:
+            assert "k" not in model_list("users/user/test")
+
+        # Add transformation with unreadable metamodel in signature (output)
+        try:
+            transformation_add_MANUAL({"MODEL_A": "users/user/test/A"}, {"MODEL_B": "administration/core"}, "users/user/test/l")
+            self.fail()
+        except ReadPermissionDenied:
+            assert "l" not in model_list("users/user/test")
+
+        # Try to use a non-RAMifiable metamodel in input
+        try:
+            transformation_add_MANUAL({"MODEL_A": "users/user/test/a"}, {}, "users/user/test/m")
+            self.fail()
+        except UnknownM3:
+            assert "m" not in model_list("users/user/test")
+
+        # Try to use a non-RAMifiable metamodel in output
+        try:
+            transformation_add_MANUAL({}, {"MODEL_A": "users/user/test/a"}, "users/user/test/n")
+            self.fail()
+        except UnknownM3:
+            assert "n" not in model_list("users/user/test")
+
+        # Try to create activity that already exists
+        sig = transformation_signature("users/user/test/c")
+        try:
+            transformation_add_MANUAL({}, {}, "users/user/test/c")
+        except ModelExists:
+            assert sig == transformation_signature("users/user/test/c")
+
         def operation(model):
             # Check if model correctly loaded with names rewritten
             lst = element_list_nice(model)

+ 1 - 1
wrappers/classes/modelverse.xml

@@ -1527,7 +1527,7 @@
 
                     <transition cond="self.expect_response_partial('Not a SimpleClassDiagrams model!', pop=True)" target="../wait_for_action/history">
                         <raise event="exception">
-                            <parameter expr="'NoSimpleClassDiagramsModel'"/>
+                            <parameter expr="'UnknownM3'"/>
                             <parameter expr="'Model is not a Simple Class Diagrams model and has no notion of defined attributes'"/>
                         </raise>
                     </transition>

+ 1 - 1
wrappers/modelverse_SCCD.py

@@ -2404,7 +2404,7 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response('Write permission denied', pop=True)
     
     def _initialized_behaviour_operations_21_exec(self, parameters):
-        self.raiseInternalEvent(Event("exception", None, ['NoSimpleClassDiagramsModel', 'Model is not a Simple Class Diagrams model and has no notion of defined attributes']))
+        self.raiseInternalEvent(Event("exception", None, ['UnknownM3', 'Model is not a Simple Class Diagrams model and has no notion of defined attributes']))
     
     def _initialized_behaviour_operations_21_guard(self, parameters):
         return self.expect_response_partial('Not a SimpleClassDiagrams model!', pop=True)