test-subset 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem "pry"
7
+ end
8
+
9
+ group :test do
10
+ gem "shoulda"
11
+ gem "turn"
12
+ gem "mocha"
13
+ gem "minitest"
14
+ end
@@ -0,0 +1,40 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ test-subset (0.0.1)
5
+ rake
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ ansi (1.4.2)
11
+ coderay (1.0.5)
12
+ metaclass (0.0.1)
13
+ method_source (0.7.1)
14
+ minitest (2.11.3)
15
+ mocha (0.10.5)
16
+ metaclass (~> 0.0.1)
17
+ pry (0.9.8.4)
18
+ coderay (~> 1.0.5)
19
+ method_source (~> 0.7.1)
20
+ slop (>= 2.4.4, < 3)
21
+ rake (0.9.2.2)
22
+ shoulda (3.0.1)
23
+ shoulda-context (~> 1.0.0)
24
+ shoulda-matchers (~> 1.0.0)
25
+ shoulda-context (1.0.0)
26
+ shoulda-matchers (1.0.0)
27
+ slop (2.4.4)
28
+ turn (0.9.4)
29
+ ansi
30
+
31
+ PLATFORMS
32
+ ruby
33
+
34
+ DEPENDENCIES
35
+ minitest
36
+ mocha
37
+ pry
38
+ shoulda
39
+ test-subset!
40
+ turn
data/README ADDED
@@ -0,0 +1,25 @@
1
+ Construct subsets of your tests
2
+
3
+ TestSubset::Task.new("foo") do |test|
4
+ test.units "foo/*"
5
+ test.functionals "foo/*", "bar/*", "*{foo,bar}*"
6
+ test.integration "foo/*"
7
+ end
8
+
9
+ Execute them like so
10
+
11
+ rake test:foo:units # just units
12
+ rake test:foo:functionals # just functionals
13
+ rake test:foo:integration # just integration
14
+ rake test:foo # all
15
+
16
+ And some additional tasks
17
+
18
+ rake test:foo:units_and_functionals
19
+ rake test:foo:functionals_and_units
20
+
21
+ rake test:foo:units_and_integration
22
+ rake test:foo:integration_and_units
23
+
24
+ rake test:foo:functionals_and_integration
25
+ rake test:foo:integration_and_functionals
@@ -0,0 +1,16 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ task :default => :test
5
+
6
+ require 'rake/testtask'
7
+ Rake::TestTask.new(:test) do |test|
8
+ test.libs << "lib" << "test"
9
+ test.test_files = FileList["test/unit/**/*_test.rb"]
10
+ test.verbose = true
11
+ # test.warning = true
12
+ end
13
+
14
+ task :console do
15
+ sh "pry -I lib/test-subset -r test-subset.rb"
16
+ end
@@ -0,0 +1,66 @@
1
+ require 'rake/testtask'
2
+
3
+ module TestSubset
4
+ class Task
5
+
6
+ def initialize(name, *expressions, &block)
7
+ @name = name
8
+ @list = {}
9
+ if block_given?
10
+ yield self
11
+ combo_test_task("units_and_functionals", "units", "functionals")
12
+ combo_test_task("functionals_and_integration", "functionals", "integration")
13
+ combo_test_task("units_and_integration", "units", "integration")
14
+ combo_test_task("", "units", "functionals", "integration")
15
+ alias_test_task("functionals_and_units", "units_and_functionals")
16
+ alias_test_task("integration_and_units", "units_and_integration")
17
+ alias_test_task("functionals_and_integration", "integration_and_functionals")
18
+ else
19
+ test_task("", *expressions)
20
+ end
21
+ end
22
+
23
+ def integration(*expressions)
24
+ expressions = expressions.map {|a| "test/integration/#{a}_test.rb" }
25
+ test_task("integration", *expressions)
26
+ end
27
+
28
+ def functionals(*expressions)
29
+ expressions = expressions.map {|a| "test/functional/#{a}_test.rb" }
30
+ test_task("functionals", *expressions)
31
+ end
32
+
33
+ def units(*expressions)
34
+ expressions = expressions.map {|a| "test/unit/#{a}_test.rb" }
35
+ test_task("units", *expressions)
36
+ end
37
+
38
+ private
39
+ def test_task(name, *expressions)
40
+ @list[name] = expressions
41
+ Rake::TestTask.new(task_name[name]) do |test|
42
+ test.libs << 'lib' << 'test'
43
+ test.test_files = FileList[*@list[name]]
44
+ test.verbose = true
45
+ end
46
+ end
47
+
48
+ def combo_test_task(name, *keys)
49
+ test_tasks = keys.map {|k| task_name[k] }
50
+ Rake::Task.define_task task_name[name] => test_tasks
51
+ end
52
+
53
+ def alias_test_task(name, real_name)
54
+ Rake::Task.define_task task_name[name] => task_name[real_name]
55
+ end
56
+
57
+ def task_name
58
+ @task_name ||= Hash.new do |h,k|
59
+ h[k] = ["test:#{@name}", k].compact.
60
+ reject(&:empty?).
61
+ join(":")
62
+ end
63
+ end
64
+
65
+ end
66
+ end
@@ -0,0 +1,3 @@
1
+ module TestSubset
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,22 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require 'test-subset/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "test-subset"
6
+ s.version = TestSubset::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Jon Karna"]
9
+ s.email = ["ipg49vv2@gmail.com"]
10
+ s.homepage = "https://github.com/jonkarna/test-subset"
11
+ s.summary = %q{}
12
+ s.description = %q{}
13
+
14
+ s.rubyforge_project = "test-subset"
15
+
16
+ s.add_runtime_dependency "rake"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.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,100 @@
1
+ require 'test-subset'
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ require 'shoulda'
5
+ require 'turn'
6
+ require 'mocha'
7
+
8
+ module TestSubset
9
+ class TaskTest < Test::Unit::TestCase
10
+ subject { TestSubset::Task.new("foo") }
11
+
12
+ context "#integration" do
13
+ should "add integration tests" do
14
+ subject.expects(:test_task).with("integration", "test/integration/foo/*_test.rb")
15
+ subject.integration "foo/*"
16
+ end
17
+ end
18
+
19
+ context "#functionals" do
20
+ should "add functional tests" do
21
+ subject.expects(:test_task).with("functionals", "test/functional/foo/*_test.rb")
22
+ subject.functionals "foo/*"
23
+ end
24
+ end
25
+
26
+ context "#units" do
27
+ should "add unit tests" do
28
+ subject.expects(:test_task).with("units", "test/unit/foo/*_test.rb")
29
+ subject.units "foo/*"
30
+ end
31
+ end
32
+
33
+ context "helper methods" do
34
+ setup do
35
+ @args = ["test_section", "1", "2"]
36
+ Rake::TestTask.expects(:new).with("test:foo")
37
+ end
38
+
39
+ context "#test_task" do
40
+ should "create a rake test task with the proper name" do
41
+ Rake::TestTask.expects(:new).with("test:foo:test_section")
42
+ subject.send(:test_task, *@args)
43
+ end
44
+ end
45
+
46
+ context "#combo_test_task" do
47
+ should "create a rake task that requires a group of tasks" do
48
+ Rake::Task.expects(:define_task).
49
+ with("test:foo:test_section" => ["test:foo:1",
50
+ "test:foo:2"])
51
+ subject.send(:combo_test_task, *@args)
52
+ end
53
+ end
54
+
55
+ context "#alias_test_task" do
56
+ should "create a rake task that requires one other task" do
57
+ Rake::Task.expects(:define_task).
58
+ with("test:foo:another_one" => "test:foo:one")
59
+ subject.send(:alias_test_task, "another_one", "one")
60
+ end
61
+ end
62
+
63
+ context "#task_name" do
64
+ should "use the common pattern for all names expect blanks" do
65
+ task_name = subject.send(:task_name)
66
+ assert_equal "test:foo:whatever", task_name["whatever"]
67
+ assert_equal "test:foo", task_name[""]
68
+ assert_equal "test:foo", task_name[nil]
69
+ end
70
+ end
71
+ end
72
+
73
+ context "TestSubset::Task Class" do
74
+ subject { TestSubset::Task }
75
+
76
+ context "#new" do
77
+ should "create a tesk task" do
78
+ subject.any_instance.expects(:test_task).
79
+ with("", "test/units/foo/*_test.rb")
80
+ subject.new(:foo, "test/units/foo/*_test.rb")
81
+ end
82
+
83
+ context "with a block" do
84
+ should "#units" do
85
+ subject.any_instance.expects(:units).with("foo/*")
86
+ subject.any_instance.expects(:functionals).with("foo/*")
87
+ subject.any_instance.expects(:integration).with("foo/*")
88
+ subject.any_instance.expects(:combo_test_task).times(4)
89
+ subject.any_instance.expects(:alias_test_task).times(3)
90
+ subject.new("foo") do |test|
91
+ test.units "foo/*"
92
+ test.functionals "foo/*"
93
+ test.integration "foo/*"
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
metadata ADDED
@@ -0,0 +1,72 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: test-subset
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jon Karna
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-04-06 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &2162261760 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2162261760
25
+ description: ''
26
+ email:
27
+ - ipg49vv2@gmail.com
28
+ executables: []
29
+ extensions: []
30
+ extra_rdoc_files: []
31
+ files:
32
+ - .gitignore
33
+ - Gemfile
34
+ - Gemfile.lock
35
+ - README
36
+ - Rakefile
37
+ - lib/test-subset.rb
38
+ - lib/test-subset/version.rb
39
+ - test-subset.gemspec
40
+ - test/unit/test_subset_test.rb
41
+ homepage: https://github.com/jonkarna/test-subset
42
+ licenses: []
43
+ post_install_message:
44
+ rdoc_options: []
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ segments:
54
+ - 0
55
+ hash: -4096766038571747085
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ segments:
63
+ - 0
64
+ hash: -4096766038571747085
65
+ requirements: []
66
+ rubyforge_project: test-subset
67
+ rubygems_version: 1.8.10
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: ''
71
+ test_files:
72
+ - test/unit/test_subset_test.rb