adsl 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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