forked from ruby/rake
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
67e5c62
commit 2053d6b
Showing
3 changed files
with
67 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |