friends 0.28 → 0.29

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -4
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +2 -0
  5. data/CHANGELOG.md +13 -0
  6. data/README.md +35 -5
  7. data/Rakefile +1 -1
  8. data/bin/friends +7 -379
  9. data/friends.gemspec +3 -1
  10. data/lib/friends/activity.rb +4 -4
  11. data/lib/friends/commands/add.rb +64 -0
  12. data/lib/friends/commands/clean.rb +9 -0
  13. data/lib/friends/commands/edit.rb +12 -0
  14. data/lib/friends/commands/graph.rb +56 -0
  15. data/lib/friends/commands/list.rb +143 -0
  16. data/lib/friends/commands/remove.rb +27 -0
  17. data/lib/friends/commands/rename.rb +30 -0
  18. data/lib/friends/commands/set.rb +14 -0
  19. data/lib/friends/commands/stats.rb +11 -0
  20. data/lib/friends/commands/suggest.rb +20 -0
  21. data/lib/friends/commands/update.rb +29 -0
  22. data/lib/friends/graph.rb +7 -7
  23. data/lib/friends/introvert.rb +23 -18
  24. data/lib/friends/version.rb +1 -1
  25. data/test/commands/add/activity_spec.rb +379 -0
  26. data/test/commands/add/friend_spec.rb +30 -0
  27. data/test/commands/add/location_spec.rb +30 -0
  28. data/test/commands/add/nickname_spec.rb +50 -0
  29. data/test/commands/add/tag_spec.rb +65 -0
  30. data/test/commands/clean_spec.rb +39 -0
  31. data/test/commands/graph_spec.rb +147 -0
  32. data/test/commands/help_spec.rb +45 -0
  33. data/test/commands/list/activities_spec.rb +136 -0
  34. data/test/commands/list/favorite/friends_spec.rb +77 -0
  35. data/test/commands/list/favorite/locations_spec.rb +82 -0
  36. data/test/commands/list/friends_spec.rb +76 -0
  37. data/test/commands/list/locations_spec.rb +35 -0
  38. data/test/commands/list/tags_spec.rb +58 -0
  39. data/test/commands/remove/nickname_spec.rb +63 -0
  40. data/test/commands/remove/tag_spec.rb +64 -0
  41. data/test/commands/rename/friend_spec.rb +55 -0
  42. data/test/commands/rename/location_spec.rb +43 -0
  43. data/test/commands/set/location_spec.rb +54 -0
  44. data/test/commands/stats_spec.rb +41 -0
  45. data/test/commands/suggest_spec.rb +86 -0
  46. data/test/commands/update_spec.rb +13 -0
  47. data/test/helper.rb +114 -0
  48. metadata +89 -15
  49. data/test/activity_spec.rb +0 -597
  50. data/test/friend_spec.rb +0 -241
  51. data/test/graph_spec.rb +0 -92
  52. data/test/introvert_spec.rb +0 -969
  53. data/test/location_spec.rb +0 -60
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "./test/helper"
4
+
5
+ clean_describe "rename friend" do
6
+ subject { run_cmd("rename friend #{old_name} #{new_name}") }
7
+
8
+ let(:content) { CONTENT }
9
+ let(:new_name) { "'George Washington'" }
10
+
11
+ describe "when friend name has no matches" do
12
+ let(:old_name) { "Garbage" }
13
+ it "prints an error message" do
14
+ stderr_only 'Error: No friend found for "Garbage"'
15
+ end
16
+ end
17
+
18
+ describe "when friend name has more than one match" do
19
+ let(:old_name) { "George" }
20
+ before { run_cmd("add friend George Harrison") }
21
+
22
+ it "prints an error message" do
23
+ stderr_only 'Error: More than one friend found for "George": '\
24
+ "George Harrison, George Washington Carver"
25
+ end
26
+ end
27
+
28
+ describe "when friend name has one match" do
29
+ let(:old_name) { "George" }
30
+
31
+ it "renames friend" do
32
+ line_changed "- George Washington Carver", "- George Washington"
33
+ end
34
+
35
+ it "updates friend name in activities" do
36
+ run_cmd("list activities")[:stdout].must_equal <<-FILE
37
+ 2015-11-01: Grace Hopper and I went to Marie's Diner. George had to cancel at the last minute. @food
38
+ 2015-01-04: Got lunch with Grace Hopper and George Washington Carver. @food
39
+ 2014-12-31: Celebrated the new year in Paris with Marie Curie. @partying
40
+ 2014-11-15: Talked to George Washington Carver on the phone for an hour.
41
+ FILE
42
+ subject
43
+ run_cmd("list activities")[:stdout].must_equal <<-FILE
44
+ 2015-11-01: Grace Hopper and I went to Marie's Diner. George had to cancel at the last minute. @food
45
+ 2015-01-04: Got lunch with Grace Hopper and George Washington. @food
46
+ 2014-12-31: Celebrated the new year in Paris with Marie Curie. @partying
47
+ 2014-11-15: Talked to George Washington on the phone for an hour.
48
+ FILE
49
+ end
50
+
51
+ it "prints an output message" do
52
+ stdout_only 'Name changed: "George Washington"'
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "./test/helper"
4
+
5
+ clean_describe "rename location" do
6
+ subject { run_cmd("rename location #{old_name} #{new_name}") }
7
+
8
+ let(:content) { CONTENT }
9
+ let(:new_name) { "'Ville Lumière'" }
10
+
11
+ describe "when location name has no matches" do
12
+ let(:old_name) { "Garbage" }
13
+ it "prints an error message" do
14
+ stderr_only 'Error: No location found for "Garbage"'
15
+ end
16
+ end
17
+
18
+ describe "when location name has one match" do
19
+ let(:old_name) { "Paris" }
20
+
21
+ it "renames location" do
22
+ line_changed("- Paris", "- Ville Lumière")
23
+ end
24
+
25
+ it "updates location name in activities" do
26
+ line_changed(
27
+ "- 2014-12-31: Celebrated the new year in _Paris_ with **Marie Curie**. @partying",
28
+ "- 2014-12-31: Celebrated the new year in _Ville Lumière_ with **Marie Curie**. @partying"
29
+ )
30
+ end
31
+
32
+ it "updates location name for friends" do
33
+ line_changed(
34
+ "- Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Paris] @navy @science",
35
+ "- Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Ville Lumière] @navy @science"
36
+ )
37
+ end
38
+
39
+ it "prints an output message" do
40
+ stdout_only 'Location renamed: "Ville Lumière"'
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "./test/helper"
4
+
5
+ clean_describe "set location" do
6
+ subject { run_cmd("set location #{friend_name} #{location_name}") }
7
+ let(:content) { CONTENT }
8
+
9
+ describe "when friend does not exist" do
10
+ let(:friend_name) { "Garbage" }
11
+ let(:location_name) { "Paris" }
12
+
13
+ it "prints an error message" do
14
+ stderr_only 'Error: No friend found for "Garbage"'
15
+ end
16
+ end
17
+
18
+ describe "when location does not exist" do
19
+ let(:friend_name) { "Marie" }
20
+ let(:location_name) { "Garbage" }
21
+
22
+ it "prints an error message" do
23
+ stderr_only 'Error: No location found for "Garbage"'
24
+ end
25
+ end
26
+
27
+ describe "when friend and location exist" do
28
+ let(:location_name) { "Paris" }
29
+
30
+ describe "when friend already has a location" do
31
+ let(:friend_name) { "Marie" }
32
+
33
+ it "prints correct output" do
34
+ stdout_only "Marie Curie's location set to: Paris"
35
+ end
36
+
37
+ it "updates existing location" do
38
+ line_changed "- Marie Curie [Atlantis] @science", "- Marie Curie [Paris] @science"
39
+ end
40
+ end
41
+
42
+ describe "when friend has no location" do
43
+ let(:friend_name) { "George" }
44
+
45
+ it "prints correct output" do
46
+ stdout_only "George Washington Carver's location set to: Paris"
47
+ end
48
+
49
+ it "adds a location" do
50
+ line_changed "- George Washington Carver", "- George Washington Carver [Paris]"
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "./test/helper"
4
+
5
+ clean_describe "stats" do
6
+ subject { run_cmd("stats") }
7
+
8
+ describe "when file does not exist" do
9
+ it "returns the stats" do
10
+ stdout_only <<-FILE
11
+ Total activities: 0
12
+ Total friends: 0
13
+ Total time elapsed: 0 days
14
+ FILE
15
+ end
16
+ end
17
+
18
+ describe "when the file is empty" do
19
+ let(:content) { "" }
20
+
21
+ it "returns the stats" do
22
+ stdout_only <<-FILE
23
+ Total activities: 0
24
+ Total friends: 0
25
+ Total time elapsed: 0 days
26
+ FILE
27
+ end
28
+ end
29
+
30
+ describe "when file has stats" do
31
+ let(:content) { CONTENT }
32
+
33
+ it "returns the content" do
34
+ stdout_only <<-FILE
35
+ Total activities: 4
36
+ Total friends: 3
37
+ Total time elapsed: 351 days
38
+ FILE
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "./test/helper"
4
+
5
+ clean_describe "suggest" do
6
+ subject { run_cmd("suggest") }
7
+
8
+ describe "when file does not exist" do
9
+ it "prints a no-data message" do
10
+ stdout_only <<-FILE
11
+ Distant friend: None found
12
+ Moderate friend: None found
13
+ Close friend: None found
14
+ FILE
15
+ end
16
+ end
17
+
18
+ describe "when the file is empty" do
19
+ let(:content) { "" }
20
+
21
+ it "prints a no-data message" do
22
+ stdout_only <<-FILE
23
+ Distant friend: None found
24
+ Moderate friend: None found
25
+ Close friend: None found
26
+ FILE
27
+ end
28
+ end
29
+
30
+ describe "when file has content" do
31
+ let(:content) do
32
+ <<-FILE
33
+ ### Activities:
34
+ - 2017-03-01: Met up with **George Washington Carver**.
35
+ - 2017-02-01: Met up with **George Washington Carver**.
36
+ - 2017-01-01: Met up with **George Washington Carver**.
37
+ - 2016-12-01: Met up with **Grace Hopper**.
38
+ - 2016-11-01: Met up with **Grace Hopper**.
39
+ - 2016-10-01: Met up with **Grace Hopper**.
40
+ - 2016-09-01: Met up with **Grace Hopper**.
41
+ - 2016-08-01: Met up with **Grace Hopper**.
42
+ - 2016-07-01: Met up with **Grace Hopper**.
43
+ - 2016-06-01: Met up with **Grace Hopper**.
44
+ - 2016-05-01: Met up with **Grace Hopper**.
45
+ - 2016-04-01: Met up with **Grace Hopper**.
46
+ - 2016-03-01: Met up with **Grace Hopper**.
47
+ - 2016-02-01: Met up with **Grace Hopper**.
48
+ - 2016-01-01: Met up with **Grace Hopper**.
49
+ - 2015-11-01: **Grace Hopper** and I went to _Marie's Diner_. George had to cancel at the last minute. @food
50
+ - 2015-01-04: Got lunch with **Grace Hopper** and **George Washington Carver**. @food
51
+ - 2014-12-31: Celebrated the new year in _Paris_ with **Marie Curie**. @partying
52
+ - 2014-11-15: Talked to **George Washington Carver** on the phone for an hour.
53
+
54
+ ### Friends:
55
+ - George Washington Carver
56
+ - Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Paris] @navy @science
57
+ - Marie Curie [Atlantis] @science
58
+
59
+ ### Locations:
60
+ - Atlantis
61
+ - Marie's Diner
62
+ - Paris
63
+ FILE
64
+ end
65
+
66
+ it "prints suggested friends" do
67
+ stdout_only <<-FILE
68
+ Distant friend: Marie Curie
69
+ Moderate friend: George Washington Carver
70
+ Close friend: Grace Hopper
71
+ FILE
72
+ end
73
+
74
+ describe "--in" do
75
+ subject { run_cmd("suggest --in Paris") }
76
+
77
+ it "prints suggested friends" do
78
+ stdout_only <<-FILE
79
+ Distant friend: None found
80
+ Moderate friend: None found
81
+ Close friend: Grace Hopper
82
+ FILE
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "./test/helper"
4
+
5
+ clean_describe "update" do
6
+ subject { run_cmd("update") }
7
+
8
+ it "prints a status message" do
9
+ subject[:stderr].must_equal ""
10
+ subject[:status].must_equal 0
11
+ [/Updated to friends/, /Already up-to-date/].one? { |m| subject[:stdout] =~ m }.must_equal true
12
+ end
13
+ end
data/test/helper.rb CHANGED
@@ -3,7 +3,121 @@
3
3
  require "codeclimate-test-reporter"
