expectations 0.0.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.
- data/README +0 -0
- data/lib/expectations/expectation.rb +20 -0
- data/lib/expectations/results.rb +43 -0
- data/lib/expectations/suite.rb +21 -0
- data/lib/expectations/suite_results.rb +51 -0
- data/lib/expectations/suite_runner.rb +15 -0
- data/lib/expectations.rb +14 -0
- data/rakefile.rb +61 -0
- data/test/all_tests.rb +1 -0
- data/test/expectations/expectation_test.rb +32 -0
- data/test/expectations/results_test.rb +29 -0
- data/test/expectations/suite_results_test.rb +27 -0
- data/test/expectations/suite_test.rb +21 -0
- data/test/sample_expecations_test.rb +12 -0
- data/test/silent.rb +7 -0
- data/test/test_helper.rb +2 -0
- metadata +72 -0
data/README
ADDED
File without changes
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class Expectations::Expectation
|
2
|
+
attr_accessor :expected, :block, :file, :line, :actual
|
3
|
+
def initialize(expected, &block)
|
4
|
+
self.expected, self.block = expected, block
|
5
|
+
self.file, self.line = eval "[__FILE__, __LINE__]", block.binding
|
6
|
+
end
|
7
|
+
|
8
|
+
def execute
|
9
|
+
begin
|
10
|
+
self.actual = block.call
|
11
|
+
return self.extend(Expectations::Results::Fulfilled) if expected == actual
|
12
|
+
rescue Exception => ex
|
13
|
+
return self.extend(Expectations::Results::Fulfilled) if expected == ex.class
|
14
|
+
self.extend(Expectations::Results::Error)
|
15
|
+
self.exception, self.actual = ex, ex.class
|
16
|
+
return self
|
17
|
+
end
|
18
|
+
self.extend(Expectations::Results::Failure)
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Expectations::Results
|
2
|
+
def initialize(file, line)
|
3
|
+
self.line, self.file = line, file
|
4
|
+
end
|
5
|
+
|
6
|
+
def fulfilled?
|
7
|
+
self.is_a?(Expectations::Results::Fulfilled)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.included(klass)
|
11
|
+
klass.extend ClassMethods
|
12
|
+
end
|
13
|
+
|
14
|
+
module ClassMethods
|
15
|
+
def char(arg)
|
16
|
+
define_method :char do
|
17
|
+
arg
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module Expectations::Results
|
24
|
+
module Failure
|
25
|
+
include Expectations::Results
|
26
|
+
char "F"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
module Expectations::Results
|
31
|
+
module Fulfilled
|
32
|
+
include Expectations::Results
|
33
|
+
char "."
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
module Expectations::Results
|
38
|
+
module Error
|
39
|
+
attr_accessor :exception
|
40
|
+
include Expectations::Results
|
41
|
+
char "E"
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Expectations::Suite
|
2
|
+
|
3
|
+
def execute(out=STDOUT)
|
4
|
+
suite_result = Expectations::SuiteResults.new(out)
|
5
|
+
benchmark = Benchmark.measure do
|
6
|
+
expectations.each do |expectation|
|
7
|
+
suite_result << expectation.execute
|
8
|
+
end
|
9
|
+
end
|
10
|
+
suite_result.print_results(benchmark)
|
11
|
+
suite_result.result
|
12
|
+
end
|
13
|
+
|
14
|
+
def expectations
|
15
|
+
@expectations ||= []
|
16
|
+
end
|
17
|
+
|
18
|
+
def expect(expected, &block)
|
19
|
+
self.expectations << Expectations::Expectation.new(expected, &block)
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
class Expectations::SuiteResults
|
2
|
+
attr_accessor :result, :out, :expectations
|
3
|
+
|
4
|
+
def initialize(out)
|
5
|
+
self.out, self.result, self.expectations = out, true, []
|
6
|
+
out.print "Expectations "
|
7
|
+
end
|
8
|
+
|
9
|
+
def <<(expectation_result)
|
10
|
+
out.print expectation_result.char
|
11
|
+
self.expectations << expectation_result
|
12
|
+
self.result &&= expectation_result.fulfilled?
|
13
|
+
self
|
14
|
+
end
|
15
|
+
|
16
|
+
def fulfilled
|
17
|
+
expectations.select { |expectation| expectation.is_a?(Expectations::Results::Fulfilled) }
|
18
|
+
end
|
19
|
+
|
20
|
+
def errors
|
21
|
+
expectations.select { |expectation| expectation.is_a?(Expectations::Results::Error) }
|
22
|
+
end
|
23
|
+
|
24
|
+
def failures
|
25
|
+
expectations.select { |expectation| expectation.is_a?(Expectations::Results::Failure) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def print_results(benchmark)
|
29
|
+
benchmark_seconds = benchmark.real.to_s.split(".").first
|
30
|
+
benchmark_subseconds = benchmark.real.to_s.split(".").last[0..5]
|
31
|
+
out.puts "\nFinished in #{benchmark_seconds}.#{benchmark_subseconds} seconds"
|
32
|
+
if result
|
33
|
+
out.puts "\nSuccess: #{fulfilled.size} fulfilled"
|
34
|
+
else
|
35
|
+
out.puts "\nFailure: #{failures.size} failed, #{errors.size} errors, #{fulfilled.size} fulfilled"
|
36
|
+
out.puts "\nErrors:" if errors.any?
|
37
|
+
errors.each do |error|
|
38
|
+
out.puts " #{error.file}:#{error.line}:in `expect'"
|
39
|
+
out.puts " line <#{error.line}>"
|
40
|
+
out.puts " error <#{error.exception.message}>"
|
41
|
+
out.puts " expected <#{error.expected.inspect}> got <#{error.actual.inspect}>"
|
42
|
+
end
|
43
|
+
out.puts "\nFailures:" if failures.any?
|
44
|
+
failures.each do |failure|
|
45
|
+
out.puts " #{failure.file}:#{failure.line}:in `expect'"
|
46
|
+
out.puts " line <#{failure.line}>"
|
47
|
+
out.puts " expected: <#{failure.expected.inspect}> got: <#{failure.actual.inspect}>"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Expectations::SuiteRunner
|
2
|
+
include Singleton
|
3
|
+
attr_accessor :suite
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
self.suite = Expectations::Suite.new
|
7
|
+
at_exit do
|
8
|
+
exit 1 unless suite.execute
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def suite_eval(&block)
|
13
|
+
self.suite.instance_eval &block
|
14
|
+
end
|
15
|
+
end
|
data/lib/expectations.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
module Expectations
|
2
|
+
end
|
3
|
+
|
4
|
+
def Expectations(&block)
|
5
|
+
Expectations::SuiteRunner.instance.suite_eval &block
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'singleton'
|
9
|
+
require 'benchmark'
|
10
|
+
require File.expand_path(File.dirname(__FILE__) + '/expectations/suite')
|
11
|
+
require File.expand_path(File.dirname(__FILE__) + '/expectations/suite_runner')
|
12
|
+
require File.expand_path(File.dirname(__FILE__) + '/expectations/suite_results')
|
13
|
+
require File.expand_path(File.dirname(__FILE__) + '/expectations/expectation')
|
14
|
+
require File.expand_path(File.dirname(__FILE__) + '/expectations/results')
|
data/rakefile.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake/gempackagetask'
|
3
|
+
require 'rake/rdoctask'
|
4
|
+
require 'rake/contrib/sshpublisher'
|
5
|
+
|
6
|
+
task :default do
|
7
|
+
require File.dirname(__FILE__) + '/test/all_tests.rb'
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'Generate RDoc'
|
11
|
+
Rake::RDocTask.new do |task|
|
12
|
+
task.main = 'README'
|
13
|
+
task.title = 'expectations'
|
14
|
+
task.rdoc_dir = 'doc'
|
15
|
+
task.options << "--line-numbers" << "--inline-source"
|
16
|
+
task.rdoc_files.include('README', 'lib/**/*.rb')
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "Upload RDoc to RubyForge"
|
20
|
+
task :publish_rdoc => [:rdoc] do
|
21
|
+
Rake::SshDirPublisher.new("jaycfields@rubyforge.org", "/var/www/gforge-projects/expectations", "doc").upload
|
22
|
+
end
|
23
|
+
|
24
|
+
Gem::manage_gems
|
25
|
+
|
26
|
+
specification = Gem::Specification.new do |s|
|
27
|
+
s.name = "expectations"
|
28
|
+
s.summary = "A lightweight unit testing framework. Tests (expectations) will be written as follows
|
29
|
+
expect 2 do
|
30
|
+
1 + 1
|
31
|
+
end
|
32
|
+
|
33
|
+
expect NoMethodError do
|
34
|
+
Object.invalid_method_call
|
35
|
+
end."
|
36
|
+
s.version = "0.0.1"
|
37
|
+
s.author = 'Jay Fields'
|
38
|
+
s.description = "A lightweight unit testing framework. Tests (expectations) will be written as follows
|
39
|
+
expect 2 do
|
40
|
+
1 + 1
|
41
|
+
end
|
42
|
+
|
43
|
+
expect NoMethodError do
|
44
|
+
Object.invalid_method_call
|
45
|
+
end."
|
46
|
+
s.homepage = 'http://expectations.rubyforge.org'
|
47
|
+
s.rubyforge_project = 'expectations'
|
48
|
+
|
49
|
+
s.has_rdoc = true
|
50
|
+
s.extra_rdoc_files = ['README']
|
51
|
+
s.rdoc_options << '--title' << 'expectations' << '--main' << 'README' << '--line-numbers'
|
52
|
+
|
53
|
+
s.autorequire = 'arbs'
|
54
|
+
s.files = FileList['{lib,test}/**/*.rb', '[A-Z]*$', 'rakefile.rb'].to_a
|
55
|
+
s.test_file = "test/all_tests.rb"
|
56
|
+
end
|
57
|
+
|
58
|
+
Rake::GemPackageTask.new(specification) do |package|
|
59
|
+
package.need_zip = false
|
60
|
+
package.need_tar = false
|
61
|
+
end
|
data/test/all_tests.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Dir['**/*_test.rb'].each { |test_case| require test_case }
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
Expectations do
|
4
|
+
expect true do
|
5
|
+
Expectations::Expectation.new(1) { 2 }.execute.is_a?(Expectations::Results::Failure)
|
6
|
+
end
|
7
|
+
|
8
|
+
expect true do
|
9
|
+
Expectations::Expectation.new(1) { 1 }.execute.is_a?(Expectations::Results::Fulfilled)
|
10
|
+
end
|
11
|
+
|
12
|
+
expect true do
|
13
|
+
Expectations::Expectation.new(1) { raise }.execute.is_a?(Expectations::Results::Error)
|
14
|
+
end
|
15
|
+
|
16
|
+
expect __LINE__ + 1 do
|
17
|
+
Expectations::Expectation.new(1) { 2 }.execute.line
|
18
|
+
end
|
19
|
+
|
20
|
+
expect __LINE__ + 1 do
|
21
|
+
Expectations::Expectation.new(1) { raise }.execute.line
|
22
|
+
end
|
23
|
+
|
24
|
+
expect __FILE__ do
|
25
|
+
Expectations::Expectation.new(1) { 2 }.execute.file
|
26
|
+
end
|
27
|
+
|
28
|
+
expect __FILE__ do
|
29
|
+
Expectations::Expectation.new(1) { raise }.execute.file
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
Expectations do
|
4
|
+
|
5
|
+
expect "." do
|
6
|
+
Object.new.extend(Expectations::Results::Fulfilled).char
|
7
|
+
end
|
8
|
+
|
9
|
+
expect "F" do
|
10
|
+
Object.new.extend(Expectations::Results::Failure).char
|
11
|
+
end
|
12
|
+
|
13
|
+
expect "E" do
|
14
|
+
Object.new.extend(Expectations::Results::Error).char
|
15
|
+
end
|
16
|
+
|
17
|
+
expect true do
|
18
|
+
Object.new.extend(Expectations::Results::Fulfilled).fulfilled?
|
19
|
+
end
|
20
|
+
|
21
|
+
expect false do
|
22
|
+
Object.new.extend(Expectations::Results::Failure).fulfilled?
|
23
|
+
end
|
24
|
+
|
25
|
+
expect false do
|
26
|
+
Object.new.extend(Expectations::Results::Error).fulfilled?
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
Expectations do
|
4
|
+
expect 1 do
|
5
|
+
results = Expectations::SuiteResults.new(Silent)
|
6
|
+
results << Object.new.extend(Expectations::Results::Fulfilled)
|
7
|
+
results.fulfilled.size
|
8
|
+
end
|
9
|
+
|
10
|
+
expect 0 do
|
11
|
+
results = Expectations::SuiteResults.new(Silent)
|
12
|
+
results << Object.new.extend(Expectations::Results::Fulfilled)
|
13
|
+
results.errors.size
|
14
|
+
end
|
15
|
+
|
16
|
+
expect true do
|
17
|
+
results = Expectations::SuiteResults.new(Silent)
|
18
|
+
results << Object.new.extend(Expectations::Results::Fulfilled)
|
19
|
+
results.result
|
20
|
+
end
|
21
|
+
|
22
|
+
expect false do
|
23
|
+
results = Expectations::SuiteResults.new(Silent)
|
24
|
+
results << Object.new.extend(Expectations::Results::Failure)
|
25
|
+
results.result
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
Expectations do
|
4
|
+
expect 1 do
|
5
|
+
suite = Expectations::Suite.new
|
6
|
+
suite.expect(1) { 1 }
|
7
|
+
suite.expectations.size
|
8
|
+
end
|
9
|
+
|
10
|
+
expect true do
|
11
|
+
suite = Expectations::Suite.new
|
12
|
+
suite.execute(Silent)
|
13
|
+
end
|
14
|
+
|
15
|
+
expect false do
|
16
|
+
suite = Expectations::Suite.new
|
17
|
+
suite.expect(1) { 2 }
|
18
|
+
suite.execute(Silent)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/test/silent.rb
ADDED
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: expectations
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jay Fields
|
8
|
+
autorequire: arbs
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2007-12-25 00:00:00 -05:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: A lightweight unit testing framework. Tests (expectations) will be written as follows expect 2 do 1 + 1 end expect NoMethodError do Object.invalid_method_call end.
|
17
|
+
email:
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
files:
|
25
|
+
- lib/expectations/expectation.rb
|
26
|
+
- lib/expectations/results.rb
|
27
|
+
- lib/expectations/suite.rb
|
28
|
+
- lib/expectations/suite_results.rb
|
29
|
+
- lib/expectations/suite_runner.rb
|
30
|
+
- lib/expectations.rb
|
31
|
+
- test/all_tests.rb
|
32
|
+
- test/expectations/expectation_test.rb
|
33
|
+
- test/expectations/results_test.rb
|
34
|
+
- test/expectations/suite_results_test.rb
|
35
|
+
- test/expectations/suite_test.rb
|
36
|
+
- test/sample_expecations_test.rb
|
37
|
+
- test/silent.rb
|
38
|
+
- test/test_helper.rb
|
39
|
+
- rakefile.rb
|
40
|
+
- README
|
41
|
+
has_rdoc: true
|
42
|
+
homepage: http://expectations.rubyforge.org
|
43
|
+
post_install_message:
|
44
|
+
rdoc_options:
|
45
|
+
- --title
|
46
|
+
- expectations
|
47
|
+
- --main
|
48
|
+
- README
|
49
|
+
- --line-numbers
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
version:
|
58
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: "0"
|
63
|
+
version:
|
64
|
+
requirements: []
|
65
|
+
|
66
|
+
rubyforge_project: expectations
|
67
|
+
rubygems_version: 1.0.1
|
68
|
+
signing_key:
|
69
|
+
specification_version: 2
|
70
|
+
summary: A lightweight unit testing framework. Tests (expectations) will be written as follows expect 2 do 1 + 1 end expect NoMethodError do Object.invalid_method_call end.
|
71
|
+
test_files:
|
72
|
+
- test/all_tests.rb
|