gitdocs 0.5.0.pre6 → 0.5.0.pre7

Sign up to get free protection for your applications and to get access to all the features.
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