gitdocs 0.5.0.pre6 → 0.5.0.pre7

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 (61) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +1 -0
  3. data/.haml-lint.yml +3 -0
  4. data/.jslint.yml +84 -0
  5. data/.rubocop.yml +13 -0
  6. data/CHANGELOG +11 -0
  7. data/README.md +6 -2
  8. data/Rakefile +22 -3
  9. data/gitdocs.gemspec +36 -29
  10. data/lib/gitdocs.rb +5 -2
  11. data/lib/gitdocs/cli.rb +31 -8
  12. data/lib/gitdocs/configuration.rb +95 -49
  13. data/lib/gitdocs/manager.rb +36 -28
  14. data/lib/gitdocs/migration/001_create_shares.rb +2 -0
  15. data/lib/gitdocs/migration/002_add_remote_branch.rb +2 -0
  16. data/lib/gitdocs/migration/003_create_configs.rb +2 -0
  17. data/lib/gitdocs/migration/004_add_index_for_path.rb +4 -0
  18. data/lib/gitdocs/migration/005_add_start_web_frontend.rb +2 -0
  19. data/lib/gitdocs/migration/006_add_web_port_to_config.rb +2 -0
  20. data/lib/gitdocs/migration/007_add_sync_type.rb +11 -0
  21. data/lib/gitdocs/notifier.rb +89 -6
  22. data/lib/gitdocs/public/img/file.png +0 -0
  23. data/lib/gitdocs/public/img/folder.png +0 -0
  24. data/lib/gitdocs/public/js/app.js +26 -11
  25. data/lib/gitdocs/public/js/edit.js +3 -3
  26. data/lib/gitdocs/public/js/settings.js +8 -5
  27. data/lib/gitdocs/public/js/util.js +21 -20
  28. data/lib/gitdocs/rendering.rb +14 -9
  29. data/lib/gitdocs/repository.rb +180 -216
  30. data/lib/gitdocs/repository/path.rb +166 -0
  31. data/lib/gitdocs/runner.rb +22 -65
  32. data/lib/gitdocs/search.rb +35 -0
  33. data/lib/gitdocs/server.rb +123 -86
  34. data/lib/gitdocs/version.rb +1 -1
  35. data/lib/gitdocs/views/_header.haml +6 -6
  36. data/lib/gitdocs/views/app.haml +17 -17
  37. data/lib/gitdocs/views/dir.haml +10 -10
  38. data/lib/gitdocs/views/edit.haml +8 -9
  39. data/lib/gitdocs/views/file.haml +1 -1
  40. data/lib/gitdocs/views/home.haml +4 -4
  41. data/lib/gitdocs/views/revisions.haml +6 -6
  42. data/lib/gitdocs/views/search.haml +6 -6
  43. data/lib/gitdocs/views/settings.haml +23 -16
  44. data/test/.rubocop.yml +13 -0
  45. data/test/integration/browse_test.rb +149 -0
  46. data/test/integration/full_sync_test.rb +3 -11
  47. data/test/integration/share_management_test.rb +59 -10
  48. data/test/integration/status_test.rb +2 -0
  49. data/test/integration/test_helper.rb +40 -7
  50. data/test/unit/configuration_test.rb +82 -0
  51. data/test/unit/notifier_test.rb +165 -0
  52. data/test/unit/repository_path_test.rb +368 -0
  53. data/test/{repository_test.rb → unit/repository_test.rb} +426 -245
  54. data/test/unit/runner_test.rb +122 -0
  55. data/test/unit/search_test.rb +52 -0
  56. data/test/{test_helper.rb → unit/test_helper.rb} +5 -0
  57. metadata +138 -41
  58. data/lib/gitdocs/docfile.rb +0 -23
  59. data/test/configuration_test.rb +0 -41
  60. data/test/notifier_test.rb +0 -68
  61. data/test/runner_test.rb +0 -123
@@ -0,0 +1,122 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ require File.expand_path('../test_helper', __FILE__)
4
+
5
+ describe 'gitdocs runner' do
6
+ let(:runner) { Gitdocs::Runner.new(share) }
7
+
8
+ let(:share) { stub(polling_interval: 1, notification: true) }
9
+ let(:notifier) { stub }
10
+ let(:repository) { stub(root: 'root_path') }
11
+ before do
12
+ Gitdocs::Notifier.stubs(:new).with(true).returns(notifier)
13
+ Gitdocs::Repository.stubs(:new).with(share).returns(repository)
14
+ end
15
+
16
+ describe '#root' do
17
+ subject { runner.root }
18
+ it { subject.must_equal 'root_path' }
19
+ end
20
+
21
+ describe '#sync_changes' do
22
+ subject { runner.sync_changes }
23
+
24
+ describe 'fetch sync' do
25
+ before do
26
+ share.stubs(:sync_type).returns('fetch')
27
+ repository.expects(:fetch).returns(fetch_result)
28
+ end
29
+
30
+ describe('fetch failure') { let(:fetch_result) { :not_ok } ; it { subject } }
31
+ describe('fetch success') { let(:fetch_result) { :ok } ; it { subject } }
32
+ end
33
+
34
+ describe 'full sync' do
35
+ before do
36
+ share.stubs(:sync_type).returns('full')
37
+ repository.expects(:commit)
38
+ repository.expects(:fetch).returns(fetch_result)
39
+ end
40
+
41
+ describe 'fetch failure' do
42
+ let(:fetch_result) { :not_ok }
43
+ it { subject }
44
+ end
45
+
46
+ describe 'when merge error' do
47
+ let(:fetch_result) { :ok }
48
+ before do
49
+ repository.expects(:merge).returns('error')
50
+ notifier.expects(:merge_notification).with('error', 'root_path')
51
+ end
52
+ it { subject }
53
+ end
54
+
55
+ describe 'when merge not_ok' do
56
+ let(:fetch_result) { :ok }
57
+ before do
58
+ repository.expects(:merge).returns(:not_ok)
59
+ notifier.expects(:merge_notification).with(:not_ok, 'root_path')
60
+ repository.expects(:push).returns(push_result)
61
+ end
62
+
63
+ describe 'and push is not_ok' do
64
+ let(:push_result) { :not_ok }
65
+ before { notifier.expects(:push_notification).with(:not_ok, 'root_path') }
66
+ it { subject }
67
+ end
68
+
69
+ describe 'and push is ok' do
70
+ let(:push_result) { :ok }
71
+ before do
72
+ runner.instance_variable_set(:@last_synced_revision, :oid)
73
+ repository.stubs(:current_oid).returns(:next_oid)
74
+ changes = { 'Alice' => 1, 'Bob' => 2 }
75
+ repository.stubs(:author_count).with(:oid).returns(changes)
76
+ notifier.expects(:push_notification).with(changes, 'root_path')
77
+
78
+ subject
79
+ end
80
+ it { runner.instance_variable_get(:@last_synced_revision).must_equal :next_oid }
81
+ end
82
+ end
83
+
84
+ describe 'merge ok' do
85
+ let(:fetch_result) { :ok }
86
+
87
+ before do
88
+ repository.stubs(:current_oid).returns(:merge_oid, :push_oid)
89
+
90
+ repository.expects(:merge).returns(:ok)
91
+ runner.instance_variable_set(:@last_synced_revision, :oid)
92
+ changes = { 'Alice' => 1, 'Bob' => 3 }
93
+ repository.stubs(:author_count).with(:oid).returns(changes)
94
+ notifier.expects(:merge_notification).with(changes, 'root_path')
95
+ repository.expects(:push).returns(push_result)
96
+ end
97
+
98
+ describe 'and push is not_ok' do
99
+ let(:push_result) { :not_ok }
100
+ before do
101
+ notifier.expects(:push_notification).with(:not_ok, 'root_path')
102
+
103
+ subject
104
+ end
105
+ it { runner.instance_variable_get(:@last_synced_revision).must_equal :merge_oid }
106
+ end
107
+
108
+ describe 'and push is ok' do
109
+ let(:push_result) { :ok }
110
+ before do
111
+ changes = { 'Charlie' => 5, 'Dan' => 7 }
112
+ repository.stubs(:author_count).with(:merge_oid).returns(changes)
113
+ notifier.expects(:push_notification).with(changes, 'root_path')
114
+
115
+ subject
116
+ end
117
+ it { runner.instance_variable_get(:@last_synced_revision).must_equal :push_oid }
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,52 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require File.expand_path('../test_helper', __FILE__)
3
+
4
+ describe Gitdocs::Search do
5
+ describe 'initialize' do
6
+ subject { Gitdocs::Search.new(:repositories) }
7
+ it { subject.instance_variable_get(:@repositories).must_equal :repositories }
8
+ end
9
+
10
+ describe '#search' do
11
+ subject { Gitdocs::Search.new([repository1, repository2]).search(term) }
12
+
13
+ let(:repository1) { mock }
14
+ let(:repository2) { mock }
15
+
16
+ before do
17
+ repository1.stubs(:root).returns('root')
18
+ repository2.stubs(:root).returns('root')
19
+ end
20
+
21
+ describe 'term is empty' do
22
+ let(:term) { '' }
23
+ it { subject.must_equal({}) }
24
+ end
25
+
26
+ describe 'term is non-empty' do
27
+ let(:term) { 'term' }
28
+ before do
29
+ repository1.stubs(:grep).with(term).multiple_yields(
30
+ %w(file1 context1)
31
+ )
32
+ repository2.stubs(:grep).with(term).multiple_yields(
33
+ %w(file2 context2a),
34
+ %w(file2 context2b),
35
+ %w(file3 context3)
36
+ )
37
+ end
38
+
39
+ it do
40
+ subject.must_equal(
41
+ Gitdocs::Search::RepoDescriptor.new('root', 0) => [
42
+ Gitdocs::Search::SearchResult.new('file1', 'context1')
43
+ ],
44
+ Gitdocs::Search::RepoDescriptor.new('root', 1) => [
45
+ Gitdocs::Search::SearchResult.new('file2', 'context2a ... context2b'),
46
+ Gitdocs::Search::SearchResult.new('file3', 'context3')
47
+ ]
48
+ )
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,5 +1,10 @@
1
+ # -*- encoding : utf-8 -*-
2
+
1
3
  require 'rubygems'
