shared_tests 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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +16 -0
- data/Rakefile +1 -0
- data/lib/shared_tests.rb +22 -0
- data/lib/shared_tests/version.rb +3 -0
- data/shared_tests.gemspec +22 -0
- data/test/shared_tests_test.rb +30 -0
- metadata +86 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/shared_tests.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require "active_support/inflector"
|
3
|
+
|
4
|
+
module SharedTests
|
5
|
+
def self.included(base)
|
6
|
+
base.send :extend, InstanceMethods
|
7
|
+
end
|
8
|
+
|
9
|
+
module InstanceMethods
|
10
|
+
|
11
|
+
def assert_shared_tests(options = {}, &block)
|
12
|
+
shared_test = options.delete(:of)
|
13
|
+
include "#{shared_test.to_s.camelize}Tests".constantize
|
14
|
+
|
15
|
+
define_method(:setup) do
|
16
|
+
super()
|
17
|
+
instance_eval(&block)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "shared_tests/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "shared_tests"
|
7
|
+
s.version = SharedTests::VERSION
|
8
|
+
s.authors = ["Joaquin Rivera Padron"]
|
9
|
+
s.email = ["joahking@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{Minimal DSL to write shared tests for Test::Unit}
|
12
|
+
s.description = %q{Assert shared behavior of objects easily using: assert_shared_tests :of => :some_shared_behavior }
|
13
|
+
|
14
|
+
s.rubyforge_project = "shared_tests"
|
15
|
+
|
16
|
+
s.add_development_dependency "activesupport"
|
17
|
+
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.test_files = `git ls-files -- {test}/*`.split("\n")
|
20
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lib/shared_tests')
|
3
|
+
|
4
|
+
# shared behavior we want to test
|
5
|
+
module ProgrammingMotherfucker
|
6
|
+
def who_am_i?
|
7
|
+
"a programming motherfucker"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# hacker instances are programming motherfuckers
|
12
|
+
class Hacker
|
13
|
+
include ProgrammingMotherfucker
|
14
|
+
end
|
15
|
+
|
16
|
+
# declaring the shared behavior test examples
|
17
|
+
module ProgrammingMotherfuckerTests
|
18
|
+
def test_is_a_programming_motherfucker?
|
19
|
+
assert @me.who_am_i? == "a programming motherfucker"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# and the hacker tests
|
24
|
+
class HackerTest < Test::Unit::TestCase
|
25
|
+
include SharedTests
|
26
|
+
|
27
|
+
assert_shared_tests :of => :programming_motherfucker do
|
28
|
+
@me = Hacker.new
|
29
|
+
end
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: shared_tests
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Joaquin Rivera Padron
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-10-22 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: activesupport
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
description: "Assert shared behavior of objects easily using: assert_shared_tests :of => :some_shared_behavior "
|
35
|
+
email:
|
36
|
+
- joahking@gmail.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files: []
|
42
|
+
|
43
|
+
files:
|
44
|
+
- .gitignore
|
45
|
+
- Gemfile
|
46
|
+
- Gemfile.lock
|
47
|
+
- Rakefile
|
48
|
+
- lib/shared_tests.rb
|
49
|
+
- lib/shared_tests/version.rb
|
50
|
+
- shared_tests.gemspec
|
51
|
+
- test/shared_tests_test.rb
|
52
|
+
homepage: ""
|
53
|
+
licenses: []
|
54
|
+
|
55
|
+
post_install_message:
|
56
|
+
rdoc_options: []
|
57
|
+
|
58
|
+
require_paths:
|
59
|
+
- lib
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
hash: 3
|
66
|
+
segments:
|
67
|
+
- 0
|
68
|
+
version: "0"
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
requirements: []
|
79
|
+
|
80
|
+
rubyforge_project: shared_tests
|
81
|
+
rubygems_version: 1.8.11
|
82
|
+
signing_key:
|
83
|
+
specification_version: 3
|
84
|
+
summary: Minimal DSL to write shared tests for Test::Unit
|
85
|
+
test_files: []
|
86
|
+
|