adsl 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -20
  3. data/README.md +14 -21
  4. data/bin/adsl-verify +8 -8
  5. data/lib/adsl.rb +3 -0
  6. data/lib/adsl/adsl.rb +3 -0
  7. data/lib/adsl/ds/data_store_spec.rb +339 -0
  8. data/lib/adsl/extract/instrumenter.rb +206 -0
  9. data/lib/adsl/extract/meta.rb +33 -0
  10. data/lib/adsl/extract/rails/action_block_builder.rb +233 -0
  11. data/lib/adsl/extract/rails/action_instrumenter.rb +400 -0
  12. data/lib/adsl/extract/rails/action_runner.rb +57 -0
  13. data/lib/adsl/extract/rails/active_record_metaclass_generator.rb +555 -0
  14. data/lib/adsl/extract/rails/callback_chain_simulator.rb +135 -0
  15. data/lib/adsl/extract/rails/invariant_extractor.rb +48 -0
  16. data/lib/adsl/extract/rails/invariant_instrumenter.rb +70 -0
  17. data/lib/adsl/extract/rails/other_meta.rb +57 -0
  18. data/lib/adsl/extract/rails/rails_extractor.rb +211 -0
  19. data/lib/adsl/extract/rails/rails_instrumentation_test_case.rb +34 -0
  20. data/lib/adsl/extract/rails/rails_special_gem_instrumentation.rb +120 -0
  21. data/lib/adsl/extract/rails/rails_test_helper.rb +140 -0
  22. data/lib/adsl/extract/sexp_utils.rb +54 -0
  23. data/lib/adsl/fol/first_order_logic.rb +261 -0
  24. data/lib/adsl/parser/adsl_parser.racc +159 -0
  25. data/lib/{parser → adsl/parser}/adsl_parser.rex +4 -4
  26. data/lib/{parser → adsl/parser}/adsl_parser.rex.rb +6 -6
  27. data/lib/adsl/parser/adsl_parser.tab.rb +1031 -0
  28. data/lib/adsl/parser/ast_nodes.rb +1410 -0
  29. data/lib/adsl/railtie.rb +67 -0
  30. data/lib/adsl/spass/bin.rb +230 -0
  31. data/lib/{spass → adsl/spass}/ruby_extensions.rb +0 -0
  32. data/lib/adsl/spass/spass_ds_extensions.rb +931 -0
  33. data/lib/adsl/spass/spass_translator.rb +393 -0
  34. data/lib/adsl/spass/util.rb +13 -0
  35. data/lib/adsl/util/csv_hash_formatter.rb +94 -0
  36. data/lib/adsl/util/general.rb +228 -0
  37. data/lib/adsl/util/test_helper.rb +71 -0
  38. data/lib/adsl/verification/formula_generators.rb +231 -0
  39. data/lib/adsl/verification/instrumentation_filter.rb +50 -0
  40. data/lib/adsl/verification/invariant.rb +19 -0
  41. data/lib/adsl/verification/rails_verification.rb +33 -0
  42. data/lib/adsl/verification/utils.rb +20 -0
  43. data/lib/adsl/verification/verification_case.rb +13 -0
  44. data/test/integration/rails/rails_branch_verification_test.rb +112 -0
  45. data/test/integration/rails/rails_verification_test.rb +253 -0
  46. data/test/integration/spass/basic_translation_test.rb +563 -0
  47. data/test/integration/spass/control_flow_translation_test.rb +421 -0
  48. data/test/unit/adsl/ds/data_store_spec_test.rb +54 -0
  49. data/test/unit/adsl/extract/instrumenter_test.rb +103 -0
  50. data/test/unit/adsl/extract/meta_test.rb +142 -0
  51. data/test/unit/adsl/extract/rails/action_block_builder_test.rb +178 -0
  52. data/test/unit/adsl/extract/rails/action_instrumenter_test.rb +68 -0
  53. data/test/unit/adsl/extract/rails/active_record_metaclass_generator_test.rb +336 -0
  54. data/test/unit/adsl/extract/rails/callback_chain_simulator_test.rb +76 -0
  55. data/test/unit/adsl/extract/rails/invariant_extractor_test.rb +92 -0
  56. data/test/unit/adsl/extract/rails/rails_extractor_test.rb +1380 -0
  57. data/test/unit/adsl/extract/rails/rails_test_helper_test.rb +25 -0
  58. data/test/unit/adsl/extract/sexp_utils_test.rb +100 -0
  59. data/test/unit/adsl/fol/first_order_logic_test.rb +227 -0
  60. data/test/unit/adsl/parser/action_parser_test.rb +1040 -0
  61. data/test/unit/adsl/parser/ast_nodes_test.rb +359 -0
  62. data/test/unit/adsl/parser/class_parser_test.rb +288 -0
  63. data/test/unit/adsl/parser/general_parser_test.rb +67 -0
  64. data/test/unit/adsl/parser/invariant_parser_test.rb +432 -0
  65. data/test/unit/adsl/parser/parser_util_test.rb +126 -0
  66. data/test/unit/adsl/spass/bin_test.rb +65 -0
  67. data/test/unit/adsl/spass/ruby_extensions_test.rb +39 -0
  68. data/test/unit/adsl/spass/spass_ds_extensions_test.rb +7 -0
  69. data/test/unit/adsl/spass/spass_translator_test.rb +342 -0
  70. data/test/unit/adsl/util/csv_hash_formatter_test.rb +68 -0
  71. data/test/unit/adsl/util/general_test.rb +303 -0
  72. data/test/unit/adsl/util/test_helper_test.rb +120 -0
  73. data/test/unit/adsl/verification/formula_generators_test.rb +200 -0
  74. data/test/unit/adsl/verification/instrumentation_filter_test.rb +39 -0
  75. data/test/unit/adsl/verification/utils_test.rb +39 -0
  76. data/test/unit/adsl/verification/verification_case_test.rb +8 -0
  77. metadata +229 -29
  78. data/lib/ds/data_store_spec.rb +0 -292
  79. data/lib/fol/first_order_logic.rb +0 -260
  80. data/lib/parser/adsl_ast.rb +0 -779
  81. data/lib/parser/adsl_parser.racc +0 -151
  82. data/lib/parser/adsl_parser.tab.rb +0 -976
  83. data/lib/parser/dsdl_parser.rex.rb +0 -196
  84. data/lib/parser/dsdl_parser.tab.rb +0 -976
  85. data/lib/spass/bin.rb +0 -164
  86. data/lib/spass/spass_ds_extensions.rb +0 -870
  87. data/lib/spass/spass_translator.rb +0 -388
  88. data/lib/spass/util.rb +0 -11
  89. data/lib/util/csv_hash_formatter.rb +0 -47
  90. data/lib/util/test_helper.rb +0 -33
  91. data/lib/util/util.rb +0 -114
