def test_dictWithNoEnvStaysTheSame(self): conf = { "a" : "bb", "b" : [1, 2, 3, 4.5, "1231"], "c" : { "x" : "y" } } self.assertEqual(conf, EnvReplacer.replace(conf))
def generate_release_notes(configFile): requests.packages.urllib3.disable_warnings() file = open(configFile, 'r') fileContents = file.read() releaseNotesConfig = EnvReplacer.replace(json.loads(fileContents)) currentDir = os.getcwd() if not os.path.isabs(releaseNotesConfig["pathToSave"]): releaseNotesConfig["pathToSave"] = os.path.join( currentDir, releaseNotesConfig["pathToSave"]) for packageName, conf in releaseNotesConfig["packages"].items(): if "Releases" in conf: releasesConf = conf["Releases"] promotedVersionsInfo = JustReleaseNotes.artifacters.factory.create( releasesConf).retrievePromotedVersions() else: print( "No artifacter configured: every version tag will be considered a valid release" ) promotedVersionsInfo = {} issuesConf = conf["Issues"] ticketProvider = JustReleaseNotes.issuers.factory.create(issuesConf) directory = os.path.join(releaseNotesConfig["pathToSave"], packageName) if "Directory" in conf["Source"]: if not os.path.isabs(conf["Source"]["Directory"]): conf["Source"]["Directory"] = os.path.join( currentDir, conf["Source"]["Directory"]) else: conf["Source"]["Directory"] = directory repo = JustReleaseNotes.sourcers.factory.create(conf["Source"]) if not os.path.exists(conf["Source"]["Directory"]): os.makedirs(conf["Source"]["Directory"]) generator = ReleaseNotes(conf, ticketProvider, repo, promotedVersionsInfo) writerConfigs = conf["ReleaseNotesWriter"] if isinstance(writerConfigs, str): generateForOneWriter(generator, ticketProvider, writerConfigs, directory, None) elif hasattr(writerConfigs, '__iter__'): for writerConf in writerConfigs: path = writerConf["PathToSave"] generateForOneWriter(generator, ticketProvider, writerConf["Provider"], os.path.dirname(path), os.path.basename(path))
def test_dictWithUnicodeEnvRaplacedCorrectly(self): os.environ['abc'] = 'xyz' os.environ['ab_12'] = "xy99" os.environ['AbAb'] = "ZZZ" conf = { u"a": "ENV[abc]", "c": { u"x": "env[ab_12]", u"d": "Env[AbAb] x eNV[AbAb]" } } expectedConf = {u"a": "xyz", "c": {u"x": "xy99", u"d": "ZZZ x ZZZ"}} self.assertEqual(expectedConf, EnvReplacer.replace(conf))
def test_dictWithUnicodeEnvRaplacedCorrectly(self): os.environ['abc'] = 'xyz' os.environ['ab_12'] = "xy99" os.environ['AbAb'] = "ZZZ" conf = { u"a" : "ENV[abc]", "c" : { u"x" : "env[ab_12]", u"d" : "Env[AbAb] x eNV[AbAb]" } } expectedConf = { u"a" : "xyz", "c" : { u"x" : "xy99", u"d" : "ZZZ x ZZZ" } } self.assertEqual(expectedConf, EnvReplacer.replace(conf))
def generate_release_notes(configFile): requests.packages.urllib3.disable_warnings() file = open(configFile, 'r') fileContents = file.read() releaseNotesConfig = EnvReplacer.replace(json.loads(fileContents)) currentDir = os.getcwd() if not os.path.isabs(releaseNotesConfig["pathToSave"]): releaseNotesConfig["pathToSave"] = os.path.join(currentDir, releaseNotesConfig["pathToSave"]) for packageName, conf in releaseNotesConfig["packages"].items(): if "Releases" in conf: releasesConf = conf["Releases"] promotedVersionsInfo = JustReleaseNotes.artifacters.factory.create(releasesConf).retrievePromotedVersions() else: print ("No artifacter configured: every version tag will be considered a valid release") promotedVersionsInfo = {} issuesConf = conf["Issues"] ticketProvider = JustReleaseNotes.issuers.factory.create(issuesConf) directory = os.path.join(releaseNotesConfig["pathToSave"],packageName) if "Directory" in conf["Source"]: if not os.path.isabs(conf["Source"]["Directory"]): conf["Source"]["Directory"] = os.path.join(currentDir, conf["Source"]["Directory"]) else: conf["Source"]["Directory"] = directory repo = JustReleaseNotes.sourcers.factory.create(conf["Source"]) if not os.path.exists(conf["Source"]["Directory"]): os.makedirs(conf["Source"]["Directory"]) generator = ReleaseNotes(conf, ticketProvider, repo, promotedVersionsInfo) writerConfigs = conf["ReleaseNotesWriter"] if isinstance(writerConfigs, str): generateForOneWriter(generator, ticketProvider, writerConfigs, directory, None) elif hasattr(writerConfigs, '__iter__'): for writerConf in writerConfigs: path = writerConf["PathToSave"] generateForOneWriter(generator, ticketProvider, writerConf["Provider"], os.path.dirname(path), os.path.basename(path))
def test_dictWithEnvParsedCorrectly(self): os.environ['abc'] = 'xyz' os.environ['ab_12'] = "xy99" os.environ['AbAb'] = "ZZZ" conf = { "a" : "bb", "b" : [1, 2, 3, 4.5, "ENV[abc]"], "c" : { "x" : "env[ab_12]", "d" : "Env[AbAb] x eNV[AbAb]" } } expectedConf = { "a" : "bb", "b" : [1, 2, 3, 4.5, "xyz"], "c" : { "x" : "xy99", "d" : "ZZZ x ZZZ" } } self.assertEqual(expectedConf, EnvReplacer.replace(conf))
def test_dictWithEnvParsedCorrectly(self): os.environ['abc'] = 'xyz' os.environ['ab_12'] = "xy99" os.environ['AbAb'] = "ZZZ" conf = { "a": "bb", "b": [1, 2, 3, 4.5, "ENV[abc]"], "c": { "x": "env[ab_12]", "d": "Env[AbAb] x eNV[AbAb]" } } expectedConf = { "a": "bb", "b": [1, 2, 3, 4.5, "xyz"], "c": { "x": "xy99", "d": "ZZZ x ZZZ" } } self.assertEqual(expectedConf, EnvReplacer.replace(conf))
def generate_release_notes(configFile): requests.packages.urllib3.disable_warnings() file = open(configFile, "r") fileContents = file.read() releaseNotesConfig = EnvReplacer.replace(json.loads(fileContents)) currentDir = os.getcwd() if not os.path.isabs(releaseNotesConfig["pathToSave"]): releaseNotesConfig["pathToSave"] = os.path.join(currentDir, releaseNotesConfig["pathToSave"]) for packageName, conf in releaseNotesConfig["packages"].items(): if "Releases" in conf: releasesConf = conf["Releases"] promotedVersionsInfo = JustReleaseNotes.artifacters.factory.create(releasesConf).retrievePromotedVersions() else: print("No artifacter configured: every version tag will be considered a valid release") promotedVersionsInfo = {} issuesConf = conf["Issues"] ticketProvider = JustReleaseNotes.issuers.factory.create(issuesConf) directory = os.path.join(releaseNotesConfig["pathToSave"], packageName) conf["Source"]["Directory"] = directory repo = JustReleaseNotes.sourcers.factory.create(conf["Source"]) writer = JustReleaseNotes.writers.factory.create(conf["ReleaseNotesWriter"], ticketProvider) generator = ReleaseNotes(conf, ticketProvider, writer, repo, promotedVersionsInfo) releaseNotes = generator.generateReleaseNotesByPromotedVersions() if not os.path.exists(directory): os.makedirs(directory) fileName = "index{0}".format(writer.getExtension()) print("\nStoring {0} release notes at {1}".format(packageName, os.path.join(directory, fileName))) f = open(os.path.join(directory, fileName), "wb") f.write(releaseNotes.encode("utf-8")) f.close()
def test_stringWithInvalidEnvKeyStaysTheSame(self): conf = "ENV[ ]" self.assertEqual(conf, EnvReplacer.replace(conf))
def test_listWithNoEnvStaysTheSame(self): conf = [1, 2, 3] self.assertEqual(conf, EnvReplacer.replace(conf))
def test_stringWithMixedCaseEnvIsReplaced(self): os.environ["a"] = "1" os.environ["b"] = "2" os.environ["c"] = "3" conf = "env[a] Env[b] ENV[c]" self.assertEqual("1 2 3", EnvReplacer.replace(conf))
def test_stringWithMixedCaseEnvIsReplaced(self): os.environ["a"] = "1" os.environ["b"] = "2" os.environ["c"] = "3" conf = "env[a] Env[b] ENV[c]" self.assertEqual("1 2 3", EnvReplacer.replace(conf))
def test_stringWithInvalidEnvKeyStaysTheSame(self): conf = "ENV[ ]" self.assertEqual(conf, EnvReplacer.replace(conf))
def test_dictWithNoEnvStaysTheSame(self): conf = {"a": "bb", "b": [1, 2, 3, 4.5, "1231"], "c": {"x": "y"}} self.assertEqual(conf, EnvReplacer.replace(conf))
def test_primitiveWithNoEnvStaysTheSame(self): conf = 1 self.assertEqual(conf, EnvReplacer.replace(conf))
def test_listWithNoEnvStaysTheSame(self): conf = [1,2,3] self.assertEqual(conf, EnvReplacer.replace(conf))
def test_primitiveWithNoEnvStaysTheSame(self): conf = 1 self.assertEqual(conf, EnvReplacer.replace(conf))