4
4
  CodeClimate::TestReporter.start
5
5
 
6
+ ENV["MT_HELL"] = "1" # Forces tests to have at least one assertion to pass.
7
+
6
8
  require "minitest/autorun"
9
+ require "minitest/parallel_fork"
7
10
  require "minitest/pride"
11
+ require "minitest/hell"
12
+ require "open3"
13
+ require "securerandom"
8
14
 
9
15
  require "friends"
16
+
17
+ CONTENT = <<-FILE
18
+ ### Activities:
19
+ - 2015-11-01: **Grace Hopper** and I went to _Marie's Diner_. George had to cancel at the last minute. @food
20
+ - 2015-01-04: Got lunch with **Grace Hopper** and **George Washington Carver**. @food
21
+ - 2014-12-31: Celebrated the new year in _Paris_ with **Marie Curie**. @partying
22
+ - 2014-11-15: Talked to **George Washington Carver** on the phone for an hour.
23
+
24
+ ### Friends:
25
+ - George Washington Carver
26
+ - Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Paris] @navy @science
27
+ - Marie Curie [Atlantis] @science
28
+
29
+ ### Locations:
30
+ - Atlantis
31
+ - Marie's Diner
32
+ - Paris
33
+ FILE
34
+
35
+ # This is CONTENT but with activities, friends, and locations unsorted.
36
+ SCRAMBLED_CONTENT = <<-FILE
37
+ ### Activities:
38
+ - 2015-01-04: Got lunch with **Grace Hopper** and **George Washington Carver**. @food
39
+ - 2015-11-01: **Grace Hopper** and I went to _Marie's Diner_. George had to cancel at the last minute. @food
40
+ - 2014-11-15: Talked to **George Washington Carver** on the phone for an hour.
41
+ - 2014-12-31: Celebrated the new year in _Paris_ with **Marie Curie**. @partying
42
+
43
+ ### Friends:
44
+ - George Washington Carver
45
+ - Marie Curie [Atlantis] @science
46
+ - Grace Hopper (a.k.a. The Admiral a.k.a. Amazing Grace) [Paris] @navy @science
47
+
48
+ ### Locations:
49
+ - Paris
50
+ - Atlantis
51
+ - Marie's Diner
52
+ FILE
53
+
54
+ # Define these methods so they can be referenced in the methods below. They'll be overridden in
55
+ # test files.
56
+ def filename; end
57
+
58
+ def subject; end
59
+
60
+ def run_cmd(command, **args)
61
+ stdout, stderr, status = Open3.capture3(
62
+ "bundle exec bin/friends --colorless --filename #{filename} #{command}",
63
+ **args
64
+ )
65
+ {
66
+ stdout: stdout,
67
+ stderr: stderr,
68
+ status: status.exitstatus
69
+ }
70
+ end
71
+
72
+ # @param str [String] a string
73
+ # @return [String] the input string with a newline appended to it if one was not already
74
+ # present, *unless* the string is empty
75
+ def ensure_trailing_newline_unless_empty(str)
76
+ return "" if str.empty?
77
+
78
+ str.to_s[-1] == "\n" ? str.to_s : "#{str}\n"
79
+ end
80
+
81
+ def stdout_only(expected)
82
+ subject[:stdout].must_equal ensure_trailing_newline_unless_empty(expected)
83
+ subject[:stderr].must_equal ""
84
+ subject[:status].must_equal 0
85
+ end
86
+
87
+ def stderr_only(expected)
88
+ subject[:stdout].must_equal ""
89
+ subject[:stderr].must_equal ensure_trailing_newline_unless_empty(expected)
90
+ subject[:status].must_be :>, 0
91
+ end
92
+
93
+ def file_equals(expected)
94
+ subject
95
+ File.read(filename).must_equal expected
96
+ end
97
+
98
+ def line_changed(expected_old, expected_new)
99
+ index = File.read(filename).split("\n").index(expected_old)
100
+ index.must_be_kind_of Numeric # Not nil, so we know that `expected_old` was found.
101
+ subject
102
+ File.read(filename).split("\n")[index].must_equal expected_new
103
+ end
104
+
105
+ def line_added(expected)
106
+ n_initial_lines = File.read(filename).split("\n").size
107
+ subject
108
+ lines = File.read(filename).split("\n")
109
+ lines.index(expected).must_be_kind_of Numeric # Not nil, so we know that `expected` was found.
110
+ lines.size.must_equal(n_initial_lines + 1) # Line was added, not changed.
111
+ end
112
+
113
+ def clean_describe(desc, *additional_desc, &block)
114
+ describe desc, *additional_desc do
115
+ let(:filename) { "test/tmp/friends#{SecureRandom.uuid}.md" }
116
+ let(:content) { nil }
117
+
118
+ before { File.write(filename, content) unless content.nil? }
119
+ after { File.delete(filename) if File.exist?(filename) }
120
+
121
+ class_eval(&block)
122
+ end
123
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: friends
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.28'
4
+ version: '0.29'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacob Evelyn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-25 00:00:00.000000000 Z
11
+ date: 2017-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chronic
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.14'
47
+ version: '0.15'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.14'
54
+ version: '0.15'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: paint
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +122,34 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '5.5'
125
+ - !ruby/object:Gem::Dependency
126
+ name: minitest-parallel_fork
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: minitest-proveit
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: overcommit
127
155
  requirement: !ruby/object:Gem::Requirement