@@ -0,0 +1,200 @@
1
+ require 'test/unit'
2
+ require 'pp'
3
+ require 'adsl/extract/meta'
4
+ require 'adsl/util/test_helper'
5
+ require 'adsl/verification/formula_generators'
6
+ require 'adsl/extract/rails/rails_instrumentation_test_case'
7
+
8
+ class ADSL::Verification::FormulaGeneratorsTest < ADSL::Extract::Rails::RailsInstrumentationTestCase
9
+ include ADSL::Parser
10
+ include ADSL::Verification
11
+
12
+ attr_reader :fg
13
+
14
+ class FG
15
+ include ADSL::Verification::FormulaGenerators
16
+ end
17
+
18
+ def setup
19
+ super
20
+ @fg = FG.new
21
+ initialize_metaclasses
22
+ end
23
+
24
+ def anything_with_adsl_ast
25
+ o = Object.new
26
+ o.define_singleton_method :adsl_ast do
27
+ nil
28
+ end
29
+ o
30
+ end
31
+
32
+ def test_forall__raises_unless_return_value_has_an_adsl_ast
33
+ fg.forall do |asd|
34
+ anything_with_adsl_ast
35
+ end
36
+ assert_raise do
37
+ forall do |asd|
38
+ 'blah!'
39
+ end
40
+ end
41
+ end
42
+
43
+ def test_constants
44
+ [true, fg.true].each do |t|
45
+ assert_equal true, t.adsl_ast.bool_value
46
+ assert t.respond_to? :and
47
+ end
48
+ [false, fg.false].each do |t|
49
+ assert_equal false, t.adsl_ast.bool_value
50
+ assert t.respond_to? :and
51
+ end
52
+ end
53
+
54
+ def test_negation
55
+ formula = fg.not(true).adsl_ast
56
+ assert_equal ASTNot, formula.class
57
+ assert_equal true, formula.subformula.bool_value
58
+
59
+ formula = fg.neg(true).adsl_ast
60
+ assert_equal ASTNot, formula.class
61
+ assert_equal true, formula.subformula.bool_value
62
+
63
+ formula = fg.not.true.adsl_ast
64
+ assert_equal ASTNot, formula.class
65
+ assert_equal true, formula.subformula.bool_value
66
+ end
67
+
68
+ def test_quantification__explicit_types_from_block_params
69
+ {:forall => ASTForAll, :exists => ASTExists}.each do |quantifier, klass|
70
+ formula = fg.send(quantifier, {:a => Asd}, &lambda do |a|
71
+ assert_equal Asd, a.class
72
+ assert_equal ASTVariable, a.adsl_ast.class
73
+ assert_equal 'a', a.adsl_ast.var_name.text
74
+ anything_with_adsl_ast
75
+ end)
76
+ assert_equal klass, formula.adsl_ast.class
77
+ assert_equal 'Asd', formula.adsl_ast.vars[0][1].class_name.text
78
+
79
+ formula = fg.send(quantifier, {:a => Asd, :b => Kme}, &lambda do |a, b|
80
+ assert_equal Asd, a.class
81
+ assert_equal ASTVariable, a.adsl_ast.class
82
+ assert_equal 'a', a.adsl_ast.var_name.text
83
+ assert_equal Kme, b.class
84
+ assert_equal ASTVariable, b.adsl_ast.class
85
+ assert_equal 'b', b.adsl_ast.var_name.text
86
+ anything_with_adsl_ast
87
+ end)
88
+ assert_equal klass, formula.adsl_ast.class
89
+ assert_equal 'Asd', formula.adsl_ast.vars[0][1].class_name.text
90
+ assert_equal 'Kme', formula.adsl_ast.vars[1][1].class_name.text
91
+ end
92
+ end
93
+
94
+ def test_quantifiers__infer_types_from_block_params
95
+ {:forall => ASTForAll, :exists => ASTExists}.each do |quantifier, klass|
96
+ formula = fg.send(quantifier, &lambda do |asd|
97
+ assert_equal Asd, asd.class
98
+ assert_equal ASTVariable, asd.adsl_ast.class
99
+ assert_equal 'asd', asd.adsl_ast.var_name.text
100
+ anything_with_adsl_ast
101
+ end)
102
+ assert_equal klass, formula.adsl_ast.class
103
+ assert_equal 'Asd', formula.adsl_ast.vars[0][1].class_name.text
104
+
105
+ formula = fg.send(quantifier, &lambda do |asd, kme|
106
+ assert_equal Asd, asd.class
107
+ assert_equal ASTVariable, asd.adsl_ast.class
108
+ assert_equal 'asd', asd.adsl_ast.var_name.text
109
+ assert_equal Kme, kme.class
110
+ assert_equal ASTVariable, kme.adsl_ast.class
111
+ assert_equal 'kme', kme.adsl_ast.var_name.text
112
+ anything_with_adsl_ast
113
+ end)
114
+ assert_equal klass, formula.adsl_ast.class
115
+ assert_equal 'Asd', formula.adsl_ast.vars[0][1].class_name.text
116
+ assert_equal 'Kme', formula.adsl_ast.vars[1][1].class_name.text
117
+ end
118
+ end
119
+
120
+ def test_quantifier__precedence_of_type_inferment_lesser_than_explicit_declaration
121
+ {:forall => ASTForAll, :exists => ASTExists}.each do |quantifier, klass|
122
+ formula = fg.send(quantifier, {:asd => Kme}, &lambda do |asd|
123
+ assert_equal Kme, asd.class
124
+ assert_equal ASTVariable, asd.adsl_ast.class
125
+ assert_equal 'asd', asd.adsl_ast.var_name.text
126
+ anything_with_adsl_ast
127
+ end)
128
+ assert_equal klass, formula.adsl_ast.class
129
+ assert_equal 'Kme', formula.adsl_ast.vars[0][1].class_name.text
130
+ end
131
+ end
132
+
133
+ def test_quantifier__at_least_one_variable
134
+ [:forall, :exists].each do |quantifier|
135
+ assert_raise do
136
+ fg.send(quantifier, {}, &lambda do
137
+ anything_with_adsl_ast
138
+ end)
139
+ end
140
+ end
141
+ end
142
+
143
+ def test_quantifier__contains_the_subformula
144
+ {:forall => ASTForAll, :exists => ASTExists}.each do |quantifier, klass|
145
+ formula = fg.send(quantifier, &lambda do |asd|
146
+ true
147
+ end)
148
+ assert_equal klass, formula.adsl_ast.class
149
+ assert_equal true, formula.adsl_ast.subformula.bool_value
150
+ end
151
+ end
152
+
153
+ def test_binary_operators__prefix
154
+ {:implies => ASTImplies}.each do |operator, klass|
155
+ formula = fg.send(operator, true, fg.false)
156
+ assert_equal klass, formula.adsl_ast.class
157
+ assert_equal true, formula.adsl_ast.subformula1.bool_value
158
+ assert_equal false, formula.adsl_ast.subformula2.bool_value
159
+ end
160
+ end
161
+
162
+ def test_and_or__prefix_any_number_of_params
163
+ {:and => ASTAnd, :or => ASTOr, :equiv => ASTEquiv}.each do |operator, klass|
164
+ formula = fg.send(operator, true, false)
165
+ assert_equal klass, formula.adsl_ast.class
166
+ assert_equal true, formula.adsl_ast.subformulae.first.bool_value
167
+ assert_equal false, formula.adsl_ast.subformulae.second.bool_value
168
+
169
+ formula = fg.send(operator, true, false, true, false)
170
+ assert_equal klass, formula.adsl_ast.class
171
+ assert_equal true, formula.adsl_ast.subformulae[0].bool_value
172
+ assert_equal false, formula.adsl_ast.subformulae[1].bool_value
173
+ assert_equal true, formula.adsl_ast.subformulae[2].bool_value
174
+ assert_equal false, formula.adsl_ast.subformulae[3].bool_value
175
+ end
176
+ end
177
+
178
+ def test_and_or__infix
179
+ {:and => ASTAnd, :or => ASTOr}.each do |operator, klass|
180
+ formula = true.send(operator).false
181
+ assert_equal klass, formula.adsl_ast.class
182
+ assert_equal true, formula.adsl_ast.subformulae[0].bool_value
183
+ assert_equal false, formula.adsl_ast.subformulae[1].bool_value
184
+ end
185
+ end
186
+
187
+ def test_and_or__not_precedence
188
+ {:and => ASTAnd, :or => ASTOr}.each do |operator, klass|
189
+ formula = true.send(operator).not.false
190
+ assert_equal klass, formula.adsl_ast.class
191
+ assert_equal true, formula.adsl_ast.subformulae[0].bool_value
192
+ assert_equal ASTNot, formula.adsl_ast.subformulae[1].class
193
+
194
+ formula = fg.neg.true.send(operator).false
195
+ assert_equal klass, formula.adsl_ast.class
196
+ assert_equal ASTNot, formula.adsl_ast.subformulae[0].class
197
+ assert_equal false, formula.adsl_ast.subformulae[1].bool_value
198
+ end
199
+ end
200
+ end
@@ -0,0 +1,39 @@
1
+ require 'test/unit'
2
+ require 'adsl/verification/instrumentation_filter'
3
+
4
+ module ADSL::Verification
5
+ class InstrumentationFilterTest < Test::Unit::TestCase
6
+
7
+ def asd; end
8
+ def kme; end
9
+
10
+ def test_applies_to__method_name
11
+ filter = InstrumentationFilter.new :method_name => :asd
12
+ assert filter.applies_to?(self, :asd)
13
+
14
+ filter = InstrumentationFilter.new :method_name => 'asd'
15
+ assert filter.applies_to?(self, :asd)
16
+
17
+ filter = InstrumentationFilter.new :method_name => /\w+/
18
+ assert filter.applies_to?(self, :asd)
19
+
20
+ filter = InstrumentationFilter.new :method_name => :asd
21
+ assert_false filter.applies_to?('asd', :length)
22
+ end
23
+
24
+ def test_applies_to__owner
25
+ filter = InstrumentationFilter.new :method_owner => InstrumentationFilterTest
26
+ assert filter.applies_to?(self, :asd)
27
+
28
+ filter = InstrumentationFilter.new :method_owner => Test::Unit::TestCase
29
+ assert_false filter.applies_to?(self, :asd)
30
+ end
31
+
32
+ def test_applies_to__method_name_and_owner
33
+ filter = InstrumentationFilter.new :method_name => 'asd', :method_owner => InstrumentationFilterTest
34
+ assert filter.applies_to?(self, :asd)
35
+ assert_false filter.applies_to?(self, :kme)
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ require 'test/unit'
2
+ require 'pp'
3
+ require 'adsl/extract/meta'
4
+ require 'adsl/util/test_helper'
5
+ require 'adsl/verification/utils'
6
+
7
+ class ADSL::Verification::UtilsTest < Test::Unit::TestCase
8
+ include ADSL::Verification::Utils
9
+
10
+ def setup
11
+ eval <<-ruby
12
+ class ::User; end
13
+ class ::UserAddress; end
14
+ ruby
15
+ end
16
+
17
+ def teardown
18
+ unload_class :User, :UserAddress
19
+ end
20
+
21
+ def test_infer_classname_from_varname
22
+ assert_equal 'User', infer_classname_from_varname('user')
23
+ assert_equal 'User', infer_classname_from_varname(:user)
24
+ assert_equal 'UserAddress', infer_classname_from_varname('user_address')
25
+ assert_equal 'UserAddress', infer_classname_from_varname(:user_address)
26
+
27
+ assert_equal 'User', infer_classname_from_varname('user1')
28
+ assert_equal 'User', infer_classname_from_varname('user_12')
29
+ assert_equal 'UserAddress', infer_classname_from_varname('user_address1')
30
+ end
31
+
32
+ def test_classname_for_classname
33
+ assert_equal 'User', classname_for_classname(User)
34
+ assert_equal 'User', classname_for_classname(:user)
35
+ assert_equal 'User', classname_for_classname('user')
36
+ assert_equal 'UserAddress', classname_for_classname('user_address')
37
+ assert_equal 'UserAddress', classname_for_classname(:user_address)
38
+ end
39
+ end
@@ -0,0 +1,8 @@
1
+ require 'test/unit'
2
+ require 'pp'
3
+ require 'adsl/extract/meta'
4
+ require 'adsl/util/test_helper'
5
+ require 'adsl/verification/verification_case'
6
+
7
+ class ADSL::Verification::VerificationCaseTest < Test::Unit::TestCase
8
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Bocic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-12 00:00:00.000000000 Z
11
+ date: 2013-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -25,7 +25,21 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: test-unit
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '3.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: sqlite3
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - '>='
@@ -67,7 +81,21 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: active_support
84
+ name: activesupport
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3.2'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '3.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: i18n
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - '>='
@@ -95,7 +123,35 @@ dependencies:
95
123
  - !ruby/object:Gem::Version
96
124
  version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
- name: i18n
126
+ name: method_source
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: '0.8'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '0.8'
139
+ - !ruby/object:Gem::Dependency
140
+ name: ruby_parser
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: '3.1'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '3.1'
153
+ - !ruby/object:Gem::Dependency
154
+ name: ruby2ruby
99
155
  requirement: !ruby/object:Gem::Requirement
100
156
  requirements:
101
157
  - - '>='
@@ -108,35 +164,146 @@ dependencies:
108
164
  - - '>='
109
165
  - !ruby/object:Gem::Version
110
166
  version: '0'
111
- description: ADSL parses ADSL specification, translating it into Spass for verification
167
+ - !ruby/object:Gem::Dependency
168
+ name: backports
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: activerecord
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: '3.2'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ~>
193
+ - !ruby/object:Gem::Version
194
+ version: '3.2'
195
+ - !ruby/object:Gem::Dependency
196
+ name: activerecord-tableless
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '>='
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: test-unit
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ description: A tool for automatic extraction and verification of Rails formal models.
224
+ Just include it in your Gemfile, write a few invariants, setup Spass and `rake verify`!
112
225
  email:
113
226
  - bo@cs.ucsb.edu
114
- executables:
115
- - adsl-verify
227
+ executables: []
116
228
  extensions: []
