# -*- encoding: UTF8 -*- # Test harness for DefaultSwarmReviewDesc.py from __future__ import print_function import sys import unittest import os from p4testutils import TestCase, P4Server parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, parent_dir) from DefaultSwarmReviewDesc import DefaultSwarmReviewDesc os.environ["LOGS"] = "." LOGGER_NAME = "DefaultSwarmReviewDesc" LOG_FILE = "log-DefaultSwarmReviewDesc.log" class TestDefaultSwarmReviewDesc(TestCase): def __init__(self, methodName='runTest'): super(TestDefaultSwarmReviewDesc, self).__init__(LOGGER_NAME, LOG_FILE, methodName=methodName) def setUp(self): pass def tearDown(self): pass def setupServer(self, config_path): self.server = P4Server() trig_path = os.path.join(parent_dir, "DefaultSwarmReviewDesc.py") p4 = self.server.p4 p4.logger = self.logger # This works if no spaces in server root pathname! port = p4.port.replace('"', '') self.logger.debug("port: |%s|" % port) triggers = p4.fetch_triggers() triggers['Triggers'] = ['default-swarm-desc form-in change "python {} -c {}' ' -p %quote%{}%quote% -u {} %user% %formfile%"'.format( trig_path, config_path, port, p4.user)] self.logger.debug(triggers) p4.save_triggers(triggers) # Reconnect to pick up changes p4.disconnect() p4.connect() return p4 def testChangeDesc(self): """jobs are renamed for p4dtg""" config_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "~test_config.yaml") p4 = self.setupServer(config_path) with open(config_path, "w") as f: f.write(""" swarm_user: swarm review_description: - "Please review me!" - "Don't forget to check YYYY" """) chg = p4.fetch_change() chg["Description"] = "My change description" p4.save_change(chg) # Make sure that the trigger doesn't fire again - so what is put in above survives chg = p4.fetch_change("1") self.assertRegex(chg["Description"], "My change description") # Now process as user defined in config file p4.user = "swarm" chg = p4.fetch_change() chg["Description"] = "Change desc 2" p4.save_change(chg) # Test that the template is updated from config file chg = p4.fetch_change("2") self.assertRegex(chg["Description"], "Please review me!") chg["Description"] = "New change desc" p4.save_change(chg) # Make sure that the trigger doesn't fire again - so what is put in above survives chg = p4.fetch_change("2") self.assertRegex(chg["Description"], "New change desc") if __name__ == '__main__': unittest.main()