slacker 1.0.6 → 1.0.7
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/Gemfile.lock +28 -28
- data/bin/slacker +29 -29
- data/bin/slacker_new +34 -34
- data/lib/slacker.rb +7 -2
- data/lib/slacker/application.rb +2 -2
- data/lib/slacker/sql_preprocessor.rb +24 -0
- data/lib/slacker/version.rb +3 -3
- data/lib/slacker_new/project/data/sample_1/my_table_expected_power_results.csv +11 -11
- data/lib/slacker_new/project/data/sample_1/my_table_initial_data.csv +11 -11
- data/lib/slacker_new/project/data/sample_1/numbers_expected_output.csv +3 -3
- data/lib/slacker_new/project/database.yml +9 -9
- data/lib/slacker_new/project/lib/helpers/my_helper.rb +1 -1
- data/lib/slacker_new/project/spec/sample_1.rb +66 -66
- data/lib/slacker_new/project/sql/sample_1/sysobjects_with_params.sql.erb +1 -1
- data/slacker.gemspec +26 -26
- data/spec/rspec_ext_spec.rb +87 -87
- data/spec/test_files/matcher/test_1.csv +3 -3
- data/spec/test_files/test_slacker_project/data/test_1.csv +3 -3
- data/spec/test_files/test_slacker_project/sql/no_params.sql.erb +2 -2
- metadata +105 -96
- data/lib/slacker_new/project/debug/failed_examples/example_001.sql +0 -0
- data/lib/slacker_new/project/debug/passed_examples/example_001.sql +0 -0
data/Gemfile.lock
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
slacker (1.0.
|
5
|
-
bundler (~> 1.0.15)
|
6
|
-
rspec (~> 2.5.0)
|
7
|
-
ruby-odbc (= 0.99994)
|
8
|
-
|
9
|
-
GEM
|
10
|
-
remote: http://rubygems.org/
|
11
|
-
specs:
|
12
|
-
diff-lcs (1.1.3)
|
13
|
-
rspec (2.5.0)
|
14
|
-
rspec-core (~> 2.5.0)
|
15
|
-
rspec-expectations (~> 2.5.0)
|
16
|
-
rspec-mocks (~> 2.5.0)
|
17
|
-
rspec-core (2.5.2)
|
18
|
-
rspec-expectations (2.5.0)
|
19
|
-
diff-lcs (~> 1.1.2)
|
20
|
-
rspec-mocks (2.5.0)
|
21
|
-
ruby-odbc (0.99994)
|
22
|
-
|
23
|
-
PLATFORMS
|
24
|
-
ruby
|
25
|
-
x86-mingw32
|
26
|
-
|
27
|
-
DEPENDENCIES
|
28
|
-
slacker!
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
slacker (1.0.7)
|
5
|
+
bundler (~> 1.0.15)
|
6
|
+
rspec (~> 2.5.0)
|
7
|
+
ruby-odbc (= 0.99994)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: http://rubygems.org/
|
11
|
+
specs:
|
12
|
+
diff-lcs (1.1.3)
|
13
|
+
rspec (2.5.0)
|
14
|
+
rspec-core (~> 2.5.0)
|
15
|
+
rspec-expectations (~> 2.5.0)
|
16
|
+
rspec-mocks (~> 2.5.0)
|
17
|
+
rspec-core (2.5.2)
|
18
|
+
rspec-expectations (2.5.0)
|
19
|
+
diff-lcs (~> 1.1.2)
|
20
|
+
rspec-mocks (2.5.0)
|
21
|
+
ruby-odbc (0.99994)
|
22
|
+
|
23
|
+
PLATFORMS
|
24
|
+
ruby
|
25
|
+
x86-mingw32
|
26
|
+
|
27
|
+
DEPENDENCIES
|
28
|
+
slacker!
|
data/bin/slacker
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'bundler/setup'
|
3
|
-
require 'slacker'
|
4
|
-
require 'yaml'
|
5
|
-
require 'slacker/command_line_formatter'
|
6
|
-
|
7
|
-
def db_config_from_file(file_path)
|
8
|
-
dbconfig = nil
|
9
|
-
File.open(file_path) do |dbconfig_file|
|
10
|
-
dbconfig = YAML::load(dbconfig_file)
|
11
|
-
end
|
12
|
-
dbconfig
|
13
|
-
end
|
14
|
-
|
15
|
-
# Preset the application to run on the console
|
16
|
-
Slacker.configure do |config|
|
17
|
-
config.console_enabled = true
|
18
|
-
config.formatter = Slacker::CommandLineFormatter.new($stdout)
|
19
|
-
|
20
|
-
# Setup the target connection based on the contents in database.yml
|
21
|
-
db_config = db_config_from_file(config.expand_path('database.yml'))
|
22
|
-
|
23
|
-
config.db_server = db_config["server"]
|
24
|
-
config.db_name = db_config["database"]
|
25
|
-
config.db_user = db_config["user"]
|
26
|
-
config.db_password = db_config["password"]
|
27
|
-
end
|
28
|
-
|
29
|
-
Slacker.application.run
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'slacker'
|
4
|
+
require 'yaml'
|
5
|
+
require 'slacker/command_line_formatter'
|
6
|
+
|
7
|
+
def db_config_from_file(file_path)
|
8
|
+
dbconfig = nil
|
9
|
+
File.open(file_path) do |dbconfig_file|
|
10
|
+
dbconfig = YAML::load(dbconfig_file)
|
11
|
+
end
|
12
|
+
dbconfig
|
13
|
+
end
|
14
|
+
|
15
|
+
# Preset the application to run on the console
|
16
|
+
Slacker.configure do |config|
|
17
|
+
config.console_enabled = true
|
18
|
+
config.formatter = Slacker::CommandLineFormatter.new($stdout)
|
19
|
+
|
20
|
+
# Setup the target connection based on the contents in database.yml
|
21
|
+
db_config = db_config_from_file(config.expand_path('database.yml'))
|
22
|
+
|
23
|
+
config.db_server = db_config["server"]
|
24
|
+
config.db_name = db_config["database"]
|
25
|
+
config.db_user = db_config["user"]
|
26
|
+
config.db_password = db_config["password"]
|
27
|
+
end
|
28
|
+
|
29
|
+
Slacker.application.run
|
data/bin/slacker_new
CHANGED
@@ -1,34 +1,34 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'bundler/setup'
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
def usage
|
6
|
-
<<END
|
7
|
-
Use slacker_new to create a new Slacker project:
|
8
|
-
|
9
|
-
slacker_new <project_name>
|
10
|
-
END
|
11
|
-
end
|
12
|
-
|
13
|
-
def project_template_path
|
14
|
-
File.expand_path("#{File.dirname(__FILE__)}/../lib/slacker_new/project")
|
15
|
-
end
|
16
|
-
|
17
|
-
def slacker_new(project_name)
|
18
|
-
files = Dir.glob("#{project_template_path}/**")
|
19
|
-
FileUtils.mkdir(project_name) unless File.exist?(project_name)
|
20
|
-
FileUtils.cp_r(files, project_name)
|
21
|
-
end
|
22
|
-
|
23
|
-
def project_template_files(project_name)
|
24
|
-
files = Dir.glob("#{project_template_path}/**/*").map{|file| file.gsub(/^#{Regexp.escape(project_template_path)}\//, "./#{project_name}/")}
|
25
|
-
end
|
26
|
-
|
27
|
-
if ARGV.count != 1
|
28
|
-
puts usage
|
29
|
-
else
|
30
|
-
project_name = ARGV[0]
|
31
|
-
puts "Creating project #{project_name}..."
|
32
|
-
slacker_new(project_name)
|
33
|
-
puts project_template_files(project_name)
|
34
|
-
end
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
def usage
|
6
|
+
<<END
|
7
|
+
Use slacker_new to create a new Slacker project:
|
8
|
+
|
9
|
+
slacker_new <project_name>
|
10
|
+
END
|
11
|
+
end
|
12
|
+
|
13
|
+
def project_template_path
|
14
|
+
File.expand_path("#{File.dirname(__FILE__)}/../lib/slacker_new/project")
|
15
|
+
end
|
16
|
+
|
17
|
+
def slacker_new(project_name)
|
18
|
+
files = Dir.glob("#{project_template_path}/**")
|
19
|
+
FileUtils.mkdir(project_name) unless File.exist?(project_name)
|
20
|
+
FileUtils.cp_r(files, project_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def project_template_files(project_name)
|
24
|
+
files = Dir.glob("#{project_template_path}/**/*").map{|file| file.gsub(/^#{Regexp.escape(project_template_path)}\//, "./#{project_name}/")}
|
25
|
+
end
|
26
|
+
|
27
|
+
if ARGV.count != 1
|
28
|
+
puts usage
|
29
|
+
else
|
30
|
+
project_name = ARGV[0]
|
31
|
+
puts "Creating project #{project_name}..."
|
32
|
+
slacker_new(project_name)
|
33
|
+
puts project_template_files(project_name)
|
34
|
+
end
|
data/lib/slacker.rb
CHANGED
@@ -4,6 +4,7 @@ require 'slacker/application'
|
|
4
4
|
require 'slacker/configuration'
|
5
5
|
require 'slacker/sql'
|
6
6
|
require 'slacker/formatter'
|
7
|
+
require 'slacker/sql_preprocessor'
|
7
8
|
require 'csv'
|
8
9
|
require 'erb'
|
9
10
|
|
@@ -119,8 +120,12 @@ module Slacker
|
|
119
120
|
# Run a SQL query against an example
|
120
121
|
def query_script(example, sql, log_name=nil)
|
121
122
|
log_name ||= 'Run SQL Script'
|
122
|
-
|
123
|
-
|
123
|
+
|
124
|
+
debuggable_sql = SqlPreprocessor.debuggable_sql(sql)
|
125
|
+
executable_sql = SqlPreprocessor.executable_sql(sql, example)
|
126
|
+
|
127
|
+
example.metadata[:sql] += ((example.metadata[:sql] == '' ? '' : "\n\n") + "-- #{log_name.split(/\r\n|\n/).join("\n-- ")}\n#{debuggable_sql}")
|
128
|
+
application.query_script(executable_sql)
|
124
129
|
end
|
125
130
|
|
126
131
|
def load_csv(example, csv, table_name, log_name = nil)
|
data/lib/slacker/application.rb
CHANGED
@@ -107,9 +107,9 @@ EOF
|
|
107
107
|
require file_name
|
108
108
|
module_class = Slacker::StringHelper.constantize(Slacker::StringHelper.camelize(file_name.gsub(/\.rb$/,'')))
|
109
109
|
RSpec.configure do |config|
|
110
|
-
config.include(module_class)
|
110
|
+
config.include(module_class )
|
111
111
|
end
|
112
|
-
Slacker.mixin_module(module_class)
|
112
|
+
Slacker.mixin_module(module_class )
|
113
113
|
end
|
114
114
|
end
|
115
115
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Slacker
|
2
|
+
module SqlPreprocessor
|
3
|
+
IVAR_REX = /%{\s*(.*?)\s*}/
|
4
|
+
|
5
|
+
def self.executable_sql(sql, example)
|
6
|
+
# Replace all appearances of %{} with the values of the corresponding example instance variables
|
7
|
+
sql.gsub(IVAR_REX) do
|
8
|
+
ivar = $1.to_sym
|
9
|
+
instance = example.example_group_instance
|
10
|
+
|
11
|
+
if instance.instance_variable_defined?(ivar)
|
12
|
+
instance.instance_variable_get(ivar).to_s
|
13
|
+
else
|
14
|
+
raise "Example is missing instance variable #{ivar}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.debuggable_sql(sql)
|
20
|
+
# Replace all appearances of %{} with the names of the sql variables
|
21
|
+
sql.gsub(IVAR_REX) {$1}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/slacker/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module Slacker
|
2
|
-
VERSION = "1.0.
|
3
|
-
end
|
1
|
+
module Slacker
|
2
|
+
VERSION = "1.0.7"
|
3
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
"x","y","power"
|
2
|
-
"2","1","2"
|
3
|
-
"3","2","9"
|
4
|
-
"4","3","64"
|
5
|
-
"5","4","625"
|
6
|
-
"4","2","16"
|
7
|
-
"3","3","27"
|
8
|
-
"2","4","16"
|
9
|
-
"1","5","1"
|
10
|
-
"-1","2","1"
|
11
|
-
"-2","5","-32"
|
1
|
+
"x","y","power"
|
2
|
+
"2","1","2"
|
3
|
+
"3","2","9"
|
4
|
+
"4","3","64"
|
5
|
+
"5","4","625"
|
6
|
+
"4","2","16"
|
7
|
+
"3","3","27"
|
8
|
+
"2","4","16"
|
9
|
+
"1","5","1"
|
10
|
+
"-1","2","1"
|
11
|
+
"-2","5","-32"
|
@@ -1,11 +1,11 @@
|
|
1
|
-
"x","y"
|
2
|
-
2,1
|
3
|
-
3,2
|
4
|
-
4,3
|
5
|
-
5,4
|
6
|
-
4,2
|
7
|
-
3,3
|
8
|
-
2,4
|
9
|
-
1,5
|
10
|
-
-1,2
|
11
|
-
-2,5
|
1
|
+
"x","y"
|
2
|
+
2,1
|
3
|
+
3,2
|
4
|
+
4,3
|
5
|
+
5,4
|
6
|
+
4,2
|
7
|
+
3,3
|
8
|
+
2,4
|
9
|
+
1,5
|
10
|
+
-1,2
|
11
|
+
-2,5
|
@@ -1,3 +1,3 @@
|
|
1
|
-
"p","s"
|
2
|
-
2,34
|
3
|
-
12,44
|
1
|
+
"p","s"
|
2
|
+
2,34
|
3
|
+
12,44
|
@@ -1,9 +1,9 @@
|
|
1
|
-
# Database connection.
|
2
|
-
# When Slacker is executed, it will attempt to connect to this database.
|
3
|
-
|
4
|
-
# Replace the following with your connection information.
|
5
|
-
# Note that at this point Slacker only works with SQL Server authentication.
|
6
|
-
server: my_server
|
7
|
-
database: my_database
|
8
|
-
user: user_name
|
9
|
-
password: password
|
1
|
+
# Database connection.
|
2
|
+
# When Slacker is executed, it will attempt to connect to this database.
|
3
|
+
|
4
|
+
# Replace the following with your connection information.
|
5
|
+
# Note that at this point Slacker only works with SQL Server authentication.
|
6
|
+
server: my_server
|
7
|
+
database: my_database
|
8
|
+
user: user_name
|
9
|
+
password: password
|
@@ -1,2 +1,2 @@
|
|
1
|
-
module MyHelper
|
1
|
+
module MyHelper
|
2
2
|
end
|
@@ -1,66 +1,66 @@
|
|
1
|
-
# Method "describe" opens up an example group.
|
2
|
-
describe 'My database' do
|
3
|
-
# Simple inline query example.
|
4
|
-
it 'contains system tables' do
|
5
|
-
# Make sure we have at least one system object in the database.
|
6
|
-
query("select * from sysobjects where xtype = 'S';").count.should > 0
|
7
|
-
end
|
8
|
-
|
9
|
-
# The same query, this time using a SQL template stored in file "sql/sample_1/sysobject.sql.erb".
|
10
|
-
it 'contains system tables (take two)' do
|
11
|
-
# Every (*.sql.erb) file in folder "sql" can be called as a method on object "sql".
|
12
|
-
# Subfolders of folder "sql" appear as children of object "sql" with their (*.sql.erb) files automatically available as methods.
|
13
|
-
sql.sample_1.sysobjects.count.should > 0
|
14
|
-
end
|
15
|
-
|
16
|
-
# This time we'll use a parameterized template.
|
17
|
-
it 'contains system tables (take three)' do
|
18
|
-
# Every template can accept parameters; see file "sql/sample_1/sysobject_with_params.sql.erb".
|
19
|
-
sql.sample_1.sysobjects_with_params(:xtype => 'S').count.should > 0
|
20
|
-
end
|
21
|
-
|
22
|
-
# SQL Templates can contain multiple statements and can return multiple resultsets.
|
23
|
-
it 'can play with numbers' do
|
24
|
-
# Note that this time we're calling the template with a block which receives the results as a block parameter.
|
25
|
-
sql.sample_1.play_with_numbers(:x => 2, :y => 12) do |results|
|
26
|
-
# The results object contains an array of all the resultsets generated by the query script.
|
27
|
-
# A resultset contains an array of records. Each record is a hash of field => value pairs.
|
28
|
-
|
29
|
-
# First resultset; First record; Column "product".
|
30
|
-
results[0][0][:product].should == 24
|
31
|
-
|
32
|
-
# A resultset can be matched directly against an array of hashes using method "match".
|
33
|
-
results[1].should match([{:x => 2, :y => 12, :sum => 14}])
|
34
|
-
|
35
|
-
# Or against a CSV file stored in project's "data" folder (see file "data/sample_1/numbers_expected_output.csv").
|
36
|
-
results[2].should match('sample_1/numbers_expected_output.csv')
|
37
|
-
|
38
|
-
# A resultset's values can be matched one-by-one.
|
39
|
-
results[2][0][:p].should == 2
|
40
|
-
results[2][0][:s].should == 34
|
41
|
-
results[2][1][:p].should == 12
|
42
|
-
results[2][1][:s].should == 44
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
# Every "it" (example) is executed in a T-SQL transaction which is rolled back once the example is complete.
|
47
|
-
# No example can ever interfere with the results of another example.
|
48
|
-
#
|
49
|
-
# CSV files can be used to load data directly into a table.
|
50
|
-
# In this example, we will create a table, populate it with data,
|
51
|
-
# calculate the exponentiation of one column based on another column
|
52
|
-
# and verify the results against an expected resultset stored in a CSV file.
|
53
|
-
it 'can play with numbers (take two)' do
|
54
|
-
# Create the table - see file "sql/sample_1/create_my_table.sql.erb".
|
55
|
-
sql.sample_1.create_my_table
|
56
|
-
# We can populate any table with data from the "data" folder by calling method "load_csv".
|
57
|
-
# See file "data/sample_1/my_table_initial_data.csv".
|
58
|
-
load_csv('sample_1/my_table_initial_data.csv', 'MyTable')
|
59
|
-
|
60
|
-
# Now let's test the system scalar function Power.
|
61
|
-
# We will use it in a query expression executed agaings MyTable and we
|
62
|
-
# will compare the results against a CSV file - we should expect them to match.
|
63
|
-
# See files "sql/sample_1/my_table_on_power.sql.erb" and "data/sample_1/my_table_expected_power_results.csv".
|
64
|
-
sql.sample_1.my_table_on_power.should match('sample_1/my_table_expected_power_results.csv')
|
65
|
-
end
|
66
|
-
end
|
1
|
+
# Method "describe" opens up an example group.
|
2
|
+
describe 'My database' do
|
3
|
+
# Simple inline query example.
|
4
|
+
it 'contains system tables' do
|
5
|
+
# Make sure we have at least one system object in the database.
|
6
|
+
query("select * from sysobjects where xtype = 'S';").count.should > 0
|
7
|
+
end
|
8
|
+
|
9
|
+
# The same query, this time using a SQL template stored in file "sql/sample_1/sysobject.sql.erb".
|
10
|
+
it 'contains system tables (take two)' do
|
11
|
+
# Every (*.sql.erb) file in folder "sql" can be called as a method on object "sql".
|
12
|
+
# Subfolders of folder "sql" appear as children of object "sql" with their (*.sql.erb) files automatically available as methods.
|
13
|
+
sql.sample_1.sysobjects.count.should > 0
|
14
|
+
end
|
15
|
+
|
16
|
+
# This time we'll use a parameterized template.
|
17
|
+
it 'contains system tables (take three)' do
|
18
|
+
# Every template can accept parameters; see file "sql/sample_1/sysobject_with_params.sql.erb".
|
19
|
+
sql.sample_1.sysobjects_with_params(:xtype => 'S').count.should > 0
|
20
|
+
end
|
21
|
+
|
22
|
+
# SQL Templates can contain multiple statements and can return multiple resultsets.
|
23
|
+
it 'can play with numbers' do
|
24
|
+
# Note that this time we're calling the template with a block which receives the results as a block parameter.
|
25
|
+
sql.sample_1.play_with_numbers(:x => 2, :y => 12) do |results|
|
26
|
+
# The results object contains an array of all the resultsets generated by the query script.
|
27
|
+
# A resultset contains an array of records. Each record is a hash of field => value pairs.
|
28
|
+
|
29
|
+
# First resultset; First record; Column "product".
|
30
|
+
results[0][0][:product].should == 24
|
31
|
+
|
32
|
+
# A resultset can be matched directly against an array of hashes using method "match".
|
33
|
+
results[1].should match([{:x => 2, :y => 12, :sum => 14}])
|
34
|
+
|
35
|
+
# Or against a CSV file stored in project's "data" folder (see file "data/sample_1/numbers_expected_output.csv").
|
36
|
+
results[2].should match('sample_1/numbers_expected_output.csv')
|
37
|
+
|
38
|
+
# A resultset's values can be matched one-by-one.
|
39
|
+
results[2][0][:p].should == 2
|
40
|
+
results[2][0][:s].should == 34
|
41
|
+
results[2][1][:p].should == 12
|
42
|
+
results[2][1][:s].should == 44
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Every "it" (example) is executed in a T-SQL transaction which is rolled back once the example is complete.
|
47
|
+
# No example can ever interfere with the results of another example.
|
48
|
+
#
|
49
|
+
# CSV files can be used to load data directly into a table.
|
50
|
+
# In this example, we will create a table, populate it with data,
|
51
|
+
# calculate the exponentiation of one column based on another column
|
52
|
+
# and verify the results against an expected resultset stored in a CSV file.
|
53
|
+
it 'can play with numbers (take two)' do
|
54
|
+
# Create the table - see file "sql/sample_1/create_my_table.sql.erb".
|
55
|
+
sql.sample_1.create_my_table
|
56
|
+
# We can populate any table with data from the "data" folder by calling method "load_csv".
|
57
|
+
# See file "data/sample_1/my_table_initial_data.csv".
|
58
|
+
load_csv('sample_1/my_table_initial_data.csv', 'MyTable')
|
59
|
+
|
60
|
+
# Now let's test the system scalar function Power.
|
61
|
+
# We will use it in a query expression executed agaings MyTable and we
|
62
|
+
# will compare the results against a CSV file - we should expect them to match.
|
63
|
+
# See files "sql/sample_1/my_table_on_power.sql.erb" and "data/sample_1/my_table_expected_power_results.csv".
|
64
|
+
sql.sample_1.my_table_on_power.should match('sample_1/my_table_expected_power_results.csv')
|
65
|
+
end
|
66
|
+
end
|
@@ -1,2 +1,2 @@
|
|
1
|
-
<%# Every parameter passed to a SQL template appears in the options hash available to the template %>
|
1
|
+
<%# Every parameter passed to a SQL template appears in the options hash available to the template %>
|
2
2
|
select * from sysobjects where xtype = '<%= options[:xtype] %>';
|
data/slacker.gemspec
CHANGED
@@ -1,26 +1,26 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "slacker/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = "slacker"
|
7
|
-
s.version = Slacker::VERSION
|
8
|
-
s.authors = ["Vassil Kovatchev"]
|
9
|
-
s.email = ["vassil.kovatchev@gmail.com"]
|
10
|
-
s.homepage = "https://github.com/vassilvk/slacker/wiki"
|
11
|
-
s.summary = %q{Behavior Driven Development for SQL Server}
|
12
|
-
s.description = %q{RSpec-based framework for developing automated tests for SQL Server}
|
13
|
-
|
14
|
-
s.rubyforge_project = "slacker"
|
15
|
-
|
16
|
-
s.files = ['README.markdown', 'Rakefile', 'Gemfile', 'slacker.gemspec', 'Gemfile.lock'] + Dir.glob("{bin,lib,spec}/**/*")
|
17
|
-
s.test_files = Dir.glob("spec/**/*")
|
18
|
-
s.executables = ['slacker', 'slacker_new']
|
19
|
-
s.require_paths = ["lib"]
|
20
|
-
|
21
|
-
s.required_ruby_version = '>= 1.9.2'
|
22
|
-
|
23
|
-
s.add_dependency 'bundler', '~> 1.0.15'
|
24
|
-
s.add_dependency 'ruby-odbc', '= 0.99994'
|
25
|
-
s.add_dependency 'rspec', '~> 2.5.0'
|
26
|
-
end
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "slacker/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "slacker"
|
7
|
+
s.version = Slacker::VERSION
|
8
|
+
s.authors = ["Vassil Kovatchev"]
|
9
|
+
s.email = ["vassil.kovatchev@gmail.com"]
|
10
|
+
s.homepage = "https://github.com/vassilvk/slacker/wiki"
|
11
|
+
s.summary = %q{Behavior Driven Development for SQL Server}
|
12
|
+
s.description = %q{RSpec-based framework for developing automated tests for SQL Server}
|
13
|
+
|
14
|
+
s.rubyforge_project = "slacker"
|
15
|
+
|
16
|
+
s.files = ['README.markdown', 'Rakefile', 'Gemfile', 'slacker.gemspec', 'Gemfile.lock'] + Dir.glob("{bin,lib,spec}/**/*")
|
17
|
+
s.test_files = Dir.glob("spec/**/*")
|
18
|
+
s.executables = ['slacker', 'slacker_new']
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.required_ruby_version = '>= 1.9.2'
|
22
|
+
|
23
|
+
s.add_dependency 'bundler', '~> 1.0.15'
|
24
|
+
s.add_dependency 'ruby-odbc', '= 0.99994'
|
25
|
+
s.add_dependency 'rspec', '~> 2.5.0'
|
26
|
+
end
|
data/spec/rspec_ext_spec.rb
CHANGED
@@ -1,88 +1,88 @@
|
|
1
|
-
require 'slacker'
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'ostruct'
|
4
|
-
|
5
|
-
class RSpecSlackerHost
|
6
|
-
include Slacker::RSpecExt
|
7
|
-
end
|
8
|
-
|
9
|
-
describe Slacker::RSpecExt do
|
10
|
-
before(:each) do
|
11
|
-
Slacker::configure do |config|
|
12
|
-
config.base_dir = SpecHelper.expand_test_files_path('test_slacker_project')
|
13
|
-
end
|
14
|
-
|
15
|
-
example = OpenStruct.new
|
16
|
-
example.metadata = {:sql => '', :example_group => {:file_path => SpecHelper.expand_test_files_path('test_slacker_project/spec/example_xyz.rb')}}
|
17
|
-
|
18
|
-
@instance = RSpecSlackerHost.new
|
19
|
-
@instance.stub(:example).and_return(example)
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'responds to query' do
|
23
|
-
@instance.should respond_to(:query)
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'responds to match' do
|
27
|
-
@instance.should respond_to(:match)
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'responds to csv' do
|
31
|
-
@instance.should respond_to(:csv)
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'responds to load_csv' do
|
35
|
-
@instance.should respond_to(:load_csv)
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'responds to load_csv' do
|
39
|
-
@instance.should respond_to(:touch_csv)
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'responds to sql' do
|
43
|
-
@instance.should respond_to(:sql)
|
44
|
-
end
|
45
|
-
|
46
|
-
context 'responds to ghost methods' do
|
47
|
-
before(:each) do
|
48
|
-
Slacker.application.stub(:query_script) {|sql| sql}
|
49
|
-
end
|
50
|
-
|
51
|
-
specify 'described as SQL files found in the sql/helpers folder' do
|
52
|
-
@instance.sql.respond_to?(:helpers).should be_true
|
53
|
-
@instance.sql.helpers.respond_to?(:helper_1).should be_true
|
54
|
-
@instance.sql.helpers.helper_1.should == 'helpers/helper_1.sql called'
|
55
|
-
end
|
56
|
-
|
57
|
-
specify 'described as SQL.ERB files found in the sql/helpers folder' do
|
58
|
-
@instance.sql.helpers.respond_to?(:helper_2).should be_true
|
59
|
-
@instance.sql.helpers.helper_2.should == 'helpers/helper_2.sql.erb called'
|
60
|
-
end
|
61
|
-
|
62
|
-
specify 'with SQL files taking priority over SQL.ERB files' do
|
63
|
-
@instance.sql.helpers.respond_to?(:helper_3).should be_true
|
64
|
-
@instance.sql.helpers.helper_3.should == 'helpers/helper_3.sql called'
|
65
|
-
end
|
66
|
-
|
67
|
-
specify 'but ignores non-existing methods' do
|
68
|
-
@instance.sql.helpers.respond_to?(:some_bogus_method).should be_false
|
69
|
-
end
|
70
|
-
|
71
|
-
specify 'but ignores files which are not with SQL or SQL.ERB extension' do
|
72
|
-
@instance.sql.helpers.respond_to?(:text_file_1).should be_false
|
73
|
-
end
|
74
|
-
|
75
|
-
specify 'from folders other than helpers' do
|
76
|
-
@instance.sql.respond_to?(:example_1).should be_true
|
77
|
-
@instance.sql.example_1.respond_to?(:helper_1).should be_true
|
78
|
-
@instance.sql.example_1.helper_1.should == 'example_1/helper_1.sql called'
|
79
|
-
end
|
80
|
-
|
81
|
-
specify "works with deeply nested example files reflecting their location in the lookup of SQL files in the SQL folder" do
|
82
|
-
@instance.sql.respond_to?(:nest).should be_true
|
83
|
-
@instance.sql.nest.respond_to?(:example_1).should be_true
|
84
|
-
@instance.sql.nest.example_1.respond_to?(:helper_1).should be_true
|
85
|
-
@instance.sql.nest.example_1.helper_1.should == 'nest/example_1/helper_1.sql.erb called'
|
86
|
-
end
|
87
|
-
end
|
1
|
+
require 'slacker'
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'ostruct'
|
4
|
+
|
5
|
+
class RSpecSlackerHost
|
6
|
+
include Slacker::RSpecExt
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Slacker::RSpecExt do
|
10
|
+
before(:each) do
|
11
|
+
Slacker::configure do |config|
|
12
|
+
config.base_dir = SpecHelper.expand_test_files_path('test_slacker_project')
|
13
|
+
end
|
14
|
+
|
15
|
+
example = OpenStruct.new
|
16
|
+
example.metadata = {:sql => '', :example_group => {:file_path => SpecHelper.expand_test_files_path('test_slacker_project/spec/example_xyz.rb')}}
|
17
|
+
|
18
|
+
@instance = RSpecSlackerHost.new
|
19
|
+
@instance.stub(:example).and_return(example)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'responds to query' do
|
23
|
+
@instance.should respond_to(:query)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'responds to match' do
|
27
|
+
@instance.should respond_to(:match)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'responds to csv' do
|
31
|
+
@instance.should respond_to(:csv)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'responds to load_csv' do
|
35
|
+
@instance.should respond_to(:load_csv)
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'responds to load_csv' do
|
39
|
+
@instance.should respond_to(:touch_csv)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'responds to sql' do
|
43
|
+
@instance.should respond_to(:sql)
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'responds to ghost methods' do
|
47
|
+
before(:each) do
|
48
|
+
Slacker.application.stub(:query_script) {|sql| sql}
|
49
|
+
end
|
50
|
+
|
51
|
+
specify 'described as SQL files found in the sql/helpers folder' do
|
52
|
+
@instance.sql.respond_to?(:helpers).should be_true
|
53
|
+
@instance.sql.helpers.respond_to?(:helper_1).should be_true
|
54
|
+
@instance.sql.helpers.helper_1.should == 'helpers/helper_1.sql called'
|
55
|
+
end
|
56
|
+
|
57
|
+
specify 'described as SQL.ERB files found in the sql/helpers folder' do
|
58
|
+
@instance.sql.helpers.respond_to?(:helper_2).should be_true
|
59
|
+
@instance.sql.helpers.helper_2.should == 'helpers/helper_2.sql.erb called'
|
60
|
+
end
|
61
|
+
|
62
|
+
specify 'with SQL files taking priority over SQL.ERB files' do
|
63
|
+
@instance.sql.helpers.respond_to?(:helper_3).should be_true
|
64
|
+
@instance.sql.helpers.helper_3.should == 'helpers/helper_3.sql called'
|
65
|
+
end
|
66
|
+
|
67
|
+
specify 'but ignores non-existing methods' do
|
68
|
+
@instance.sql.helpers.respond_to?(:some_bogus_method).should be_false
|
69
|
+
end
|
70
|
+
|
71
|
+
specify 'but ignores files which are not with SQL or SQL.ERB extension' do
|
72
|
+
@instance.sql.helpers.respond_to?(:text_file_1).should be_false
|
73
|
+
end
|
74
|
+
|
75
|
+
specify 'from folders other than helpers' do
|
76
|
+
@instance.sql.respond_to?(:example_1).should be_true
|
77
|
+
@instance.sql.example_1.respond_to?(:helper_1).should be_true
|
78
|
+
@instance.sql.example_1.helper_1.should == 'example_1/helper_1.sql called'
|
79
|
+
end
|
80
|
+
|
81
|
+
specify "works with deeply nested example files reflecting their location in the lookup of SQL files in the SQL folder" do
|
82
|
+
@instance.sql.respond_to?(:nest).should be_true
|
83
|
+
@instance.sql.nest.respond_to?(:example_1).should be_true
|
84
|
+
@instance.sql.nest.example_1.respond_to?(:helper_1).should be_true
|
85
|
+
@instance.sql.nest.example_1.helper_1.should == 'nest/example_1/helper_1.sql.erb called'
|
86
|
+
end
|
87
|
+
end
|
88
88
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
"Field 1","Field_2","b"
|
2
|
-
12,,""
|
3
|
-
"test string",01/30/2011,8.9
|
1
|
+
"Field 1","Field_2","b"
|
2
|
+
12,,""
|
3
|
+
"test string",01/30/2011,8.9
|
@@ -1,3 +1,3 @@
|
|
1
|
-
"Field 1","Field_2","b"
|
2
|
-
12,10,11
|
3
|
-
"test string",01/01/2011,8.9
|
1
|
+
"Field 1","Field_2","b"
|
2
|
+
12,10,11
|
3
|
+
"test string",01/01/2011,8.9
|
@@ -1,3 +1,3 @@
|
|
1
|
-
<%2.times do |i|%>
|
2
|
-
select <%=i+1%>;
|
1
|
+
<%2.times do |i|%>
|
2
|
+
select <%=i+1%>;
|
3
3
|
<%end%>
|
metadata
CHANGED
@@ -1,61 +1,73 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: slacker
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.7
|
4
5
|
prerelease:
|
5
|
-
version: 1.0.6
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Vassil Kovatchev
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-06-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: bundler
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
18
|
+
requirements:
|
21
19
|
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 1.0.15
|
24
22
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: ruby-odbc
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
25
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.15
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: ruby-odbc
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - '='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.99994'
|
35
38
|
type: :runtime
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rspec
|
39
39
|
prerelease: false
|
40
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
|
-
requirements:
|
42
|
+
requirements:
|
43
|
+
- - '='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.99994'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
43
51
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
52
|
+
- !ruby/object:Gem::Version
|
45
53
|
version: 2.5.0
|
46
54
|
type: :runtime
|
47
|
-
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.5.0
|
48
62
|
description: RSpec-based framework for developing automated tests for SQL Server
|
49
|
-
email:
|
63
|
+
email:
|
50
64
|
- vassil.kovatchev@gmail.com
|
51
|
-
executables:
|
65
|
+
executables:
|
52
66
|
- slacker
|
53
67
|
- slacker_new
|
54
68
|
extensions: []
|
55
|
-
|
56
69
|
extra_rdoc_files: []
|
57
|
-
|
58
|
-
files:
|
70
|
+
files:
|
59
71
|
- README.markdown
|
60
72
|
- Rakefile
|
61
73
|
- Gemfile
|
@@ -63,107 +75,104 @@ files:
|
|
63
75
|
- Gemfile.lock
|
64
76
|
- bin/slacker
|
65
77
|
- bin/slacker_new
|
66
|
-
- lib/slacker/
|
78
|
+
- lib/slacker/application.rb
|
67
79
|
- lib/slacker/command_line_formatter.rb
|
68
|
-
- lib/slacker/version.rb
|
69
|
-
- lib/slacker/query_result_matcher.rb
|
70
80
|
- lib/slacker/configuration.rb
|
71
81
|
- lib/slacker/formatter.rb
|
82
|
+
- lib/slacker/query_result_matcher.rb
|
72
83
|
- lib/slacker/rspec_ext.rb
|
73
84
|
- lib/slacker/rspec_monkey.rb
|
74
85
|
- lib/slacker/sql.rb
|
75
|
-
- lib/slacker/
|
86
|
+
- lib/slacker/sql_preprocessor.rb
|
87
|
+
- lib/slacker/string_helper.rb
|
88
|
+
- lib/slacker/version.rb
|
76
89
|
- lib/slacker.rb
|
77
|
-
- lib/slacker_new/project/lib/helpers/my_helper.rb
|
78
90
|
- lib/slacker_new/project/data/sample_1/my_table_expected_power_results.csv
|
79
91
|
- lib/slacker_new/project/data/sample_1/my_table_initial_data.csv
|
80
92
|
- lib/slacker_new/project/data/sample_1/numbers_expected_output.csv
|
81
|
-
- lib/slacker_new/project/
|
82
|
-
- lib/slacker_new/project/
|
93
|
+
- lib/slacker_new/project/database.yml
|
94
|
+
- lib/slacker_new/project/lib/helpers/my_helper.rb
|
95
|
+
- lib/slacker_new/project/spec/sample_1.rb
|
96
|
+
- lib/slacker_new/project/sql/sample_1/create_my_table.sql.erb
|
83
97
|
- lib/slacker_new/project/sql/sample_1/my_table_on_power.sql.erb
|
84
98
|
- lib/slacker_new/project/sql/sample_1/play_with_numbers.sql.erb
|
85
|
-
- lib/slacker_new/project/sql/sample_1/sysobjects_with_params.sql.erb
|
86
|
-
- lib/slacker_new/project/sql/sample_1/create_my_table.sql.erb
|
87
99
|
- lib/slacker_new/project/sql/sample_1/sysobjects.sql.erb
|
88
|
-
- lib/slacker_new/project/
|
89
|
-
-
|
90
|
-
- spec/rspec_ext_spec.rb
|
100
|
+
- lib/slacker_new/project/sql/sample_1/sysobjects_with_params.sql.erb
|
101
|
+
- spec/application_spec.rb
|
91
102
|
- spec/query_result_matcher_spec.rb
|
103
|
+
- spec/rspec_ext_spec.rb
|
104
|
+
- spec/slacker_spec.rb
|
92
105
|
- spec/spec_helper.rb
|
106
|
+
- spec/test_files/matcher/completely_blank.csv
|
107
|
+
- spec/test_files/matcher/no_rows.csv
|
108
|
+
- spec/test_files/matcher/test_1.csv
|
93
109
|
- spec/test_files/test_slacker_project/data/test_1.csv
|
94
|
-
- spec/test_files/test_slacker_project/sql/
|
95
|
-
- spec/test_files/test_slacker_project/sql/
|
96
|
-
- spec/test_files/test_slacker_project/sql/
|
97
|
-
- spec/test_files/test_slacker_project/sql/
|
98
|
-
- spec/test_files/test_slacker_project/sql/nested.sql.erb
|
99
|
-
- spec/test_files/test_slacker_project/sql/test_1.sql
|
100
|
-
- spec/test_files/test_slacker_project/sql/multi_nested.sql.erb
|
101
|
-
- spec/test_files/test_slacker_project/sql/helpers/helper_3.sql.erb
|
110
|
+
- spec/test_files/test_slacker_project/sql/example_1/helper_1.sql
|
111
|
+
- spec/test_files/test_slacker_project/sql/example_1/helper_2.sql
|
112
|
+
- spec/test_files/test_slacker_project/sql/example_1/helper_2.sql.erb
|
113
|
+
- spec/test_files/test_slacker_project/sql/helpers/helper_1.sql
|
102
114
|
- spec/test_files/test_slacker_project/sql/helpers/helper_2.sql.erb
|
103
115
|
- spec/test_files/test_slacker_project/sql/helpers/helper_3.sql
|
104
|
-
- spec/test_files/test_slacker_project/sql/helpers/
|
116
|
+
- spec/test_files/test_slacker_project/sql/helpers/helper_3.sql.erb
|
105
117
|
- spec/test_files/test_slacker_project/sql/helpers/text_file_1.txt
|
106
|
-
- spec/test_files/test_slacker_project/sql/
|
107
|
-
- spec/test_files/test_slacker_project/sql/example_1/
|
108
|
-
- spec/test_files/test_slacker_project/sql/
|
109
|
-
- spec/test_files/test_slacker_project/sql/
|
118
|
+
- spec/test_files/test_slacker_project/sql/multi_nested.sql.erb
|
119
|
+
- spec/test_files/test_slacker_project/sql/nest/example_1/helper_1.sql.erb
|
120
|
+
- spec/test_files/test_slacker_project/sql/nest/nested_1.sql.erb
|
121
|
+
- spec/test_files/test_slacker_project/sql/nest/nested_2.sql.erb
|
122
|
+
- spec/test_files/test_slacker_project/sql/nested.sql.erb
|
110
123
|
- spec/test_files/test_slacker_project/sql/nested_with_params.sql.erb
|
111
|
-
- spec/test_files/
|
112
|
-
- spec/test_files/
|
113
|
-
- spec/test_files/
|
114
|
-
- spec/slacker_spec.rb
|
115
|
-
- spec/application_spec.rb
|
124
|
+
- spec/test_files/test_slacker_project/sql/no_params.sql.erb
|
125
|
+
- spec/test_files/test_slacker_project/sql/params.sql.erb
|
126
|
+
- spec/test_files/test_slacker_project/sql/test_1.sql
|
116
127
|
homepage: https://github.com/vassilvk/slacker/wiki
|
117
128
|
licenses: []
|
118
|
-
|
119
129
|
post_install_message:
|
120
130
|
rdoc_options: []
|
121
|
-
|
122
|
-
require_paths:
|
131
|
+
require_paths:
|
123
132
|
- lib
|
124
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
125
134
|
none: false
|
126
|
-
requirements:
|
127
|
-
- -
|
128
|
-
- !ruby/object:Gem::Version
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
129
138
|
version: 1.9.2
|
130
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
140
|
none: false
|
132
|
-
requirements:
|
133
|
-
- -
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
version:
|
141
|
+
requirements:
|
142
|
+
- - ! '>='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
136
145
|
requirements: []
|
137
|
-
|
138
146
|
rubyforge_project: slacker
|
139
|
-
rubygems_version: 1.8.
|
147
|
+
rubygems_version: 1.8.24
|
140
148
|
signing_key:
|
141
149
|
specification_version: 3
|
142
150
|
summary: Behavior Driven Development for SQL Server
|
143
|
-
test_files:
|
144
|
-
- spec/
|
151
|
+
test_files:
|
152
|
+
- spec/application_spec.rb
|
145
153
|
- spec/query_result_matcher_spec.rb
|
154
|
+
- spec/rspec_ext_spec.rb
|
155
|
+
- spec/slacker_spec.rb
|
146
156
|
- spec/spec_helper.rb
|
157
|
+
- spec/test_files/matcher/completely_blank.csv
|
158
|
+
- spec/test_files/matcher/no_rows.csv
|
159
|
+
- spec/test_files/matcher/test_1.csv
|
147
160
|
- spec/test_files/test_slacker_project/data/test_1.csv
|
148
|
-
- spec/test_files/test_slacker_project/sql/
|
149
|
-
- spec/test_files/test_slacker_project/sql/
|
150
|
-
- spec/test_files/test_slacker_project/sql/
|
151
|
-
- spec/test_files/test_slacker_project/sql/
|
152
|
-
- spec/test_files/test_slacker_project/sql/nested.sql.erb
|
153
|
-
- spec/test_files/test_slacker_project/sql/test_1.sql
|
154
|
-
- spec/test_files/test_slacker_project/sql/multi_nested.sql.erb
|
155
|
-
- spec/test_files/test_slacker_project/sql/helpers/helper_3.sql.erb
|
161
|
+
- spec/test_files/test_slacker_project/sql/example_1/helper_1.sql
|
162
|
+
- spec/test_files/test_slacker_project/sql/example_1/helper_2.sql
|
163
|
+
- spec/test_files/test_slacker_project/sql/example_1/helper_2.sql.erb
|
164
|
+
- spec/test_files/test_slacker_project/sql/helpers/helper_1.sql
|
156
165
|
- spec/test_files/test_slacker_project/sql/helpers/helper_2.sql.erb
|
157
166
|
- spec/test_files/test_slacker_project/sql/helpers/helper_3.sql
|
158
|
-
- spec/test_files/test_slacker_project/sql/helpers/
|
167
|
+
- spec/test_files/test_slacker_project/sql/helpers/helper_3.sql.erb
|
159
168
|
- spec/test_files/test_slacker_project/sql/helpers/text_file_1.txt
|
160
|
-
- spec/test_files/test_slacker_project/sql/
|
161
|
-
- spec/test_files/test_slacker_project/sql/example_1/
|
162
|
-
- spec/test_files/test_slacker_project/sql/
|
163
|
-
- spec/test_files/test_slacker_project/sql/
|
169
|
+
- spec/test_files/test_slacker_project/sql/multi_nested.sql.erb
|
170
|
+
- spec/test_files/test_slacker_project/sql/nest/example_1/helper_1.sql.erb
|
171
|
+
- spec/test_files/test_slacker_project/sql/nest/nested_1.sql.erb
|
172
|
+
- spec/test_files/test_slacker_project/sql/nest/nested_2.sql.erb
|
173
|
+
- spec/test_files/test_slacker_project/sql/nested.sql.erb
|
164
174
|
- spec/test_files/test_slacker_project/sql/nested_with_params.sql.erb
|
165
|
-
- spec/test_files/
|
166
|
-
- spec/test_files/
|
167
|
-
- spec/test_files/
|
168
|
-
|
169
|
-
- spec/application_spec.rb
|
175
|
+
- spec/test_files/test_slacker_project/sql/no_params.sql.erb
|
176
|
+
- spec/test_files/test_slacker_project/sql/params.sql.erb
|
177
|
+
- spec/test_files/test_slacker_project/sql/test_1.sql
|
178
|
+
has_rdoc:
|
File without changes
|
File without changes
|