def testSingletonType(self): Container.bind('Qux').toSingle(Qux) test1 = Test1() test2 = Test2() self.assertIs(test1.qux, test2.qux)
def test1(self): config = { 'PathVars': { 'foo': 'yep [bar]', 'bar': 'result2', 'nest1': 'asdf [foo]', } } Container.bind('Config').toSingle(Config, [config]) Container.bind('VarManager').toSingle(VarManager) pathMgr = Container.resolve('VarManager') assertThat(pathMgr.hasKey('foo')) assertThat(not pathMgr.hasKey('asdf')) assertThat(pathMgr.tryGet('bobsdf') == None) assertThat(pathMgr.expand('before [bar] after') == 'before result2 after') assertThat(pathMgr.expand('before [foo] after') == 'before yep result2 after') assertThat(not pathMgr.hasKey('qux')) pathMgr.add('qux', 'sadf') assertThat(pathMgr.hasKey('qux')) assertThat(pathMgr.expand('[qux]') == 'sadf') assertThat(pathMgr.expand('[nest1]') == 'asdf yep result2') print('Done')
def _request(self): if not Container.hasBinding(self._identifier): return self._default obj = Container.resolve(self._identifier) self._assertion(obj) return obj
def testMultiple(self): Container.bind('Config').toSingle(Config, loadYamlFilesThatExist(ScriptDir + '/ExampleConfig.yaml', ScriptDir + '/ExampleConfig2.yaml')) config = Container.resolve('Config') # From 1 assertIsEqual(config.getString('receipt'), 'Oz-Ware Purchase Invoice') # From 2 assertIsEqual(config.getString('thing1'), 'Foo') # Second one should override assertIsEqual(config.getString('foo2'), 'ipsum') assertIsEqual(config.getString('nest1', 'firstName'), 'Dorothy') # Test concatenating lists together assertIsEqual(config.getList('list1'), ['lorem', 'ipsum', 'asdf', 'joe', 'frank']) # Test concatenating dictionaries together assertIsEqual(config.getDictionary('dict1'), {'joe': 5, 'mary': 15, 'kate': 5, 'jim': 10}) assertIsEqual(config.tryGetDictionary(None, 'asdfasdfasdf'), None) assertIsEqual(config.tryGetDictionary({ 5: 1 }, 'asdfasdfasdf'), { 5: 1 }) assertIsEqual(config.tryGetList(None, 'asdfasdfasdf'), None) assertIsEqual(config.tryGetList([1, 2], 'asdfasdfasdf'), [1, 2]) assertIsEqual(config.tryGetBool(False, 'zxvzasdfasdfasdf'), False) assertIsEqual(config.tryGetBool(True, 'zxvzasdfasdfasdf'), True) assertIsEqual(config.tryGetString('asdf', 'zxvzasdfasdfasdf'), 'asdf') assertIsEqual(config.tryGetInt(5, 'zxvzasdfasdfasdf'), 5)
def testTransientInstance(self): Container.bind('Qux').to(Qux) test1 = Test1() test2 = Test2() self.assertIsNot(test1.qux, test2.qux)
def test1(self): config = { 'PathVars': { 'foo': 'yep [bar]', 'bar': 'result2', 'nest1': 'asdf [foo]', } } Container.bind('Config').toSingle(Config, [config]) Container.bind('VarManager').toSingle(VarManager) pathMgr = Container.resolve('VarManager') assertThat(pathMgr.hasKey('foo')) assertThat(not pathMgr.hasKey('asdf')) assertThat(pathMgr.tryGet('bobsdf') == None) assertThat( pathMgr.expand('before [bar] after') == 'before result2 after') assertThat( pathMgr.expand('before [foo] after') == 'before yep result2 after') assertThat(not pathMgr.hasKey('qux')) pathMgr.add('qux', 'sadf') assertThat(pathMgr.hasKey('qux')) assertThat(pathMgr.expand('[qux]') == 'sadf') assertThat(pathMgr.expand('[nest1]') == 'asdf yep result2') print('Done')
def installBindings(): Container.bind('LogStream').toSingle(LogStreamFile) Container.bind('LogStream').toSingle(LogStreamConsole, True, False) demoConfig = os.path.realpath(os.path.join(ProjenyDir, 'Demo/Projeny.yaml')) Prj.installBindings(demoConfig)
def main(): # Here we split out some functionality into various methods # so that other python code can make use of them # if they want to extend projeny parser = argparse.ArgumentParser(description='Unity Package Manager') addArguments(parser) argv = sys.argv[1:] # If it's 2 then it only has the -cfg param if len(argv) == 0: parser.print_help() sys.exit(2) args = parser.parse_args(sys.argv[1:]) processArgs(args) Container.bind('LogStream').toSingle(LogStreamFile) Container.bind('LogStream').toSingle(LogStreamConsole, args.verbose, args.veryVerbose) installBindings(tryGetMainConfigPath(args)) installPlugins() PrjRunner().run(args)
def testSingletonMethodWithParam(self): Container.bind('Qux').toSingle(GetQux, 4) test1 = Test1() test2 = Test2() self.assertIs(test1.qux, test2.qux) self.assertEqual(test1.qux.GetValue(), 4)
def testUseDefault(self): Container.bind('Foo').to(1) Container.bind('Test1').toSingle(Test1) test1 = Container.resolve('Test1') self.assertEqual(test1.foo, 1) self.assertEqual(test1.bar, 5)
def testTransientInstanceWithParam(self): Container.bind('Qux').to(Qux, 5) test1 = Test1() test2 = Test2() self.assertIsNot(test1.qux, test2.qux) self.assertEqual(test1.qux.GetValue(), 5)
def testTransientMethod(self): Container.bind('Qux').to(GetQux, 6) test1 = Test1() test2 = Test2() self.assertIsNot(test1.qux, test2.qux) self.assertEqual(test1.qux.GetValue(), 6)
def testSpecialChars(self): Container.bind('Config').toSingle(Config, loadYamlFilesThatExist(ScriptDir + '/ExampleConfig.yaml', ScriptDir + '/ExampleConfig2.yaml')) config = Container.resolve('Config') assertIsEqual(config.tryGetString(None, 'foo4'), 'asdf') assertIsEqual(config.tryGetString(None, 'foo5'), 'zxcv') assertIsEqual(config.tryGetString(None, 'foo6'), 'asdf') assertIsEqual(config.tryGetString(None, 'foo7'), 'zxcv')
def test1(self): assertThat(False, "TODO") #Container.bind('Config').toSingle(ConfigXml) Container.bind('VarManager').toSingle(VarManager) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('Logger').toSingle(Logger) self._test1(Container.resolve('SystemHelper'))
def testSimple(self): yamlPath = ScriptDir + '/ExampleConfig.yaml' Container.bind('Config').toSingle(Config, loadYamlFilesThatExist(yamlPath)) config = Container.resolve('Config') assertIsEqual(config.getString('date'), '2012-08-06') assertIsEqual(config.getString('receipt'), 'Oz-Ware Purchase Invoice') assertIsEqual(config.getList('places'), ['New Jersey', 'New York']) assertRaisesAny(lambda: config.getString('places')) assertRaisesAny(lambda: config.getDictionary('places')) assertIsEqual(config.getDictionary('customer'), {'first_name': 'Dorothy', 'family_name': 'Gale'}) # Tests YAML references assertIsEqual(config.getString('foo1'), config.getString('receipt'))
def testOverrideDefault(self): Container.bind('Foo').to(2) Container.bind('Test1').to(Test1) Container.bind('Bar').to(3) test1 = Container.resolve('Test1') self.assertEqual(test1.foo, 2) self.assertEqual(test1.bar, 3)
def testOutputToFile(self): assertThat(False) #Container.bind('Config').toSingle(ConfigXml) Container.bind('VarManager').toSingle(VarManager, { 'LogPath': ScriptDir + '/logtest.txt', 'LogPathPrevious': ScriptDir + '/logtest.prev.txt', }) log = Logger(False, True) log.heading("heading 1") log.info("info 1") log.error("error 1") log.good("good 1") log.info("info 2") log.heading("heading 2") log.info("info 3") log.finished("Done") log.dispose()
def testOutputToFile(self): assertThat(False) #Container.bind('Config').toSingle(ConfigXml) Container.bind('VarManager').toSingle( VarManager, { 'LogPath': ScriptDir + '/logtest.txt', 'LogPathPrevious': ScriptDir + '/logtest.prev.txt', }) log = Logger(False, True) log.heading("heading 1") log.info("info 1") log.error("error 1") log.good("good 1") log.info("info 2") log.heading("heading 2") log.info("info 3") log.finished("Done") log.dispose()
def installBindings(): Container.bind('LogStream').toSingle(LogStreamFile) Container.bind('LogStream').toSingle(LogStreamConsole, True, True) Container.bind('Config').toSingle(Config, []) Container.bind('VarManager').toSingle(VarManager) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('Logger').toSingle(Logger) Container.bind('ProcessRunner').toSingle(ProcessRunner)
def _request(self): obj = Container.resolve(self._identifier) self._assertion(obj) return obj
def testHasMethodSuccess(self): Container.bind('Console').toSingle(Console1) Test1().Run()
def test1(self): Container.bind('Foo1').to(Foo1, 7) Container.bind('Foo2').to(Foo2, 6) foo2 = Container.resolve('Foo2') foo2.Start()
def installBindings(): #config = { #'PathVars': { #'LogPath': 'C:/Temp/ProjenyLog.txt', #} #} #Container.bind('Config').toSingle(Config, [config]) Container.bind('Config').toSingle(Config, []) Container.bind('LogStream').toSingle(LogStreamFile) Container.bind('LogStream').toSingle(LogStreamConsole, True, False) Container.bind('VarManager').toSingle(VarManager) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('Logger').toSingle(Logger) Container.bind('ScriptRunner').toSingle(ScriptRunner) Container.bind('ProcessRunner').toSingle(ProcessRunner) Container.bind('UnityPackageAnalyzer').toSingle(UnityPackageAnalyzer)
def installBindings(mainConfigPath = None): projenyDir = getProjenyDir() projenyConfigPath = os.path.join(projenyDir, ConfigFileName) # Put the standard config first so it can be over-ridden by user settings configPaths = [projenyConfigPath] if mainConfigPath: assertThat(os.path.isfile(mainConfigPath), 'Could not find file at "{0}"', mainConfigPath) configPaths += [mainConfigPath] configPaths += getExtraUserConfigPaths() Container.bind('Config').toSingle(Config, loadYamlFilesThatExist(*configPaths)) initialVars = { 'ProjenyDir': projenyDir, } if mainConfigPath: initialVars['ConfigDir'] = os.path.dirname(mainConfigPath) if not MiscUtil.isRunningAsExe(): initialVars['PythonPluginDir'] = getPluginDirPath() Container.bind('VarManager').toSingle(VarManager, initialVars) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('Logger').toSingle(Logger) Container.bind('UnityHelper').toSingle(UnityHelper) Container.bind('ScriptRunner').toSingle(ScriptRunner) Container.bind('PackageManager').toSingle(PackageManager) Container.bind('ProcessRunner').toSingle(ProcessRunner) Container.bind('JunctionHelper').toSingle(JunctionHelper) Container.bind('VisualStudioSolutionGenerator').toSingle(VisualStudioSolutionGenerator) Container.bind('VisualStudioHelper').toSingle(VisualStudioHelper) Container.bind('ProjectSchemaLoader').toSingle(ProjectSchemaLoader) Container.bind('CommonSettings').toSingle(CommonSettings) Container.bind('UnityPackageExtractor').toSingle(UnityPackageExtractor) Container.bind('ZipHelper').toSingle(ZipHelper) Container.bind('UnityPackageAnalyzer').toSingle(UnityPackageAnalyzer) Container.bind('ReleaseSourceManager').toSingle(ReleaseSourceManager)
def installBindings(configPath): Container.bind('LogStream').toSingle(LogStreamConsoleHeadingsOnly) Container.bind('LogStream').toSingle(LogStreamFile) Prj.installBindings(configPath)
def testIsInstanceSuccess(self): Container.bind('Title').to('yep') Test2().Run()
def testIsInstanceFailure(self): Container.bind('Title').to(2) Test2().Run()
def testHasMethodFail(self): # does not have WriteLine() Container.bind('Console').toSingle(Foo) Test1().Run()
infoStr = infoBytes.decode('utf8') return json.loads(infoStr) return None if __name__ == '__main__': import prj.ioc.Container as Container from prj.config.Config import Config from prj.util.ScriptRunner import ScriptRunner from prj.util.VarManager import VarManager from prj.log.Logger import Logger from prj.util.SystemHelper import SystemHelper from prj.util.ProcessRunner import ProcessRunner from prj.log.LogStreamConsole import LogStreamConsole Container.bind('Config').toSingle(Config, []) Container.bind('Logger').toSingle(Logger) Container.bind('VarManager').toSingle(VarManager, { 'UnityExePath': "C:/Program Files/Unity/Editor/Unity.exe" }) #Container.bind('LogStream').toSingle(LogStreamConsole, True, True) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('ProcessRunner').toSingle(ProcessRunner) path = "C:/Users/Steve/AppData/Roaming/Unity/Asset Store/TripleBrick/3D ModelsEnvironmentsLandscapes/Free Rocks.unitypackage" info = UnityPackageAnalyzer().getReleaseInfoFromUnityPackage(path) print('Result: ' + str(info.__dict__))
def setUp(self): Container.clear()
def _logInternal(self, msg, logType, *args): if len(args) > 0: msg = msg.format(*args) for stream in self._streams: stream.log(logType, msg) if __name__ == "__main__": import prj.ioc.Container as Container class Log1: def log(self, logType, msg): print("log 1: " + msg) class Log2: def log(self, logType, msg): print("log 2: " + msg) Container.bind("LogStream").toSingle(Log1) Container.bind("LogStream").toSingle(Log2) Container.bind("Logger").toSingle(Logger) logger = Container.resolve("Logger") logger.info("test info") logger.error("test error")
def _request(self): objects = Container.resolveMany(self._identifier) for obj in objects: self._assertion(obj) return objects
def installBindings(args): Container.bind('LogStream').toSingle(LogStreamConsole, True, False) Prj.installBindings(findConfigPath(args.filePath))
def _logInternal(self, msg, logType, *args): if len(args) > 0: msg = msg.format(*args) for stream in self._streams: stream.log(logType, msg) if __name__ == '__main__': import prj.ioc.Container as Container class Log1: def log(self, logType, msg): print('log 1: ' + msg) class Log2: def log(self, logType, msg): print('log 2: ' + msg) Container.bind('LogStream').toSingle(Log1) Container.bind('LogStream').toSingle(Log2) Container.bind('Logger').toSingle(Logger) logger = Container.resolve('Logger') logger.info('test info') logger.error('test error')
return json.loads(infoStr) return None if __name__ == '__main__': import prj.ioc.Container as Container from prj.config.Config import Config from prj.util.ScriptRunner import ScriptRunner from prj.util.VarManager import VarManager from prj.log.Logger import Logger from prj.util.SystemHelper import SystemHelper from prj.util.ProcessRunner import ProcessRunner from prj.log.LogStreamConsole import LogStreamConsole Container.bind('Config').toSingle(Config, []) Container.bind('Logger').toSingle(Logger) Container.bind('VarManager').toSingle( VarManager, {'UnityExePath': "C:/Program Files/Unity/Editor/Unity.exe"}) #Container.bind('LogStream').toSingle(LogStreamConsole, True, True) Container.bind('SystemHelper').toSingle(SystemHelper) Container.bind('ProcessRunner').toSingle(ProcessRunner) path = "C:/Users/Steve/AppData/Roaming/Unity/Asset Store/TripleBrick/3D ModelsEnvironmentsLandscapes/Free Rocks.unitypackage" info = UnityPackageAnalyzer().getReleaseInfoFromUnityPackage(path) print('Result: ' + str(info.__dict__))