SEBA-419 allow legacy to be specified on a per-model basis;
Deprecate "legacy" in favor of "custom_python"
Change-Id: I44625ff18ee7796996ae25ad700e58a0b36e7398
diff --git a/lib/xos-genx/xos-genx-tests/test_generator.py b/lib/xos-genx/xos-genx-tests/test_generator.py
index 8212d51..b3710cd 100644
--- a/lib/xos-genx/xos-genx-tests/test_generator.py
+++ b/lib/xos-genx/xos-genx-tests/test_generator.py
@@ -45,6 +45,12 @@
FILTERTEST_XPROTO = os.path.abspath(
os.path.dirname(os.path.realpath(__file__)) + "/xproto/filtertest.xproto"
)
+CUSTOM_TEST1_XPROTO = os.path.abspath(
+ os.path.dirname(os.path.realpath(__file__)) + "/xproto/custom_test1.xproto"
+)
+CUSTOM_TEST2_XPROTO = os.path.abspath(
+ os.path.dirname(os.path.realpath(__file__)) + "/xproto/custom_test2.xproto"
+)
SKIP_DJANGO_XPROTO = os.path.abspath(
os.path.dirname(os.path.realpath(__file__)) + "/xproto/skip_django.xproto"
)
@@ -114,25 +120,25 @@
output = XOSProcessor.process(args)
# xosmodel has custom header attic
- self.assertIn("from xosmodel_header import *", output["XOSModel"])
- self.assertIn("class XOSModel(XOSBase):", output["XOSModel"])
+ self.assertIn("from core.models.xosbase import *", output["XOSModel"])
+ self.assertIn("class XOSModel_decl(XOSBase):", output["XOSModel"])
# vrouter port use the default header
- self.assertIn("header import *", output["VRouterPort"])
- self.assertIn("class VRouterPort(XOSBase):", output["VRouterPort"])
+ self.assertIn("from core.models.xosbase import *", output["VRouterPort"])
+ self.assertIn("class VRouterPort_decl(XOSBase):", output["VRouterPort"])
# verify files
xosmodel = OUTPUT_DIR + "/xosmodel.py"
self.assertTrue(os.path.isfile(xosmodel))
xmf = open(xosmodel).read()
- self.assertIn("from xosmodel_header import *", xmf)
- self.assertIn("class XOSModel(XOSBase):", xmf)
+ self.assertIn("from core.models.xosbase import *", xmf)
+ self.assertIn("class XOSModel_decl(XOSBase):", xmf)
vrouterport = OUTPUT_DIR + "/vrouterport.py"
self.assertTrue(os.path.isfile(vrouterport))
vrpf = open(vrouterport).read()
- self.assertIn("header import *", vrpf)
- self.assertIn("class VRouterPort(XOSBase):", vrpf)
+ self.assertIn("from core.models.xosbase import *", vrpf)
+ self.assertIn("class VRouterPort_decl(XOSBase):", vrpf)
def test_django_with_base(self):
args = XOSProcessorArgs(
@@ -149,14 +155,14 @@
xosmodel = OUTPUT_DIR + "/xosmodel.py"
self.assertTrue(os.path.isfile(xosmodel))
xmf = open(xosmodel).read()
- self.assertIn("from xosmodel_header import *", xmf)
- self.assertIn("class XOSModel(XOSBase):", xmf)
+ self.assertIn("from core.models.xosbase import *", xmf)
+ self.assertIn("class XOSModel_decl(XOSBase):", xmf)
xosbase = OUTPUT_DIR + "/xosbase.py"
self.assertTrue(os.path.isfile(xosbase))
xbf = open(xosbase).read()
- self.assertIn("header import *", xbf)
- self.assertIn("class XOSBase(models.Model, PlModelMixIn):", xbf)
+ self.assertIn("from core.models.xosbase import *", xbf)
+ self.assertIn("class XOSBase_decl(models.Model, PlModelMixIn):", xbf)
def test_write_multiple_files(self):
"""
@@ -312,6 +318,74 @@
self.assertEqual(output, "Model1,Model2,")
+ def test_django_custom_test1(self):
+ args = XOSProcessorArgs(
+ files=[CUSTOM_TEST1_XPROTO, BASE_XPROTO],
+ target="django.xtarget",
+ attic=TEST_ATTICS,
+ output=OUTPUT_DIR,
+ dest_extension="py",
+ write_to_file="model",
+ )
+ output = XOSProcessor.process(args)
+
+ # verify files
+ xosmodel = OUTPUT_DIR + "/xosmodel_decl.py"
+ self.assertTrue(os.path.isfile(xosmodel))
+ xmf = open(xosmodel).read()
+ self.assertIn("class XOSModel_decl(XOSBase):", xmf)
+
+ xosmodel = OUTPUT_DIR + "/xosmodel2_decl.py"
+ self.assertTrue(os.path.isfile(xosmodel))
+ xmf = open(xosmodel).read()
+ self.assertIn("class XOSModel2_decl(XOSBase):", xmf)
+
+ def test_django_custom_test2(self):
+ args = XOSProcessorArgs(
+ files=[CUSTOM_TEST2_XPROTO, BASE_XPROTO],
+ target="django.xtarget",
+ attic=TEST_ATTICS,
+ output=OUTPUT_DIR,
+ dest_extension="py",
+ write_to_file="model",
+ )
+ output = XOSProcessor.process(args)
+
+ # verify files
+ xosmodel = OUTPUT_DIR + "/xosmodel_decl.py"
+ self.assertTrue(os.path.isfile(xosmodel))
+ xmf = open(xosmodel).read()
+ self.assertIn("class XOSModel_decl(XOSBase):", xmf)
+ self.assertNotIn("class XOSModel(XOSModel_decl):", xmf)
+
+ xosmodel = OUTPUT_DIR + "/xosmodel2.py"
+ self.assertTrue(os.path.isfile(xosmodel))
+ xmf = open(xosmodel).read()
+ self.assertIn("class XOSModel2_decl(XOSBase):", xmf)
+ self.assertIn("class XOSModel2(XOSModel2_decl):", xmf)
+
+ def test_service_custom_test1(self):
+ args = XOSProcessorArgs(
+ files=[CUSTOM_TEST1_XPROTO, BASE_XPROTO],
+ target="service.xtarget",
+ attic=TEST_ATTICS,
+ output=OUTPUT_DIR,
+ dest_extension="py",
+ write_to_file="target",
+ )
+ output = XOSProcessor.process(args)
+
+ # verify files
+ xosmodel = OUTPUT_DIR + "/models_decl.py"
+ self.assertTrue(os.path.isfile(xosmodel))
+ xmf = open(xosmodel).read()
+ self.assertIn("class XOSModel_decl(XOSBase_decl):", xmf)
+
+ xosmodel = OUTPUT_DIR + "/models_decl.py"
+ self.assertTrue(os.path.isfile(xosmodel))
+ xmf = open(xosmodel).read()
+ self.assertIn("class XOSModel2_decl(XOSBase_decl):", xmf)
+
if __name__ == "__main__":
unittest.main()