watson-ruby 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +44 -23
- data/assets/defaultConf +6 -6
- data/bin/watson +1 -1
- data/lib/watson.rb +17 -17
- data/lib/watson/bitbucket.rb +52 -52
- data/lib/watson/command.rb +66 -66
- data/lib/watson/config.rb +73 -73
- data/lib/watson/fs.rb +15 -15
- data/lib/watson/github.rb +60 -60
- data/lib/watson/parser.rb +36 -31
- data/lib/watson/printer.rb +33 -33
- data/lib/watson/remote.rb +23 -23
- data/lib/watson/version.rb +2 -2
- data/spec/config_spec.rb +11 -11
- data/spec/fs_spec.rb +1 -1
- data/spec/helper_spec.rb +1 -1
- data/spec/parser_spec.rb +73 -9
- data/watson.gemspec +4 -4
- metadata +2 -2
data/lib/watson/printer.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Watson
|
2
|
-
|
2
|
+
|
3
3
|
# Color definitions for pretty printing
|
4
4
|
# Defined here because we need Global scope but makes sense to have them
|
5
5
|
# in the printer.rb file at least
|
@@ -29,38 +29,38 @@ module Watson
|
|
29
29
|
include Watson
|
30
30
|
|
31
31
|
# Debug printing for this class
|
32
|
-
DEBUG = false
|
32
|
+
DEBUG = false
|
33
33
|
|
34
34
|
class << self
|
35
|
-
|
35
|
+
|
36
36
|
# Include for debug_print (for static methods)
|
37
37
|
include Watson
|
38
38
|
|
39
39
|
###########################################################
|
40
|
-
# Custom color print for static call (only writes to STDOUT)
|
40
|
+
# Custom color print for static call (only writes to STDOUT)
|
41
41
|
def cprint (msg = "", color = "")
|
42
42
|
|
43
43
|
# Identify method entry
|
44
44
|
debug_print "#{ self } : #{ __method__ }\n"
|
45
|
-
|
45
|
+
|
46
46
|
# This little check will allow us to take a Constant defined color
|
47
47
|
# As well as a [0-256] value if specified
|
48
|
-
if (color.is_a?(String))
|
48
|
+
if (color.is_a?(String))
|
49
49
|
debug_print "Custom color specified for cprint\n"
|
50
50
|
STDOUT.write(color)
|
51
51
|
elsif (color.between?(0, 256))
|
52
52
|
debug_print "No or Default color specified for cprint\n"
|
53
53
|
STDOUT.write("\e[38;5;#{ color }m")
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
STDOUT.write(msg)
|
57
57
|
end
|
58
58
|
|
59
59
|
|
60
60
|
###########################################################
|
61
|
-
# Standard header print for static call (uses static cprint)
|
62
|
-
def print_header
|
63
|
-
|
61
|
+
# Standard header print for static call (uses static cprint)
|
62
|
+
def print_header
|
63
|
+
|
64
64
|
# Identify method entry
|
65
65
|
debug_print "#{ self } : #{ __method__ }\n"
|
66
66
|
|
@@ -76,9 +76,9 @@ module Watson
|
|
76
76
|
|
77
77
|
|
78
78
|
###########################################################
|
79
|
-
# Status printer for static call (uses static cprint)
|
79
|
+
# Status printer for static call (uses static cprint)
|
80
80
|
# Print status block in standard format
|
81
|
-
def print_status(msg, color)
|
81
|
+
def print_status(msg, color)
|
82
82
|
cprint RESET + BOLD
|
83
83
|
cprint WHITE + "[ "
|
84
84
|
cprint "#{ msg } ", color
|
@@ -93,19 +93,19 @@ module Watson
|
|
93
93
|
|
94
94
|
# Identify method entry
|
95
95
|
debug_print "#{ self } : #{ __method__ }\n"
|
96
|
-
|
96
|
+
|
97
97
|
@config = config
|
98
98
|
return true
|
99
|
-
end
|
99
|
+
end
|
100
|
+
|
100
101
|
|
101
|
-
|
102
102
|
###########################################################
|
103
|
-
# Take parsed structure and print out in specified formatting
|
103
|
+
# Take parsed structure and print out in specified formatting
|
104
104
|
def run(structure)
|
105
105
|
|
106
106
|
# Identify method entry
|
107
107
|
debug_print "#{ self } : #{ __method__ }\n"
|
108
|
-
|
108
|
+
|
109
109
|
# Check Config to see if we have access to less for printing
|
110
110
|
# If so, open our temp file as the output to write to
|
111
111
|
# Else, just print out to STDOUT
|
@@ -115,8 +115,8 @@ module Watson
|
|
115
115
|
else
|
116
116
|
debug_print "Unix less is unavaliable, setting output to STDOUT\n"
|
117
117
|
@output = STDOUT
|
118
|
-
end
|
119
|
-
|
118
|
+
end
|
119
|
+
|
120
120
|
# Print header for output
|
121
121
|
debug_print "Printing Header\n"
|
122
122
|
print_header
|
@@ -148,7 +148,7 @@ module Watson
|
|
148
148
|
|
149
149
|
# This little check will allow us to take a Constant defined color
|
150
150
|
# As well as a [0-256] value if specified
|
151
|
-
if (color.is_a?(String))
|
151
|
+
if (color.is_a?(String))
|
152
152
|
debug_print "Custom color specified for cprint\n"
|
153
153
|
@output.write(color)
|
154
154
|
elsif (color.between?(0, 256))
|
@@ -159,10 +159,10 @@ module Watson
|
|
159
159
|
@output.write(msg)
|
160
160
|
end
|
161
161
|
|
162
|
-
|
162
|
+
|
163
163
|
###########################################################
|
164
164
|
# Standard header print for class call (uses member cprint)
|
165
|
-
def print_header
|
165
|
+
def print_header
|
166
166
|
# Identify method entry
|
167
167
|
|
168
168
|
debug_print "#{ self } : #{ __method__ }\n"
|
@@ -183,7 +183,7 @@ module Watson
|
|
183
183
|
###########################################################
|
184
184
|
# Status printer for member call (uses member cprint)
|
185
185
|
# Print status block in standard format
|
186
|
-
def print_status(msg, color)
|
186
|
+
def print_status(msg, color)
|
187
187
|
cprint RESET + BOLD
|
188
188
|
cprint WHITE + "[ "
|
189
189
|
cprint "#{ msg } ", color
|
@@ -193,7 +193,7 @@ module Watson
|
|
193
193
|
|
194
194
|
###########################################################
|
195
195
|
# Go through all files and directories and call necessary printing methods
|
196
|
-
# Print all individual entries, call print_structure on each subdir
|
196
|
+
# Print all individual entries, call print_structure on each subdir
|
197
197
|
def print_structure(structure)
|
198
198
|
|
199
199
|
# Identify method entry
|
@@ -234,9 +234,9 @@ module Watson
|
|
234
234
|
cprint "\n"
|
235
235
|
print_status "x", RED
|
236
236
|
cprint BOLD + UNDERLINE + RED + "#{entry[:relative_path]}" + RESET + "\n"
|
237
|
-
end
|
237
|
+
end
|
238
|
+
|
238
239
|
|
239
|
-
|
240
240
|
# [review] - Should the tag structure be self contained in the hash
|
241
241
|
# Or is it ok to reference @config to figure out the tags
|
242
242
|
@config.tag_list.each do | _tag |
|
@@ -249,7 +249,7 @@ module Watson
|
|
249
249
|
cprint "\n"
|
250
250
|
next
|
251
251
|
end
|
252
|
-
|
252
|
+
|
253
253
|
debug_print "#{ _tag } has issues in it, print!\n"
|
254
254
|
print_status "#{ _tag }", BLUE
|
255
255
|
cprint "\n"
|
@@ -261,8 +261,8 @@ module Watson
|
|
261
261
|
|
262
262
|
|
263
263
|
# Check to see if it has been resolved on GitHub/Bitbucket
|
264
|
-
debug_print "Checking if issue has been resolved\n"
|
265
|
-
@config.github_issues[:closed].each do | _closed |
|
264
|
+
debug_print "Checking if issue has been resolved\n"
|
265
|
+
@config.github_issues[:closed].each do | _closed |
|
266
266
|
if _closed["body"].include?(_issue[:md5])
|
267
267
|
debug_print "Found in #{ _closed[:comment] }, not posting\n"
|
268
268
|
cprint BOLD + " [" + RESET
|
@@ -270,10 +270,10 @@ module Watson
|
|
270
270
|
cprint BOLD + "]" + RESET
|
271
271
|
end
|
272
272
|
debug_print "Did not find in #{ _closed[:comment] }\n"
|
273
|
-
end
|
273
|
+
end
|
274
274
|
|
275
275
|
debug_print "Checking if issue has been resolved\n"
|
276
|
-
@config.bitbucket_issues[:closed].each do | _closed |
|
276
|
+
@config.bitbucket_issues[:closed].each do | _closed |
|
277
277
|
if _closed["content"].include?(_issue[:md5])
|
278
278
|
debug_print "Found in #{ _closed["content"] }, not posting\n"
|
279
279
|
cprint BOLD + " [" + RESET
|
@@ -288,6 +288,6 @@ module Watson
|
|
288
288
|
cprint "\n"
|
289
289
|
end
|
290
290
|
end
|
291
|
-
|
291
|
+
|
292
292
|
end
|
293
|
-
end
|
293
|
+
end
|
data/lib/watson/remote.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
module Watson
|
2
|
-
# Remote class that handles all remote HTTP calls to Bitbucket and GitHub
|
2
|
+
# Remote class that handles all remote HTTP calls to Bitbucket and GitHub
|
3
3
|
class Remote
|
4
4
|
|
5
5
|
# Debug printing for this class
|
6
|
-
DEBUG = false
|
7
|
-
|
6
|
+
DEBUG = false
|
7
|
+
|
8
8
|
class << self
|
9
|
-
|
9
|
+
|
10
10
|
# Include for debug_print
|
11
11
|
include Watson
|
12
12
|
|
13
|
-
# Required libs
|
13
|
+
# Required libs
|
14
14
|
require 'net/https'
|
15
15
|
require 'uri'
|
16
16
|
require 'json'
|
17
|
-
|
18
|
-
|
17
|
+
|
18
|
+
|
19
19
|
# Default options hash for http_call
|
20
|
-
# Will get merged with input argument hash to maintain defaults
|
20
|
+
# Will get merged with input argument hash to maintain defaults
|
21
21
|
HTTP_opts = {
|
22
22
|
:url => nil, #--> URL of endpoint [String]
|
23
23
|
:ssl => false, #--> Use SSL in connection (HTTPS) (True/False]
|
@@ -28,36 +28,36 @@ module Watson
|
|
28
28
|
:data => nil, #--> Hash of data to be POST'd in HTTP request [Hash]
|
29
29
|
:verbose => false #--> Turn on verbose debug for this call [True/False]
|
30
30
|
}
|
31
|
-
|
31
|
+
|
32
32
|
###########################################################
|
33
33
|
# Generic HTTP call method
|
34
|
-
# Accepts input hash of options that dictate how the HTTP call is to be made
|
34
|
+
# Accepts input hash of options that dictate how the HTTP call is to be made
|
35
35
|
def http_call( opts )
|
36
36
|
# [review] - Don't use DEBUG inside Remote class but pull from calling method's class?
|
37
37
|
# [review] - Not sure if this is the best/proper way to do things but it works...
|
38
38
|
|
39
39
|
# Identify method entry
|
40
40
|
debug_print "#{ self.class } : #{ __method__ }\n"
|
41
|
-
|
41
|
+
|
42
42
|
# Merge default options with those passed in by user to form complete opt list
|
43
43
|
opts = HTTP_opts.merge(opts)
|
44
44
|
|
45
45
|
|
46
46
|
# Check URL in hash and get URI from it, then set up HTTP connection
|
47
47
|
if opts[:url] =~ /^#{URI::regexp}$/
|
48
|
-
_uri = URI(opts[:url])
|
48
|
+
_uri = URI(opts[:url])
|
49
49
|
else
|
50
50
|
debug_print "No URL specified in input opts, exiting HTTP call\n"
|
51
51
|
return false
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
_http = Net::HTTP.new(_uri.host, _uri.port)
|
55
|
-
|
55
|
+
|
56
56
|
# Print out verbose HTTP request if :verbose is set
|
57
57
|
# For hardcore debugging when shit really doesn't work
|
58
58
|
_http.set_debug_output $stderr if opts[:verbose] == true
|
59
|
-
|
60
|
-
# If SSL is set in hash, set HTTP connection to use SSL
|
59
|
+
|
60
|
+
# If SSL is set in hash, set HTTP connection to use SSL
|
61
61
|
_http.use_ssl = true if opts[:ssl] == true
|
62
62
|
|
63
63
|
# Create request based on HTTP method
|
@@ -65,10 +65,10 @@ module Watson
|
|
65
65
|
case opts[:method].upcase
|
66
66
|
when "GET"
|
67
67
|
_req = Net::HTTP::Get.new(_uri.request_uri)
|
68
|
-
|
68
|
+
|
69
69
|
when "POST"
|
70
70
|
_req = Net::HTTP::Post.new(_uri.request_uri)
|
71
|
-
|
71
|
+
|
72
72
|
else
|
73
73
|
debug_print "No method specified, cannot make HTTP request\n"
|
74
74
|
return false
|
@@ -77,7 +77,7 @@ module Watson
|
|
77
77
|
# Check for basic authentication key in hash
|
78
78
|
if opts[:basic_auth].size == 2
|
79
79
|
_req.basic_auth(opts[:basic_auth][0], opts[:basic_auth][1])
|
80
|
-
end
|
80
|
+
end
|
81
81
|
|
82
82
|
# Check for Authentication token key in hash to be used in header
|
83
83
|
# I think this is pretty universal, but specifically works for GitHub
|
@@ -86,9 +86,9 @@ module Watson
|
|
86
86
|
end
|
87
87
|
|
88
88
|
# [review] - Add :data_format to use set_form_data vs json body?
|
89
|
-
# For now, use Hash or Array, this is to differentiate between
|
89
|
+
# For now, use Hash or Array, this is to differentiate between
|
90
90
|
# putting post data in body vs putting it in the form
|
91
|
-
|
91
|
+
|
92
92
|
# If a POST method, :data is present, and is a Hash, fill request body with data
|
93
93
|
if opts[:method].upcase == "POST" && opts[:data] && opts[:data].is_a?(Hash)
|
94
94
|
_req.body = opts[:data].to_json
|
@@ -106,14 +106,14 @@ module Watson
|
|
106
106
|
debug_print "HTTP Response Code: #{ _resp.code }\n"
|
107
107
|
debug_print "HTTP Response Msg: #{ _resp.message }\n"
|
108
108
|
|
109
|
-
# [fix] - Not sure if 401 is the only code that gives nonparseable body?
|
109
|
+
# [fix] - Not sure if 401 is the only code that gives nonparseable body?
|
110
110
|
# Figure out what other response codes are bad news for JSON.parse
|
111
111
|
_json = _resp.code == "401" ? Hash.new : JSON.parse(_resp.body)
|
112
112
|
debug_print "JSON: \n #{ _json }\n"
|
113
113
|
|
114
114
|
# [review] - Returning hash of json + response the right thing to do?
|
115
115
|
# return {:json => _json, :resp => _resp}
|
116
|
-
return _json, _resp
|
116
|
+
return _json, _resp
|
117
117
|
end
|
118
118
|
end
|
119
119
|
end
|
data/lib/watson/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module Watson
|
2
|
-
VERSION = "1.0.
|
1
|
+
module Watson
|
2
|
+
VERSION = "1.0.6"
|
3
3
|
end
|
data/spec/config_spec.rb
CHANGED
@@ -16,7 +16,7 @@ describe Config do
|
|
16
16
|
|
17
17
|
describe '#create_conf' do
|
18
18
|
it 'create config file, return true' do
|
19
|
-
@config.create_conf.should be_true
|
19
|
+
@config.create_conf.should be_true
|
20
20
|
File.exists?(@file).should be_true
|
21
21
|
end
|
22
22
|
end
|
@@ -35,7 +35,7 @@ describe Config do
|
|
35
35
|
File.exists?(@file).should be_true
|
36
36
|
end
|
37
37
|
end
|
38
|
-
end
|
38
|
+
end
|
39
39
|
|
40
40
|
describe '#read_conf' do
|
41
41
|
context 'config does not exist' do
|
@@ -53,24 +53,24 @@ describe Config do
|
|
53
53
|
@config.dir_list.should include('.')
|
54
54
|
@config.tag_list.should include('fix', 'review', 'todo')
|
55
55
|
@config.ignore_list.should include('.git', '*.swp')
|
56
|
-
|
56
|
+
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
61
|
describe '#update_conf' do
|
62
|
-
before do
|
62
|
+
before do
|
63
63
|
@config.check_conf
|
64
|
-
@config.parse_depth = 1000
|
65
|
-
@config.update_conf('parse_depth')
|
66
|
-
end
|
64
|
+
@config.parse_depth = 1000
|
65
|
+
@config.update_conf('parse_depth')
|
66
|
+
end
|
67
67
|
|
68
68
|
it 'updated config.parse_depth should be 1000' do
|
69
69
|
@new_config = Config.new
|
70
70
|
@new_config.check_conf.should be_true
|
71
71
|
@new_config.read_conf.should be_true
|
72
72
|
@new_config.parse_depth.to_i.should eql 1000
|
73
|
-
end
|
73
|
+
end
|
74
74
|
end
|
75
75
|
|
76
76
|
# [review] - Should this be #initialize or #new?
|
@@ -81,7 +81,7 @@ describe Config do
|
|
81
81
|
@config.cl_ignore_set.should be_false
|
82
82
|
|
83
83
|
@config.use_less.should be_false
|
84
|
-
|
84
|
+
|
85
85
|
@config.ignore_list.should == []
|
86
86
|
@config.dir_list.should == []
|
87
87
|
@config.file_list.should == []
|
@@ -101,7 +101,7 @@ describe Config do
|
|
101
101
|
@config.bitbucket_issues.should == {:open => Hash.new(),
|
102
102
|
:closed => Hash.new() }
|
103
103
|
|
104
|
-
end
|
104
|
+
end
|
105
105
|
end
|
106
106
|
|
107
107
|
describe '#run' do
|
@@ -110,7 +110,7 @@ describe Config do
|
|
110
110
|
@config.ignore_list.should include('.git', '*.swp')
|
111
111
|
@config.tag_list.should include('fix', 'review', 'todo')
|
112
112
|
@config.dir_list.should include('.')
|
113
|
-
end
|
113
|
+
end
|
114
114
|
|
115
115
|
end
|
116
116
|
|
data/spec/fs_spec.rb
CHANGED
data/spec/helper_spec.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# [review] - Using own funky path loading because traditional way seems wrong?
|
2
|
-
# Commented out version is traditional, seen in many apps. If you use that and
|
2
|
+
# Commented out version is traditional, seen in many apps. If you use that and
|
3
3
|
# look at load_path you get path/../lib (I'd expect those to be separate?)
|
4
4
|
# My funky version adds path/., path/bin, path/assets separately
|
5
5
|
# Maybe I don't get how the load path is supposed to look though...
|
data/spec/parser_spec.rb
CHANGED
@@ -18,16 +18,80 @@ describe Parser do
|
|
18
18
|
|
19
19
|
describe '#get_comment_type' do
|
20
20
|
context 'known extension' do
|
21
|
-
it 'return correct extension
|
22
|
-
@parser.get_comment_type('lib/watson.
|
21
|
+
it 'return correct extension for c++' do
|
22
|
+
@parser.get_comment_type('lib/watson.cpp').should eql ['//', '/*']
|
23
|
+
@parser.get_comment_type('lib/watson.cc').should eql ['//', '/*']
|
24
|
+
@parser.get_comment_type('lib/watson.hpp').should eql ['//', '/*']
|
25
|
+
@parser.get_comment_type('lib/watson.c').should eql ['//', '/*']
|
26
|
+
@parser.get_comment_type('lib/watson.h').should eql ['//', '/*']
|
23
27
|
end
|
24
28
|
|
25
|
-
it 'return correct extension
|
26
|
-
@parser.get_comment_type('lib/watson.
|
29
|
+
it 'return correct extension for java' do
|
30
|
+
@parser.get_comment_type('lib/watson.java').should eql ['//', '/*', '/**']
|
31
|
+
@parser.get_comment_type('lib/watson.class').should eql ['//', '/*', '/**']
|
27
32
|
end
|
28
33
|
|
29
|
-
it 'return correct extension
|
30
|
-
@parser.get_comment_type('lib/watson.
|
34
|
+
it 'return correct extension for csharp' do
|
35
|
+
@parser.get_comment_type('lib/watson.cs').should eql ['//', '/*']
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'return correct extension for javascript' do
|
39
|
+
@parser.get_comment_type('lib/watson.js').should eql ['//', '/*']
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'return correct extension for php' do
|
43
|
+
@parser.get_comment_type('lib/watson.php').should eql ['//', '/*', '#']
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'return correct extension for objectivec' do
|
47
|
+
@parser.get_comment_type('lib/watson.m').should eql ['//', '/*']
|
48
|
+
@parser.get_comment_type('lib/watson.mm').should eql ['//', '/*']
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'return correct extension for go' do
|
52
|
+
@parser.get_comment_type('lib/watson.go').should eql ['//', '/*']
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'return correct extension for scala' do
|
56
|
+
@parser.get_comment_type('lib/watson.scala').should eql ['//', '/*']
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'return correct extension for erlang' do
|
60
|
+
@parser.get_comment_type('lib/watson.erl').should eql ['%%', '%']
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'return correct extension haskell' do
|
64
|
+
@parser.get_comment_type('lib/watson.hs').should eql ['--']
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'return correct extension bash' do
|
68
|
+
@parser.get_comment_type('lib/watson.sh').should eql ['#']
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'return correct extension ruby' do
|
72
|
+
@parser.get_comment_type('lib/watson.rb').should eql ['#']
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'return correct extension perl' do
|
76
|
+
@parser.get_comment_type('lib/watson.pl').should eql ['#']
|
77
|
+
@parser.get_comment_type('lib/watson.pm').should eql ['#']
|
78
|
+
@parser.get_comment_type('lib/watson.t').should eql ['#']
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'return correct extension python' do
|
82
|
+
@parser.get_comment_type('lib/watson.py').should eql ['#']
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'return correct extension coffeescript' do
|
86
|
+
@parser.get_comment_type('lib/watson.coffee').should eql ['#']
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'return correct extension zsh' do
|
90
|
+
@parser.get_comment_type('lib/watson.zsh').should eql ['#']
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'return correct extension (;; for clojure)' do
|
94
|
+
@parser.get_comment_type('lib/watson.clj').should eql [';;']
|
31
95
|
end
|
32
96
|
end
|
33
97
|
|
@@ -72,7 +136,7 @@ describe Parser do
|
|
72
136
|
FileUtils.mkdir('test_dir')
|
73
137
|
FileUtils.cp('assets/examples/main.cpp', 'test_dir/')
|
74
138
|
end
|
75
|
-
|
139
|
+
|
76
140
|
it 'generate populated hash structure from file' do
|
77
141
|
@structure = @parser.parse_file('test_dir/main.cpp')
|
78
142
|
|
@@ -85,7 +149,7 @@ describe Parser do
|
|
85
149
|
FileUtils.rm_rf('test_dir')
|
86
150
|
end
|
87
151
|
end
|
88
|
-
|
152
|
+
|
89
153
|
end
|
90
154
|
|
91
155
|
describe '#parse_dir' do
|
@@ -112,7 +176,7 @@ describe Parser do
|
|
112
176
|
FileUtils.mkdir('test_dir')
|
113
177
|
FileUtils.cp('assets/examples/main.cpp', 'test_dir/')
|
114
178
|
end
|
115
|
-
|
179
|
+
|
116
180
|
it 'generate hash structure with parsed file' do
|
117
181
|
@structure = @parser.parse_dir('test_dir/', 0)
|
118
182
|
@structure[:files][0][:relative_path].should == 'test_dir/main.cpp'
|