sniff 0.11.12 → 1.0.0
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/lib/sniff.rb +82 -22
- data/lib/sniff/fixture.rb +2 -4
- data/lib/sniff/rake_tasks.rb +24 -5
- data/lib/sniff/version.rb +2 -2
- data/lib/test_support/cucumber/step_definitions/committee_steps.rb +13 -11
- data/spec/{lib/sniff → sniff}/rake_tasks_spec.rb +1 -1
- data/spec/sniff_spec.rb +42 -0
- data/spec/spec_helper.rb +1 -3
- data/spec/{lib/test_support → test_support}/cucumber/support/values_spec.rb +0 -0
- metadata +68 -60
- data/lib/sniff/database.rb +0 -112
- data/spec/lib/sniff/database_spec.rb +0 -32
- data/spec/lib/sniff_spec.rb +0 -12
data/lib/sniff.rb
CHANGED
@@ -1,56 +1,116 @@
|
|
1
|
-
require 'data_miner'
|
2
1
|
require 'active_record_inline_schema'
|
3
|
-
require '
|
2
|
+
require 'data_miner'
|
3
|
+
require 'earth'
|
4
4
|
require 'logger'
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
require 'sniff/fixture'
|
7
|
+
require 'sniff/leap_ext'
|
8
8
|
|
9
|
+
class Sniff
|
9
10
|
# Sniff's root directory (the gem's location on the filesystem)
|
10
|
-
def root
|
11
|
+
def Sniff.root
|
11
12
|
File.join(File.dirname(__FILE__), '..')
|
12
13
|
end
|
13
14
|
|
14
15
|
# Get a path relative to sniff's root
|
15
|
-
def path(*rest)
|
16
|
+
def Sniff.path(*rest)
|
16
17
|
File.join(root, *rest)
|
17
18
|
end
|
18
19
|
|
19
|
-
def logger
|
20
|
+
def Sniff.logger
|
20
21
|
@logger ||= Logger.new nil
|
21
22
|
end
|
22
|
-
def logger=(val)
|
23
|
+
def Sniff.logger=(val)
|
23
24
|
@logger = val
|
24
25
|
end
|
25
26
|
|
27
|
+
def Sniff.init(local_root, options = {})
|
28
|
+
sniff = new local_root, options
|
29
|
+
sniff.connect
|
30
|
+
sniff
|
31
|
+
end
|
32
|
+
|
33
|
+
attr_accessor :root, :options, :test_support_path, :fixtures_path,
|
34
|
+
:logger, :project
|
35
|
+
|
26
36
|
# Prepares the environment for running tests against Earth data and emitter
|
27
37
|
# gems.
|
28
38
|
#
|
29
39
|
# local_root: Root directory of the emitter gem to be tested (path to the repo)
|
30
40
|
#
|
31
41
|
# options:
|
32
|
-
# * :earth is the list of domains Earth.init should load (default: none)
|
33
|
-
# * :load_data determines whether fixture data is loaded (default: true)
|
34
42
|
# * :logger is a Logger log device used by Sniff and ActiveRecord (default: nil)
|
35
43
|
# logger: nil = no log, string = file path, STDOUT for terminal
|
36
44
|
# * :fixtures_path is the path to your gem's fixtures (default: local_root/lib/db/fixtures)
|
37
|
-
|
38
|
-
|
45
|
+
# * :reset_schemas tells earth to recreate tables for each model (default: false)
|
46
|
+
# * :cucumber tells Sniff to load cucumber test support files provided by the emitter in <emitter_root>/test_support/cucumber (default: false)
|
47
|
+
# * :project is the current project (e.g. 'flight'). Default is guessed from CWD
|
48
|
+
def initialize(local_root, options = {})
|
49
|
+
self.root = local_root
|
50
|
+
self.project = options[:project] || File.basename(File.expand_path(local_root))
|
51
|
+
self.options = options.symbolize_keys
|
52
|
+
self.test_support_path = File.join(root, 'features', 'support')
|
53
|
+
self.fixtures_path = options[:fixtures_path]
|
54
|
+
|
55
|
+
ENV['DATABASE_URL'] ||= "mysql2://root:password@localhost/test_#{project}"
|
39
56
|
|
40
|
-
|
41
|
-
|
57
|
+
load_supporting_libs
|
58
|
+
|
59
|
+
logger = self.options[:logger] || ENV['LOGGER']
|
60
|
+
Sniff.logger ||= Logger.new logger
|
42
61
|
DataMiner.logger = Sniff.logger
|
62
|
+
DataMiner.unit_converter = :conversions
|
63
|
+
|
64
|
+
init_cucumber if self.options[:cucumber]
|
65
|
+
end
|
66
|
+
|
67
|
+
def init_cucumber
|
68
|
+
require 'cucumber'
|
69
|
+
require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
|
70
|
+
cukes = Dir.glob File.join(File.dirname(__FILE__), 'test_support', 'cucumber', '**', '*.rb')
|
71
|
+
cukes.each { |support_file| require support_file }
|
72
|
+
end
|
43
73
|
|
44
|
-
|
74
|
+
def log(str)
|
75
|
+
Sniff.logger.info str
|
76
|
+
end
|
77
|
+
|
78
|
+
def fixtures_path
|
79
|
+
@fixtures_path ||= File.join(test_support_path, 'db', 'fixtures')
|
80
|
+
end
|
45
81
|
|
46
|
-
|
47
|
-
|
48
|
-
|
82
|
+
# Connect to the database and set up an ActiveRecord logger
|
83
|
+
def connect
|
84
|
+
ActiveRecord::Base.logger = Sniff.logger
|
85
|
+
Earth.connect
|
86
|
+
end
|
87
|
+
|
88
|
+
def emitter_class
|
89
|
+
return @emitter_class unless @emitter_class.nil?
|
90
|
+
record_class_path = Dir.glob(File.join(test_support_path, '*_record.rb')).first
|
91
|
+
if record_class_path
|
92
|
+
require record_class_path
|
93
|
+
record_class = File.read(record_class_path)
|
94
|
+
klass = record_class.scan(/class ([^\s]*Record)/).flatten.first
|
95
|
+
@emitter_class = klass.constantize
|
49
96
|
end
|
50
97
|
end
|
51
|
-
end
|
52
98
|
|
53
|
-
|
99
|
+
def migrate!
|
100
|
+
emitter_class.auto_upgrade! if emitter_class
|
101
|
+
end
|
102
|
+
|
103
|
+
def seed!
|
104
|
+
Fixture.load_fixtures fixtures_path
|
105
|
+
end
|
106
|
+
|
107
|
+
def load_supporting_libs
|
108
|
+
require project
|
54
109
|
|
55
|
-
$:.unshift File.
|
56
|
-
|
110
|
+
$:.unshift File.join(root, 'lib')
|
111
|
+
Dir[File.join(root, 'lib', 'test_support', '*.rb')].each do |lib|
|
112
|
+
log "Loading #{lib}"
|
113
|
+
require lib
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
data/lib/sniff/fixture.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'csv'
|
2
2
|
|
3
|
-
|
3
|
+
class Sniff
|
4
4
|
module Fixture
|
5
5
|
extend self
|
6
6
|
|
@@ -11,9 +11,7 @@ module Sniff
|
|
11
11
|
next unless Object.const_defined?(model_name)
|
12
12
|
|
13
13
|
model = model_name.constantize
|
14
|
-
model.
|
15
|
-
model.delete_all # always import from scratch
|
16
|
-
ActiveRecord::Base.logger.info "Loading fixture #{fixture_file}"
|
14
|
+
model.delete_all
|
17
15
|
CSV.foreach(fixture_file, :headers => true) do |row|
|
18
16
|
ActiveRecord::Base.connection.insert_fixture(row, model.table_name) rescue ActiveRecord::RecordNotUnique
|
19
17
|
end
|
data/lib/sniff/rake_tasks.rb
CHANGED
@@ -2,8 +2,9 @@ require 'rake'
|
|
2
2
|
require 'rake/clean'
|
3
3
|
require 'rdoc/task'
|
4
4
|
require 'rake/tasklib'
|
5
|
+
require 'earth'
|
5
6
|
|
6
|
-
|
7
|
+
class Sniff
|
7
8
|
class RakeTasks
|
8
9
|
include Rake::DSL
|
9
10
|
|
@@ -11,10 +12,9 @@ module Sniff
|
|
11
12
|
new(&blk).define_tasks
|
12
13
|
end
|
13
14
|
|
14
|
-
attr_accessor :
|
15
|
+
attr_accessor :cucumber, :rspec, :coverage, :rocco, :bueller, :watchr
|
15
16
|
|
16
17
|
def initialize
|
17
|
-
self.earth_domains = :all
|
18
18
|
self.cucumber = true
|
19
19
|
self.rspec = false
|
20
20
|
self.coverage = true
|
@@ -58,8 +58,8 @@ module Sniff
|
|
58
58
|
|
59
59
|
task :console do
|
60
60
|
require 'sniff'
|
61
|
-
|
62
|
-
|
61
|
+
sniff = Sniff.new Dir.pwd
|
62
|
+
sniff.connect
|
63
63
|
|
64
64
|
require 'irb'
|
65
65
|
ARGV.clear
|
@@ -225,6 +225,25 @@ module Sniff
|
|
225
225
|
end
|
226
226
|
end
|
227
227
|
end
|
228
|
+
|
229
|
+
require 'sniff'
|
230
|
+
sniff = Sniff.new Dir.pwd
|
231
|
+
namespace :sniff do
|
232
|
+
task :init do
|
233
|
+
sniff.connect
|
234
|
+
end
|
235
|
+
task :migrate => :init do
|
236
|
+
sniff.migrate!
|
237
|
+
end
|
238
|
+
task :seed => :init do
|
239
|
+
sniff.seed!
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
require 'earth/tasks'
|
244
|
+
Earth::Tasks.new
|
245
|
+
task 'db:migrate' => 'sniff:migrate'
|
246
|
+
task 'db:seed' => 'sniff:seed'
|
228
247
|
end
|
229
248
|
end
|
230
249
|
end
|
data/lib/sniff/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "0.
|
1
|
+
class Sniff
|
2
|
+
VERSION = "1.0.0"
|
3
3
|
end
|
@@ -9,18 +9,20 @@ def bless_characteristics(characteristics)
|
|
9
9
|
end
|
10
10
|
|
11
11
|
When /^the "(.*)" committee reports$/ do |committee_name|
|
12
|
-
@
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
if @characteristics[committee_name.to_sym].nil?
|
13
|
+
@expectations.map(&:call)
|
14
|
+
@decision ||= @activity.decisions.values.first
|
15
|
+
@committee = @decision.committees.find { |c| c.name.to_s == committee_name }
|
16
|
+
args = [bless_characteristics(@characteristics)]
|
17
|
+
if @timeframe
|
18
|
+
args << [@timeframe]
|
19
|
+
else
|
20
|
+
args << []
|
21
|
+
end
|
22
|
+
@report = @committee.report *args
|
23
|
+
result = @report.try(:conclusion)
|
24
|
+
@characteristics[committee_name.to_sym] = result unless result.nil?
|
20
25
|
end
|
21
|
-
@report = @committee.report *args
|
22
|
-
result = @report.try(:conclusion)
|
23
|
-
@characteristics[committee_name.to_sym] = result unless result.nil?
|
24
26
|
end
|
25
27
|
|
26
28
|
Then /^then a report should exist for the committee$/ do
|
@@ -11,7 +11,7 @@ describe Sniff::RakeTasks do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
let(:tasks) { Sniff::RakeTask.new }
|
14
|
-
let(:emitter_path) { File.expand_path '../../../',
|
14
|
+
let(:emitter_path) { File.expand_path '../../../', __FILE__ }
|
15
15
|
let(:rakefile) do
|
16
16
|
rakefile = <<-RAKEFILE
|
17
17
|
Encoding.default_external = Encoding.find 'UTF-8'
|
data/spec/sniff_spec.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'earth'
|
4
|
+
require 'earth/locality/petroleum_administration_for_defense_district'
|
5
|
+
|
6
|
+
describe Sniff do
|
7
|
+
let(:dirigible_path) { File.expand_path '../fixtures/dirigible', __FILE__ }
|
8
|
+
let(:sniff) do
|
9
|
+
sniff = Sniff.new(dirigible_path, :fixtures_path => dirigible_path + '/lib/test_support/db/fixtures', :project => 'sniff')
|
10
|
+
sniff.connect
|
11
|
+
sniff
|
12
|
+
end
|
13
|
+
|
14
|
+
before :all do
|
15
|
+
$:.unshift File.join(dirigible_path, 'lib')
|
16
|
+
require File.join('dirigible')
|
17
|
+
DataMiner.logger = Logger.new $stdout
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '.path' do
|
21
|
+
it 'returns a path relative to sniff root' do
|
22
|
+
Sniff.stub!(:root).and_return File.join('/path','to','my','gems','sniff')
|
23
|
+
Sniff.path('lib','sniff','stuff.rb').split(/[\/\\]/).
|
24
|
+
should == ['', 'path','to','my','gems','sniff','lib','sniff','stuff.rb']
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#migrate!' do
|
29
|
+
it 'loads a schema for the emitter record' do
|
30
|
+
sniff.migrate!
|
31
|
+
require File.join(dirigible_path, 'features', 'support', 'dirigible_record')
|
32
|
+
DirigibleRecord.table_exists?.should be_true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
describe '#seed!' do
|
36
|
+
it 'loads fixtures' do
|
37
|
+
sniff.seed!
|
38
|
+
PetroleumAdministrationForDefenseDistrict.count.should == 7
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
data/spec/spec_helper.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sniff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-03 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &2173464040 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2173464040
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: aaronh-chronic
|
27
|
-
requirement: &
|
27
|
+
requirement: &2173463580 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.3.9
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2173463580
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: bueller
|
38
|
-
requirement: &
|
38
|
+
requirement: &2173463120 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.0.5
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2173463120
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: active_record_inline_schema
|
49
|
-
requirement: &
|
49
|
+
requirement: &2173462740 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,21 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2173462740
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: conversions
|
60
|
+
requirement: &2173462120 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2173462120
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: cucumber
|
60
|
-
requirement: &
|
71
|
+
requirement: &2173461700 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,21 +76,32 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :runtime
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *2173461700
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: earth
|
71
|
-
requirement: &
|
82
|
+
requirement: &2173461200 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 1.0.0
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *2173461200
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: mysql2
|
93
|
+
requirement: &2173460780 !ruby/object:Gem::Requirement
|
72
94
|
none: false
|
73
95
|
requirements:
|
74
96
|
- - ! '>='
|
75
97
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0
|
98
|
+
version: '0'
|
77
99
|
type: :runtime
|
78
100
|
prerelease: false
|
79
|
-
version_requirements: *
|
101
|
+
version_requirements: *2173460780
|
80
102
|
- !ruby/object:Gem::Dependency
|
81
103
|
name: rake
|
82
|
-
requirement: &
|
104
|
+
requirement: &2173460240 !ruby/object:Gem::Requirement
|
83
105
|
none: false
|
84
106
|
requirements:
|
85
107
|
- - ! '>='
|
@@ -87,10 +109,10 @@ dependencies:
|
|
87
109
|
version: 0.9.0
|
88
110
|
type: :runtime
|
89
111
|
prerelease: false
|
90
|
-
version_requirements: *
|
112
|
+
version_requirements: *2173460240
|
91
113
|
- !ruby/object:Gem::Dependency
|
92
114
|
name: simplecov
|
93
|
-
requirement: &
|
115
|
+
requirement: &2173459660 !ruby/object:Gem::Requirement
|
94
116
|
none: false
|
95
117
|
requirements:
|
96
118
|
- - ! '>='
|
@@ -98,10 +120,10 @@ dependencies:
|
|
98
120
|
version: '0'
|
99
121
|
type: :runtime
|
100
122
|
prerelease: false
|
101
|
-
version_requirements: *
|
123
|
+
version_requirements: *2173459660
|
102
124
|
- !ruby/object:Gem::Dependency
|
103
125
|
name: rdoc
|
104
|
-
requirement: &
|
126
|
+
requirement: &2173459200 !ruby/object:Gem::Requirement
|
105
127
|
none: false
|
106
128
|
requirements:
|
107
129
|
- - ! '>='
|
@@ -109,10 +131,10 @@ dependencies:
|
|
109
131
|
version: '0'
|
110
132
|
type: :runtime
|
111
133
|
prerelease: false
|
112
|
-
version_requirements: *
|
134
|
+
version_requirements: *2173459200
|
113
135
|
- !ruby/object:Gem::Dependency
|
114
136
|
name: dkastner-rocco
|
115
|
-
requirement: &
|
137
|
+
requirement: &2173458780 !ruby/object:Gem::Requirement
|
116
138
|
none: false
|
117
139
|
requirements:
|
118
140
|
- - ! '>='
|
@@ -120,10 +142,10 @@ dependencies:
|
|
120
142
|
version: '0'
|
121
143
|
type: :runtime
|
122
144
|
prerelease: false
|
123
|
-
version_requirements: *
|
145
|
+
version_requirements: *2173458780
|
124
146
|
- !ruby/object:Gem::Dependency
|
125
147
|
name: rspec
|
126
|
-
requirement: &
|
148
|
+
requirement: &2173458200 !ruby/object:Gem::Requirement
|
127
149
|
none: false
|
128
150
|
requirements:
|
129
151
|
- - ~>
|
@@ -131,10 +153,10 @@ dependencies:
|
|
131
153
|
version: '2'
|
132
154
|
type: :runtime
|
133
155
|
prerelease: false
|
134
|
-
version_requirements: *
|
156
|
+
version_requirements: *2173458200
|
135
157
|
- !ruby/object:Gem::Dependency
|
136
158
|
name: simplecov
|
137
|
-
requirement: &
|
159
|
+
requirement: &2173457700 !ruby/object:Gem::Requirement
|
138
160
|
none: false
|
139
161
|
requirements:
|
140
162
|
- - ! '>='
|
@@ -142,10 +164,10 @@ dependencies:
|
|
142
164
|
version: '0'
|
143
165
|
type: :runtime
|
144
166
|
prerelease: false
|
145
|
-
version_requirements: *
|
167
|
+
version_requirements: *2173457700
|
146
168
|
- !ruby/object:Gem::Dependency
|
147
169
|
name: timecop
|
148
|
-
requirement: &
|
170
|
+
requirement: &2173457240 !ruby/object:Gem::Requirement
|
149
171
|
none: false
|
150
172
|
requirements:
|
151
173
|
- - ! '>='
|
@@ -153,10 +175,10 @@ dependencies:
|
|
153
175
|
version: '0'
|
154
176
|
type: :runtime
|
155
177
|
prerelease: false
|
156
|
-
version_requirements: *
|
178
|
+
version_requirements: *2173457240
|
157
179
|
- !ruby/object:Gem::Dependency
|
158
180
|
name: timeframe
|
159
|
-
requirement: &
|
181
|
+
requirement: &2173456580 !ruby/object:Gem::Requirement
|
160
182
|
none: false
|
161
183
|
requirements:
|
162
184
|
- - ! '>='
|
@@ -164,10 +186,10 @@ dependencies:
|
|
164
186
|
version: 0.0.8
|
165
187
|
type: :runtime
|
166
188
|
prerelease: false
|
167
|
-
version_requirements: *
|
189
|
+
version_requirements: *2173456580
|
168
190
|
- !ruby/object:Gem::Dependency
|
169
191
|
name: watchr
|
170
|
-
requirement: &
|
192
|
+
requirement: &2173456080 !ruby/object:Gem::Requirement
|
171
193
|
none: false
|
172
194
|
requirements:
|
173
195
|
- - ! '>='
|
@@ -175,10 +197,10 @@ dependencies:
|
|
175
197
|
version: '0'
|
176
198
|
type: :runtime
|
177
199
|
prerelease: false
|
178
|
-
version_requirements: *
|
200
|
+
version_requirements: *2173456080
|
179
201
|
- !ruby/object:Gem::Dependency
|
180
202
|
name: sandbox
|
181
|
-
requirement: &
|
203
|
+
requirement: &2173455620 !ruby/object:Gem::Requirement
|
182
204
|
none: false
|
183
205
|
requirements:
|
184
206
|
- - ! '>='
|
@@ -186,29 +208,18 @@ dependencies:
|
|
186
208
|
version: '0'
|
187
209
|
type: :development
|
188
210
|
prerelease: false
|
189
|
-
version_requirements: *
|
211
|
+
version_requirements: *2173455620
|
190
212
|
- !ruby/object:Gem::Dependency
|
191
213
|
name: emitter
|
192
|
-
requirement: &
|
214
|
+
requirement: &2173454980 !ruby/object:Gem::Requirement
|
193
215
|
none: false
|
194
216
|
requirements:
|
195
|
-
- -
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
version: 0.5.0
|
198
|
-
type: :development
|
199
|
-
prerelease: false
|
200
|
-
version_requirements: *2158086700
|
201
|
-
- !ruby/object:Gem::Dependency
|
202
|
-
name: sqlite3-ruby
|
203
|
-
requirement: &2158086280 !ruby/object:Gem::Requirement
|
204
|
-
none: false
|
205
|
-
requirements:
|
206
|
-
- - ! '>='
|
217
|
+
- - ~>
|
207
218
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
219
|
+
version: 0.12.0
|
209
220
|
type: :development
|
210
221
|
prerelease: false
|
211
|
-
version_requirements: *
|
222
|
+
version_requirements: *2173454980
|
212
223
|
description: Provides development and test environment for Brighter Planet's impact
|
213
224
|
model libraries.
|
214
225
|
email: derek.kastner@brighterplanet.com
|
@@ -217,7 +228,6 @@ extensions: []
|
|
217
228
|
extra_rdoc_files:
|
218
229
|
- README.markdown
|
219
230
|
files:
|
220
|
-
- lib/sniff/database.rb
|
221
231
|
- lib/sniff/fixture.rb
|
222
232
|
- lib/sniff/leap_ext.rb
|
223
233
|
- lib/sniff/rake_tasks.rb
|
@@ -247,11 +257,10 @@ files:
|
|
247
257
|
- spec/fixtures/dirigible/lib/dirigible/summarization.rb
|
248
258
|
- spec/fixtures/dirigible/lib/dirigible.rb
|
249
259
|
- spec/fixtures/dirigible/lib/test_support/db/fixtures/petroleum_administration_for_defense_districts.csv
|
250
|
-
- spec/
|
251
|
-
- spec/
|
252
|
-
- spec/lib/sniff_spec.rb
|
253
|
-
- spec/lib/test_support/cucumber/support/values_spec.rb
|
260
|
+
- spec/sniff/rake_tasks_spec.rb
|
261
|
+
- spec/sniff_spec.rb
|
254
262
|
- spec/spec_helper.rb
|
263
|
+
- spec/test_support/cucumber/support/values_spec.rb
|
255
264
|
homepage: https://github.com/brighterplanet/sniff
|
256
265
|
licenses: []
|
257
266
|
post_install_message:
|
@@ -267,7 +276,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
267
276
|
version: '0'
|
268
277
|
segments:
|
269
278
|
- 0
|
270
|
-
hash:
|
279
|
+
hash: 407112005439033128
|
271
280
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
272
281
|
none: false
|
273
282
|
requirements:
|
@@ -299,8 +308,7 @@ test_files:
|
|
299
308
|
- spec/fixtures/dirigible/lib/dirigible/summarization.rb
|
300
309
|
- spec/fixtures/dirigible/lib/dirigible.rb
|
301
310
|
- spec/fixtures/dirigible/lib/test_support/db/fixtures/petroleum_administration_for_defense_districts.csv
|
302
|
-
- spec/
|
303
|
-
- spec/
|
304
|
-
- spec/lib/sniff_spec.rb
|
305
|
-
- spec/lib/test_support/cucumber/support/values_spec.rb
|
311
|
+
- spec/sniff/rake_tasks_spec.rb
|
312
|
+
- spec/sniff_spec.rb
|
306
313
|
- spec/spec_helper.rb
|
314
|
+
- spec/test_support/cucumber/support/values_spec.rb
|
data/lib/sniff/database.rb
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
require 'active_support'
|
2
|
-
|
3
|
-
require 'sniff/fixture'
|
4
|
-
|
5
|
-
module Sniff
|
6
|
-
class Database
|
7
|
-
class << self
|
8
|
-
# Initialize a database used for testing emitter gems
|
9
|
-
#
|
10
|
-
# local_root: Root directory of the emitter gem to be tested (path to the repo)
|
11
|
-
# options:
|
12
|
-
# * :earth is the list of domains Earth.init should load (default: none)
|
13
|
-
# * :load_data determines whether fixture data is loaded (default: true)
|
14
|
-
# * :fixtures_path is the path to your gem's fixtures (default: local_root/features/support/db/fixtures)
|
15
|
-
def init(local_root, options = {})
|
16
|
-
db_init options
|
17
|
-
earth_init(options[:earth])
|
18
|
-
|
19
|
-
environments = []
|
20
|
-
environments << init_environment(local_root, options)
|
21
|
-
|
22
|
-
unless local_root == Sniff.root
|
23
|
-
fixtures_path = File.join(Sniff.root, 'lib', 'test_support', 'db', 'fixtures')
|
24
|
-
environments << init_environment(Sniff.root, :fixtures_path => fixtures_path)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def init_environment(root, options = {})
|
29
|
-
db = new root, options
|
30
|
-
db.init
|
31
|
-
db
|
32
|
-
end
|
33
|
-
|
34
|
-
# Connect to the database and set up an ActiveRecord logger
|
35
|
-
def db_init(options)
|
36
|
-
options = options.symbolize_keys
|
37
|
-
options[:adapter] ||= options.delete(:db_adapter) || 'sqlite3'
|
38
|
-
options[:database] ||= options.delete(:db_name) || ':memory:'
|
39
|
-
ActiveRecord::Base.logger = Sniff.logger
|
40
|
-
ActiveRecord::Base.establish_connection options
|
41
|
-
end
|
42
|
-
|
43
|
-
# Initialize Earth, but don't load schemas - otherwise get blank tables
|
44
|
-
# for any resources in a loaded domain that don't have a fixture
|
45
|
-
def earth_init(domains)
|
46
|
-
domains ||= :none
|
47
|
-
domains = [domains] unless domains.is_a? Array
|
48
|
-
args = domains
|
49
|
-
args << {:apply_schemas => false}
|
50
|
-
|
51
|
-
Earth.init *args
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
attr_accessor :root, :test_support_path, :fixtures_path,
|
56
|
-
:load_data, :logger
|
57
|
-
|
58
|
-
def initialize(root, options)
|
59
|
-
self.root = root
|
60
|
-
self.test_support_path = File.join(root, 'features', 'support')
|
61
|
-
self.load_data = options[:load_data]
|
62
|
-
self.fixtures_path = options[:fixtures_path]
|
63
|
-
self.logger = Sniff.logger
|
64
|
-
end
|
65
|
-
|
66
|
-
def log(str)
|
67
|
-
logger.info str
|
68
|
-
end
|
69
|
-
|
70
|
-
def load_data?
|
71
|
-
@load_data = true if @load_data.nil?
|
72
|
-
@load_data
|
73
|
-
end
|
74
|
-
|
75
|
-
def fixtures_path
|
76
|
-
@fixtures_path ||= File.join(test_support_path, 'db', 'fixtures')
|
77
|
-
end
|
78
|
-
|
79
|
-
def init
|
80
|
-
load_supporting_libs
|
81
|
-
create_emitter_table
|
82
|
-
Fixture.load_fixtures fixtures_path
|
83
|
-
end
|
84
|
-
|
85
|
-
def emitter_class
|
86
|
-
return @emitter_class unless @emitter_class.nil?
|
87
|
-
record_class_path = Dir.glob(File.join(test_support_path, '*_record.rb')).first
|
88
|
-
if record_class_path
|
89
|
-
require record_class_path
|
90
|
-
record_class = File.read(record_class_path)
|
91
|
-
klass = record_class.scan(/class ([^\s]*Record)/).flatten.first
|
92
|
-
@emitter_class = klass.constantize
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def create_emitter_table
|
97
|
-
emitter_class.auto_upgrade! if emitter_class
|
98
|
-
end
|
99
|
-
|
100
|
-
def populate_fixtures
|
101
|
-
Fixture.load_fixtures fixtures_path
|
102
|
-
end
|
103
|
-
|
104
|
-
def load_supporting_libs
|
105
|
-
$:.unshift File.join(root, 'lib')
|
106
|
-
Dir[File.join(root, 'lib', 'test_support', '*.rb')].each do |lib|
|
107
|
-
log "Loading #{lib}"
|
108
|
-
require lib
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Sniff::Database do
|
4
|
-
describe '#connect' do
|
5
|
-
let(:dirigible_path) { File.expand_path '../../fixtures/dirigible', File.dirname(__FILE__) }
|
6
|
-
|
7
|
-
before :all do
|
8
|
-
$:.unshift File.join(dirigible_path, 'lib')
|
9
|
-
require File.join('dirigible')
|
10
|
-
DataMiner.logger = Logger.new $stdout
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'should load the air domain' do
|
14
|
-
Sniff.init(dirigible_path, :earth => :air, :apply_schemas => true)
|
15
|
-
Airport.count.should == 0 # we don't have fixtures for this here
|
16
|
-
expect { ZipCode.count }.should raise_error
|
17
|
-
expect { AutomobileFuelType.count }.should raise_error
|
18
|
-
end
|
19
|
-
it 'should load data for all domains' do
|
20
|
-
puts dirigible_path + '/lib/test_support/db/fixtures'
|
21
|
-
Sniff.init(dirigible_path, :earth => :all, :apply_schemas => true,
|
22
|
-
:fixtures_path => dirigible_path + '/lib/test_support/db/fixtures')
|
23
|
-
PetroleumAdministrationForDefenseDistrict.count.should == 7
|
24
|
-
end
|
25
|
-
it 'should load a schema for the emitter record' do
|
26
|
-
Sniff.init(dirigible_path, :apply_schemas => true)
|
27
|
-
require File.join(dirigible_path, 'features', 'support', 'dirigible_record')
|
28
|
-
DirigibleRecord.table_exists?.should be_true
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
data/spec/lib/sniff_spec.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Sniff do
|
4
|
-
describe '.path' do
|
5
|
-
it 'returns a path relative to sniff root' do
|
6
|
-
Sniff.stub!(:root).and_return File.join('/path','to','my','gems','sniff')
|
7
|
-
Sniff.path('lib','sniff','stuff.rb').split(/[\/\\]/).
|
8
|
-
should == ['', 'path','to','my','gems','sniff','lib','sniff','stuff.rb']
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|