blastr 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,7 @@
1
+ == 0.2.1 2012-12-17
2
+
3
+ * Fix a bug where an empty revision log would cause Blastr to throw up on the console
4
+
1
5
  == 0.2.0 2012-12-17
2
6
 
3
7
  * Migrate from Hoe to a .gemspec file
data/Rakefile CHANGED
@@ -9,4 +9,23 @@ Rake::TestTask.new do |t|
9
9
  t.libs << "test"
10
10
  t.test_files = FileList['test/**/test*.rb']
11
11
  t.verbose = false
12
+ end
13
+
14
+ ENCODING_HEADER = "# encoding: UTF-8"
15
+ desc "Add UTF-8 encoding to source files"
16
+ task :encoding do
17
+ FileList['test/**/*.rb', 'lib/**/*.rb'].each do |filename|
18
+ open(filename, 'r+') do |f|
19
+ beginning_of_file = f.pos
20
+ first_line = f.readline
21
+ f.seek(beginning_of_file)
22
+ original_content = f.read
23
+ f.seek(beginning_of_file)
24
+ unless first_line.strip == ENCODING_HEADER.strip
25
+ puts "Adding '#{ENCODING_HEADER}' to #{filename}"
26
+ f.write("#{ENCODING_HEADER}\n")
27
+ f.write(original_content)
28
+ end
29
+ end
30
+ end
12
31
  end
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  $LOAD_PATH.unshift(File.dirname(__FILE__)) unless
2
3
  $LOAD_PATH.include?(File.dirname(__FILE__)) or $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
3
4
 
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  module Blastr
2
3
 
3
4
  class UsageError < ArgumentError
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require 'fileutils'
2
3
 
3
4
  module Blastr::FileSystem
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require 'yaml'
2
3
 
3
4
  module Blastr
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require 'git'
2
3
  require File.expand_path(File.join(File.dirname(__FILE__), 'scm.rb'))
3
4
 
@@ -33,6 +34,11 @@ module Blastr::SourceControl
33
34
  def self.head
34
35
  GitRevision.new("HEAD", nil)
35
36
  end
37
+
38
+ def ==(other)
39
+ return false unless other.is_a? GitRevision
40
+ other.name == @name and other.date == @date
41
+ end
36
42
  end
37
43
 
38
44
  class Git
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require 'fileutils'
2
3
  require File.expand_path(File.join(File.dirname(__FILE__), 'scm.rb'))
3
4
 
@@ -1,15 +1,19 @@
1
+ # encoding: UTF-8
1
2
  module Blastr::SourceControl
2
3
 
3
4
  class LogEntry
4
5
  attr_accessor :revision, :author, :comment
6
+
5
7
  def initialize(revision, author, comment)
6
8
  @revision = revision
7
9
  @author = author
8
10
  @comment = comment
9
11
  end
12
+
10
13
  def ==(other)
11
14
  @revision == other.revision and @author == other.author and @comment == other.comment
12
15
  end
16
+
13
17
  def to_s
14
18
  "revision #{@revision} by #{@author}: #{@comment}"
15
19
  end
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require 'fileutils'
2
3
  require File.expand_path(File.join(File.dirname(__FILE__), 'scm.rb'))
3
4
 
@@ -48,7 +49,7 @@ module Blastr::SourceControl
48
49
  def latest_revision
49
50
  entries = commits_since(as_revision("HEAD"))
50
51
  return entries.first.revision unless entries.empty?
51
- 1
52
+ SubversionRevision.new("1")
52
53
  end
53
54
 
54
55
  def commits_since(since_revision = 1)
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  module Blastr
2
3
  module TTS
3
4
 
@@ -1,4 +1,5 @@
1
+ # encoding: UTF-8
1
2
  module Blastr
2
- VERSION = '0.2.0'
3
+ VERSION = '0.2.1'
3
4
  COPYRIGHT = "Copyright (c) 2009-#{Time.now.year}, Lasse Koskela. All Rights Reserved."
4
5
  end
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
  require 'fileutils'
3
4
 
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  class AbstractScmTestCase < Test::Unit::TestCase
2
3
  abstract
3
4
 
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
 
3
4
  class TestGit < AbstractScmTestCase
@@ -51,6 +52,27 @@ class TestGit < AbstractScmTestCase
51
52
  parent_of_git_repo = File.dirname(@local_repo)
52
53
  assert_urls_are_not_understood([ parent_of_git_repo ])
53
54
  end
55
+
56
+ def test_detects_latest_revision_from_commit_log
57
+ latest_commit_sha = "LaT35tR3v1510N"
58
+ head_minus_one = revision("HEAD~1")
59
+ repo = scm.new("file:///fakerepo")
60
+ repo.expects(:as_revision).with("HEAD~1").returns(head_minus_one)
61
+ repo.expects(:commits_since).with(head_minus_one).returns([
62
+ logentry(commit(latest_commit_sha))
63
+ ])
64
+ assert_equal revision(latest_commit_sha), repo.latest_revision
65
+ end
66
+
67
+ def test_latest_revision_for_empty_log_defaults_to_revision_1
68
+ head = revision("HEAD")
69
+ head_minus_one = revision("HEAD~1")
70
+ repo = scm.new("file:///fakerepo")
71
+ repo.expects(:as_revision).with("HEAD~1").returns(head_minus_one)
72
+ repo.expects(:as_revision).with("HEAD").returns(head)
73
+ repo.expects(:commits_since).with(head_minus_one).returns([])
74
+ assert_equal head, repo.latest_revision
75
+ end
54
76
 
