示例#1
0
        public void TestNoValidAttrYesCodeReviewFilterDefinedFails()
        {
            bool bIsCodeReviewFilterEnabled = true;

            string attrName          = string.Empty;
            string resolvedAttrValue = string.Empty;
            string testingAttrValue  = string.Empty;
            string failedAttrValue   = string.Empty;
            string mergedAttrValue   = string.Empty;

            string errorMsg;

            MultilinerBotConfiguration.StatusProperty statusConf =
                new MultilinerBotConfiguration.StatusProperty(
                    attrName, resolvedAttrValue, testingAttrValue, failedAttrValue, mergedAttrValue);

            MultilinerBotConfiguration.PlasticSCM plasticConfig = new MultilinerBotConfiguration.PlasticSCM(
                bIsCodeReviewFilterEnabled,
                statusConf);

            Assert.IsTrue(plasticConfig.IsApprovedCodeReviewFilterEnabled);
            Assert.IsFalse(plasticConfig.IsBranchAttrFilterEnabled);

            bool bResult = MultilinerBotConfigurationChecker.CheckValidPlasticFields(plasticConfig, out errorMsg);

            Assert.IsFalse(
                bResult,
                "CheckValidPlasticFields should have failed " +
                "due to no valid basic attr name and merged value defined when only code review filter enabled");

            Assert.AreEqual(Normalize(BuildInvalidAttributeDefinedMessage()), Normalize(errorMsg));
        }
示例#2
0
        public void TestNoAttrYesCodeReviewFilterDefinedSucceeds()
        {
            bool bIsCodeReviewFilterEnabled = true;

            string attrName          = "status";
            string resolvedAttrValue = string.Empty;
            string testingAttrValue  = string.Empty;
            string failedAttrValue   = string.Empty;
            string mergedAttrValue   = "merged";

            string errorMsg;

            MultilinerBotConfiguration.StatusProperty statusConf =
                new MultilinerBotConfiguration.StatusProperty(
                    attrName, resolvedAttrValue, testingAttrValue, failedAttrValue, mergedAttrValue);

            MultilinerBotConfiguration.PlasticSCM plasticConfig = new MultilinerBotConfiguration.PlasticSCM(
                bIsCodeReviewFilterEnabled,
                statusConf);

            Assert.IsTrue(plasticConfig.IsApprovedCodeReviewFilterEnabled);
            Assert.IsFalse(plasticConfig.IsBranchAttrFilterEnabled);

            bool bResult = MultilinerBotConfigurationChecker.CheckValidPlasticFields(plasticConfig, out errorMsg);

            Assert.IsTrue(bResult, "CheckValidPlasticFields should have succeed!");

            Assert.AreEqual(string.Empty, errorMsg);
        }
示例#3
0
        public void TestNoValidMergedAttrYesCodeReviewFilterDefinedFails()
        {
            bool bIsCodeReviewFilterEnabled = true;

            string attrName          = "status";
            string resolvedAttrValue = "resolved";
            string testingAttrValue  = "testing";
            string failedAttrValue   = "failed";
            string mergedAttrValue   = string.Empty;

            string errorMsg;

            MultilinerBotConfiguration.StatusProperty statusConf =
                new MultilinerBotConfiguration.StatusProperty(
                    attrName, resolvedAttrValue, testingAttrValue, failedAttrValue, mergedAttrValue);

            MultilinerBotConfiguration.PlasticSCM plasticConfig = new MultilinerBotConfiguration.PlasticSCM(
                bIsCodeReviewFilterEnabled,
                statusConf);

            bool bResult = MultilinerBotConfigurationChecker.CheckValidPlasticFields(plasticConfig, out errorMsg);

            Assert.IsTrue(plasticConfig.IsApprovedCodeReviewFilterEnabled);
            Assert.IsTrue(plasticConfig.IsBranchAttrFilterEnabled);

            Assert.IsFalse(
                bResult,
                "CheckValidPlasticFields should have failed due to no " +
                "resolved value set when only attr filter is defined");

            Assert.AreEqual(
                Normalize("* The merged value of the status attribute for Plastic config must be defined."),
                Normalize(errorMsg));
        }
示例#4
0
        public void TestNoAttrNoCodeReviewFiltersDefinedFails()
        {
            bool bIsCodeReviewFilterEnabled = false;

            string attrName          = string.Empty;
            string resolvedAttrValue = string.Empty;
            string testingAttrValue  = string.Empty;
            string failedAttrValue   = string.Empty;
            string mergedAttrValue   = string.Empty;

            string errorMsg;

            MultilinerBotConfiguration.StatusProperty statusConf =
                new MultilinerBotConfiguration.StatusProperty(
                    attrName, resolvedAttrValue, testingAttrValue, failedAttrValue, mergedAttrValue);

            MultilinerBotConfiguration.PlasticSCM plasticConfig = new MultilinerBotConfiguration.PlasticSCM(
                bIsCodeReviewFilterEnabled,
                statusConf);

            Assert.IsFalse(plasticConfig.IsApprovedCodeReviewFilterEnabled);
            Assert.IsFalse(plasticConfig.IsBranchAttrFilterEnabled);

            bool bResult = MultilinerBotConfigurationChecker.CheckValidPlasticFields(plasticConfig, out errorMsg);

            Assert.IsFalse(bResult, "CheckValidPlasticFields should have failed due to no filters defined");

            Assert.AreEqual(Normalize(BuildNoFiltersEnabledErrorMessage()), Normalize(errorMsg));
        }
示例#5
0
        public void TestValidNotifiersNoProfileField()
        {
            MultilinerBotConfiguration.Notifier notifier =
                new MultilinerBotConfiguration.Notifier(
                    "notifier1", "plug1", null, new string[] { "recipient" });

            string errorMsg;
            bool   bResult = MultilinerBotConfigurationChecker.CheckValidNotifierFields(
                notifier, out errorMsg);

            Assert.That(bResult, Is.True, "CheckValidNotifierFields shouldn't have failed!");
            Assert.That(errorMsg, Is.Null.Or.Empty);
        }
示例#6
0
        public void TestInvalidNotifierNoDestination()
        {
            MultilinerBotConfiguration.Notifier notifier =
                new MultilinerBotConfiguration.Notifier(
                    "notifier1", "plug1", string.Empty, new string[0]);

            string errorMsg;
            bool   result = MultilinerBotConfigurationChecker.CheckValidNotifierFields(
                notifier, out errorMsg);

            string expectedError = "*There is no destination info in the Notifier 'notifier1'" +
                                   " config. Please specify a user profile field, a list of recipients" +
                                   " or both (recommended).\n";

            Assert.That(result, Is.False, "CheckValidNotifierFields should have failed!");
            Assert.That(errorMsg, Is.Not.Null.Or.Empty.And.EqualTo(expectedError));
        }
示例#7
0
        public void TestInvalidNotifierNoPlug()
        {
            MultilinerBotConfiguration.Notifier notifier =
                new MultilinerBotConfiguration.Notifier(
                    "notifier1",
                    string.Empty,
                    "profileFields1",
                    new string[]
            {
                "fixedField1"
            });

            string errorMsg;
            bool   bResult = MultilinerBotConfigurationChecker.CheckValidNotifierFields(
                notifier, out errorMsg);

            string expectedError = "plug name for Notifier 'notifier1' config";

            Assert.That(bResult, Is.False, "CheckValidNotifierFields should have failed!");
            Assert.That(errorMsg, Is.Not.Null.Or.Empty.And.EqualTo(expectedError));
        }
示例#8
0
        static int Main(string[] args)
        {
            string botName = null;

            try
            {
                MultilinerBotArguments botArgs = new MultilinerBotArguments(args);

                bool bValidArgs = botArgs.Parse();
                botName = botArgs.BotName;

                ConfigureLogging(botName);

                mLog.InfoFormat("MultilinerBot [{0}] started. Version [{1}]",
                                botName,
                                System.Reflection.Assembly.GetExecutingAssembly().GetName().Version);

                string argsStr = args == null ? string.Empty : string.Join(" ", args);
                mLog.DebugFormat("Args: [{0}]. Are valid args?: [{1}]", argsStr, bValidArgs);

                if (!bValidArgs || botArgs.ShowUsage)
                {
                    PrintUsage();
                    if (botArgs.ShowUsage)
                    {
                        mLog.InfoFormat(
                            "MultilinerBot [{0}] is going to finish: " +
                            "user explicitly requested to show usage.",
                            botName);
                        return(0);
                    }

                    mLog.ErrorFormat(
                        "MultilinerBot [{0}] is going to finish: " +
                        "invalid arguments found in command line.",
                        botName);
                    return(0);
                }

                string errorMessage = null;
                if (!MultilinerBotArgumentsChecker.CheckArguments(
                        botArgs, out errorMessage))
                {
                    Console.WriteLine(errorMessage);
                    mLog.ErrorFormat(
                        "MultilinerBot [{0}] is going to finish: error found on arguments check",
                        botName);
                    mLog.Error(errorMessage);
                    return(1);
                }

                MultilinerBotConfiguration botConfig = MultilinerBotConfiguration.
                                                       BuidFromConfigFile(botArgs.ConfigFilePath);

                errorMessage = null;
                if (!MultilinerBotConfigurationChecker.CheckConfiguration(
                        botConfig, out errorMessage))
                {
                    Console.WriteLine(errorMessage);
                    mLog.ErrorFormat(
                        "MultilinerBot [{0}] is going to finish: error found on configuration check",
                        botName);
                    mLog.Error(errorMessage);
                    return(1);
                }

                ConfigureServicePoint();

                string escapedBotName = GetEscapedBotName(botName);

                LaunchMultilinerMergebot(
                    botArgs.WebSocketUrl,
                    botArgs.RestApiUrl,
                    botConfig,
                    ToolConfig.GetBranchesFile(escapedBotName),
                    ToolConfig.GetCodeReviewsFile(escapedBotName),
                    botName,
                    botArgs.ApiKey);

                mLog.InfoFormat(
                    "MultilinerBot [{0}] is going to finish: orderly shutdown.",
                    botName);

                return(0);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                mLog.FatalFormat(
                    "MultilinerBot [{0}] is going to finish: uncaught exception " +
                    "thrown during execution. Message: {1}", botName, e.Message);
                mLog.DebugFormat("Stack trace:{0}{1}", Environment.NewLine, e.StackTrace);
                return(1);
            }
        }