@@ -191,6 +219,17 @@ files:
191
219
  - friends.md
192
220
  - lib/friends.rb
193
221
  - lib/friends/activity.rb
222
+ - lib/friends/commands/add.rb
223
+ - lib/friends/commands/clean.rb
224
+ - lib/friends/commands/edit.rb
225
+ - lib/friends/commands/graph.rb
226
+ - lib/friends/commands/list.rb
227
+ - lib/friends/commands/remove.rb
228
+ - lib/friends/commands/rename.rb
229
+ - lib/friends/commands/set.rb
230
+ - lib/friends/commands/stats.rb
231
+ - lib/friends/commands/suggest.rb
232
+ - lib/friends/commands/update.rb
194
233
  - lib/friends/friend.rb
195
234
  - lib/friends/friends_error.rb
196
235
  - lib/friends/graph.rb
@@ -199,12 +238,29 @@ files:
199
238
  - lib/friends/regex_builder.rb
200
239
  - lib/friends/serializable.rb
201
240
  - lib/friends/version.rb
202
- - test/activity_spec.rb
203
- - test/friend_spec.rb
204
- - test/graph_spec.rb
241
+ - test/commands/add/activity_spec.rb
242
+ - test/commands/add/friend_spec.rb
243
+ - test/commands/add/location_spec.rb
244
+ - test/commands/add/nickname_spec.rb
245
+ - test/commands/add/tag_spec.rb
246
+ - test/commands/clean_spec.rb
247
+ - test/commands/graph_spec.rb
248
+ - test/commands/help_spec.rb
249
+ - test/commands/list/activities_spec.rb
250
+ - test/commands/list/favorite/friends_spec.rb
251
+ - test/commands/list/favorite/locations_spec.rb
252
+ - test/commands/list/friends_spec.rb
253
+ - test/commands/list/locations_spec.rb
254
+ - test/commands/list/tags_spec.rb
255
+ - test/commands/remove/nickname_spec.rb
256
+ - test/commands/remove/tag_spec.rb
257
+ - test/commands/rename/friend_spec.rb
258
+ - test/commands/rename/location_spec.rb
259
+ - test/commands/set/location_spec.rb
260
+ - test/commands/stats_spec.rb
261
+ - test/commands/suggest_spec.rb
262
+ - test/commands/update_spec.rb
205
263
  - test/helper.rb
