slacker 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|