2
4
  require 'minitest/autorun'
3
5
  $LOAD_PATH.unshift File.expand_path('../../lib')
4
6
  require 'gitdocs'
5
7
  require 'mocha/setup'
8
+
9
+ require 'coveralls'
10
+ Coveralls.wear!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitdocs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.pre6
4
+ version: 0.5.0.pre7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Hull
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-24 00:00:00.000000000 Z
12
+ date: 2014-08-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: joshbuddy-guard
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: 1.5.1
34
+ version: 1.6.2
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ~>
40
40
  - !ruby/object:Gem::Version
41
- version: 1.5.1
41
+ version: 1.6.2
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: renee
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - ~>
89
89
  - !ruby/object:Gem::Version
90
- version: 1.0.4
90
+ version: 1.1.0
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ~>
96
96
  - !ruby/object:Gem::Version
97
- version: 1.0.4
97
+ version: 1.1.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: dante
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -123,34 +123,20 @@ dependencies:
123
123
  - - ~>
124
124
  - !ruby/object:Gem::Version
125
125
  version: 1.0.3
126
- - !ruby/object:Gem::Dependency
127
- name: yajl-ruby
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ~>
131
- - !ruby/object:Gem::Version
132
- version: 1.1.0
133
- type: :runtime
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ~>
138
- - !ruby/object:Gem::Version
139
- version: 1.1.0
140
126
  - !ruby/object:Gem::Dependency
141
127
  name: haml
142
128
  requirement: !ruby/object:Gem::Requirement
143
129
  requirements:
144
130
  - - ~>
145
131
  - !ruby/object:Gem::Version
146
- version: 3.1.4
132
+ version: 4.0.5
147
133
  type: :runtime
148
134
  prerelease: false
149
135
  version_requirements: !ruby/object:Gem::Requirement
150
136
  requirements:
151
137
  - - ~>
152
138
  - !ruby/object:Gem::Version
153
- version: 3.1.4
139
+ version: 4.0.5
154
140
  - !ruby/object:Gem::Dependency
155
141
  name: sqlite3
156
142
  requirement: !ruby/object:Gem::Requirement
@@ -171,28 +157,28 @@ dependencies:
171
157
  requirements:
172
158
  - - ~>
173
159
  - !ruby/object:Gem::Version
174
- version: 3.1.0
160
+ version: 4.1.4
175
161
  type: :runtime
176
162
  prerelease: false
177
163
  version_requirements: !ruby/object:Gem::Requirement
178
164
  requirements:
179
165
  - - ~>
180
166
  - !ruby/object:Gem::Version
181
- version: 3.1.0
167
+ version: 4.1.4
182
168
  - !ruby/object:Gem::Dependency
183
169
  name: grit
184
170
  requirement: !ruby/object:Gem::Requirement
185
171
  requirements:
186
172
  - - ~>
187
173
  - !ruby/object:Gem::Version
188
- version: 2.4.1
174
+ version: 2.5.0
189
175
  type: :runtime
190
176
  prerelease: false
191
177
  version_requirements: !ruby/object:Gem::Requirement
192
178
  requirements:
193
179
  - - ~>
194
180
  - !ruby/object:Gem::Version
195
- version: 2.4.1
181
+ version: 2.5.0
196
182
  - !ruby/object:Gem::Dependency
197
183
  name: shell_tools
198
184
  requirement: !ruby/object:Gem::Requirement
@@ -263,20 +249,62 @@ dependencies:
263
249
  - - ~>
264
250
  - !ruby/object:Gem::Version
265
251
  version: 0.19.0
252
+ - !ruby/object:Gem::Dependency
253
+ name: table_print
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ~>
257
+ - !ruby/object:Gem::Version
258
+ version: 1.5.1
259
+ type: :runtime
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ~>
264
+ - !ruby/object:Gem::Version
265
+ version: 1.5.1
266
266
  - !ruby/object:Gem::Dependency
267
267
  name: minitest
268
268
  requirement: !ruby/object:Gem::Requirement
269
269
  requirements:
270
270
  - - ~>
271
271
  - !ruby/object:Gem::Version
272
- version: 5.0.8
272
+ version: 5.4.0
273
+ type: :development
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ~>
278
+ - !ruby/object:Gem::Version
279
+ version: 5.4.0
280
+ - !ruby/object:Gem::Dependency
281
+ name: capybara_minitest_spec
282
+ requirement: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ~>
285
+ - !ruby/object:Gem::Version
286
+ version: 1.0.2
287
+ type: :development
288
+ prerelease: false
289
+ version_requirements: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ~>
292
+ - !ruby/object:Gem::Version
293
+ version: 1.0.2
294
+ - !ruby/object:Gem::Dependency
295
+ name: poltergeist
296
+ requirement: !ruby/object:Gem::Requirement
297
+ requirements:
298
+ - - ~>
299
+ - !ruby/object:Gem::Version
300
+ version: 1.5.1
273
301
  type: :development
274
302
  prerelease: false
275
303
  version_requirements: !ruby/object:Gem::Requirement
276
304
  requirements:
277
305
  - - ~>
278
306
  - !ruby/object:Gem::Version
279
- version: 5.0.8
307
+ version: 1.5.1
280
308
  - !ruby/object:Gem::Dependency
281
309
  name: rake
282
310
  requirement: !ruby/object:Gem::Requirement
@@ -347,6 +375,62 @@ dependencies:
347
375
  - - ! '>='
348
376
  - !ruby/object:Gem::Version
349
377
  version: '0'
378
+ - !ruby/object:Gem::Dependency
379
+ name: rubocop
380
+ requirement: !ruby/object:Gem::Requirement
381
+ requirements:
382
+ - - ! '>='
383
+ - !ruby/object:Gem::Version
384
+ version: '0'
385
+ type: :development
386
+ prerelease: false
387
+ version_requirements: !ruby/object:Gem::Requirement
388
+ requirements:
389
+ - - ! '>='
390
+ - !ruby/object:Gem::Version
391
+ version: '0'
392
+ - !ruby/object:Gem::Dependency
393
+ name: haml-lint
394
+ requirement: !ruby/object:Gem::Requirement
395
+ requirements:
396
+ - - ~>
397
+ - !ruby/object:Gem::Version
398
+ version: 0.6.0
399
+ type: :development
400
+ prerelease: false
401
+ version_requirements: !ruby/object:Gem::Requirement
402
+ requirements:
403
+ - - ~>
404
+ - !ruby/object:Gem::Version
405
+ version: 0.6.0
406
+ - !ruby/object:Gem::Dependency
407
+ name: jslint_on_rails
408
+ requirement: !ruby/object:Gem::Requirement
409
+ requirements:
410
+ - - ~>
411
+ - !ruby/object:Gem::Version
412
+ version: 1.1.1
413
+ type: :development
414
+ prerelease: false
415
+ version_requirements: !ruby/object:Gem::Requirement
416
+ requirements:
417
+ - - ~>
418
+ - !ruby/object:Gem::Version
419
+ version: 1.1.1
420
+ - !ruby/object:Gem::Dependency
421
+ name: coveralls
422
+ requirement: !ruby/object:Gem::Requirement
423
+ requirements:
424
+ - - ~>
425
+ - !ruby/object:Gem::Version
426
+ version: 0.7.0
427
+ type: :development
428
+ prerelease: false
429
+ version_requirements: !ruby/object:Gem::Requirement
430
+ requirements:
431
+ - - ~>
432
+ - !ruby/object:Gem::Version
433
+ version: 0.7.0
350
434
  description: Open-source Dropbox using Ruby and Git.
