svnx 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bbdd26ffd7b7edf9512843b4f7778a450cdde451
4
- data.tar.gz: c46ef32d2f4529da8c51e279c201bd1613ae4e82
3
+ metadata.gz: cf3407b885d82f3046303ab8ceb10ec94bc06d30
4
+ data.tar.gz: 2ae00cd95c6a21110d762a2fb1dd51b35febd2d7
5
5
  SHA512:
6
- metadata.gz: 88b05a25927acdcf0cf9d3be6d093c1414325f95c3ea00f5227bd4876bdf9faa8f47a3028ca93d98445bd9a6431c55f39acd89d2f4774847240d51b5cfe61e86
7
- data.tar.gz: 1c6c9d7ed975d7bbf443db9abd859100ad0a3ef25eca55e36fed674b377aeaa95acde581922f6b58b0364dcafd73f79cac59136bc8cc77f3f87fa1504a122f05
6
+ metadata.gz: e9e60a7fd8ac963f7b992bc65cddf9fc8863e58c0c118a44406ee24854b933598d3ae90a6d629bb4649703d3ea7dbfc35120913166712ff33dafc31ea172aca1
7
+ data.tar.gz: 5ad12585bda46174f3313f065e44e9e5b904e8690668b623ee5d4cd0eca7e653c6fd0a24199d7248df424bfd16851d5b86fbff1f5b3dfcefcf2a3a3c2a897e99
data/lib/svnx.rb CHANGED
@@ -2,6 +2,6 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  module SVNx
5
- NAME = "svnx"
6
- VERSION = "0.5.0"
5
+ NAME = 'svnx'
6
+ VERSION = '0.6.0'
7
7
  end
@@ -10,37 +10,58 @@ module SVNx
10
10
  attr_reader :type
11
11
 
12
12
  STATUS_TO_TYPE = Hash.new
13
+ STATUS_TO_ACTION = Hash.new
13
14
 
14
- def self.add_type sym, str, char
15
- [ sym, str, char ].each do |key|
16
- STATUS_TO_TYPE[key] = sym
17
- end
15
+ def initialize type
16
+ @type = type
18
17
  end
19
18
 
20
- add_type :added, 'added', 'A'
21
- add_type :deleted, 'deleted', 'D'
22
- add_type :modified, 'modified', 'M'
23
- add_type :unversioned, 'unversioned', '?'
19
+ class << self
20
+ alias_method :orig_new, :new
21
+
22
+ def new arg
23
+ if arg.kind_of? Action
24
+ arg
25
+ elsif act = STATUS_TO_ACTION[arg]
26
+ act
27
+ else
28
+ type = STATUS_TO_TYPE[arg]
29
+ raise "no such action: #{arg.inspect}" unless type
30
+ STATUS_TO_ACTION[arg] = orig_new type
31
+ end
32
+ end
24
33
 
25
- STATUS_TO_TYPE.values.uniq.each do |val|
26
- methname = val.to_s + '?'
27
- define_method methname do
28
- instance_eval do
29
- @type == STATUS_TO_TYPE[val]
34
+ def add_type str, char
35
+ sym = str.to_sym
36
+ STATUS_TO_TYPE[sym] = sym
37
+ action = SVNx::Action.new(sym)
38
+ SVNx::Action.const_set str.upcase, action
39
+ [ sym, str, char ].each do |key|
40
+ STATUS_TO_ACTION[key] = action
30
41
  end
31
42
  end
32
43
  end
33
-
34
- def initialize str
35
- @type = STATUS_TO_TYPE[str]
36
- end
37
44
 
38
45
  def <=> other
39
- @type.to_s <=> other.type.to_s
46
+ @type <=> other.type
40
47
  end
41
48
 
42
49
  def to_s
43
50
  @type.to_s
44
51
  end
52
+
53
+ add_type 'added', 'A'
54
+ add_type 'deleted', 'D'
55
+ add_type 'modified', 'M'
56
+ add_type 'unversioned', '?'
57
+
58
+ STATUS_TO_TYPE.values.uniq.each do |val|
59
+ methname = val.to_s + '?'
60
+ define_method methname do
61
+ instance_eval do
62
+ @type == STATUS_TO_TYPE[val]
63
+ end
64
+ end
65
+ end
45
66
  end
46
67
  end
@@ -12,6 +12,7 @@ module SVNx::Info
12
12
  attr_reader :kind
13
13
  attr_reader :path
14
14
  attr_reader :revision
15
+ attr_reader :wc_root
15
16
 
16
17
  def set_from_element elmt
17
18
  set_attr_var elmt, 'kind'
@@ -22,6 +23,13 @@ module SVNx::Info
22
23
 
23
24
  repo = elmt.elements['repository']
24
25
  set_elmt_var repo, 'root'
26
+
27
+ @wc_root = nil
28
+ if wcinfo = elmt.elements['wc-info']
29
+ if wcroot = wcinfo.elements['wcroot-abspath']
30
+ @wc_root = wcroot.text
31
+ end
32
+ end
25
33
  end
26
34
  end
27
35
  end
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ module SVNx::IO
5
+ # An element unites an svn element and a file/directory (at least one of
6
+ # which should exist).
7
+
8
+ class Directory < Element
9
+ end
10
+ end
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'rubygems'
5
+ require 'logue/loggable'
6
+ require 'svnx/log/entries'
7
+ require 'svnx/status/entries'
8
+ require 'svnx/status/command'
9
+ require 'svnx/info/entries'
10
+ require 'svnx/info/command'
11
+ require 'svnx/cat/command'
12
+ require 'pathname'
13
+
14
+ module SVNx; module IO; end; end
15
+
16
+ module SVNx::IO
17
+ # An element unites an svn element and a file/directory (at least one of
18
+ # which should exist).
19
+
20
+ class Element
21
+ include Logue::Loggable, Comparable
22
+
23
+ attr_reader :svn
24
+ attr_reader :path
25
+ attr_reader :local
26
+
27
+ def initialize args = Hash.new
28
+ info "args: #{args.inspect}".color("438802")
29
+
30
+ # svnurl = args[:svnurl]
31
+ # fname = args[:filename] || args[:file] # legacy
32
+ # $$$ todo: map svnurl to SVNElement, and fname to FSElement
33
+
34
+ @svn = args[:svn] # || (args[:file] && SVNElement.new(:filename => args[:file]))
35
+ @local = args[:local] && Pathname.new(args[:local]) # && PVN::FSElement.new(args[:local] || args[:file])
36
+ @path = args[:path]
37
+
38
+ info "local: #{@local.inspect}"
39
+ end
40
+
41
+ def exist?
42
+ @local && @local.exist?
43
+ end
44
+
45
+ def directory?
46
+ @local && @local.directory?
47
+ end
48
+
49
+ def file?
50
+ @local && @local.file?
51
+ end
52
+
53
+ def get_info revision = nil
54
+ return nil unless in_svn?
55
+
56
+ usepath = @local ? @local.to_path : @path
57
+ inf = SVNx::InfoExec.new path: usepath, revision: revision
58
+ inf.entry
59
+ end
60
+
61
+ def in_svn?
62
+ usepath = @local ? @local.to_path : @path
63
+ st = SVNx::StatusExec.new path: usepath
64
+ st.entries.size == 0 || st.entries[0].status.to_s != 'unversioned'
65
+ end
66
+
67
+ def find_entries args = Hash.new
68
+ revision = args[:revision]
69
+ status = args[:status]
70
+
71
+ if revision.nil?
72
+ find_by_status status
73
+ else
74
+ find_in_log revision, status
75
+ end
76
+ end
77
+
78
+ def find_in_log revision, action
79
+ svninfo = get_info
80
+
81
+ filter = svninfo.url.dup
82
+ filter.slice! svninfo.root
83
+
84
+ # we can't cache this, because we don't know if there has been an svn
85
+ # update since the previous run:
86
+ logexec = SVNx::LogExec.new path: @local, revision: revision, verbose: true, use_cache: false
87
+ entries = logexec.entries
88
+
89
+ act = action.kind_of?(SVNx::Action) ? action : SVNx::Action.new(action)
90
+ entries.match act, filter
91
+ end
92
+
93
+ def find_by_status status
94
+ statexec = SVNx::StatusExec.new path: @local, use_cache: false
95
+ entries = statexec.entries
96
+
97
+ entries.select do |entry|
98
+ status.nil? || entry.status.to_s == status.to_s
99
+ end.sort
100
+ end
101
+
102
+ def log_entries args = Hash.new
103
+ rev = args[:revision]
104
+ # use_cache should be conditional on revision:
105
+ logexec = SVNx::LogExec.new :path => @local, :revision => rev && rev.to_s, :verbose => true, :use_cache => false
106
+ logexec.entries
107
+ end
108
+
109
+ def cat args = Hash.new
110
+ rev = args[:revision]
111
+ catexec = SVNx::CatExec.new :path => @local, :revision => rev && rev.to_s, :use_cache => false
112
+ catexec.output
113
+ end
114
+
115
+ def to_s
116
+ "svn => " + @svn.to_s + "; local => " + @local.to_s
117
+ end
118
+
119
+ def <=> other
120
+ @local <=> other.local
121
+ end
122
+ end
123
+ end
@@ -13,5 +13,13 @@ module SVNx::Log
13
13
  def create_entry xmlelement
14
14
  Entry.new :xmlelement => xmlelement
15
15
  end
16
+
17
+ def match action, filter
18
+ matching = Array.new
19
+ each do |entry|
20
+ matching.concat entry.match(action, filter)
21
+ end
22
+ matching.sort
23
+ end
16
24
  end
17
25
  end
@@ -2,12 +2,12 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'svnx/base/entry'
5
+ require 'svnx/base/action'
5
6
 
6
7
  module SVNx; module Log; end; end
7
8
 
8
9
  module SVNx::Log
9
10
  class Entry < SVNx::Entry
10
-
11
11
  attr_reader :revision, :author, :date, :paths, :msg
12
12
 
13
13
  def set_from_element elmt
@@ -24,8 +24,11 @@ module SVNx::Log
24
24
  action = get_attribute pe, 'action'
25
25
  name = pe.text
26
26
 
27
- @paths << LogEntryPath.new(:kind => kind, :action => action, :name => name)
27
+ @paths << LogEntryPath.new(kind: kind, action: SVNx::Action.new(action), name: name)
28
28
  end
29
+
30
+ # Svn isn't consistent with the order of paths
31
+ @paths.sort!
29
32
  end
30
33
 
31
34
  def message
@@ -35,9 +38,17 @@ module SVNx::Log
35
38
  def to_s
36
39
  [ @revision, @author, @date, @msg, @paths ].collect { |x| x.to_s }.join " "
37
40
  end
38
- end
39
41
 
42
+ def match action, filter
43
+ paths.select do |path|
44
+ path.match? action, filter
45
+ end
46
+ end
47
+ end
48
+
40
49
  class LogEntryPath
50
+ include Comparable
51
+
41
52
  attr_reader :kind, :action, :name
42
53
 
43
54
  def initialize args = Hash.new
@@ -49,5 +60,13 @@ module SVNx::Log
49
60
  def to_s
50
61
  @name
51
62
  end
63
+
64
+ def <=> other
65
+ name <=> other.name
66
+ end
67
+
68
+ def match? action, filter
69
+ @action.to_s == action.to_s && @name.start_with?(filter)
70
+ end
52
71
  end
53
72
  end
@@ -2,6 +2,7 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'svnx/base/command'
5
+ require 'svnx/info/command'
5
6
 
6
7
  module SVNx
7
8
  class StatusCommandLine < CommandLine
@@ -26,8 +27,22 @@ module SVNx
26
27
  attr_reader :entries
27
28
 
28
29
  def initialize args
30
+ path = args[:path]
31
+ rootpath = nil
32
+
33
+ while true
34
+ begin
35
+ inf = InfoExec.new(path: path).entry
36
+ rootpath = inf.wc_root
37
+ break
38
+ rescue
39
+ path = Pathname.new(path).dirname.to_s
40
+ break if path == '/'
41
+ end
42
+ end
43
+
29
44
  cmd = StatusCommand.new StatusCommandArgs.new(args)
30
- @entries = SVNx::Status::Entries.new(:xmllines => cmd.execute)
45
+ @entries = SVNx::Status::Entries.new(xmllines: cmd.execute, rootpath: rootpath)
31
46
  end
32
47
  end
33
48
  end
@@ -6,12 +6,17 @@ require 'svnx/base/entries'
6
6
 
7
7
  module SVNx::Status
8
8
  class Entries < SVNx::Entries
9
+ def initialize args = Hash.new
10
+ @rootpath = args[:rootpath]
11
+ super
12
+ end
13
+
9
14
  def get_elements doc
10
15
  doc.elements['status'].elements['target'].elements
11
16
  end
12
17
 
13
18
  def create_entry xmlelement
14
- Entry.new :xmlelement => xmlelement
19
+ Entry.new xmlelement: xmlelement, rootpath: @rootpath
15
20
  end
16
21
  end
17
22
  end
@@ -8,13 +8,17 @@ module SVNx; module Status; end; end
8
8
 
9
9
  module SVNx::Status
10
10
  class Entry < SVNx::Entry
11
+ include Comparable
12
+
11
13
  attr_reader :status
12
14
  attr_reader :path
13
15
  attr_reader :status_revision
14
16
  attr_reader :action
15
17
  attr_reader :commit_revision
18
+ attr_reader :name
16
19
 
17
20
  def initialize args
21
+ @rootpath = args[:rootpath]
18
22
  super
19
23
  @action = SVNx::Action.new @status
20
24
  end
@@ -23,15 +27,23 @@ module SVNx::Status
23
27
  set_attr_var elmt, 'path'
24
28
 
25
29
  wcstatus = elmt.elements['wc-status']
26
- @status = wcstatus.attributes['item']
30
+ @status = SVNx::Action.new(wcstatus.attributes['item'])
27
31
  @status_revision = wcstatus.attributes['revision']
28
32
 
29
33
  commit = wcstatus.elements['commit']
30
34
  @commit_revision = commit && commit.attributes['revision']
35
+ @name = @path.dup
36
+ if @rootpath
37
+ @name[Regexp.new('^' + @rootpath)] = ""
38
+ end
31
39
  end
32
40
 
33
41
  def to_s
34
42
  "path: #{@path}; status: #{@status}"
35
43
  end
44
+
45
+ def <=> other
46
+ path <=> other.path
47
+ end
36
48
  end
37
49
  end
@@ -13,7 +13,7 @@ module SVNx::Status
13
13
 
14
14
  assert_equal exp_path, entry.path, msg
15
15
  assert_equal exp_cmt_rev, entry.commit_revision, msg
16
- assert_equal exp_status, entry.status, msg
16
+ assert_equal exp_status.to_s, entry.status.to_s, msg
17
17
  assert_equal exp_st_rev, entry.status_revision, msg
18
18
  end
19
19
 
