dm-ambition 0.10.2

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/spec/spec.opts ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --loadby random
3
+ --format profile
4
+ --backtrace
@@ -0,0 +1,49 @@
1
+ require 'pathname'
2
+ require 'rubygems'
3
+ require 'spec'
4
+
5
+ gem 'dm-core', '~>0.10.2'
6
+ require 'dm-core'
7
+
8
+ SPEC_ROOT = Pathname(__FILE__).dirname.expand_path
9
+ require SPEC_ROOT.parent / 'lib' / 'dm-ambition'
10
+ Pathname.glob((SPEC_ROOT / '{lib,*/shared}/**/*.rb').to_s).each { |f| require f }
11
+
12
+ def load_driver(name, default_uri)
13
+ return false if ENV['ADAPTER'] != name.to_s
14
+
15
+ begin
16
+ DataMapper.setup(name, ENV["#{name.to_s.upcase}_SPEC_URI"] || default_uri)
17
+ DataMapper::Repository.adapters[:default] = DataMapper::Repository.adapters[name]
18
+ true
19
+ rescue LoadError => e
20
+ warn "Could not load do_#{name}: #{e}"
21
+ false
22
+ end
23
+ end
24
+
25
+ ENV['ADAPTER'] ||= 'sqlite3'
26
+
27
+ HAS_SQLITE3 = load_driver(:sqlite3, 'sqlite3::memory:')
28
+ HAS_MYSQL = load_driver(:mysql, 'mysql://localhost/dm_core_test')
29
+ HAS_POSTGRES = load_driver(:postgres, 'postgres://postgres@localhost/dm_core_test')
30
+
31
+ Spec::Runner.configure do |config|
32
+ config.after :all do
33
+ # global model cleanup
34
+ descendants = DataMapper::Model.descendants.to_a
35
+ while model = descendants.shift
36
+ descendants.concat(model.descendants.to_a - [ model ])
37
+
38
+ parts = model.name.split('::')
39
+ constant_name = parts.pop.to_sym
40
+ base = parts.empty? ? Object : Object.full_const_get(parts.join('::'))
41
+
42
+ if base.const_defined?(constant_name)
43
+ base.send(:remove_const, constant_name)
44
+ end
45
+
46
+ DataMapper::Model.descendants.delete(model)
47
+ end
48
+ end
49
+ end
data/tasks/ci.rake ADDED
@@ -0,0 +1 @@
1
+ task :ci => [ :verify_measurements, :heckle, 'metrics:all' ]
data/tasks/clean.rake ADDED
@@ -0,0 +1,6 @@
1
+ require 'rake/clean'
2
+
3
+ File.foreach('.gitignore') do |line|
4
+ line.strip!
5
+ CLOBBER << line unless line.empty? || line[0, 1] == '#'
6
+ end
data/tasks/heckle.rake ADDED
@@ -0,0 +1,52 @@
1
+ # original code by Ashley Moran:
2
+ # http://aviewfromafar.net/2007/11/1/rake-task-for-heckling-your-specs
3
+ desc 'Heckle each module and class'
4
+ task :heckle => :verify_rcov do
5
+ root_module = 'DataMapper::Ambition'
6
+ spec_files = FileList['spec/**/*_spec.rb']
7
+
8
+ current_module = nil
9
+ current_method = nil
10
+
11
+ heckle_caught_modules = Hash.new { |hash, key| hash[key] = [] }
12
+ unhandled_mutations = 0
13
+
14
+ IO.popen("spec --heckle #{root_module} #{spec_files} 2>/dev/null") do |pipe|
15
+ while line = pipe.gets
16
+ case line = line.chomp
17
+ when /\A\*\*\*\s+(#{root_module}(?:::)?(?:\w+(?:::)?)*)#(\S+)/
18
+ current_module, current_method = $1, $2
19
+ when "The following mutations didn't cause test failures:"
20
+ heckle_caught_modules[current_module] << current_method
21
+ when '+++ mutation'
22
+ unhandled_mutations += 1
23
+ end
24
+
25
+ puts line
26
+ end
27
+ end
28
+
29
+ if unhandled_mutations > 0
30
+ error_message_lines = [ "*************\n" ]
31
+
32
+ error_message_lines << "Heckle found #{unhandled_mutations} " \
33
+ "mutation#{"s" unless unhandled_mutations == 1} " \
34
+ "that didn't cause spec violations\n"
35
+
36
+ heckle_caught_modules.each do |mod, methods|
37
+ error_message_lines << "#{mod} contains the following " \
38
+ 'poorly-specified methods:'
39
+ methods.each do |method|
40
+ error_message_lines << " - #{method}"
41
+ end
42
+ error_message_lines << ''
43
+ end
44
+
45
+ error_message_lines << 'Get your act together and come back ' \
46
+ 'when your specs are doing their job!'
47
+
48
+ raise error_message_lines.join("\n")
49
+ else
50
+ puts 'Well done! Your code withstood a heckling.'
51
+ end
52
+ end
@@ -0,0 +1,37 @@
1
+ begin
2
+ require 'metric_fu'
3
+ rescue LoadError
4
+ namespace :metrics do
5
+ task :all do
6
+ abort 'metric_fu is not available. In order to run metrics:all, you must: gem install metric_fu'
7
+ end
8
+ end
9
+ end
10
+
11
+ begin
12
+ require 'reek/adapters/rake_task'
13
+
14
+ Reek::RakeTask.new do |t|
15
+ t.fail_on_error = true
16
+ t.verbose = false
17
+ t.source_files = 'lib/**/*.rb'
18
+ end
19
+ rescue LoadError
20
+ task :reek do
21
+ abort 'Reek is not available. In order to run reek, you must: gem install reek'
22
+ end
23
+ end
24
+
25
+ begin
26
+ require 'roodi'
27
+ require 'rake/tasklib'
28
+ require 'roodi_task'
29
+
30
+ RoodiTask.new do |t|
31
+ t.verbose = false
32
+ end
33
+ rescue LoadError
34
+ task :roodi do
35
+ abort 'Roodi is not available. In order to run roodi, you must: gem install roodi'
36
+ end
37
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,41 @@
1
+ spec_defaults = lambda do |spec|
2
+ spec.pattern = 'spec/**/*_spec.rb'
3
+ spec.libs << 'lib' << 'spec'
4
+ spec.spec_opts << '--options' << 'spec/spec.opts'
5
+ end
6
+
7
+ begin
8
+ require 'spec/rake/spectask'
9
+
10
+ Spec::Rake::SpecTask.new(:spec, &spec_defaults)
11
+ rescue LoadError
12
+ task :spec do
13
+ abort 'rspec is not available. In order to run spec, you must: gem install rspec'
14
+ end
15
+ end
16
+
17
+ begin
18
+ require 'rcov'
19
+ require 'spec/rake/verify_rcov'
20
+
21
+ Spec::Rake::SpecTask.new(:rcov) do |rcov|
22
+ spec_defaults.call(rcov)
23
+ rcov.rcov = true
24
+ rcov.rcov_opts = File.read('spec/rcov.opts').split(/\s+/)
25
+ end
26
+
27
+ RCov::VerifyTask.new(:verify_rcov => :rcov) do |rcov|
28
+ rcov.threshold = 100
29
+ end
30
+ rescue LoadError
31
+ %w[ rcov verify_rcov ].each do |name|
32
+ task name do
33
+ abort "rcov is not available. In order to run #{name}, you must: gem install rcov"
34
+ end
35
+ end
36
+ end
37
+
38
+ task :spec => :check_dependencies
39
+ task :rcov => :check_dependencies
40
+
41
+ task :default => :spec
data/tasks/yard.rake ADDED
@@ -0,0 +1,9 @@
1
+ begin
2
+ require 'yard'
3
+
4
+ YARD::Rake::YardocTask.new
5
+ rescue LoadError
6
+ task :yard do
7
+ abort 'YARD is not available. In order to run yard, you must: gem install yard'
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ begin
2
+ require 'pathname'
3
+ require 'yardstick'
4
+ require 'yardstick/rake/measurement'
5
+ require 'yardstick/rake/verify'
6
+
7
+ # yardstick_measure task
8
+ Yardstick::Rake::Measurement.new
9
+
10
+ # verify_measurements task
11
+ Yardstick::Rake::Verify.new do |verify|
12
+ verify.threshold = 100
13
+ end
14
+ rescue LoadError
15
+ %w[ yardstick_measure verify_measurements ].each do |name|
16
+ task name.to_s do
17
+ abort "Yardstick is not available. In order to run #{name}, you must: gem install yardstick"
18
+ end
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dm-ambition
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.10.2
5
+ platform: ruby
6
+ authors:
7
+ - Dan Kubb
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-12-14 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: dm-core
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 0.10.2
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: ParseTree
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.4
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: ruby2ruby
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 1.2.4
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rspec
47
+ type: :development
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.2.9
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ~>
62
+ - !ruby/object:Gem::Version
63
+ version: 0.4.0
64
+ version:
65
+ description: DataMapper plugin providing an Ambition-like API
66
+ email: dan.kubb@gmail.com
67
+ executables: []
68
+
69
+ extensions: []
70
+
71
+ extra_rdoc_files:
72
+ - LICENSE
73
+ - README.rdoc
74
+ - TODO
75
+ files:
76
+ - .document
77
+ - .gitignore
78
+ - LICENSE
79
+ - Manifest.txt
80
+ - README.rdoc
81
+ - Rakefile
82
+ - TODO
83
+ - dm-ambition.gemspec
84
+ - lib/dm-ambition.rb
85
+ - lib/dm-ambition/collection.rb
86
+ - lib/dm-ambition/model.rb
87
+ - lib/dm-ambition/query.rb
88
+ - lib/dm-ambition/query/filter_processor.rb
89
+ - lib/dm-ambition/version.rb
90
+ - spec/public/collection_spec.rb
91
+ - spec/public/model_spec.rb
92
+ - spec/public/shared/filter_shared_spec.rb
93
+ - spec/rcov.opts
94
+ - spec/semipublic/query_spec.rb
95
+ - spec/spec.opts
96
+ - spec/spec_helper.rb
97
+ - tasks/ci.rake
98
+ - tasks/clean.rake
99
+ - tasks/heckle.rake
100
+ - tasks/metrics.rake
101
+ - tasks/spec.rake
102
+ - tasks/yard.rake
103
+ - tasks/yardstick.rake
104
+ has_rdoc: true
105
+ homepage: http://github.com/dkubb/dm-ambition
106
+ licenses: []
107
+
108
+ post_install_message:
109
+ rdoc_options:
110
+ - --charset=UTF-8
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: "0"
118
+ version:
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: "0"
124
+ version:
125
+ requirements: []
126
+
127
+ rubyforge_project: dm-ambition
128
+ rubygems_version: 1.3.5
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: DataMapper plugin providing an Ambition-like API
132
+ test_files:
133
+ - spec/public/collection_spec.rb
134
+ - spec/public/model_spec.rb
135
+ - spec/public/shared/filter_shared_spec.rb
136
+ - spec/semipublic/query_spec.rb
137
+ - spec/spec_helper.rb