fun_with_gems 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.markdown +8 -0
- data/Gemfile +1 -1
- data/Rakefile +11 -43
- data/VERSION +1 -1
- data/lib/fun_with/gems/fun_gem_api.rb +40 -2
- data/lib/fun_with/gems/gem_api.rb +9 -0
- data/lib/fun_with/gems/rake_class_methods.rb +98 -0
- data/lib/fun_with/gems/rakefile.rb +6 -0
- data/lib/fun_with/gems/test_results.rb +38 -0
- data/lib/fun_with/gems/test_suite_runner.rb +26 -0
- data/lib/fun_with/gems/validator.rb +1 -20
- data/lib/fun_with_gems.rb +7 -2
- metadata +8 -5
- data/lib/fun_with/gems/mechanic.rb +0 -27
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDBlNDZkZDFkODc4YmNkNDcxYWU0YmFjNGI4ZjBlNjQ5ZmJlZDRhNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MGY2YjUxZDM3MjJhM2I1ZDI0YzA4ZjBhNWJlYTAxYTA2NDA0ZTBlMw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YTY4YzA1NGI5OWNmODU3NzE5ODY3OGI4NzE0YzA3MmVlZGE0ZTI2ZGQxNzIx
|
10
|
+
ZGFjMjhlNjBlZjFkNzhmYjk5Y2YyNmIzOGQzZjQxNDQ5ODExYzRkMzY2NDY5
|
11
|
+
Mjc4NDJhNGQ2YzA3MGVmYzdkMzIxMjMxZWMxMzdkZDhkZjMyNjg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDA2OTNjODAwZWRmNjk4NGY0MjIyNGRhZDYwZjI0Nzc3MDcxNWYxYTQwZGI2
|
14
|
+
NjkwNWZlYzQ1NDlmYmZhYWIyYjZmMzgzM2EwMTFkNjJmODdiY2ViYjM3ZDBk
|
15
|
+
Zjg0M2RmZmQzMmM1NDRhOWYyNDg4OWEyMzY0MjMzNGU1NzI2MDE=
|
data/CHANGELOG.markdown
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
=========
|
3
3
|
|
4
|
+
v0.0.3
|
5
|
+
------
|
6
|
+
|
7
|
+
Moved some of the standard Rakefile boilerplate into FunWith::Gems::Rakefile. Goal is to simplify rakefiles, add a set of fun_with:gems: rake tasks, etc.
|
8
|
+
Removed Mechanic (seemed pretty useless)
|
9
|
+
|
10
|
+
|
4
11
|
v0.0.2
|
5
12
|
------
|
6
13
|
|
7
14
|
Dependent on `fun_with_testing` and `fun_with_files`, even `fun_with_version_strings`. It's all very silly, really.
|
8
15
|
|
16
|
+
|
9
17
|
0.0.1
|
10
18
|
-----
|
11
19
|
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,55 +1,23 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
require_relative 'lib/fun_with_gems'
|
2
3
|
|
3
|
-
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
4
|
+
FunWith::Gems::Rakefile.setup FunWith::Gems, self
|
13
5
|
|
14
|
-
|
15
|
-
|
6
|
+
# Completely pointless wrapper for Jeweler::Tasks.new
|
7
|
+
FunWith::Gems::Rakefile.specification do |gem|
|
16
8
|
# gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
|
17
|
-
gem.name
|
18
|
-
gem.homepage
|
19
|
-
gem.license
|
20
|
-
gem.summary
|
9
|
+
gem.name = "fun_with_gems"
|
10
|
+
gem.homepage = "http://github.com/darthschmoo/fun_with_gems"
|
11
|
+
gem.license = "MIT"
|
12
|
+
gem.summary = "Dependency for most of my FunWith:: gems. Not much use standalone."
|
21
13
|
gem.description = "Dependency for FunWith gems, simplifies the setup of new gems, installing version data, root filepath, and default requirements."
|
22
|
-
gem.email
|
23
|
-
gem.authors
|
14
|
+
gem.email = "keeputahweird@gmail.com"
|
15
|
+
gem.authors = ["Bryce Anderson"]
|
24
16
|
# dependencies defined in Gemfile
|
25
17
|
|
26
18
|
gem.files = Dir.glob( File.join( ".", "lib", "**", "*.rb" ) ) +
|
27
19
|
Dir.glob( File.join( ".", "test", "**", "*" ) ) +
|
28
20
|
%w( Gemfile Rakefile LICENSE.txt README.rdoc VERSION CHANGELOG.markdown )
|
29
21
|
end
|
30
|
-
Jeweler::RubygemsDotOrgTasks.new
|
31
|
-
|
32
|
-
require 'rake/testtask'
|
33
|
-
Rake::TestTask.new(:test) do |test|
|
34
|
-
test.libs << 'lib' << 'test'
|
35
|
-
test.pattern = 'test/**/test_*.rb'
|
36
|
-
test.verbose = true
|
37
|
-
end
|
38
|
-
|
39
|
-
desc "Code coverage detail"
|
40
|
-
task :simplecov do
|
41
|
-
ENV['COVERAGE'] = "true"
|
42
|
-
Rake::Task['test'].execute
|
43
|
-
end
|
44
|
-
|
45
|
-
task :default => :test
|
46
22
|
|
47
|
-
|
48
|
-
Rake::RDocTask.new do |rdoc|
|
49
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
50
|
-
|
51
|
-
rdoc.rdoc_dir = 'rdoc'
|
52
|
-
rdoc.title = "fun_with_gems #{version}"
|
53
|
-
rdoc.rdoc_files.include('README*')
|
54
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
55
|
-
end
|
23
|
+
FunWith::Gems::Rakefile.setup_gem_boilerplate
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
@@ -6,11 +6,17 @@ module FunWith
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def validate_gem
|
9
|
-
FunWith::Gems::Validator.
|
9
|
+
errors = FunWith::Gems::Validator.validate self
|
10
|
+
errors
|
10
11
|
end
|
11
12
|
|
12
13
|
def valid_gem?
|
13
|
-
self.validate_gem
|
14
|
+
errors = self.validate_gem
|
15
|
+
errors.fwf_blank?
|
16
|
+
end
|
17
|
+
|
18
|
+
def passes_tests?
|
19
|
+
TestSuiteRunner.new( self ).passes_tests?
|
14
20
|
end
|
15
21
|
|
16
22
|
def gem_test_mode?
|
@@ -33,6 +39,38 @@ module FunWith
|
|
33
39
|
def say_if_verbose( msg, stream = $stdout )
|
34
40
|
stream.puts( msg ) if gem_verbose?
|
35
41
|
end
|
42
|
+
|
43
|
+
|
44
|
+
def load_tasks
|
45
|
+
load_internal_tasks
|
46
|
+
load_external_tasks
|
47
|
+
end
|
48
|
+
|
49
|
+
# Tasks in gem/tasks should be those which are specific to the gem itself.
|
50
|
+
# Tasks located here will not be made available to gems which depend on it.
|
51
|
+
# Made accessible during the Rakefile.setup
|
52
|
+
def load_internal_tasks
|
53
|
+
_load_tasks_from_directory self.root( "tasks" )
|
54
|
+
end
|
55
|
+
|
56
|
+
# Tasks in gem/lib/tasks will be usable by gems which have this gem as a dependency.
|
57
|
+
def load_external_tasks
|
58
|
+
_load_tasks_from_directory self.root( "lib", "tasks" )
|
59
|
+
end
|
60
|
+
|
61
|
+
def _load_tasks_from_directory dir
|
62
|
+
if _rake_gem_loaded?
|
63
|
+
dir.glob do |file|
|
64
|
+
if file.file? && ( file.ext == "rb" || file.ext == "rake" )
|
65
|
+
Rake.load_rakefile file
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def _rake_gem_loaded?
|
72
|
+
defined?( Gem ) && Gem.respond_to?( :loaded_specs ) && defined?( Rake ) && Gem.loaded_specs.keys.include?( "rake" )
|
73
|
+
end
|
36
74
|
end
|
37
75
|
end
|
38
76
|
end
|
@@ -25,6 +25,9 @@ module FunWith
|
|
25
25
|
set_gem_root
|
26
26
|
set_gem_version
|
27
27
|
require_libs
|
28
|
+
extend_constant_with_gem_api
|
29
|
+
@gem_const.gem_verbose = opts[:verbose]
|
30
|
+
@gem_const.load_external_tasks # Nothing happens unless 'rake' gem is active
|
28
31
|
end
|
29
32
|
|
30
33
|
protected
|
@@ -80,6 +83,12 @@ module FunWith
|
|
80
83
|
end
|
81
84
|
end
|
82
85
|
end
|
86
|
+
|
87
|
+
def extend_constant_with_gem_api
|
88
|
+
if defined?( @gem_const::GemAPI )
|
89
|
+
@gem_const.extend( @gem_const::GemAPI )
|
90
|
+
end
|
91
|
+
end
|
83
92
|
end
|
84
93
|
end
|
85
94
|
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
module FunWith
|
2
|
+
module Gems
|
3
|
+
module RakeClassMethods
|
4
|
+
attr_accessor :gem
|
5
|
+
|
6
|
+
def setup this_gem, rake_main
|
7
|
+
set_gem this_gem
|
8
|
+
set_rake_main rake_main
|
9
|
+
run_bundler_setup
|
10
|
+
|
11
|
+
# Internal tasks are set up in the Rakefile.
|
12
|
+
# External tasks (visible to the gems that depend on your fungem) are setup during the normal gem setup, if the 'rake' gem is present.
|
13
|
+
get_gem.load_internal_tasks
|
14
|
+
end
|
15
|
+
|
16
|
+
def set_gem g
|
17
|
+
@gem = g
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_gem
|
21
|
+
@gem
|
22
|
+
end
|
23
|
+
|
24
|
+
def set_rake_main m
|
25
|
+
@rake_main = m
|
26
|
+
end
|
27
|
+
|
28
|
+
def run_bundler_setup
|
29
|
+
jeweler_requirements
|
30
|
+
rake_requirements
|
31
|
+
|
32
|
+
begin
|
33
|
+
Bundler.setup(:default, :development)
|
34
|
+
rescue Bundler::BundlerError => e
|
35
|
+
$stderr.puts e.message
|
36
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
37
|
+
exit e.status_code
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def specification &block
|
42
|
+
Jeweler::Tasks.new do |gem|
|
43
|
+
yield gem
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def setup_gem_boilerplate
|
48
|
+
run_in_rakefile do
|
49
|
+
Jeweler::RubygemsDotOrgTasks.new
|
50
|
+
|
51
|
+
Rake::TestTask.new(:test) do |test|
|
52
|
+
test.libs << 'lib' << 'test'
|
53
|
+
test.pattern = 'test/**/test_*.rb'
|
54
|
+
test.verbose = true
|
55
|
+
end
|
56
|
+
|
57
|
+
desc "Code coverage detail"
|
58
|
+
task :simplecov do
|
59
|
+
ENV['COVERAGE'] = "true"
|
60
|
+
Rake::Task['test'].execute
|
61
|
+
end
|
62
|
+
|
63
|
+
task :default => :test
|
64
|
+
|
65
|
+
Rake::RDocTask.new do |rdoc|
|
66
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
67
|
+
|
68
|
+
rdoc.rdoc_dir = 'rdoc'
|
69
|
+
rdoc.title = "fun_with_gems #{version}"
|
70
|
+
rdoc.rdoc_files.include('README*')
|
71
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def jeweler_requirements
|
77
|
+
require 'rake'
|
78
|
+
require 'jeweler'
|
79
|
+
end
|
80
|
+
|
81
|
+
def rake_requirements
|
82
|
+
require 'rdoc/task'
|
83
|
+
require 'rake/testtask'
|
84
|
+
end
|
85
|
+
|
86
|
+
def run_in_rakefile &block
|
87
|
+
if @rake_main.nil?
|
88
|
+
raise "Did you forget the line FunWith::Gems::Rakefile.set_rake_main by any chance?"
|
89
|
+
elsif ! block_given?
|
90
|
+
raise ArgumentError.new("Block must be given")
|
91
|
+
else
|
92
|
+
@rake_main.instance_eval &block
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module FunWith
|
2
|
+
module Gems
|
3
|
+
class TestResults
|
4
|
+
TEST_SUITE_DATA_REGEX = /(?<tests>\d+) (?:tests|runs), (?<assertions>\d+) assertions, (?<failures>\d+) failures, (?<errors>\d+) errors, (?<skips>\d+) skips/
|
5
|
+
|
6
|
+
attr_accessor :output, :test_results_found, :gem_const, :fail_count
|
7
|
+
|
8
|
+
def initialize g
|
9
|
+
self.gem_const = g
|
10
|
+
end
|
11
|
+
|
12
|
+
def passed?
|
13
|
+
self.scan_test_results
|
14
|
+
self.test_results_found? && no_failures_or_errors?
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_results_found?
|
18
|
+
self.test_results_found
|
19
|
+
end
|
20
|
+
|
21
|
+
def no_failures_or_errors?
|
22
|
+
fail_count == 0
|
23
|
+
end
|
24
|
+
|
25
|
+
def scan_test_results
|
26
|
+
raise "No output to scan!" if self.output.nil?
|
27
|
+
|
28
|
+
if m = self.output.match( TEST_SUITE_DATA_REGEX )
|
29
|
+
self.test_results_found = true
|
30
|
+
self.fail_count = m[:failures].to_i + m[:errors].to_i
|
31
|
+
else
|
32
|
+
self.fail_count = -1
|
33
|
+
self.test_results_found = false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module FunWith
|
2
|
+
module Gems
|
3
|
+
class TestSuiteRunner
|
4
|
+
attr_accessor :gem_const
|
5
|
+
|
6
|
+
def initialize fwgem
|
7
|
+
self.gem_const = fwgem
|
8
|
+
end
|
9
|
+
|
10
|
+
def passes_tests?
|
11
|
+
result = self.run_tests
|
12
|
+
result.passed?
|
13
|
+
end
|
14
|
+
|
15
|
+
def run_tests
|
16
|
+
filepath = self.gem_const.root
|
17
|
+
|
18
|
+
results = TestResults.new( self.gem_const )
|
19
|
+
|
20
|
+
puts "running tests on #{self.gem_const} from #{filepath}"
|
21
|
+
results.output = `cd #{filepath} && rake test`
|
22
|
+
results
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
module FunWith
|
2
2
|
module Gems
|
3
3
|
class Validator
|
4
|
-
TEST_SUITE_DATA_REGEX = /(<?tests>\d+) tests, (<?assertions>\d+) assertions, (<?failures>\d+) failures, (<?errors>\d+) errors, (<?skips>\d+) skips/
|
5
|
-
|
6
4
|
def self.validate( gem_const )
|
7
5
|
self.new( gem_const ).validate
|
8
6
|
end
|
@@ -28,9 +26,7 @@ module FunWith
|
|
28
26
|
@fun_gem_errors << "doesn't respond to .root()"
|
29
27
|
end
|
30
28
|
|
31
|
-
if @gem_const.respond_to?(:version)
|
32
|
-
|
33
|
-
else
|
29
|
+
if ! @gem_const.respond_to?(:version)
|
34
30
|
@fun_gem_errors << "doesn't respond to .version()"
|
35
31
|
end
|
36
32
|
|
@@ -41,21 +37,6 @@ module FunWith
|
|
41
37
|
@fun_gem_errors
|
42
38
|
end
|
43
39
|
|
44
|
-
|
45
|
-
def passes_tests?( filepath )
|
46
|
-
@test_output = `cd #{filepath} && rake`
|
47
|
-
results = scan_results( @test_output )
|
48
|
-
end
|
49
|
-
|
50
|
-
def scan_results( str )
|
51
|
-
if m = str.match( TEST_SUITE_DATA_REGEX )
|
52
|
-
m[0]
|
53
|
-
else
|
54
|
-
"TEST STATS NOT FOUND"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
|
59
40
|
def git_up_to_date?( filepath )
|
60
41
|
# On branch master
|
61
42
|
# Your branch is ahead of 'origin/master' by 1 commit.
|
data/lib/fun_with_gems.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require "fun_with_version_strings"
|
2
2
|
require "fun_with_files"
|
3
3
|
|
4
|
+
# require 'debugger'
|
5
|
+
# debugger
|
6
|
+
|
4
7
|
# FunWith::VersionStrings.versionize( FunWith::Files )
|
5
8
|
|
6
9
|
lib_dir = __FILE__.fwf_filepath.dirname
|
@@ -16,5 +19,7 @@ FunWith::Gems.extend( FunWith::Gems::GemAPI )
|
|
16
19
|
# rootifies
|
17
20
|
# requir's the lib/fun_with directory
|
18
21
|
# Do this because FunWithFiles doesn't do it itself.
|
19
|
-
FunWith::Gems.make_gem_fun
|
20
|
-
FunWith::Gems.make_gem_fun
|
22
|
+
FunWith::Gems.make_gem_fun FunWith::Files, :require => false, :set_root => false, :set_version => false
|
23
|
+
FunWith::Gems.make_gem_fun FunWith::Gems, :verbose => true
|
24
|
+
|
25
|
+
FunWith::Gems::Rakefile.extend FunWith::Gems::RakeClassMethods
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fun_with_gems
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryce Anderson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fun_with_files
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.
|
19
|
+
version: 0.0.13
|
20
20
|
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '0.0'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.0.
|
29
|
+
version: 0.0.13
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '0.0'
|
@@ -76,7 +76,10 @@ files:
|
|
76
76
|
- ./lib/fun_with/gems/core_extensions/module.rb
|
77
77
|
- ./lib/fun_with/gems/fun_gem_api.rb
|
78
78
|
- ./lib/fun_with/gems/gem_api.rb
|
79
|
-
- ./lib/fun_with/gems/
|
79
|
+
- ./lib/fun_with/gems/rake_class_methods.rb
|
80
|
+
- ./lib/fun_with/gems/rakefile.rb
|
81
|
+
- ./lib/fun_with/gems/test_results.rb
|
82
|
+
- ./lib/fun_with/gems/test_suite_runner.rb
|
80
83
|
- ./lib/fun_with/gems/validator.rb
|
81
84
|
- ./lib/fun_with_gems.rb
|
82
85
|
- ./test/helper.rb
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module FunWith
|
2
|
-
module Gems
|
3
|
-
|
4
|
-
class Mechanic
|
5
|
-
def bump_version( gem_const )
|
6
|
-
if Validator.new.validate( gem_const )
|
7
|
-
# if tests pass and gem is valid
|
8
|
-
|
9
|
-
# run rake version:bump:patch
|
10
|
-
|
11
|
-
# git commit
|
12
|
-
|
13
|
-
# git push
|
14
|
-
|
15
|
-
# add branch v<VERSION>
|
16
|
-
|
17
|
-
# rake install
|
18
|
-
|
19
|
-
# gem push
|
20
|
-
|
21
|
-
else
|
22
|
-
puts "Failed"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|