Skip to content

Commit

Permalink
add private_reader support
Browse files Browse the repository at this point in the history
  • Loading branch information
jimweirich committed Oct 29, 2012
1 parent 67e5c62 commit 2053d6b
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 2 deletions.
20 changes: 20 additions & 0 deletions lib/rake/private_reader.rb
@@ -0,0 +1,20 @@
module Rake

# Include PrivateReader to use +private_reader+.
module PrivateReader # :nodoc: all

def self.included(base)
base.extend(ClassMethods)
end

module ClassMethods

# Declare a list of private accessors
def private_reader(*names)
attr_reader(*names)
private(*names)
end
end

end
end
7 changes: 5 additions & 2 deletions lib/rake/thread_history_display.rb
@@ -1,8 +1,11 @@
require 'rake/private_reader'

module Rake

class ThreadHistoryDisplay # :nodoc: all
attr_reader :stats, :items, :threads
private :stats, :items, :threads
include Rake::PrivateReader

private_reader :stats, :items, :threads

def initialize(stats)
@stats = stats
Expand Down
42 changes: 42 additions & 0 deletions test/test_private_reader.rb
@@ -0,0 +1,42 @@
require File.expand_path('../helper', __FILE__)
require 'rake/private_reader'

class TestPrivateAttrs < Rake::TestCase

class Sample
include Rake::PrivateReader

private_reader :reader, :a

def initialize
@reader = :RVALUE
end

def get_reader
reader
end

end

def setup
super
@sample = Sample.new
end

def test_private_reader_is_private
assert_private do @sample.reader end
assert_private do @sample.a end
end

def test_private_reader_returns_data
assert_equal :RVALUE, @sample.get_reader
end

private

def assert_private
ex = assert_raises(NoMethodError) do yield end
assert_match(/private/, ex.message)
end

end

0 comments on commit 2053d6b

Please sign in to comment.