Source code for jasy.test.script.meta

#!/usr/bin/env python3

import sys
import os
import unittest
import logging

# Extend PYTHONPATH with local 'lib' folder
if __name__ == "__main__":
    jasyroot = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir, os.pardir, os.pardir))
    sys.path.insert(0, jasyroot)
    print("Running from %s..." % jasyroot)

import jasy.script.parse.Parser as Parser
from jasy.core.MetaData import MetaData


[docs]class Tests(unittest.TestCase):
[docs] def process(self, code): tree = Parser.parse(code) meta = MetaData(tree) return meta
[docs] def test_other(self): meta = self.process(''' /** * Hello World * * #deprecated #public #use(future) #use(current) */ ''') self.assertIsInstance(meta, MetaData) self.assertIsInstance(meta.requires, set) self.assertIsInstance(meta.optionals, set) self.assertIsInstance(meta.breaks, set) self.assertIsInstance(meta.assets, set) self.assertEqual(len(meta.requires), 0) self.assertEqual(len(meta.optionals), 0) self.assertEqual(len(meta.breaks), 0) self.assertEqual(len(meta.assets), 0)
[docs] def test_classes(self): meta = self.process(''' /** * Hello World * * #require(my.other.Class) * #optional(no.dep.to.Class) * #break(depedency.to.Class) */ ''') self.assertIsInstance(meta, MetaData) self.assertIsInstance(meta.requires, set) self.assertIsInstance(meta.optionals, set) self.assertIsInstance(meta.breaks, set) self.assertIsInstance(meta.assets, set) self.assertEqual(len(meta.requires), 1) self.assertEqual(len(meta.optionals), 1) self.assertEqual(len(meta.breaks), 1) self.assertEqual(len(meta.assets), 0) self.assertEqual(meta.requires, set(["my.other.Class"])) self.assertEqual(meta.breaks, set(["depedency.to.Class"])) self.assertEqual(meta.optionals, set(["no.dep.to.Class"]))
[docs] def test_assets(self): meta = self.process(''' /** * Hello World * * #asset(projectx/*) * #asset(projectx/some/local/url.png) * #asset(icons/*post/home.png) */ ''') self.assertIsInstance(meta, MetaData) self.assertIsInstance(meta.requires, set) self.assertIsInstance(meta.optionals, set) self.assertIsInstance(meta.breaks, set) self.assertIsInstance(meta.assets, set) self.assertEqual(len(meta.requires), 0) self.assertEqual(len(meta.optionals), 0) self.assertEqual(len(meta.breaks), 0) self.assertEqual(len(meta.assets), 3) self.assertEqual(meta.assets, set(["projectx/*", "projectx/some/local/url.png", "icons/*post/home.png"]))
[docs] def test_asset_escape(self): meta = self.process(''' /** * Hello World * * #asset(icons/*\/home.png) */ ''') self.assertIsInstance(meta, MetaData) # Test unescaping self.assertEqual(meta.assets, set(["icons/*/home.png"]))
[docs] def test_structured(self): meta = self.process(''' (function(global) { global.my.Class = function() { /** * #asset(projectx/some/local/url.png) */ var uri = core.io.Asset.toUri("projectx/some/local/url.png"); }; })(this); ''') self.assertIsInstance(meta, MetaData) self.assertEqual(meta.assets, set(["projectx/some/local/url.png"]))
if __name__ == '__main__': logging.getLogger().setLevel(logging.ERROR) suite = unittest.TestLoader().loadTestsFromTestCase(Tests) unittest.TextTestRunner(verbosity=2).run(suite)