turntables 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.document +3 -0
  3. data/.gitignore +6 -0
  4. data/.rspec +1 -0
  5. data/.travis.yml +6 -0
  6. data/.yardopts +1 -0
  7. data/ChangeLog.rdoc +10 -0
  8. data/Gemfile +3 -0
  9. data/LICENSE.txt +20 -0
  10. data/README.rdoc +141 -0
  11. data/Rakefile +33 -0
  12. data/bin/turntables +12 -0
  13. data/lib/turntables/constants/repository_constants.rb +6 -0
  14. data/lib/turntables/db_registry.rb +83 -0
  15. data/lib/turntables/repository.rb +148 -0
  16. data/lib/turntables/sql_modules/db_registry_sql.rb +7 -0
  17. data/lib/turntables/sql_modules/version_history_sql.rb +30 -0
  18. data/lib/turntables/transaction.rb +39 -0
  19. data/lib/turntables/turntable.rb +40 -0
  20. data/lib/turntables/turntable_exception.rb +7 -0
  21. data/lib/turntables/version.rb +4 -0
  22. data/lib/turntables/version_history.rb +90 -0
  23. data/lib/turntables.rb +2 -0
  24. data/spec/data/locations/.gitkeep +0 -0
  25. data/spec/data/locations/herp.db +0 -0
  26. data/spec/data/locations/loc1/.gitkeep +0 -0
  27. data/spec/data/malformed-dir/malformed.txt +1 -0
  28. data/spec/data/sql-just-monolithic/mono/1.sql +6 -0
  29. data/spec/data/sql-just-monolithic/seq/.gitkeep +0 -0
  30. data/spec/data/sql-just-sequential/mono/.gitkeep +0 -0
  31. data/spec/data/sql-just-sequential/seq/1.sql +6 -0
  32. data/spec/data/sql-just-sequential/seq/2.sql +7 -0
  33. data/spec/data/sql-just-sequential/seq/3.sql +9 -0
  34. data/spec/data/sql-seq-and-mono/mono/3.sql +24 -0
  35. data/spec/data/sql-seq-and-mono/seq/1.sql +6 -0
  36. data/spec/data/sql-seq-and-mono/seq/2.sql +7 -0
  37. data/spec/data/sql-seq-and-mono/seq/3.sql +9 -0
  38. data/spec/db_registry_sql_spec.rb +9 -0
  39. data/spec/repository_constants_spec.rb +13 -0
  40. data/spec/repository_spec.rb +39 -0
  41. data/spec/spec_helper.rb +4 -0
  42. data/spec/turntable_exception_spec.rb +16 -0
  43. data/spec/turntable_spec.rb +71 -0
  44. data/spec/turntables_spec.rb +8 -0
  45. data/spec/version_history_spec.rb +55 -0
  46. data/spec/version_history_sql_spec.rb +31 -0
  47. data/turntables.gemspec +26 -0
  48. metadata +184 -0
@@ -0,0 +1,90 @@
1
+ require 'turntables/db_registry'
2
+ require 'turntables/sql_modules/version_history_sql'
3
+
4
+ module Turntables
5
+ # @author Simon Symeonidis
6
+ # This class is responsiblef for checking what version the current system is
7
+ # that is using this library, and what is the maximum version available in the
8
+ # repository. Naturally it follows that if in the repository the version is
9
+ # greater than the one on the system currently, The updated must be triggered
10
+ # to be done.
11
+ # For now this is a halfly implemented active record, since this library is
12
+ # lightweight and small (therefore not too many components are needed yet).
13
+ class VersionHistory
14
+ include VersionHistorySql
15
+
16
+ # Create the version history object by giving version number and comment.
17
+ # The date can be omitted, and it will be set to the current time of the
18
+ # local system.
19
+ # @param version is the version of the transaction that was performed
20
+ # @param comment was any comments included in the sql file
21
+ # @param date is the optional date, set to the local time if unspecified
22
+ def initialize(version,comment,date=Time.now.to_i)
23
+ @version = version
24
+ @comment = comment
25
+ @date = date
26
+ end
27
+
28
+ # Check if the required database exists. Check to see if the database has
29
+ # the version_histories table as well.
30
+ def self.check
31
+ if DbRegistry.instance.table_exists? TableName
32
+ return VersionHistory.find_last
33
+ else # db does not exist
34
+ return :fresh
35
+ end
36
+ end
37
+
38
+ # Get all the stored version histories
39
+ def self.find_all
40
+ vhs = Array.new
41
+ DbRegistry.instance.execute(SelectAll).each do |row|
42
+ vhs.push VersionHistory.to_version_history(row)
43
+ end
44
+ vhs
45
+ end
46
+
47
+ # Find the last version history added by checking the max id
48
+ # @return VersionHistory object or nil
49
+ def self.find_last
50
+ ret = DbRegistry.instance.execute(SelectLast)
51
+ VersionHistory.to_version_history(ret.first)
52
+ end
53
+
54
+ # Find a version history record by id
55
+ # @return VersionHistory object or nil
56
+ def self.find(id)
57
+ ret = DbRegistry.instance.execute(SelectById, id)
58
+ VersionHistory.to_version_history(ret.first)
59
+ end
60
+
61
+ # Insert a row into the table for version histories
62
+ # @return insert result
63
+ def self.insert(vhistory)
64
+ DbRegistry.instance.execute(Insert, vhistory.version,
65
+ vhistory.date, vhistory.comment)
66
+ end
67
+
68
+ # Create the table of this model
69
+ # @return nil
70
+ def self.pull_up!
71
+ DbRegistry.instance.execute(Create)
72
+ end
73
+
74
+ # Make an array representing the persisted object, into an object in memory
75
+ # @param record an array containing the elements to construct a version history
76
+ # @return a VersionHistory object constructed from the records
77
+ def self.to_version_history(record)
78
+ vh = VersionHistory.new(record[1], record[2], record[3])
79
+ vh.id = record[0]
80
+ vh
81
+ end
82
+
83
+ attr_accessor :id
84
+ attr_accessor :version
85
+ attr_accessor :date
86
+ attr_accessor :comment
87
+
88
+ end
89
+ end
90
+
data/lib/turntables.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'turntables/version'
2
+ require 'turntables/turntable'
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ malformed dir to make sure safe execution of turntables
@@ -0,0 +1,6 @@
1
+ --$ Simple account table
2
+ CREATE TABLE accounts (
3
+ id integer primary key autoincrement,
4
+ balance float,
5
+ name text
6
+ );
File without changes
File without changes
@@ -0,0 +1,6 @@
1
+ --$ first we create the accounts
2
+ create table accounts (
3
+ id integer primary key autoincrement,
4
+ balance float,
5
+ name text
6
+ );
@@ -0,0 +1,7 @@
1
+ --$ Add users to the system
2
+ create table users (
3
+ id integer primary key autoincrement,
4
+ name text,
5
+ email text,
6
+ bio text
7
+ );
@@ -0,0 +1,9 @@
1
+ --$ Add randomness
2
+
3
+ create table randomness (
4
+ id integer primary key autoincrement,
5
+ name text,
6
+ surname text,
7
+ weight float,
8
+ is_superhero boolean
9
+ );
@@ -0,0 +1,24 @@
1
+ --$ the other files should be ignored, and this should be the only one that is
2
+ --$ executed
3
+
4
+ create table accounts (
5
+ id integer primary key autoincrement,
6
+ balance float,
7
+ name text
8
+ );
9
+
10
+ create table users (
11
+ id integer primary key autoincrement,
12
+ name text,
13
+ email text,
14
+ bio text
15
+ );
16
+
17
+ create table randomness (
18
+ id integer primary key autoincrement,
19
+ name text,
20
+ surname text,
21
+ weight float,
22
+ is_superhero boolean
23
+ );
24
+
@@ -0,0 +1,6 @@
1
+ --$ first we create the accounts
2
+ create table accounts (
3
+ id integer primary key autoincrement,
4
+ balance float,
5
+ name text
6
+ );
@@ -0,0 +1,7 @@
1
+ --$ Add users to the system
2
+ create table users (
3
+ id integer primary key autoincrement,
4
+ name text,
5
+ email text,
6
+ bio text
7
+ );
@@ -0,0 +1,9 @@
1
+ --$ Add randomness
2
+
3
+ create table randomness (
4
+ id integer primary key autoincrement,
5
+ name text,
6
+ surname text,
7
+ weight float,
8
+ is_superhero boolean
9
+ );
@@ -0,0 +1,9 @@
1
+ require 'turntables/sql_modules/db_registry_sql'
2
+
3
+ include Turntables
4
+
5
+ describe DbRegistrySql do
6
+ it "Should have a constant ExistsSql" do
7
+ subject.const_get('ExistsSql').should_not be_empty
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ require 'turntables/constants/repository_constants'
2
+
3
+ include Turntables
4
+
5
+ describe RepositoryConstants do
6
+ it "Should have SeqDir constant" do
7
+ subject.const_get('SeqDir').should_not be_empty
8
+ end
9
+
10
+ it "Should have MonoDir constant" do
11
+ subject.const_get('MonoDir').should_not be_empty
12
+ end
13
+ end
@@ -0,0 +1,39 @@
1
+ require 'turntables/repository'
2
+
3
+ include Turntables
4
+
5
+ describe Repository do
6
+
7
+ before :each do
8
+ @repo = Repository.new
9
+ end
10
+
11
+ it "#new should return Repository Object" do
12
+ @repo.should be_instance_of Repository
13
+ end
14
+
15
+ it "Should have a method called register" do
16
+ @repo.should respond_to(:register)
17
+ end
18
+
19
+ it "Should have a method called make!" do
20
+ @repo.should respond_to(:make!)
21
+ end
22
+
23
+ it "Should have an attribute called sequential_dir" do
24
+ @repo.should respond_to(:sequential_dir)
25
+ end
26
+
27
+ it "Should have an attribute called monolithic_dir" do
28
+ @repo.should respond_to(:monolithic_dir)
29
+ end
30
+
31
+ it "Should have an attribute called relative_dir" do
32
+ @repo.should respond_to(:relative_dir)
33
+ end
34
+
35
+ it "should have the transactions in a sorted order (smallest to biggest)" do
36
+ @repo.register("data/sql-just-sequential")
37
+ end
38
+
39
+ end
@@ -0,0 +1,4 @@
1
+ require 'rspec'
2
+ require 'turntables/version'
3
+
4
+ include Turntables
@@ -0,0 +1,16 @@
1
+ require 'turntables/turntable_exception'
2
+
3
+ describe TurntableException do
4
+
5
+ before(:each) do
6
+ @te = TurntableException.new
7
+ end
8
+
9
+ it "Should be an instance of runtime error" do
10
+ @te.should be_a_kind_of(RuntimeError)
11
+ end
12
+
13
+ it "should be an instance of TurntableException" do
14
+ @te.should be_an_instance_of(TurntableException)
15
+ end
16
+ end
@@ -0,0 +1,71 @@
1
+ require 'turntables'
2
+ require 'turntables/db_registry'
3
+
4
+ # This test to see if simple operations work with the application (so that the
5
+ # minimal guarantee of the gem is respected - to at least create the schema
6
+ # specified).
7
+ describe Turntable do
8
+
9
+ def delete_db
10
+ if File.exists? "default.db"
11
+ File.delete("default.db")
12
+ end
13
+ end
14
+
15
+ before(:each) do
16
+ @turntable = Turntable.new
17
+ @relpath = File.expand_path(File.dirname(__FILE__))
18
+ @datapath = "#{@relpath}/data"
19
+
20
+ # datapath/ and
21
+ # malformed-dir
22
+ # sql-just-monolithic
23
+ # sql-just-sequential
24
+ # sql-seq-and-mono
25
+ end
26
+
27
+ after(:each) do
28
+ DbRegistry.instance.close!
29
+ delete_db
30
+ DbRegistry.instance.open!
31
+ end
32
+
33
+ after(:all) do
34
+ delete_db
35
+ end
36
+
37
+ it "should raise no errors on a pure sequential repo" do
38
+ @turntable.register("#{@datapath}/sql-just-sequential")
39
+ expect{@turntable.make!}.to_not raise_error
40
+ end
41
+
42
+ it "should raise no errors on a pure monolithic repo" do
43
+ @turntable.register("#{@datapath}/sql-just-monolithic")
44
+ expect{@turntable.make!}.to_not raise_error
45
+ end
46
+
47
+ it "should raise no errors on a mixed repo" do
48
+ @turntable.register("#{@datapath}/sql-seq-and-mono")
49
+ expect{@turntable.make!}.to_not raise_error
50
+ end
51
+
52
+ it "should raise an error on a malformed dir" do
53
+ @turntable.register("#{@datapath}/malformed-dir")
54
+ expect{@turntable.make!}.to raise_error
55
+ end
56
+
57
+ it "should raise an error on non existant path" do
58
+ @turntable.register("WARGABLLGABHLGABL")
59
+ expect{@turntable.make!}.to raise_error
60
+ end
61
+
62
+ it "should create the database at a *specified* location" do
63
+ db_location = "#{@datapath}/locations/herp.db"
64
+ @turntable.register("#{@datapath}/sql-seq-and-mono")
65
+ @turntable.make_at!(db_location)
66
+ (File.exists? db_location).should be_true
67
+ File.delete(db_location)
68
+ end
69
+
70
+ end
71
+
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'turntables'
3
+
4
+ describe Turntables do
5
+ it "should have a VERSION constant" do
6
+ subject.const_get('VERSION').should_not be_empty
7
+ end
8
+ end
@@ -0,0 +1,55 @@
1
+ require 'turntables/version_history'
2
+
3
+ describe VersionHistory do
4
+ context "<<AR>> pattern specification" do
5
+ it "should respond to class method check" do
6
+ VersionHistory.should respond_to(:check)
7
+ end
8
+
9
+ it "should respond to class method find_all" do
10
+ VersionHistory.should respond_to(:find_all)
11
+ end
12
+
13
+ it "should respond to class method find_last" do
14
+ VersionHistory.should respond_to(:find_last)
15
+ end
16
+
17
+ it "should respond to class method find" do
18
+ VersionHistory.should respond_to(:find)
19
+ end
20
+
21
+ it "should respond to class method insert" do
22
+ VersionHistory.should respond_to(:insert)
23
+ end
24
+
25
+ it "should respond to class method pull_up!" do
26
+ VersionHistory.should respond_to(:pull_up!)
27
+ end
28
+
29
+ it "should respond to class method to_version_history" do
30
+ VersionHistory.should respond_to(:to_version_history)
31
+ end
32
+ end
33
+
34
+ context "Attributes" do
35
+ before(:each) do
36
+ @version_history = VersionHistory.new(1,"asdf")
37
+ end
38
+
39
+ it "should have an id" do
40
+ @version_history.should respond_to(:id)
41
+ end
42
+
43
+ it "should have a version" do
44
+ @version_history.should respond_to(:version)
45
+ end
46
+
47
+ it "should have a date" do
48
+ @version_history.should respond_to(:date)
49
+ end
50
+
51
+ it "should have a comment" do
52
+ @version_history.should respond_to(:comment)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,31 @@
1
+ require 'turntables/sql_modules/version_history_sql'
2
+
3
+ include Turntables
4
+
5
+ describe VersionHistorySql do
6
+
7
+ it "should have a table name constant" do
8
+ subject.const_get('TableName').should_not be_empty
9
+ end
10
+
11
+ it "should have a create sql constant" do
12
+ subject.const_get('Create').should_not be_empty
13
+ end
14
+
15
+ it "should have a select last sql constant" do
16
+ subject.const_get('SelectLast').should_not be_empty
17
+ end
18
+
19
+ it "should have a select by id sql constant" do
20
+ subject.const_get('SelectById').should_not be_empty
21
+ end
22
+
23
+ it "should have a select all sql constant" do
24
+ subject.const_get('SelectAll').should_not be_empty
25
+ end
26
+
27
+ it "should have an insert sql constant" do
28
+ subject.const_get('Insert').should_not be_empty
29
+ end
30
+ end
31
+
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../lib/turntables/version', __FILE__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "turntables"
7
+ gem.version = Turntables::VERSION
8
+ gem.summary = %q{A dumb experimental, lightweight db version control system for SQLite3}
9
+ gem.description = %q{A dumb experimental, lightweight db version control system for SQLite3}
10
+ gem.license = "MIT"
11
+ gem.authors = ["psyomn"]
12
+ gem.email = "lethaljellybean@gmail.com"
13
+ gem.homepage = "https://rubygems.org/gems/turntables"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ['lib']
19
+
20
+ gem.add_development_dependency 'bundler', '~> 1.0'
21
+ gem.add_development_dependency 'rake', '~> 0.8'
22
+ gem.add_development_dependency 'rspec', '~> 2.4'
23
+ gem.add_development_dependency 'yard', '~> 0.8'
24
+
25
+ gem.add_runtime_dependency 'sqlite3'
26
+ end
metadata ADDED
@@ -0,0 +1,184 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: turntables
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - psyomn
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.8'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '2.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: A dumb experimental, lightweight db version control system for SQLite3
84
+ email: lethaljellybean@gmail.com
85
+ executables:
86
+ - turntables
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - .document
91
+ - .gitignore
92
+ - .rspec
93
+ - .travis.yml
94
+ - .yardopts
95
+ - ChangeLog.rdoc
96
+ - Gemfile
97
+ - LICENSE.txt
98
+ - README.rdoc
99
+ - Rakefile
100
+ - bin/turntables
101
+ - lib/turntables.rb
102
+ - lib/turntables/constants/repository_constants.rb
103
+ - lib/turntables/db_registry.rb
104
+ - lib/turntables/repository.rb
105
+ - lib/turntables/sql_modules/db_registry_sql.rb
106
+ - lib/turntables/sql_modules/version_history_sql.rb
107
+ - lib/turntables/transaction.rb
108
+ - lib/turntables/turntable.rb
109
+ - lib/turntables/turntable_exception.rb
110
+ - lib/turntables/version.rb
111
+ - lib/turntables/version_history.rb
112
+ - spec/data/locations/.gitkeep
113
+ - spec/data/locations/herp.db
114
+ - spec/data/locations/loc1/.gitkeep
115
+ - spec/data/malformed-dir/malformed.txt
116
+ - spec/data/sql-just-monolithic/mono/1.sql
117
+ - spec/data/sql-just-monolithic/seq/.gitkeep
118
+ - spec/data/sql-just-sequential/mono/.gitkeep
119
+ - spec/data/sql-just-sequential/seq/1.sql
120
+ - spec/data/sql-just-sequential/seq/2.sql
121
+ - spec/data/sql-just-sequential/seq/3.sql
122
+ - spec/data/sql-seq-and-mono/mono/3.sql
123
+ - spec/data/sql-seq-and-mono/seq/1.sql
124
+ - spec/data/sql-seq-and-mono/seq/2.sql
125
+ - spec/data/sql-seq-and-mono/seq/3.sql
126
+ - spec/db_registry_sql_spec.rb
127
+ - spec/repository_constants_spec.rb
128
+ - spec/repository_spec.rb
129
+ - spec/spec_helper.rb
130
+ - spec/turntable_exception_spec.rb
131
+ - spec/turntable_spec.rb
132
+ - spec/turntables_spec.rb
133
+ - spec/version_history_spec.rb
134
+ - spec/version_history_sql_spec.rb
135
+ - turntables.gemspec
136
+ homepage: https://rubygems.org/gems/turntables
137
+ licenses:
138
+ - MIT
139
+ metadata: {}
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 2.0.3
157
+ signing_key:
158
+ specification_version: 4
159
+ summary: A dumb experimental, lightweight db version control system for SQLite3
160
+ test_files:
161
+ - spec/data/locations/.gitkeep
162
+ - spec/data/locations/herp.db
163
+ - spec/data/locations/loc1/.gitkeep
164
+ - spec/data/malformed-dir/malformed.txt
165
+ - spec/data/sql-just-monolithic/mono/1.sql
166
+ - spec/data/sql-just-monolithic/seq/.gitkeep
167
+ - spec/data/sql-just-sequential/mono/.gitkeep
168
+ - spec/data/sql-just-sequential/seq/1.sql
169
+ - spec/data/sql-just-sequential/seq/2.sql
170
+ - spec/data/sql-just-sequential/seq/3.sql
171
+ - spec/data/sql-seq-and-mono/mono/3.sql
172
+ - spec/data/sql-seq-and-mono/seq/1.sql
173
+ - spec/data/sql-seq-and-mono/seq/2.sql
174
+ - spec/data/sql-seq-and-mono/seq/3.sql
175
+ - spec/db_registry_sql_spec.rb
176
+ - spec/repository_constants_spec.rb
177
+ - spec/repository_spec.rb
178
+ - spec/spec_helper.rb
179
+ - spec/turntable_exception_spec.rb
180
+ - spec/turntable_spec.rb
181
+ - spec/turntables_spec.rb
182
+ - spec/version_history_spec.rb
183
+ - spec/version_history_sql_spec.rb
184
+ has_rdoc: