public void TestRevisions()
        {
            LogFile logFile = new LogFile(settings.GetCvsRoot());

            LogRevision logRevision1 = new LogRevision();

            logRevision1.Revision = "1.1";
            logFile.AddRevision(logRevision1);

            LogRevision logRevision2 = new LogRevision();

            logRevision2.Revision = "1.2";
            logFile.AddRevision(logRevision2);

            LogRevision logRevision3 = new LogRevision();

            logRevision3.Revision = "1.3";
            logFile.AddRevision(logRevision3);

            Assert.AreEqual(3, logFile.Count);

            // Test indexer
            Assert.AreEqual("1.1", logFile[0].Revision);
            Assert.AreEqual("1.2", logFile[1].Revision);
            Assert.AreEqual("1.3", logFile[2].Revision);

            // Test foreach
            int nIndex = 0;

            foreach (LogRevision logRevision in logFile)
            {
                Assert.IsTrue(nIndex <= 2);
                if (nIndex == 0)
                {
                    Assert.AreEqual("1.1", logRevision.Revision);
                }
                else if (nIndex == 1)
                {
                    Assert.AreEqual("1.2", logRevision.Revision);
                }
                else if (nIndex == 2)
                {
                    Assert.AreEqual("1.3", logRevision.Revision);
                }

                nIndex++;
            }
        }
Exemple #2
0
        /// <summary>
        /// This is called for each Message response we receive from the cvs server.
        /// </summary>
        public void OnMessage(string message)
        {
//            System.Console.WriteLine(message);

            // for some reason the message handler is now preceeding
            // each message with "cvs server: " so we need to strip this off first
            if (message.StartsWith("cvs server: "))
            {
                message = message.Substring(12);
            }

            // only process the lines starting with "M "
            if (message.StartsWith("M "))
            {
                // Strip of the leading "M "
                message = message.Substring(2);

                if (message.StartsWith(revisionEndPrefix))
                {
                    // seperator between file and revision or between revisions
                    if (logState == LogState.WANT_FILE_HEADER_START)
                    {
                        // ignore this (shouldn't happen)
                    }
                    else if (logState == LogState.WANT_FILE_HEADER || logState == LogState.WANT_FILE_DESCRIPTION)
                    {
                        // this is the seperator between te file header and the first revision
                    }
                    else
                    {
                        // seperator between revisions
                        curLogFile.AddRevision(curLogRevision);
                    }
                    curLogRevision = new LogRevision();
                    logState       = LogState.WANT_REVISION;
                }
                else if (message.StartsWith(fileEndPrefix))
                {
                    // seperator between files
                    if (logState == LogState.WANT_FILE_HEADER_START)
                    {
                        // ignore this (shouldn't happen)
                    }
                    else if (logState == LogState.WANT_FILE_HEADER || logState == LogState.WANT_FILE_DESCRIPTION)
                    {
                        // file with no revisions
                        curLogReport.AddFile(curLogFile);
                    }
                    else
                    {
                        // first add the revision
                        curLogFile.AddRevision(curLogRevision);
                        curLogRevision = new LogRevision();
                        // and now the file
                        curLogReport.AddFile(curLogFile);
                    }
                    curLogFile = new LogFile(this.cvsRoot);
                    logState   = LogState.WANT_FILE_HEADER_START;
                }
                else
                {
                    switch (logState)
                    {
                    case LogState.WANT_FILE_HEADER_START:              // drop into WANT_FILE_HEADER
                    case LogState.WANT_FILE_HEADER_SYMBOLIC_NAMES:     // drop into WANT_FILE_HEADER
                    case LogState.WANT_FILE_HEADER:
                        OnMessageHeader(message);
                        break;

                    case LogState.WANT_FILE_DESCRIPTION:
                        OnMessageDescription(message);
                        break;

                    case LogState.WANT_REVISION:
                        OnMessageRevision(message);
                        break;
                    }
                }
            }
        }