117
229
  extra_rdoc_files: []
118
230
  files:
119
231
  - bin/adsl-verify
120
- - lib/ds/data_store_spec.rb
121
- - lib/parser/adsl_parser.rex
122
- - lib/parser/adsl_parser.racc
123
- - lib/parser/dsdl_parser.rex.rb
124
- - lib/parser/adsl_ast.rb
125
- - lib/parser/adsl_parser.tab.rb
126
- - lib/parser/dsdl_parser.tab.rb
127
- - lib/parser/adsl_parser.rex.rb
128
- - lib/util/test_helper.rb
129
- - lib/util/csv_hash_formatter.rb
130
- - lib/util/util.rb
131
- - lib/spass/util.rb
132
- - lib/spass/spass_ds_extensions.rb
133
- - lib/spass/ruby_extensions.rb
134
- - lib/spass/bin.rb
135
- - lib/spass/spass_translator.rb
136
- - lib/fol/first_order_logic.rb
232
+ - lib/adsl/ds/data_store_spec.rb
233
+ - lib/adsl/parser/adsl_parser.rex
234
+ - lib/adsl/parser/adsl_parser.racc
235
+ - lib/adsl/parser/ast_nodes.rb
236
+ - lib/adsl/parser/adsl_parser.tab.rb
237
+ - lib/adsl/parser/adsl_parser.rex.rb
238
+ - lib/adsl/extract/meta.rb
239
+ - lib/adsl/extract/sexp_utils.rb
240
+ - lib/adsl/extract/instrumenter.rb
241
+ - lib/adsl/extract/rails/action_instrumenter.rb
242
+ - lib/adsl/extract/rails/action_runner.rb
243
+ - lib/adsl/extract/rails/action_block_builder.rb
244
+ - lib/adsl/extract/rails/rails_test_helper.rb
245
+ - lib/adsl/extract/rails/rails_instrumentation_test_case.rb
246
+ - lib/adsl/extract/rails/other_meta.rb
247
+ - lib/adsl/extract/rails/callback_chain_simulator.rb
248
+ - lib/adsl/extract/rails/active_record_metaclass_generator.rb
249
+ - lib/adsl/extract/rails/rails_extractor.rb
250
+ - lib/adsl/extract/rails/rails_special_gem_instrumentation.rb
251
+ - lib/adsl/extract/rails/invariant_instrumenter.rb
252
+ - lib/adsl/extract/rails/invariant_extractor.rb
253
+ - lib/adsl/util/test_helper.rb
254
+ - lib/adsl/util/general.rb
255
+ - lib/adsl/util/csv_hash_formatter.rb
256
+ - lib/adsl/spass/util.rb
257
+ - lib/adsl/spass/spass_ds_extensions.rb
258
+ - lib/adsl/spass/ruby_extensions.rb
259
+ - lib/adsl/spass/bin.rb
260
+ - lib/adsl/spass/spass_translator.rb
261
+ - lib/adsl/fol/first_order_logic.rb
262
+ - lib/adsl/railtie.rb
263
+ - lib/adsl/adsl.rb
264
+ - lib/adsl/verification/rails_verification.rb
265
+ - lib/adsl/verification/instrumentation_filter.rb
266
+ - lib/adsl/verification/verification_case.rb
267
+ - lib/adsl/verification/invariant.rb
268
+ - lib/adsl/verification/formula_generators.rb
269
+ - lib/adsl/verification/utils.rb
270
+ - lib/adsl.rb
137
271
  - LICENSE