206
- - test/introvert_spec.rb
207
- - test/location_spec.rb
208
264
  - test/tmp/.keep
209
265
  homepage: https://github.com/JacobEvelyn/friends
210
266
  licenses:
@@ -226,15 +282,33 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
282
  version: '0'
227
283
  requirements: []
228
284
  rubyforge_project:
229
- rubygems_version: 2.5.1
285
+ rubygems_version: 2.6.8
230
286
  signing_key:
231
287
  specification_version: 4
232
288
  summary: Spend time with the people you care about.
233
289
  test_files:
234
- - test/activity_spec.rb
235
- - test/friend_spec.rb
236
- - test/graph_spec.rb
290
+ - test/commands/add/activity_spec.rb
291
+ - test/commands/add/friend_spec.rb
292
+ - test/commands/add/location_spec.rb
293
+ - test/commands/add/nickname_spec.rb
294
+ - test/commands/add/tag_spec.rb
295
+ - test/commands/clean_spec.rb
296
+ - test/commands/graph_spec.rb
297
+ - test/commands/help_spec.rb
298
+ - test/commands/list/activities_spec.rb
299
+ - test/commands/list/favorite/friends_spec.rb
300
+ - test/commands/list/favorite/locations_spec.rb
301
+ - test/commands/list/friends_spec.rb
302
+ - test/commands/list/locations_spec.rb
303
+ - test/commands/list/tags_spec.rb
304
+ - test/commands/remove/nickname_spec.rb
305
+ - test/commands/remove/tag_spec.rb
306
+ - test/commands/rename/friend_spec.rb
307
+ - test/commands/rename/location_spec.rb
308
+ - test/commands/set/location_spec.rb
309
+ - test/commands/stats_spec.rb
310
+ - test/commands/suggest_spec.rb
311
+ - test/commands/update_spec.rb
237
312
  - test/helper.rb
238
- - test/introvert_spec.rb
239
- - test/location_spec.rb
240
313
  - test/tmp/.keep
314
+ has_rdoc: