svnx 0.0.2
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 +7 -0
- data/lib/svnx.rb +6 -0
- data/lib/svnx/action.rb +48 -0
- data/lib/svnx/cat/command.rb +61 -0
- data/lib/svnx/command.rb +79 -0
- data/lib/svnx/entries.rb +68 -0
- data/lib/svnx/entry.rb +59 -0
- data/lib/svnx/exec.rb +41 -0
- data/lib/svnx/info/command.rb +44 -0
- data/lib/svnx/info/entries.rb +17 -0
- data/lib/svnx/info/entry.rb +31 -0
- data/lib/svnx/log/command.rb +76 -0
- data/lib/svnx/log/entries.rb +17 -0
- data/lib/svnx/log/entry.rb +53 -0
- data/lib/svnx/status/command.rb +28 -0
- data/lib/svnx/status/entries.rb +17 -0
- data/lib/svnx/status/entry.rb +53 -0
- data/lib/system/command/arg.rb +12 -0
- data/lib/system/command/cachefile.rb +50 -0
- data/lib/system/command/caching.rb +36 -0
- data/lib/system/command/line.rb +53 -0
- data/test/unit/svnx/action_test.rb +36 -0
- data/test/unit/svnx/info/entries_test.rb +22 -0
- data/test/unit/svnx/info/entry_test.rb +20 -0
- data/test/unit/svnx/log/entries_test.rb +88 -0
- data/test/unit/svnx/log/entry_test.rb +15 -0
- data/test/unit/svnx/status/entries_test.rb +20 -0
- data/test/unit/svnx/status/entry_test.rb +14 -0
- data/test/unit/system/command/cachefile_test.rb +54 -0
- data/test/unit/system/command/caching_test.rb +92 -0
- data/test/unit/system/command/line_test.rb +34 -0
- metadata +111 -0
@@ -0,0 +1,20 @@
|
|
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
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'svnx/log/tc'
|
5
|
+
require 'svnx/log/entries'
|
6
|
+
|
7
|
+
module SVNx::Log
|
8
|
+
class EntriesTestCase < SVNx::Log::TestCase
|
9
|
+
def assert_entry_fields_not_nil entry
|
10
|
+
# these are occasionally missing or blank, which REXML considers nil:
|
11
|
+
assert entry.message
|
12
|
+
assert entry.author
|
13
|
+
end
|
14
|
+
|
15
|
+
def assert_log_entry_16 entry
|
16
|
+
expdata = '16', 'Buddy Bizarre', '2012-09-16T14:07:30.329525Z', 'CUT! What in the hell do you think you\'re doing here? This is a closed set.'
|
17
|
+
expdata << { :kind => 'dir',
|
18
|
+
:action => 'A',
|
19
|
+
:name => '/src/java'
|
20
|
+
}
|
21
|
+
expdata << { :kind => 'file',
|
22
|
+
:action => 'A',
|
23
|
+
:name => '/src/java/Alpha.java'
|
24
|
+
}
|
25
|
+
expdata << { :kind => 'file',
|
26
|
+
:action => 'A',
|
27
|
+
:name => '/src/java/Bravo.java'
|
28
|
+
}
|
29
|
+
|
30
|
+
assert_log_entry_equals entry, expdata
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_create_from_xml
|
34
|
+
# entries = Entries.new :xmllines => Resources::PT_LOG_L_15.readlines this
|
35
|
+
# is the equivalent of being at revision 19 (when this was written) and
|
36
|
+
# doing "svn log -r19:5"
|
37
|
+
entries = Entries.new :xmllines => Resources::PT_LOG_R19_5.readlines
|
38
|
+
assert_log_entry_16 entries[3]
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_empty_message_element
|
42
|
+
entries = Entries.new :xmllines => Resources::PT_LOG_R19.readlines
|
43
|
+
nentries = entries.size
|
44
|
+
|
45
|
+
# empty message here:
|
46
|
+
assert_entry_fields_not_nil entries[0]
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_create_on_demand
|
50
|
+
# although entries now supports xmllines as an Array, we need the size for the assertion:
|
51
|
+
xmllines = Resources::PT_LOG_R19_5.readlines
|
52
|
+
|
53
|
+
assert_equal 101, xmllines.size
|
54
|
+
|
55
|
+
entries = Entries.new :xmllines => xmllines
|
56
|
+
|
57
|
+
nentries = entries.size
|
58
|
+
assert_equal 15, nentries
|
59
|
+
|
60
|
+
# the power of Ruby, effortlessly getting instance variables ...
|
61
|
+
|
62
|
+
real_entries = entries.instance_eval '@entries'
|
63
|
+
|
64
|
+
# nothing processed yet ...
|
65
|
+
assert_nil real_entries[12]
|
66
|
+
assert_nil real_entries[13]
|
67
|
+
assert_nil real_entries[14]
|
68
|
+
|
69
|
+
assert_entry_fields_not_nil entries[13]
|
70
|
+
|
71
|
+
# and these still aren't processed:
|
72
|
+
assert_nil real_entries[12]
|
73
|
+
assert_nil real_entries[14]
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_each
|
77
|
+
idx = 0
|
78
|
+
|
79
|
+
entries = Entries.new :xmllines => Resources::PT_LOG_R19_5.readlines
|
80
|
+
entries.each do |entry|
|
81
|
+
if idx == 3
|
82
|
+
assert_log_entry_16 entry
|
83
|
+
end
|
84
|
+
idx += 1
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'svnx/log/tc'
|
5
|
+
require 'svnx/log/entry'
|
6
|
+
|
7
|
+
module SVNx::Log
|
8
|
+
class EntryTestCase < SVNx::Log::TestCase
|
9
|
+
def test_entry_from_xml
|
10
|
+
doc = REXML::Document.new Resources::PT_LOG_R19_5.readlines.join('')
|
11
|
+
entry = Entry.new :xmlelement => doc.elements[1].elements[4]
|
12
|
+
assert_log_entry_16 entry
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'svnx/status/tc'
|
5
|
+
require 'svnx/status/entries'
|
6
|
+
|
7
|
+
module SVNx::Status
|
8
|
+
class EntriesTestCase < SVNx::Status::TestCase
|
9
|
+
def test_create_from_xml
|
10
|
+
entries = Entries.new :xmllines => Resources::PTP_STATUS.readlines
|
11
|
+
|
12
|
+
assert_equal 5, entries.size
|
13
|
+
assert_status_entry_equals 'modified', 'FirstFile.txt', entries[0]
|
14
|
+
assert_status_entry_equals 'unversioned', 'src/java/Charlie.java', entries[1]
|
15
|
+
assert_status_entry_equals 'added', 'src/ruby/dog.rb', entries[2]
|
16
|
+
assert_status_entry_equals 'added', 'SeventhFile.txt', entries[3]
|
17
|
+
assert_status_entry_equals 'deleted', 'dirzero/SixthFile.txt', entries[4]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
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
|
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'tc'
|
5
|
+
require 'system/command/tc'
|
6
|
+
require 'system/command/caching'
|
7
|
+
require 'zlib'
|
8
|
+
|
9
|
+
module System
|
10
|
+
class CacheFileTestCase < CommandTestCase
|
11
|
+
CACHE_DIR = Pathname.new '/tmp/pvn/testing'
|
12
|
+
|
13
|
+
def test_creates_gzfile
|
14
|
+
cf = CacheFile.new CACHE_DIR, [ "ls", "/var/tmp" ]
|
15
|
+
cfpn = cf.instance_eval '@pn'
|
16
|
+
cfpn.unlink if cfpn.exist?
|
17
|
+
|
18
|
+
lines = cf.readlines
|
19
|
+
|
20
|
+
cfpn = cf.instance_eval '@pn'
|
21
|
+
assert cfpn.exist?
|
22
|
+
|
23
|
+
Zlib::GzipReader.open(cfpn.to_s) do |gz|
|
24
|
+
fromgz = gz.readlines
|
25
|
+
assert_equal lines, fromgz
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_reads_gzfile
|
30
|
+
cf = CacheFile.new CACHE_DIR, [ "ls", "-l", "/var/tmp" ]
|
31
|
+
cfpn = cf.instance_eval '@pn'
|
32
|
+
cfpn.unlink if cfpn.exist?
|
33
|
+
|
34
|
+
lines = cf.readlines
|
35
|
+
|
36
|
+
cfpn = cf.instance_eval '@pn'
|
37
|
+
assert cfpn.exist?
|
38
|
+
|
39
|
+
# same as above
|
40
|
+
cf2 = CacheFile.new CACHE_DIR, [ "ls", "-l", "/var/tmp" ]
|
41
|
+
|
42
|
+
def cf2.save_file
|
43
|
+
fail "should not have called save file for read"
|
44
|
+
end
|
45
|
+
|
46
|
+
lines2 = cf2.readlines
|
47
|
+
|
48
|
+
assert_equal lines2, lines
|
49
|
+
|
50
|
+
fromgz = read_gzfile cfpn
|
51
|
+
assert_equal lines, fromgz
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'system/command/caching'
|
5
|
+
require 'system/command/tc'
|
6
|
+
|
7
|
+
# Ruby 2 changes this to "file: Class#method", so we've got to cache it (ironic,
|
8
|
+
# no?)
|
9
|
+
$curfile = $0
|
10
|
+
|
11
|
+
module System
|
12
|
+
class CachingCommandLineTestCase < CommandTestCase
|
13
|
+
def create_ls_tmp
|
14
|
+
CachingCommandLine.new [ "ls", "/bin" ]
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_ctor_no_args
|
18
|
+
cl = CachingCommandLine.new [ "ls" ]
|
19
|
+
assert_equal "ls", cl.to_command
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_ctor_with_args
|
23
|
+
cl = CachingCommandLine.new [ "ls", "/bin" ]
|
24
|
+
assert_equal "ls /bin", cl.to_command
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_lshift
|
28
|
+
cl = CachingCommandLine.new [ "ls" ]
|
29
|
+
cl << "/bin"
|
30
|
+
assert_equal "ls /bin", cl.to_command
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_cache_dir_defaults_to_executable
|
34
|
+
cl = create_ls_tmp
|
35
|
+
assert_equal '/tmp' + (Pathname.new($curfile).expand_path).to_s, cl.cache_dir
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_cache_file_defaults_to_executable
|
39
|
+
cl = create_ls_tmp
|
40
|
+
assert_equal '/tmp' + (Pathname.new($curfile).expand_path).to_s + '/ls-_slash_bin.gz', cl.cache_file.to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_cache_dir_set_cachefile
|
44
|
+
cl = create_ls_tmp
|
45
|
+
def cl.cache_dir; CACHE_DIR.to_s; end
|
46
|
+
assert_not_nil cl.cache_dir
|
47
|
+
assert !CACHE_DIR.exist?
|
48
|
+
|
49
|
+
cachefile = cl.cache_file
|
50
|
+
assert_equal CACHE_DIR.to_s + '/ls-_slash_bin.gz', cachefile.to_s
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_cache_dir_created_on_execute
|
54
|
+
cl = create_ls_tmp
|
55
|
+
def cl.cache_dir; CACHE_DIR.to_s; end
|
56
|
+
|
57
|
+
cachefile = cl.cache_file
|
58
|
+
|
59
|
+
cl.execute
|
60
|
+
assert CACHE_DIR.exist?
|
61
|
+
cachelines = read_gzfile cachefile
|
62
|
+
|
63
|
+
syslines = nil
|
64
|
+
# we can't use /tmp, since this test will add to it:
|
65
|
+
IO.popen("ls /bin") do |io|
|
66
|
+
syslines = io.readlines
|
67
|
+
end
|
68
|
+
|
69
|
+
assert_equal syslines, cachelines
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_cache_file_matches_results
|
73
|
+
dir = "/usr/local/bin"
|
74
|
+
cl = CachingCommandLine.new [ "ls", dir ]
|
75
|
+
def cl.cache_dir; CACHE_DIR.to_s; end
|
76
|
+
|
77
|
+
cachefile = cl.cache_file
|
78
|
+
|
79
|
+
cl.execute
|
80
|
+
assert CACHE_DIR.exist?
|
81
|
+
|
82
|
+
cachelines = read_gzfile cachefile
|
83
|
+
|
84
|
+
syslines = nil
|
85
|
+
IO.popen("ls #{dir}") do |io|
|
86
|
+
syslines = io.readlines
|
87
|
+
end
|
88
|
+
|
89
|
+
assert_equal syslines, cachelines
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# -*- ruby -*-
|
3
|
+
|
4
|
+
require 'tc'
|
5
|
+
require 'system/command/line'
|
6
|
+
|
7
|
+
module System
|
8
|
+
class CommandLineTestCase < PVN::TestCase
|
9
|
+
def test_ctor
|
10
|
+
cl = System::CommandLine.new [ "ls" ]
|
11
|
+
assert_equal "ls", cl.to_command
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_lshift
|
15
|
+
cl = System::CommandLine.new [ "ls" ]
|
16
|
+
cl << "/tmp"
|
17
|
+
assert_equal "ls /tmp", cl.to_command
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_execute
|
21
|
+
cl = System::CommandLine.new [ "ls" ]
|
22
|
+
cl << "/tmp"
|
23
|
+
assert_equal "ls /tmp", cl.to_command
|
24
|
+
output = cl.execute
|
25
|
+
|
26
|
+
syslines = nil
|
27
|
+
IO.popen("ls /tmp") do |io|
|
28
|
+
syslines = io.readlines
|
29
|
+
end
|
30
|
+
|
31
|
+
assert_equal syslines, output
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: svnx
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeff Pace
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-08-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: logue
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rainbow
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.1.4
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.1.4
|
41
|
+
description: A bridge between Subversion functionality, via the command line, and
|
42
|
+
Ruby.
|
43
|
+
email: jeugenepace@gmail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- lib/svnx.rb
|
49
|
+
- lib/svnx/action.rb
|
50
|
+
- lib/svnx/cat/command.rb
|
51
|
+
- lib/svnx/command.rb
|
52
|
+
- lib/svnx/entries.rb
|
53
|
+
- lib/svnx/entry.rb
|
54
|
+
- lib/svnx/exec.rb
|
55
|
+
- lib/svnx/info/command.rb
|
56
|
+
- lib/svnx/info/entries.rb
|
57
|
+
- lib/svnx/info/entry.rb
|
58
|
+
- lib/svnx/log/command.rb
|
59
|
+
- lib/svnx/log/entries.rb
|
60
|
+
- lib/svnx/log/entry.rb
|
61
|
+
- lib/svnx/status/command.rb
|
62
|
+
- lib/svnx/status/entries.rb
|
63
|
+
- lib/svnx/status/entry.rb
|
64
|
+
- lib/system/command/arg.rb
|
65
|
+
- lib/system/command/cachefile.rb
|
66
|
+
- lib/system/command/caching.rb
|
67
|
+
- lib/system/command/line.rb
|
68
|
+
- test/unit/svnx/action_test.rb
|
69
|
+
- test/unit/svnx/info/entries_test.rb
|
70
|
+
- test/unit/svnx/info/entry_test.rb
|
71
|
+
- test/unit/svnx/log/entries_test.rb
|
72
|
+
- test/unit/svnx/log/entry_test.rb
|
73
|
+
- test/unit/svnx/status/entries_test.rb
|
74
|
+
- test/unit/svnx/status/entry_test.rb
|
75
|
+
- test/unit/system/command/cachefile_test.rb
|
76
|
+
- test/unit/system/command/caching_test.rb
|
77
|
+
- test/unit/system/command/line_test.rb
|
78
|
+
homepage: http://www.incava.org/projects/svnx
|
79
|
+
licenses: []
|
80
|
+
metadata: {}
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubyforge_project:
|
97
|
+
rubygems_version: 2.0.6
|
98
|
+
signing_key:
|
99
|
+
specification_version: 4
|
100
|
+
summary: Wrapper around Subversion command line.
|
101
|
+
test_files:
|
102
|
+
- test/unit/svnx/action_test.rb
|
103
|
+
- test/unit/svnx/info/entries_test.rb
|
104
|
+
- test/unit/svnx/info/entry_test.rb
|
105
|
+
- test/unit/svnx/log/entries_test.rb
|
106
|
+
- test/unit/svnx/log/entry_test.rb
|
107
|
+
- test/unit/svnx/status/entries_test.rb
|
108
|
+
- test/unit/svnx/status/entry_test.rb
|
109
|
+
- test/unit/system/command/cachefile_test.rb
|
110
|
+
- test/unit/system/command/caching_test.rb
|
111
|
+
- test/unit/system/command/line_test.rb
|