138
272
  - README.md
139
273
  - Gemfile
274
+ - test/unit/adsl/ds/data_store_spec_test.rb
275
+ - test/unit/adsl/parser/parser_util_test.rb
276
+ - test/unit/adsl/parser/action_parser_test.rb
277
+ - test/unit/adsl/parser/invariant_parser_test.rb
278
+ - test/unit/adsl/parser/class_parser_test.rb
279
+ - test/unit/adsl/parser/general_parser_test.rb
280
+ - test/unit/adsl/parser/ast_nodes_test.rb
281
+ - test/unit/adsl/extract/instrumenter_test.rb
282
+ - test/unit/adsl/extract/rails/active_record_metaclass_generator_test.rb
283
+ - test/unit/adsl/extract/rails/action_instrumenter_test.rb
284
+ - test/unit/adsl/extract/rails/action_block_builder_test.rb
285
+ - test/unit/adsl/extract/rails/rails_test_helper_test.rb
286
+ - test/unit/adsl/extract/rails/rails_extractor_test.rb
287
+ - test/unit/adsl/extract/rails/callback_chain_simulator_test.rb
288
+ - test/unit/adsl/extract/rails/invariant_extractor_test.rb
289
+ - test/unit/adsl/extract/sexp_utils_test.rb
290
+ - test/unit/adsl/extract/meta_test.rb
291
+ - test/unit/adsl/util/csv_hash_formatter_test.rb
292
+ - test/unit/adsl/util/general_test.rb
293
+ - test/unit/adsl/util/test_helper_test.rb
294
+ - test/unit/adsl/spass/spass_translator_test.rb
295
+ - test/unit/adsl/spass/ruby_extensions_test.rb
296
+ - test/unit/adsl/spass/bin_test.rb
297
+ - test/unit/adsl/spass/spass_ds_extensions_test.rb
298
+ - test/unit/adsl/fol/first_order_logic_test.rb
299
+ - test/unit/adsl/verification/formula_generators_test.rb
300
+ - test/unit/adsl/verification/verification_case_test.rb
301
+ - test/unit/adsl/verification/utils_test.rb
302
+ - test/unit/adsl/verification/instrumentation_filter_test.rb
303
+ - test/integration/spass/basic_translation_test.rb
304
+ - test/integration/spass/control_flow_translation_test.rb
305
+ - test/integration/rails/rails_verification_test.rb
306
+ - test/integration/rails/rails_branch_verification_test.rb
140
307
  homepage: http://cs.ucsb.edu/~bo/adsl/