@@ -0,0 +1,225 @@
1
+ #!/usr/bin/ruby -w
2
+ # -*- ruby -*-
3
+
4
+ require 'integration/tc'
5
+ require 'svnx/io/element'
6
+
7
+ module SVNx::IO
8
+ class ElementTestCase < SVNx::IntegrationTestCase
9
+ PENDING_PATH = '/Programs/pvn/pvntestbed.pending'
10
+
11
+ def test_init
12
+ el = Element.new local: PENDING_PATH
13
+ assert_equal PENDING_PATH, el.local.to_path
14
+ end
15
+
16
+ def test_exists
17
+ el = Element.new local: PENDING_PATH
18
+ assert el.exist?
19
+ end
20
+
21
+ def test_does_not_exist
22
+ el = Element.new local: '/Programs/pvn/nosuchdirectory'
23
+ assert !el.exist?
24
+ end
25
+
26
+ def test_is_directory
27
+ el = Element.new local: PENDING_PATH + '/text'
28
+ assert el.directory?
29
+ end
30
+
31
+ def test_is_not_directory
32
+ el = Element.new local: PENDING_PATH + '/FirstFile.txt'
33
+ assert !el.directory?
34
+ end
35
+
36
+ def test_get_info_has_info
37
+ el = Element.new local: PENDING_PATH + '/FirstFile.txt'
38
+ inf = el.get_info
39
+ assert_equal 'file', inf.kind
40
+ assert_equal 'FirstFile.txt', inf.path
41
+ assert_equal '22', inf.revision
42
+ assert_equal 'file:///Programs/Subversion/Repositories/pvntestbed.from', inf.root
43
+ assert_equal 'file:///Programs/Subversion/Repositories/pvntestbed.from/FirstFile.txt', inf.url
44
+ end
45
+
46
+ def test_get_info_no_info
47
+ el = Element.new local: PENDING_PATH + '/src/java/Charlie.java'
48
+ assert_nil el.get_info
49
+ end
50
+
51
+ def test_is_in_svn_up_to_date
52
+ el = Element.new local: PENDING_PATH + '/src/java/Alpha.java'
53
+ assert el.in_svn?
54
+ end
55
+
56
+ def test_is_in_svn_modified
57
+ el = Element.new local: PENDING_PATH + '/FirstFile.java'
58
+ assert el.in_svn?
59
+ end
60
+
61
+ def test_not_in_svn
62
+ el = Element.new local: PENDING_PATH + '/src/java/Charlie.java'
63
+ assert !el.in_svn?
64
+ end
65
+
66
+ def assert_status_entry idx, exp, entries
67
+ entry = entries[idx]
68
+ msg = "entry \##{idx}"
69
+ assert_equal exp[:path], entry.path, msg
70
+ assert_equal exp[:name], entry.name, msg
71
+ assert_equal exp[:status], entry.status.to_s, msg
72
+ end
73
+
74
+ def run_local_test expected, status
75
+ el = Element.new local: PENDING_PATH
76
+ entries = el.find_entries status: status
77
+ assert_equal expected.size, entries.size
78
+ expected.each_with_index do |exp, idx|
79
+ assert_status_entry idx, exp, entries
80
+ end
81
+ end
82
+
83
+ def create_status_expected name, status
84
+ { path: PENDING_PATH + name, name: name, status: status }
85
+ end
86
+
87
+ def test_find_modified_local_entries
88
+ expected = Array.new
89
+ expected << create_status_expected('/FirstFile.txt', 'modified')
90
+ run_local_test expected, :modified
91
+ end
92
+
93
+ def test_find_added_local_entries
94
+ expected = Array.new
95
+ expected << create_status_expected('/SeventhFile.txt', 'added')
96
+ expected << create_status_expected('/src/ruby/dog.rb', 'added')
97
+ run_local_test expected, :added
98
+ end
99
+
100
+ def test_find_deleted_local_entries
101
+ expected = Array.new
102
+ expected << create_status_expected('/dirzero/SixthFile.txt', 'deleted')
103
+ run_local_test expected, :deleted
104
+ end
105
+
106
+ def test_find_unversioned_local_entries
107
+ expected = Array.new
108
+ expected << create_status_expected('/src/java/Charlie.java', 'unversioned')
109
+ run_local_test expected, :unversioned
110
+ end
111
+
112
+ def assert_log_entry expname, expaction, entry
113
+ assert_equal expname, entry.name
114
+ assert_equal expaction, entry.action.to_s
115
+ end
116
+
117
+ def test_find_modified_remote_entries
118
+ el = Element.new local: PENDING_PATH
119
+ entries = el.find_entries revision: '20:22', status: :modified
120
+ assert_equal 3, entries.size
121
+ assert_log_entry '/SecondFile.txt', 'modified', entries[0]
122
+ assert_log_entry '/SecondFile.txt', 'modified', entries[1]
123
+ assert_log_entry '/src/ruby/charlie.rb', 'modified', entries[2]
124
+ end
125
+
126
+ def assert_paths_equal exppath, path
127
+ assert_equal exppath[:name], path.name
128
+ assert_equal exppath[:action], path.action.to_s
129
+ assert_equal exppath[:kind], path.kind
130
+ end
131
+
132
+ def assert_log_entries expected, entries, idx
133
+ msg = "entry \##{idx}"
134
+ assert_equal expected[idx][:author], entries[idx].author, msg
135
+ assert_equal expected[idx][:date], entries[idx].date, msg
136
+ assert_equal expected[idx][:author], entries[idx].author, msg
137
+ assert_equal expected[idx][:revision], entries[idx].revision, msg
138
+ expected[idx][:paths].each_with_index do |exppath, ix|
139
+ assert_paths_equal exppath, entries[idx].paths[ix]
140
+ end
141
+ end
142
+
143
+ def test_log_entries_no_revision
144
+ el = Element.new local: PENDING_PATH + '/FirstFile.txt'
145
+ # these are entries of entries
146
+ entries = el.log_entries
147
+ assert_equal 5, entries.size
148
+
149
+ expected = Array.new
150
+ expected << { author: 'Jim',
151
+ date: '2012-09-16T13:51:55.741762Z',
152
+ msg: "We're not sure. Are we...black?",
153
+ revision: '13',
154
+ paths: [
155
+ { action: 'modified', kind: 'file', name: '/FirstFile.txt' },
156
+ { action: 'added', kind: 'file', name: '/SecondFile.txt' }
157
+ ]
158
+ }
159
+
160
+ assert_log_entries expected, entries, 0
161
+
162
+ expected << { author: 'Lyle',
163
+ date: '2012-09-15T17:30:36.869900Z',
164
+ msg: 'Send wire, main office, tell them I said "ow". Gotcha!',
165
+ revision: '5',
166
+ paths: [
167
+ { action: 'modified', kind: 'file', name: '/FirstFile.txt' },
168
+ { action: 'modified', kind: 'file', name: '/SecondFile.txt' }
169
+ ]
170
+ }
171
+
172
+ assert_log_entries expected, entries, 1
173
+ end
174
+
175
+ def test_cat_no_revision
176
+ el = Element.new local: PENDING_PATH + '/FirstFile.txt'
177
+
178
+ expected = Array.new
179
+ expected << "this is the second line of the first file.\n"
180
+ expected << "third line here.\n"
181
+ expected << "fourth line this is.\n"
182
+
183
+ lines = el.cat
184
+ assert_equal expected, lines
185
+ end
186
+
187
+ def test_cat_valid_revision
188
+ el = Element.new local: PENDING_PATH + '/FirstFile.txt'
189
+
190
+ expected = Array.new
191
+ expected << "This is the first line of the first file in the testbed.\n"
192
+ expected << "This is the second line of the first file.\n"
193
+
194
+ lines = el.cat revision: 2
195
+
196
+ assert_equal expected, lines
197
+ end
198
+
199
+ def test_cat_invalid_revision
200
+ el = Element.new local: PENDING_PATH + '/FirstFile.txt'
201
+ assert_raises(RuntimeError) do
202
+ el.cat revision: 41
203
+ end
204
+ end
205
+
206
+ def test_to_s
207
+ el = Element.new local: PENDING_PATH + '/FirstFile.txt'
208
+ assert_equal "svn => ; local => #{PENDING_PATH}/FirstFile.txt", el.to_s
209
+ end
210
+
211
+ def assert_comparable expected, x, y
212
+ assert_equal expected, x <=> y
213
+ end
214
+
215
+ def test_comparable
216
+ a = Element.new local: PENDING_PATH + '/A.txt'
217
+ b0 = Element.new local: PENDING_PATH + '/B.txt'
218
+ b1 = Element.new local: PENDING_PATH + '/B.txt'
219
+
220
+ assert_comparable -1, a, b0
221
+ assert_comparable 1, b0, a
222
+ assert_comparable 0, b0, b1
223
+ end
224
+ end
225
+ end
@@ -32,5 +32,18 @@ module SVNx
32
32
  def test_unversioned
33
33
  assert_action_equals false, false, false, true, 'unversioned', '?'
34
34
  end
35
+
36
+ def test_constants
37
+ assert_equal SVNx::Action.new('added'), SVNx::Action::ADDED
38
+ assert_equal SVNx::Action.new('deleted'), SVNx::Action::DELETED
39
+ assert_equal SVNx::Action.new('modified'), SVNx::Action::MODIFIED
40
+ assert_equal SVNx::Action.new('unversioned'), SVNx::Action::UNVERSIONED
41
+ end
42
+
43
+ def test_invalid_type
44
+ assert_raise(RuntimeError) do
45
+ SVNx::Action.new('dummy')
46
+ end
47
+ end
35
48
  end
36
49
  end
@@ -37,7 +37,6 @@ module SVNx::Revision
37
37
  def test_init_takes_arguments
38
38
  fa = Argument.new 143
39
39
  ta = Argument.new 199
40
- rr = Range.new fa, ta
41
40
  assert_range '143:199', '143', '199', fa, ta
42
41
  end
43
42
 
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.5.0
4
+ version: 0.6.0
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-09-18 00:00:00.000000000 Z
11
+ date: 2013-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logue
@@ -54,6 +54,8 @@ files:
54
54
  - lib/svnx/info/command.rb
55
55
  - lib/svnx/info/entries.rb
56
56
  - lib/svnx/info/entry.rb
57
+ - lib/svnx/io/directory.rb
58
+ - lib/svnx/io/element.rb
57
59
  - lib/svnx/log/command.rb
58
60
  - lib/svnx/log/entries.rb
59
61
  - lib/svnx/log/entry.rb
@@ -71,6 +73,7 @@ files:
71
73
  - test/integration/info/info_test.rb
72
74
  - test/integration/log/log_test.rb
73
75
  - test/integration/status/status_test.rb
76
+ - test/integration/svnx/io/element_test.rb
74
77
  - test/unit/svnx/base/action_test.rb
75
78
  - test/unit/svnx/cat/command_test.rb
76
79
  - test/unit/svnx/info/entries_test.rb
@@ -111,6 +114,7 @@ test_files:
111
114
  - test/integration/info/info_test.rb
112
115
  - test/integration/log/log_test.rb
113
116
  - test/integration/status/status_test.rb
117
+ - test/integration/svnx/io/element_test.rb
114
118
  - test/unit/svnx/base/action_test.rb
115
119
  - test/unit/svnx/cat/command_test.rb
116
120
  - test/unit/svnx/info/entries_test.rb