svnx 0.0.2 → 0.0.3
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.
- checksums.yaml +4 -4
- data/lib/svnx.rb +1 -1
- data/lib/svnx/cat/command.rb +9 -0
- data/lib/svnx/entry.rb +1 -1
- data/lib/svnx/exec.rb +0 -2
- data/lib/svnx/info/command.rb +11 -2
- data/lib/svnx/info/entry.rb +1 -5
- data/lib/svnx/log/command.rb +11 -2
- data/lib/svnx/status/command.rb +11 -6
- data/lib/svnx/status/entry.rb +4 -20
- data/test/integration/info/info_test.rb +21 -0
- data/test/integration/log/log_test.rb +61 -0
- data/test/integration/status/status_test.rb +36 -0
- data/test/unit/svnx/cat/command_test.rb +55 -0
- data/test/unit/svnx/log/entries_test.rb +0 -1
- metadata +12 -7
- data/test/unit/svnx/info/entry_test.rb +0 -20
- data/test/unit/svnx/status/entry_test.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df897af510240d716cdc7c8c3d1a104ab2d6ca6c
|
4
|
+
data.tar.gz: 9124a68c96632f05faeee974e88b5c5551fb82c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fce53366b404dddc37fcbfcaa5b86200df0a829806bf3e9f5fdefa8b5607ae42cb90023b4b643e8cdfd530e1b1021c3d540e7f46d5aefc919c08304d92c33c1f
|
7
|
+
data.tar.gz: d8cd5441dea00c059678e52d3b05582ca9eb38f227589ed96b60c295ab5d66b2994aa3d04701d037f75b4253b99b2f2e835583206db3572b7c168ad8fc2ccf7e
|
data/lib/svnx.rb
CHANGED
data/lib/svnx/cat/command.rb
CHANGED
data/lib/svnx/entry.rb
CHANGED
data/lib/svnx/exec.rb
CHANGED
data/lib/svnx/info/command.rb
CHANGED
@@ -2,12 +2,11 @@
|
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
4
|
require 'svnx/command'
|
5
|
-
require '
|
5
|
+
require 'svnx/info/entries'
|
6
6
|
|
7
7
|
module SVNx
|
8
8
|
class InfoCommandLine < CommandLine
|
9
9
|
def initialize args = Array.new
|
10
|
-
info "args.to_a: #{args.to_a}".color(:blue)
|
11
10
|
super "info", args.to_a
|
12
11
|
end
|
13
12
|
end
|
@@ -41,4 +40,14 @@ module SVNx
|
|
41
40
|
InfoCommandLine.new @args
|
42
41
|
end
|
43
42
|
end
|
43
|
+
|
44
|
+
class InfoExec
|
45
|
+
attr_reader :entry
|
46
|
+
|
47
|
+
def initialize args
|
48
|
+
cmd = InfoCommand.new InfoCommandArgs.new(args)
|
49
|
+
# info has only one entry
|
50
|
+
@entry = SVNx::Info::Entries.new(:xmllines => cmd.execute)[0]
|
51
|
+
end
|
52
|
+
end
|
44
53
|
end
|
data/lib/svnx/info/entry.rb
CHANGED
@@ -13,15 +13,11 @@ module SVNx::Info
|
|
13
13
|
attr_reader :path
|
14
14
|
attr_reader :revision
|
15
15
|
|
16
|
-
def set_from_xml xmldoc
|
17
|
-
entry = xmldoc.elements['info/entry']
|
18
|
-
set_from_element entry
|
19
|
-
end
|
20
|
-
|
21
16
|
def set_from_element elmt
|
22
17
|
set_attr_var elmt, 'kind'
|
23
18
|
set_attr_var elmt, 'path'
|
24
19
|
set_attr_var elmt, 'revision'
|
20
|
+
|
25
21
|
set_elmt_var elmt, 'url'
|
26
22
|
|
27
23
|
repo = elmt.elements['repository']
|
data/lib/svnx/log/command.rb
CHANGED
@@ -31,10 +31,10 @@ module SVNx
|
|
31
31
|
attr_reader :revision
|
32
32
|
attr_reader :use_cache
|
33
33
|
|
34
|
-
def initialize args
|
34
|
+
def initialize args
|
35
35
|
@limit = args[:limit]
|
36
36
|
@verbose = args[:verbose]
|
37
|
-
@use_cache = args
|
37
|
+
@use_cache = args.key?(:use_cache) ? args[:use_cache] : false
|
38
38
|
@revision = args[:revision]
|
39
39
|
super
|
40
40
|
end
|
@@ -73,4 +73,13 @@ module SVNx
|
|
73
73
|
cls.new @args
|
74
74
|
end
|
75
75
|
end
|
76
|
+
|
77
|
+
class LogExec
|
78
|
+
attr_reader :entries
|
79
|
+
|
80
|
+
def initialize args
|
81
|
+
cmd = LogCommand.new LogCommandArgs.new(args)
|
82
|
+
@entries = SVNx::Log::Entries.new :xmllines => cmd.execute
|
83
|
+
end
|
84
|
+
end
|
76
85
|
end
|
data/lib/svnx/status/command.rb
CHANGED
@@ -5,18 +5,14 @@ require 'svnx/command'
|
|
5
5
|
|
6
6
|
module SVNx
|
7
7
|
class StatusCommandLine < CommandLine
|
8
|
-
def initialize args
|
8
|
+
def initialize args
|
9
9
|
super "status", args.to_a
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
class StatusCommandArgs < CommandArgs
|
14
14
|
def to_a
|
15
|
-
|
16
|
-
if @path
|
17
|
-
ary << @path
|
18
|
-
end
|
19
|
-
ary
|
15
|
+
[ @path ].compact
|
20
16
|
end
|
21
17
|
end
|
22
18
|
|
@@ -25,4 +21,13 @@ module SVNx
|
|
25
21
|
StatusCommandLine.new @args
|
26
22
|
end
|
27
23
|
end
|
24
|
+
|
25
|
+
class StatusExec
|
26
|
+
attr_reader :entries
|
27
|
+
|
28
|
+
def initialize args
|
29
|
+
cmd = StatusCommand.new StatusCommandArgs.new(args)
|
30
|
+
@entries = SVNx::Status::Entries.new(:xmllines => cmd.execute)
|
31
|
+
end
|
32
|
+
end
|
28
33
|
end
|
data/lib/svnx/status/entry.rb
CHANGED
@@ -8,30 +8,17 @@ module SVNx; module Status; end; end
|
|
8
8
|
|
9
9
|
module SVNx::Status
|
10
10
|
class Entry < SVNx::Entry
|
11
|
-
|
12
11
|
attr_reader :status
|
13
12
|
attr_reader :path
|
14
13
|
attr_reader :status_revision
|
15
14
|
attr_reader :action
|
15
|
+
attr_reader :commit_revision
|
16
16
|
|
17
|
-
def initialize args
|
17
|
+
def initialize args
|
18
18
|
super
|
19
19
|
@action = SVNx::Action.new @status
|
20
20
|
end
|
21
21
|
|
22
|
-
def set_from_xml xmldoc
|
23
|
-
stelmt = xmldoc.elements['status']
|
24
|
-
tgt = stelmt.elements['target']
|
25
|
-
|
26
|
-
set_attr_var tgt, 'path'
|
27
|
-
|
28
|
-
if entry = tgt.elements['entry']
|
29
|
-
set_from_element entry
|
30
|
-
else
|
31
|
-
@status = "unchanged"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
22
|
def set_from_element elmt
|
36
23
|
set_attr_var elmt, 'path'
|
37
24
|
|
@@ -39,11 +26,8 @@ module SVNx::Status
|
|
39
26
|
@status = wcstatus.attributes['item']
|
40
27
|
@status_revision = wcstatus.attributes['revision']
|
41
28
|
|
42
|
-
|
43
|
-
|
44
|
-
else
|
45
|
-
@commit_revision = nil
|
46
|
-
end
|
29
|
+
commit = wcstatus.elements['commit']
|
30
|
+
@commit_revision = commit && commit.attributes['revision']
|
47
31
|
end
|
48
32
|
|
49
33
|
def to_s
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'integration/tc'
|
5
|
+
require 'svnx/info/command'
|
6
|
+
require 'svnx/info/entry'
|
7
|
+
|
8
|
+
module SVNx::Info
|
9
|
+
class CommandTestCase < SVNx::IntegrationTestCase
|
10
|
+
def test_specified_args
|
11
|
+
entry = SVNx::InfoExec.new(path: '/Programs/pvn/pvntestbed.from', revision: nil, limit: nil, verbose: true, use_cache: false).entry
|
12
|
+
|
13
|
+
assert_not_nil entry
|
14
|
+
assert_equal 'dir', entry.kind
|
15
|
+
assert_equal '/Programs/pvn/pvntestbed.from', entry.path
|
16
|
+
assert_equal '22', entry.revision
|
17
|
+
assert_equal 'file:///Programs/Subversion/Repositories/pvntestbed.from', entry.root
|
18
|
+
assert_equal 'file:///Programs/Subversion/Repositories/pvntestbed.from', entry.url
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'integration/tc'
|
5
|
+
require 'svnx/log/command'
|
6
|
+
require 'svnx/log/entries'
|
7
|
+
|
8
|
+
module SVNx::Log
|
9
|
+
class CommandTestCase < SVNx::IntegrationTestCase
|
10
|
+
def assert_entry exp_revision, exp_author, exp_npaths, entries, idx
|
11
|
+
assert_equal exp_revision, entries[idx].revision
|
12
|
+
assert_equal exp_author, entries[idx].author
|
13
|
+
assert_equal exp_npaths, entries[idx].paths.size
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_specified_args
|
17
|
+
entries = SVNx::LogExec.new(path: '/Programs/pvn/pvntestbed.from', revision: nil, limit: nil, verbose: true, use_cache: false).entries
|
18
|
+
|
19
|
+
assert_equal 22, entries.size
|
20
|
+
|
21
|
+
assert_entry '21', 'Governor William J. Le Petomane', 3, entries, 1
|
22
|
+
assert_entry '1', 'Gabby Johnson', 1, entries, 21
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_default_args
|
26
|
+
entries = SVNx::LogExec.new(path: '/Programs/pvn/pvntestbed.from').entries
|
27
|
+
|
28
|
+
assert_equal 22, entries.size
|
29
|
+
|
30
|
+
assert_entry '21', 'Governor William J. Le Petomane', 0, entries, 1
|
31
|
+
assert_entry '1', 'Gabby Johnson', 0, entries, 21
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_non_verbose
|
35
|
+
entries = SVNx::LogExec.new(path: '/Programs/pvn/pvntestbed.from', verbose: false).entries
|
36
|
+
|
37
|
+
assert_equal 22, entries.size
|
38
|
+
|
39
|
+
assert_entry '21', 'Governor William J. Le Petomane', 0, entries, 1
|
40
|
+
assert_entry '1', 'Gabby Johnson', 0, entries, 21
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_revision
|
44
|
+
entries = SVNx::LogExec.new(path: '/Programs/pvn/pvntestbed.from', revision: '1:15').entries
|
45
|
+
|
46
|
+
assert_equal 15, entries.size
|
47
|
+
|
48
|
+
assert_entry '2', 'Harriet Johnson', 0, entries, 1
|
49
|
+
assert_entry '15','Mongo', 0, entries, 14
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_limit
|
53
|
+
entries = SVNx::LogExec.new(path: '/Programs/pvn/pvntestbed.from', limit: 5).entries
|
54
|
+
|
55
|
+
assert_equal 5, entries.size
|
56
|
+
|
57
|
+
assert_entry '22', 'Lyle', 0, entries, 0
|
58
|
+
assert_entry '18', 'Lili von Shtupp', 0, entries, 4
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'integration/tc'
|
5
|
+
require 'svnx/status/command'
|
6
|
+
require 'svnx/status/entries'
|
7
|
+
require 'svnx/exec'
|
8
|
+
|
9
|
+
module SVNx::Status
|
10
|
+
class CommandTestCase < SVNx::IntegrationTestCase
|
11
|
+
def assert_entry exp_cmt_rev, exp_path, exp_status, exp_st_rev, entries, idx
|
12
|
+
entry = entries[idx]
|
13
|
+
msg = "entry[#{idx}]: #{entry.path}"
|
14
|
+
|
15
|
+
assert_equal exp_path, entry.path, msg
|
16
|
+
assert_equal exp_cmt_rev, entry.commit_revision, msg
|
17
|
+
assert_equal exp_status, entry.status, msg
|
18
|
+
assert_equal exp_st_rev, entry.status_revision, msg
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_specified_args
|
22
|
+
entries = SVNx::StatusExec.new(path: '/Programs/pvn/pvntestbed.pending', use_cache: false).entries
|
23
|
+
|
24
|
+
assert_not_nil entries
|
25
|
+
assert_equal 5, entries.size
|
26
|
+
|
27
|
+
sentries = entries.sort { |a, b| a.path <=> b.path }
|
28
|
+
|
29
|
+
assert_entry '13', '/Programs/pvn/pvntestbed.pending/FirstFile.txt', 'modified', '22', sentries, 0
|
30
|
+
assert_entry nil, '/Programs/pvn/pvntestbed.pending/SeventhFile.txt', 'added', '-1', sentries, 1
|
31
|
+
assert_entry '9', '/Programs/pvn/pvntestbed.pending/dirzero/SixthFile.txt', 'deleted', '22', sentries, 2
|
32
|
+
assert_entry nil, '/Programs/pvn/pvntestbed.pending/src/java/Charlie.java', 'unversioned', nil, sentries, 3
|
33
|
+
assert_entry nil, '/Programs/pvn/pvntestbed.pending/src/ruby/dog.rb', 'added', '-1', sentries, 4
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'tc'
|
5
|
+
require 'svnx/cat/command'
|
6
|
+
|
7
|
+
module SVNx::Cat
|
8
|
+
class CommandTestCase < PVN::TestCase
|
9
|
+
EXPROOT = 'file:///Programs/Subversion/Repositories/pvntestbed.from'
|
10
|
+
|
11
|
+
def test_cat_default
|
12
|
+
expected = Array.new
|
13
|
+
expected << 'line one of file two.'
|
14
|
+
expected << 'second line'
|
15
|
+
expected << 'third line'
|
16
|
+
expected << 'line four'
|
17
|
+
expected << 'line five'
|
18
|
+
expected << 'line 6, Six, VI'
|
19
|
+
expected << 'line 7'
|
20
|
+
expected.collect! { |x| x + "\n" }
|
21
|
+
|
22
|
+
cmd = SVNx::CatExec.new path: EXPROOT + "/SecondFile.txt"
|
23
|
+
|
24
|
+
assert_equal expected, cmd.output
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_cat_revision
|
28
|
+
expected = Array.new
|
29
|
+
expected << 'line one of file two.'
|
30
|
+
expected << 'line four'
|
31
|
+
expected << 'line five'
|
32
|
+
expected << 'line 6, Six, VI'
|
33
|
+
expected << 'line 7'
|
34
|
+
expected.collect! { |x| x + "\n" }
|
35
|
+
|
36
|
+
cmd = SVNx::CatExec.new path: EXPROOT + "/SecondFile.txt", revision: '20'
|
37
|
+
|
38
|
+
assert_equal expected, cmd.output
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_cat_out_of_range
|
42
|
+
expected = Array.new
|
43
|
+
expected << 'line one of file two.'
|
44
|
+
expected << 'line four'
|
45
|
+
expected << 'line five'
|
46
|
+
expected << 'line 6, Six, VI'
|
47
|
+
expected << 'line 7'
|
48
|
+
expected.collect! { |x| x + "\n" }
|
49
|
+
|
50
|
+
assert_raises(RuntimeError) do
|
51
|
+
SVNx::CatExec.new path: EXPROOT + "/SecondFile.txt", revision: '28'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svnx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Pace
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logue
|
@@ -65,18 +65,21 @@ files:
|
|
65
65
|
- lib/system/command/cachefile.rb
|
66
66
|
- lib/system/command/caching.rb
|
67
67
|
- lib/system/command/line.rb
|
68
|
+
- test/integration/info/info_test.rb
|
69
|
+
- test/integration/log/log_test.rb
|
70
|
+
- test/integration/status/status_test.rb
|
68
71
|
- test/unit/svnx/action_test.rb
|
72
|
+
- test/unit/svnx/cat/command_test.rb
|
69
73
|
- test/unit/svnx/info/entries_test.rb
|
70
|
-
- test/unit/svnx/info/entry_test.rb
|
71
74
|
- test/unit/svnx/log/entries_test.rb
|
72
75
|
- test/unit/svnx/log/entry_test.rb
|
73
76
|
- test/unit/svnx/status/entries_test.rb
|
74
|
-
- test/unit/svnx/status/entry_test.rb
|
75
77
|
- test/unit/system/command/cachefile_test.rb
|
76
78
|
- test/unit/system/command/caching_test.rb
|
77
79
|
- test/unit/system/command/line_test.rb
|
78
80
|
homepage: http://www.incava.org/projects/svnx
|
79
|
-
licenses:
|
81
|
+
licenses:
|
82
|
+
- MIT
|
80
83
|
metadata: {}
|
81
84
|
post_install_message:
|
82
85
|
rdoc_options: []
|
@@ -99,13 +102,15 @@ signing_key:
|
|
99
102
|
specification_version: 4
|
100
103
|
summary: Wrapper around Subversion command line.
|
101
104
|
test_files:
|
105
|
+
- test/integration/info/info_test.rb
|
106
|
+
- test/integration/log/log_test.rb
|
107
|
+
- test/integration/status/status_test.rb
|
102
108
|
- test/unit/svnx/action_test.rb
|
109
|
+
- test/unit/svnx/cat/command_test.rb
|
103
110
|
- test/unit/svnx/info/entries_test.rb
|
104
|
-
- test/unit/svnx/info/entry_test.rb
|
105
111
|
- test/unit/svnx/log/entries_test.rb
|
106
112
|
- test/unit/svnx/log/entry_test.rb
|
107
113
|
- test/unit/svnx/status/entries_test.rb
|
108
|
-
- test/unit/svnx/status/entry_test.rb
|
109
114
|
- test/unit/system/command/cachefile_test.rb
|
110
115
|
- test/unit/system/command/caching_test.rb
|
111
116
|
- test/unit/system/command/line_test.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby -w
|
2
|
-
# -*- ruby -*-
|
3
|
-
|
4
|
-
require 'svnx/info/tc'
|
5
|
-
require 'svnx/info/entry'
|
6
|
-
|
7
|
-
module SVNx::Info
|
8
|
-
class EntryTestCase < SVNx::Info::TestCase
|
9
|
-
def assert_info_entry_equals entry, path, kind, revision
|
10
|
-
assert_entry_equals entry, :path => path, :kind => 'file', :url => EXPROOT + '/' + path, :root => EXPROOT, :revision => revision
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_entry_from_xml
|
14
|
-
xmllines = Resources::PTP_INFO_SIXTH_TXT.readlines
|
15
|
-
|
16
|
-
entry = Entry.new :xmllines => xmllines
|
17
|
-
assert_info_entry_equals entry, 'dirzero/SixthFile.txt', 'file', '22'
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby -w
|
2
|
-
# -*- ruby -*-
|
3
|
-
|
4
|
-
require 'svnx/status/tc'
|
5
|
-
require 'svnx/status/entry'
|
6
|
-
|
7
|
-
module SVNx::Status
|
8
|
-
class EntryTestCase < SVNx::Status::TestCase
|
9
|
-
def test_entry_from_xml
|
10
|
-
entry = Entry.new :xmllines => Resources::PTP_STATUS_DOG_RB.readlines
|
11
|
-
assert_status_entry_equals 'added', 'src/ruby/dog.rb', entry
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|