require File.dirname(__FILE__) + '/../test_helper' require "date" class MecurialLogParserTest < Test::Unit::TestCase def setup @example_log_output_single = < date: Mon Apr 02 16:14:59 2007 +0200 files: app/models/mercurial.rb test/unit/mercurial_test.rb description: moved mercurial back to plugin END @example_tip_output_double = < date: Mon Apr 02 15:42:14 2007 +0200 files: app/models/mercurial.rb app/models/project.rb description: moved mercurial to model changeset: 3:e3f2e642cb26 user: Marcus Ahnve date: Sun Apr 01 17:22:59 2007 +0200 files: vcs.txt description: mailing list instruction END @parser = MercurialLogParser.new end def test_should_parse_single expected = [Revision.new(5, "Marcus Ahnve", DateTime.parse("Mon Apr 02 16:14:59 2007 +0200"), "moved mercurial back to plugin", [ChangesetEntry.new("", "app/models/mercurial.rb"), ChangesetEntry.new("", "test/unit/mercurial_test.rb")])] assert_equal(expected, @parser.parse_log(@example_log_output_single)) end def test_parse_name assert_equal("Marcus Ahnve", @parser.parse_for_name(@example_log_output_single)) end def test_parse_date assert_equal(DateTime.parse("Mon Apr 02 16:14:59 2007 +0200"), @parser.parse_for_date(@example_log_output_single)) end def test_message assert_equal("moved mercurial back to plugin", @parser.parse_for_message(@example_log_output_single)) end def test_parse_rev_number assert_equal(5, @parser.parse_for_rev_number(@example_log_output_single)) end def test_parse_files expected = ["app/models/mercurial.rb","test/unit/mercurial_test.rb"] assert_equal(expected, @parser.parse_for_files(@example_log_output_single)) end def test_split_multiple_log_entries entry1 =< date: Mon Apr 02 15:42:14 2007 +0200 files: app/models/mercurial.rb app/models/project.rb description: moved mercurial to model END entry2 =< date: Sun Apr 01 17:22:59 2007 +0200 files: vcs.txt description: mailing list instruction END expected=[entry1.strip!,entry2.strip!] assert_equal(expected, @parser.split_log(@example_tip_output_double)) end end