141
308
  licenses:
142
309
  - GNU LGPL 3
@@ -147,9 +314,9 @@ require_paths:
147
314
  - lib
148
315
  required_ruby_version: !ruby/object:Gem::Requirement
149
316
  requirements:
150
- - - ~>
317
+ - - '>='
151
318
  - !ruby/object:Gem::Version
152
- version: 1.8.7
319
+ version: 1.9.3
153
320
  required_rubygems_version: !ruby/object:Gem::Requirement
154
321
  requirements:
155
322
  - - '>='
@@ -160,5 +327,38 @@ rubyforge_project:
160
327
  rubygems_version: 2.0.3
161
328
  signing_key:
162
329
  specification_version: 4
163
- summary: A tool for parsing ADSL and translating it into Spass
164
- test_files: []
330
+ summary: A library for formal verification of Rails models
331
+ test_files:
332
+ - test/unit/adsl/ds/data_store_spec_test.rb
333
+ - test/unit/adsl/parser/parser_util_test.rb
334
+ - test/unit/adsl/parser/action_parser_test.rb
335
+ - test/unit/adsl/parser/invariant_parser_test.rb
336
+ - test/unit/adsl/parser/class_parser_test.rb
337
+ - test/unit/adsl/parser/general_parser_test.rb
338
+ - test/unit/adsl/parser/ast_nodes_test.rb
339
+ - test/unit/adsl/extract/instrumenter_test.rb
340
+ - test/unit/adsl/extract/rails/active_record_metaclass_generator_test.rb
341
+ - test/unit/adsl/extract/rails/action_instrumenter_test.rb
342
+ - test/unit/adsl/extract/rails/action_block_builder_test.rb
343
+ - test/unit/adsl/extract/rails/rails_test_helper_test.rb
344
+ - test/unit/adsl/extract/rails/rails_extractor_test.rb
345
+ - test/unit/adsl/extract/rails/callback_chain_simulator_test.rb
346
+ - test/unit/adsl/extract/rails/invariant_extractor_test.rb
347
+ - test/unit/adsl/extract/sexp_utils_test.rb
348
+ - test/unit/adsl/extract/meta_test.rb
349
+ - test/unit/adsl/util/csv_hash_formatter_test.rb
350
+ - test/unit/adsl/util/general_test.rb
351
+ - test/unit/adsl/util/test_helper_test.rb
352
+ - test/unit/adsl/spass/spass_translator_test.rb
353
+ - test/unit/adsl/spass/ruby_extensions_test.rb
354
+ - test/unit/adsl/spass/bin_test.rb
355
+ - test/unit/adsl/spass/spass_ds_extensions_test.rb
356
+ - test/unit/adsl/fol/first_order_logic_test.rb
357
+ - test/unit/adsl/verification/formula_generators_test.rb
358
+ - test/unit/adsl/verification/verification_case_test.rb
359
+ - test/unit/adsl/verification/utils_test.rb
360
+ - test/unit/adsl/verification/instrumentation_filter_test.rb
361
+ - test/integration/spass/basic_translation_test.rb
362
+ - test/integration/spass/control_flow_translation_test.rb
363
+ - test/integration/rails/rails_verification_test.rb
364
+ - test/integration/rails/rails_branch_verification_test.rb