flay 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ L��`����A�a���D��0�
2
+ ���CYS��S�<�D��L�wt��%+�d�TCg �%Bꧠ�q� D[�$�P"�,C��༧�oK����Ձ�}2�v!�C�x�΅�<�҃��@Ӣ�k(�X��"��[�&���N�E5��
3
+ A�ψI��{��[�Ø؀>`����Kac���޵J�Ⱥ���֌�U/���6 `n۷�a$���V�� {P'�ژ�S^�y�>�92Wc�S�c�,
4
+ �e�A <,*�̋+��f
@@ -1,3 +1,14 @@
1
+ === 1.4.1 / 2010-09-01
2
+
3
+ * 2 minor enhancements:
4
+
5
+ * Added extra error handling for ERB flay to deal with tons of bad ERB
6
+ * Skip plugin if another version already loaded (eg local vs gem).
7
+
8
+ * 1 bug fix:
9
+
10
+ * Fixed all tests that were having problems on 1.9 due to unstable hashes
11
+
1
12
  === 1.4.0 / 2009-08-14
2
13
 
3
14
  * 4 minor enhancements:
@@ -9,7 +9,7 @@ require 'sexp_processor'
9
9
  require 'ruby_parser'
10
10
 
11
11
  class Flay
12
- VERSION = '1.4.0'
12
+ VERSION = '1.4.1'
13
13
 
14
14
  def self.default_options
15
15
  {
@@ -85,17 +85,20 @@ class Flay
85
85
 
86
86
  def self.load_plugins
87
87
  unless defined? @@plugins then
88
+ @@plugins = []
89
+
88
90
  plugins = Gem.find_files("flay_*.rb").reject { |p| p =~ /flay_task/ }
89
91
 
90
92
  plugins.each do |plugin|
93
+ plugin_name = File.basename(plugin, '.rb').sub(/^flay_/, '')
94
+ next if @@plugins.include? plugin_name
91
95
  begin
92
96
  load plugin
97
+ @@plugins << plugin_name
93
98
  rescue LoadError => e
94
99
  warn "error loading #{plugin.inspect}: #{e.message}. skipping..."
95
100
  end
96
101
  end
97
-
98
- @@plugins = plugins.map { |f| File.basename(f, '.rb').sub(/^flay_/, '') }
99
102
  end
100
103
  @@plugins
101
104
  rescue
@@ -304,6 +307,7 @@ class Sexp
304
307
  hashes
305
308
  end
306
309
 
310
+ # REFACTOR: move to sexp.rb
307
311
  def deep_each(&block)
308
312
  self.each_sexp do |sexp|
309
313
  block[sexp]
@@ -311,6 +315,7 @@ class Sexp
311
315
  end
312
316
  end
313
317
 
318
+ # REFACTOR: move to sexp.rb
314
319
  def each_sexp
315
320
  self.each do |sexp|
316
321
  next unless Sexp === sexp
@@ -8,7 +8,12 @@ class Flay
8
8
  def process_erb file
9
9
  erb = File.read file
10
10
 
11
- src = ERB.new(erb).src
12
- RubyParser.new.process(src, file)
11
+ ruby = ERB.new(erb).src
12
+ begin
13
+ RubyParser.new.process(ruby, file)
14
+ rescue => e
15
+ warn ruby if option[:verbose]
16
+ raise e
17
+ end
13
18
  end
14
19
  end
@@ -5,22 +5,6 @@ require 'flay'
5
5
 
6
6
  $: << "../../sexp_processor/dev/lib"
7
7
 
8
- require 'pp' # TODO: remove
9
-
10
- ON_1_9 = RUBY_VERSION =~ /1\.9/
11
- SKIP_1_9 = true && ON_1_9 # HACK
12
-
13
- class Symbol # for testing only, makes the tests concrete
14
- def hash
15
- to_s.hash
16
- end
17
-
18
- alias :crap :<=> if :blah.respond_to? :<=>
19
- def <=> o
20
- Symbol === o && self.to_s <=> o.to_s
21
- end
22
- end
23
-
24
8
  class TestSexp < Test::Unit::TestCase
25
9
  def setup
26
10
  # a(1) { |c| d }
@@ -31,22 +15,29 @@ class TestSexp < Test::Unit::TestCase
31
15
  end
32
16
 
33
17
  def test_structural_hash
34
- s = s(:iter,
35
- s(:call, nil, :a, s(:arglist, s(:lit, 1))),
36
- s(:lasgn, :c),
37
- s(:call, nil, :d, s(:arglist)))
38
-
39
- hash = 955256285
18
+ hash = s(:iter,
19
+ s(:call, s(:arglist, s(:lit))),
20
+ s(:lasgn),
21
+ s(:call, s(:arglist))).hash
40
22
 
41
- assert_equal hash, s.structural_hash, "hand copy"
42
- assert_equal hash, @s.structural_hash, "ivar from setup"
43
- assert_equal hash, @s.deep_clone.structural_hash, "deep clone"
44
- assert_equal hash, s.deep_clone.structural_hash, "copy deep clone"
45
- end unless SKIP_1_9
23
+ assert_equal hash, @s.structural_hash
24
+ assert_equal hash, @s.deep_clone.structural_hash
25
+ end
46
26
 
47
27
  def test_all_structural_subhashes
48
- expected = [-704571402, -282578980, -35395725,
49
- 160138040, 815971090, 927228382]
28
+ s = s(:iter,
29
+ s(:call, s(:arglist, s(:lit))),
30
+ s(:lasgn),
31
+ s(:call, s(:arglist)))
32
+
33
+ expected = [
34
+ s[1] .hash,
35
+ s[1][1] .hash,
36
+ s[1][1][1].hash,
37
+ s[2] .hash,
38
+ s[3] .hash,
39
+ s[3][1] .hash,
40
+ ].sort
50
41
 
51
42
  assert_equal expected, @s.all_structural_subhashes.sort.uniq
52
43
 
@@ -57,7 +48,7 @@ class TestSexp < Test::Unit::TestCase
57
48
  end
58
49
 
59
50
  assert_equal expected, x.sort.uniq
60
- end unless SKIP_1_9
51
+ end
61
52
 
62
53
  def test_process_sexp
63
54
  flay = Flay.new
metadata CHANGED
@@ -1,47 +1,122 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flay
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ hash: 5
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 4
9
+ - 1
10
+ version: 1.4.1
5
11
  platform: ruby
6
12
  authors:
7
13
  - Ryan Davis
8
14
  autorequire:
9
15
  bindir: bin
10
- cert_chain: []
16
+ cert_chain:
17
+ - |
18
+ -----BEGIN CERTIFICATE-----
19
+ MIIDPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
20
+ ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
21
+ GRYDY29tMB4XDTA5MDMwNjE4NTMxNVoXDTEwMDMwNjE4NTMxNVowRTETMBEGA1UE
22
+ AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
23
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
24
+ b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
25
+ taCPaLmfYIaFcHHCSY4hYDJijRQkLxPeB3xbOfzfLoBDbjvx5JxgJxUjmGa7xhcT
26
+ oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
27
+ GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
28
+ qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
29
+ gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
30
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
31
+ AQAY59gYvDxqSqgC92nAP9P8dnGgfZgLxP237xS6XxFGJSghdz/nI6pusfCWKM8m
32
+ vzjjH2wUMSSf3tNudQ3rCGLf2epkcU13/rguI88wO6MrE0wi4ZqLQX+eZQFskJb/
33
+ w6x9W1ur8eR01s397LSMexySDBrJOh34cm2AlfKr/jokKCTwcM0OvVZnAutaovC0
34
+ l1SVZ0ecg88bsWHA0Yhh7NFxK1utWoIhtB6AFC/+trM0FQEB/jZkIS8SaNzn96Rl
35
+ n0sZEf77FLf5peR8TP/PtmIg7Cyqz23sLM4mCOoTGIy5OcZ8TdyiyINUHtb5ej/T
36
+ FBHgymkyj/AOSqKRIpXPhjC6
37
+ -----END CERTIFICATE-----
11
38
 
12
- date: 2009-08-14 00:00:00 -07:00
39
+ date: 2010-09-01 00:00:00 -07:00
13
40
  default_executable:
14
41
  dependencies:
15
42
  - !ruby/object:Gem::Dependency
16
43
  name: sexp_processor
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
44
+ prerelease: false
45
+ requirement: &id001 !ruby/object:Gem::Requirement
46
+ none: false
20
47
  requirements:
21
48
  - - ~>
22
49
  - !ruby/object:Gem::Version
50
+ hash: 7
51
+ segments:
52
+ - 3
53
+ - 0
23
54
  version: "3.0"
24
- version:
55
+ type: :runtime
56
+ version_requirements: *id001
25
57
  - !ruby/object:Gem::Dependency
26
58
  name: ruby_parser
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
59
+ prerelease: false
60
+ requirement: &id002 !ruby/object:Gem::Requirement
61
+ none: false
30
62
  requirements:
31
63
  - - ~>
32
64
  - !ruby/object:Gem::Version
65
+ hash: 3
66
+ segments:
67
+ - 2
68
+ - 0
33
69
  version: "2.0"
34
- version:
70
+ type: :runtime
71
+ version_requirements: *id002
35
72
  - !ruby/object:Gem::Dependency
36
- name: hoe
73
+ name: rubyforge
74
+ prerelease: false
75
+ requirement: &id003 !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ hash: 7
81
+ segments:
82
+ - 2
83
+ - 0
84
+ - 4
85
+ version: 2.0.4
37
86
  type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
87
+ version_requirements: *id003
88
+ - !ruby/object:Gem::Dependency
89
+ name: minitest
90
+ prerelease: false
91
+ requirement: &id004 !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ hash: 9
97
+ segments:
98
+ - 1
99
+ - 7
100
+ - 1
101
+ version: 1.7.1
102
+ type: :development
103
+ version_requirements: *id004
104
+ - !ruby/object:Gem::Dependency
105
+ name: hoe
106
+ prerelease: false
107
+ requirement: &id005 !ruby/object:Gem::Requirement
108
+ none: false
40
109
  requirements:
41
110
  - - ">="
42
111
  - !ruby/object:Gem::Version
43
- version: 2.3.3
44
- version:
112
+ hash: 19
113
+ segments:
114
+ - 2
115
+ - 6
116
+ - 2
117
+ version: 2.6.2
118
+ type: :development
119
+ version_requirements: *id005
45
120
  description: |-
46
121
  Flay analyzes code for structural similarities. Differences in literal
47
122
  values, variable, class, method names, whitespace, programming style,
@@ -78,21 +153,27 @@ rdoc_options:
78
153
  require_paths:
79
154
  - lib
80
155
  required_ruby_version: !ruby/object:Gem::Requirement
156
+ none: false
81
157
  requirements:
82
158
  - - ">="
83
159
  - !ruby/object:Gem::Version
160
+ hash: 3
161
+ segments:
162
+ - 0
84
163
  version: "0"
85
- version:
86
164
  required_rubygems_version: !ruby/object:Gem::Requirement
165
+ none: false
87
166
  requirements:
88
167
  - - ">="
89
168
  - !ruby/object:Gem::Version
169
+ hash: 3
170
+ segments:
171
+ - 0
90
172
  version: "0"
91
- version:
92
173
  requirements: []
93
174
 
94
175
  rubyforge_project: seattlerb
95
- rubygems_version: 1.3.5
176
+ rubygems_version: 1.3.7
96
177
  signing_key:
97
178
  specification_version: 3
98
179
  summary: Flay analyzes code for structural similarities
Binary file