351
435
  email:
352
436
  - joshbuddy@gmail.com
@@ -357,6 +441,9 @@ extensions: []
357
441
  extra_rdoc_files: []
358
442
  files:
359
443
  - .gitignore
444
+ - .haml-lint.yml
445
+ - .jslint.yml
446
+ - .rubocop.yml
360
447
  - .travis.yml
361
448
  - CHANGELOG
362
449
  - Gemfile
@@ -368,7 +455,6 @@ files:
368
455
  - lib/gitdocs.rb
369
456
  - lib/gitdocs/cli.rb
370
457
  - lib/gitdocs/configuration.rb
371
- - lib/gitdocs/docfile.rb
372
458
  - lib/gitdocs/manager.rb
373
459
  - lib/gitdocs/migration/001_create_shares.rb
374
460
  - lib/gitdocs/migration/002_add_remote_branch.rb
@@ -376,6 +462,7 @@ files:
376
462
  - lib/gitdocs/migration/004_add_index_for_path.rb
377
463
  - lib/gitdocs/migration/005_add_start_web_frontend.rb
378
464
  - lib/gitdocs/migration/006_add_web_port_to_config.rb
465
+ - lib/gitdocs/migration/007_add_sync_type.rb
379
466
  - lib/gitdocs/notifier.rb
380
467
  - lib/gitdocs/public/css/app.css
381
468
  - lib/gitdocs/public/css/bootstrap.css
@@ -427,7 +514,9 @@ files:
427
514
  - lib/gitdocs/public/js/util.js
428
515
  - lib/gitdocs/rendering.rb
429
516
  - lib/gitdocs/repository.rb
517
+ - lib/gitdocs/repository/path.rb
430
518
  - lib/gitdocs/runner.rb
519
+ - lib/gitdocs/search.rb
431
520
  - lib/gitdocs/server.rb
432
521
  - lib/gitdocs/version.rb
433
522
  - lib/gitdocs/views/_ace_scripts.erb
@@ -441,17 +530,22 @@ files:
441
530
  - lib/gitdocs/views/search.haml
442
531
  - lib/gitdocs/views/settings.haml
443
532
  - lib/img/icon.png
444
- - test/configuration_test.rb
533
+ - test/.rubocop.yml
534
+ - test/integration/browse_test.rb
445
535
  - test/integration/full_sync_test.rb
446
536
  - test/integration/share_management_test.rb
447
537
  - test/integration/status_test.rb
448
538
  - test/integration/test_helper.rb
449
- - test/notifier_test.rb
450
- - test/repository_test.rb
451
- - test/runner_test.rb
452
- - test/test_helper.rb
539
+ - test/unit/configuration_test.rb
540
+ - test/unit/notifier_test.rb
541
+ - test/unit/repository_path_test.rb
542
+ - test/unit/repository_test.rb
543
+ - test/unit/runner_test.rb
544
+ - test/unit/search_test.rb
545
+ - test/unit/test_helper.rb
453
546
  homepage: http://engineering.gomiso.com/2011/11/30/collaborate-and-track-tasks-with-ease-using-gitdocs/
454
- licenses: []
547
+ licenses:
548
+ - MIT
455
549
  metadata: {}
456
550
  post_install_message:
457
551
  rdoc_options: []
@@ -472,14 +566,17 @@ rubyforge_project: gitdocs
472
566
  rubygems_version: 2.0.7
473
567
  signing_key:
474
568
  specification_version: 4
475
- summary: Open-source Dropbox using Ruby and Git
569
+ summary: Open-source Dropbox using Ruby and Git.
476
570
  test_files:
477
- - test/configuration_test.rb
571
+ - test/integration/browse_test.rb
478
572
  - test/integration/full_sync_test.rb
479
573
  - test/integration/share_management_test.rb
480
574
  - test/integration/status_test.rb
481
575
  - test/integration/test_helper.rb
482
- - test/notifier_test.rb
483
- - test/repository_test.rb
484
- - test/runner_test.rb
485
- - test/test_helper.rb
576
+ - test/unit/configuration_test.rb
577
+ - test/unit/notifier_test.rb
578
+ - test/unit/repository_path_test.rb
579
+ - test/unit/repository_test.rb
580
+ - test/unit/runner_test.rb
581
+ - test/unit/search_test.rb
582
+ - test/unit/test_helper.rb