55
77
  private
56
78
 
@@ -60,6 +82,20 @@ class TestGit < AbstractScmTestCase
60
82
  assert File.directory? dir
61
83
  dir
62
84
  end
85
+
86
+ def commit(sha, options = {})
87
+ defaults = { :date => "FAKE DATE", :author => stub(:name => "author"), :message => "message" }
88
+ commit_data = defaults.merge(options.merge(:sha => sha))
89
+ stub(commit_data)
90
+ end
91
+
92
+ def logentry(commit)
93
+ Blastr::SourceControl::GitLogEntry.new(commit)
94
+ end
95
+
96
+ def revision(sha, date = "FAKE DATE")
97
+ Blastr::SourceControl::GitRevision.new(sha, date)
98
+ end
63
99
 
64
100
  def scm
65
101
  Blastr::SourceControl::Git
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
 
3
4
  class TestGitLogEntry < Test::Unit::TestCase
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
 
3
4
  class TestGitRevision < Test::Unit::TestCase
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
 
3
4
  class TestLogEntry < Test::Unit::TestCase
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
 
3
4
  class TestMercurial < AbstractScmTestCase
@@ -16,8 +17,32 @@ class TestMercurial < AbstractScmTestCase
16
17
  assert_urls_are_not_understood(["http://acme.com/foo"])
17
18
  end
18
19
 
20
+ def test_detects_latest_revision_from_commit_log
21
+ repo = scm.new("hg:/fakerepo")
22
+ repo.expects(:commits_since).with(revision("tip")).returns([
23
+ logentry(revision("15"), "author", "comment")
24
+ ])
25
+ assert_equal revision("15"), repo.latest_revision
26
+ end
27
+
28
+ def test_latest_revision_for_empty_log_defaults_to_revision_1
29
+ repo = scm.new("hg:/fakerepo")
30
+ repo.expects(:commits_since).with(revision("tip")).returns([])
31
+ assert_equal revision("tip"), repo.latest_revision
32
+ end
33
+
34
+ private
35
+
19
36
  def scm
20
37
  Blastr::SourceControl::Mercurial
21
38
  end
39
+
40
+ def logentry(revision, author = "johndoe", comment = "Small fix")
41
+ Blastr::SourceControl::LogEntry.new(revision, author, comment)
42
+ end
43
+
44
+ def revision(value)
45
+ Blastr::SourceControl::MercurialRevision.new(value)
46
+ end
22
47
 
23
48
  end
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
 
3
4
  class TestMercurialRevision < Test::Unit::TestCase
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
 
3
4
  class TestSubversion < AbstractScmTestCase
@@ -40,9 +41,23 @@ class TestSubversion < AbstractScmTestCase
40
41
  assert_urls_are_not_understood([ parent_of_svn_repo ])
41
42
  end
42
43
 
43
- def test_subversion
44
+ def test_subversion_urls_are_understood
44
45
  assert_urls_are_understood(SVN_URLS)
45
46
  end
47
+
48
+ def test_detects_latest_revision_from_commit_log
49
+ repo = scm.new("/fakerepo")
50
+ repo.expects(:commits_since).with(revision("HEAD")).returns([
51
+ logentry(revision("15"), "author", "comment")
52
+ ])
53
+ assert_equal revision("15"), repo.latest_revision
54
+ end
55
+
56
+ def test_latest_revision_for_empty_log_defaults_to_revision_1
57
+ repo = scm.new("/fakerepo")
58
+ repo.expects(:commits_since).with(revision("HEAD")).returns([])
59
+ assert_equal revision("1"), repo.latest_revision
60
+ end
46
61
 
47
62
  private
48
63
 
@@ -50,6 +65,14 @@ class TestSubversion < AbstractScmTestCase
50
65
  Blastr::SourceControl::Subversion
51
66
  end
52
67
 
68
+ def logentry(revision, author = "johndoe", comment = "Small fix")
69
+ Blastr::SourceControl::LogEntry.new(revision, author, comment)
70
+ end
71
+
72
+ def revision(value)
73
+ Blastr::SourceControl::SubversionRevision.new(value)
74
+ end
75
+
53
76
  def create_local_repo
54
77
  dir = File.join(Blastr::FileSystem.temp_dir, 'svn_repo')
55
78
  %x[svnadmin create #{dir}]
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
 
3
4
  class TestSubversionRevision < Test::Unit::TestCase
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), 'test_helper.rb'))
2
3
  require 'mocha/setup'
3
4
 
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), 'test_helper.rb'))
2
3
 
3
4
  module Blastr::FileSystem
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require 'stringio'
2
3
  require 'test/unit'
3
4
  require File.expand_path(File.join(File.dirname(__FILE__), '../lib/blastr'))
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper.rb'))
2
3
  require 'mocha/setup'
3
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blastr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-12-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mocha
16
- requirement: &70176230716280 !ruby/object:Gem::Requirement
16
+ requirement: &70357899010860 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70176230716280
24
+ version_requirements: *70357899010860
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: git
27
- requirement: &70176230715780 !ruby/object:Gem::Requirement
27
+ requirement: &70357899010420 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70176230715780
35
+ version_requirements: *70357899010420
36
36
  description: Blastr observes a version control repository for commits and makes audible
37
37
  announcements out of the commit messages.
38
38
  email: