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/.document +5 -0
- data/.gitignore +22 -0
- data/LICENSE +20 -0
- data/Manifest.txt +23 -0
- data/README.rdoc +118 -0
- data/Rakefile +35 -0
- data/TODO +0 -0
- data/dm-ambition.gemspec +89 -0
- data/lib/dm-ambition/collection.rb +73 -0
- data/lib/dm-ambition/model.rb +28 -0
- data/lib/dm-ambition/query/filter_processor.rb +361 -0
- data/lib/dm-ambition/query.rb +23 -0
- data/lib/dm-ambition/version.rb +5 -0
- data/lib/dm-ambition.rb +50 -0
- data/spec/public/collection_spec.rb +138 -0
- data/spec/public/model_spec.rb +34 -0
- data/spec/public/shared/filter_shared_spec.rb +221 -0
- data/spec/rcov.opts +6 -0
- data/spec/semipublic/query_spec.rb +718 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +49 -0
- data/tasks/ci.rake +1 -0
- data/tasks/clean.rake +6 -0
- data/tasks/heckle.rake +52 -0
- data/tasks/metrics.rake +37 -0
- data/tasks/spec.rake +41 -0
- data/tasks/yard.rake +9 -0
- data/tasks/yardstick.rake +20 -0
- metadata +137 -0
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -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
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
|
data/tasks/metrics.rake
ADDED
@@ -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,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
|