svnx 1.0.1 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.glarkrc +1 -0
  4. data/Features.txt +7 -0
  5. data/Gemfile +4 -0
  6. data/History.txt +4 -0
  7. data/LICENSE +20 -0
  8. data/Manifest.txt +0 -0
  9. data/README.md +12 -0
  10. data/Rakefile +12 -0
  11. data/lib/svnx/base/action.rb +57 -52
  12. data/lib/svnx/base/cmdline.rb +58 -0
  13. data/lib/svnx/base/command.rb +49 -41
  14. data/lib/svnx/base/entries.rb +46 -45
  15. data/lib/svnx/base/entry.rb +51 -38
  16. data/lib/svnx/base/env.rb +26 -0
  17. data/lib/svnx/base/options.rb +25 -0
  18. data/lib/svnx/cat/command.rb +3 -64
  19. data/lib/svnx/cat/options.rb +28 -0
  20. data/lib/svnx/commit/command.rb +9 -0
  21. data/lib/svnx/commit/options.rb +29 -0
  22. data/lib/svnx/diff/command.rb +17 -0
  23. data/lib/svnx/diff/elements.rb +84 -0
  24. data/lib/svnx/diff/options.rb +35 -0
  25. data/lib/svnx/diff/parser.rb +105 -0
  26. data/lib/svnx/info/command.rb +4 -47
  27. data/lib/svnx/info/entries.rb +6 -8
  28. data/lib/svnx/info/entry.rb +21 -23
  29. data/lib/svnx/info/options.rb +28 -0
  30. data/lib/svnx/io/directory.rb +9 -5
  31. data/lib/svnx/io/element.rb +93 -95
  32. data/lib/svnx/log/command.rb +7 -3
  33. data/lib/svnx/log/entries.rb +17 -14
  34. data/lib/svnx/log/entry.rb +61 -49
  35. data/lib/svnx/log/options.rb +31 -0
  36. data/lib/svnx/merge/command.rb +9 -0
  37. data/lib/svnx/merge/options.rb +34 -0
  38. data/lib/svnx/project.rb +74 -0
  39. data/lib/svnx/propget/command.rb +9 -0
  40. data/lib/svnx/propget/entries.rb +15 -0
  41. data/lib/svnx/propget/entry.rb +23 -0
  42. data/lib/svnx/propget/options.rb +31 -0
  43. data/lib/svnx/propset/command.rb +9 -0
  44. data/lib/svnx/propset/options.rb +33 -0
  45. data/lib/svnx/revision/argfactory.rb +2 -2
  46. data/lib/svnx/revision/argument.rb +7 -3
  47. data/lib/svnx/revision/date.rb +27 -0
  48. data/lib/svnx/revision/error.rb +2 -2
  49. data/lib/svnx/revision/range.rb +5 -2
  50. data/lib/svnx/status/command.rb +4 -42
  51. data/lib/svnx/status/entries.rb +11 -12
  52. data/lib/svnx/status/entry.rb +43 -41
  53. data/lib/svnx/status/options.rb +28 -0
  54. data/lib/svnx/update/command.rb +9 -0
  55. data/lib/svnx/update/options.rb +25 -0
  56. data/lib/svnx/util/dateutil.rb +35 -0
  57. data/lib/svnx/util/objutil.rb +14 -0
  58. data/lib/{svnx.rb → svnx/version.rb} +2 -2
  59. data/lib/system/command/arg.rb +6 -5
  60. data/lib/system/command/cachefile.rb +29 -21
  61. data/lib/system/command/caching.rb +12 -25
  62. data/lib/system/command/line.rb +41 -30
  63. data/svnx.gemspec +34 -0
  64. metadata +85 -61
  65. data/lib/svnx/base/args.rb +0 -24
  66. data/lib/svnx/log/args.rb +0 -57
  67. data/lib/svnx/log/exec.rb +0 -27
  68. data/lib/svnx/log/line.rb +0 -42
  69. data/test/integration/info/info_test.rb +0 -21
  70. data/test/integration/log/log_test.rb +0 -74
  71. data/test/integration/status/status_test.rb +0 -35
  72. data/test/integration/svnx/io/element_test.rb +0 -235
  73. data/test/unit/svnx/base/action_test.rb +0 -49
  74. data/test/unit/svnx/cat/command_test.rb +0 -55
  75. data/test/unit/svnx/info/entries_test.rb +0 -22
  76. data/test/unit/svnx/log/args_test.rb +0 -15
  77. data/test/unit/svnx/log/entries_test.rb +0 -87
  78. data/test/unit/svnx/log/entry_test.rb +0 -15
  79. data/test/unit/svnx/log/exec_test.rb +0 -15
  80. data/test/unit/svnx/log/line_test.rb +0 -14
  81. data/test/unit/svnx/revision/argfactory_test.rb +0 -50
  82. data/test/unit/svnx/revision/argument_test.rb +0 -167
  83. data/test/unit/svnx/revision/range_test.rb +0 -48
  84. data/test/unit/svnx/status/entries_test.rb +0 -20
  85. data/test/unit/system/command/cachefile_test.rb +0 -52
  86. data/test/unit/system/command/caching_test.rb +0 -92
  87. data/test/unit/system/command/line_test.rb +0 -63
@@ -1,55 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'tc'
5
- require 'svnx/cat/command'
6
-
7
- module SVNx::Cat
8
- class CommandTestCase < SVNx::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
@@ -1,22 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'svnx/info/tc'
5
- require 'svnx/info/entries'
6
-
7
- module SVNx::Info
8
- class EntriesTestCase < 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_create_from_xml
14
- entries = Entries.new :xmllines => Resources::PTP_INFO_SIXTH_TXT_DOG_RB_FIRST_TXT.readlines
15
- assert_equal 3, entries.size
16
-
17
- assert_info_entry_equals entries[0], 'dirzero/SixthFile.txt', 'file', '22'
18
- assert_info_entry_equals entries[1], 'src/ruby/dog.rb', 'file', '0'
19
- assert_info_entry_equals entries[2], 'FirstFile.txt', 'file', '22'
20
- end
21
- end
22
- end
@@ -1,15 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'minitest/autorun'
5
- require 'pathname'
6
- require 'svnx/log/args'
7
-
8
- class ArgsTest < Minitest::Test
9
- def test_equivalent_api
10
- a = SvnLog::Args.new limit: 1
11
- b = SVNx::LogCmdLine::LogCommandArgs.new limit: 1
12
-
13
- assert_equal b.limit, a.limit
14
- end
15
- end
@@ -1,87 +0,0 @@
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
-
44
- # empty message here:
45
- assert_entry_fields_not_nil entries[0]
46
- end
47
-
48
- def test_create_on_demand
49
- # although entries now supports xmllines as an Array, we need the size for the assertion:
50
- xmllines = Resources::PT_LOG_R19_5.readlines
51
-
52
- assert_equal 101, xmllines.size
53
-
54
- entries = Entries.new :xmllines => xmllines
55
-
56
- nentries = entries.size
57
- assert_equal 15, nentries
58
-
59
- # the power of Ruby, effortlessly getting instance variables ...
60
-
61
- real_entries = entries.instance_eval '@entries'
62
-
63
- # nothing processed yet ...
64
- assert_nil real_entries[12]
65
- assert_nil real_entries[13]
66
- assert_nil real_entries[14]
67
-
68
- assert_entry_fields_not_nil entries[13]
69
-
70
- # and these still aren't processed:
71
- assert_nil real_entries[12]
72
- assert_nil real_entries[14]
73
- end
74
-
75
- def test_each
76
- idx = 0
77
-
78
- entries = Entries.new :xmllines => Resources::PT_LOG_R19_5.readlines
79
- entries.each do |entry|
80
- if idx == 3
81
- assert_log_entry_16 entry
82
- end
83
- idx += 1
84
- end
85
- end
86
- end
87
- end
@@ -1,15 +0,0 @@
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
@@ -1,15 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'minitest/autorun'
5
- require 'pathname'
6
- require 'svnx/log/tc'
7
- require 'svnx/log/exec'
8
-
9
- class ExecTest < Minitest::Test
10
- def test_equivalent_api
11
- a = SvnLog::Exec
12
- b = SVNx::LogExec
13
- assert_equal b.superclass, a
14
- end
15
- end
@@ -1,14 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'minitest/autorun'
5
- require 'pathname'
6
- require 'svnx/log/line'
7
-
8
- class LineTest < Minitest::Test
9
- def test_equivalent_api
10
- a = SvnLog::CommandLine
11
- b = SVNx::LogCommand
12
- assert_equal b.superclass, a
13
- end
14
- end
@@ -1,50 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'tc'
5
- require 'svnx/log/entries'
6
- require 'svnx/revision/argument'
7
- require 'resources'
8
-
9
- module SVNx::Revision
10
- class ArgumentFactoryTestCase < SVNx::TestCase
11
- def setup
12
- xmllines = Resources::PT_LOG_R22_13_SECONDFILE_TXT.readlines
13
- @entries = SVNx::Log::Entries.new :xmllines => xmllines
14
- end
15
-
16
- def test_create
17
- arg = ArgumentFactory.new.create 14, entries: @entries
18
- assert_not_nil arg
19
- end
20
-
21
- def test_index_argument
22
- arg = ArgumentFactory.new.create 14, entries: @entries
23
- assert_kind_of IndexArgument, arg
24
- end
25
-
26
- def test_string_svn_words
27
- %w{ HEAD BASE COMMITTED PREV }.each do |word|
28
- arg = ArgumentFactory.new.create word, entries: @entries
29
- assert_kind_of StringArgument, arg
30
- end
31
- end
32
-
33
- def test_date
34
- arg = ArgumentFactory.new.create '{2012-12-10}', entries: @entries
35
- assert_kind_of StringArgument, arg
36
- end
37
-
38
- def test_relative_argument_fixnum
39
- arg = ArgumentFactory.new.create(-4, entries: @entries)
40
- assert_kind_of IndexArgument, arg
41
- assert_equal 15, arg.value
42
- end
43
-
44
- def test_relative_argument_string
45
- arg = ArgumentFactory.new.create('-4', entries: @entries)
46
- assert_kind_of IndexArgument, arg
47
- assert_equal 15, arg.value
48
- end
49
- end
50
- end
@@ -1,167 +0,0 @@
1
- #!/usr/bin/ruby -w
2
- # -*- ruby -*-
3
-
4
- require 'tc'
5
- require 'svnx/log/entries'
6
- require 'svnx/revision/argument'
7
- require 'resources'
8
-
9
- module SVNx::Revision
10
- class ArgumentTestCase < SVNx::TestCase
11
- def setup
12
- # This is the equivalent of "log" at revision 22, when this file was added
13
- # at revision 13. Using this instead of just "log" when regenerating the
14
- # resource files keeps the revisions from bouncing around.
15
- xmllines = Resources::PT_LOG_R22_13_SECONDFILE_TXT.readlines
16
- @entries = SVNx::Log::Entries.new :xmllines => xmllines
17
- end
18
-
19
- def new_argument value
20
- Argument.new value
21
- end
22
-
23
- def create_argument value
24
- Argument.create value, entries: @entries
25
- end
26
-
27
- def assert_argument_value exp_value, value
28
- arg = create_argument value
29
- assert_equal exp_value, arg.value
30
- end
31
-
32
- def assert_argument_value_raises value
33
- assert_raises(SVNx::Revision::RevisionError) do
34
- assert_argument_value nil, value
35
- end
36
- end
37
-
38
- def assert_argument_to_s exp_str, value
39
- arg = create_argument value
40
- assert_equal exp_str, arg.to_s
41
- end
42
-
43
- def assert_compare op, exp, xval, yval
44
- x = create_argument xval
45
- y = create_argument yval
46
- msg = "xval: #{xval}; yval: #{yval}"
47
- assert_equal exp, x.send(op, y), msg
48
- end
49
-
50
- def assert_argument_eq expeq, xval, yval
51
- # it's the emoticon programming language
52
- assert_compare :==, expeq, xval, yval
53
- end
54
-
55
- def assert_argument_gt expeq, xval, yval
56
- assert_compare :>, expeq, xval, yval
57
- end
58
-
59
- def test_new_and_create_same
60
- x = new_argument 13
61
- y = create_argument 13
62
- assert_equal y.value, x.value
63
- end
64
-
65
- def test_absolute_midrange
66
- assert_argument_value 19, 19
67
- end
68
-
69
- def test_absolute_most_recent
70
- assert_argument_value 22, 22
71
- end
72
-
73
- def test_absolute_least_recent
74
- assert_argument_value 13, 13
75
- end
76
-
77
- def test_absolute_midrange_as_string
78
- assert_argument_value 19, '19'
79
- end
80
-
81
- def test_absolute_most_recent_as_string
82
- assert_argument_value 22, '22'
83
- end
84
-
85
- def test_absolute_least_recent_as_string
86
- assert_argument_value 13, '13'
87
- end
88
-
89
- def test_svn_word
90
- %w{ HEAD BASE COMMITTED PREV }.each do |word|
91
- assert_argument_value word, word
92
- end
93
- end
94
-
95
- def test_negative_most_recent
96
- assert_argument_value 22, -1
97
- end
98
-
99
- def test_negative_second_most_recent
100
- assert_argument_value 20, -2
101
- end
102
-
103
- def test_negative_least_recent
104
- assert_argument_value 13, -5
105
- end
106
-
107
- def test_negative_too_far_back
108
- assert_argument_value_raises(-6)
109
- end
110
-
111
- def test_negative_most_recent_as_string
112
- assert_argument_value 22, '-1'
113
- end
114
-
115
- def test_negative_second_most_recent_as_string
116
- assert_argument_value 20, '-2'
117
- end
118
-
119
- def test_negative_least_recent_as_string
120
- assert_argument_value 13, '-5'
121
- end
122
-
123
- def test_negative_too_far_back_as_string
124
- assert_argument_value_raises '-6'
125
- end
126
-
127
- def test_positive_most_recent
128
- assert_argument_value 22, '+5'
129
- end
130
-
131
- def test_positive_second_most_recent
132
- assert_argument_value 20, '+4'
133
- end
134
-
135
- def test_positive_least_recent
136
- assert_argument_value 13, '+1'
137
- end
138
-
139
- def test_positive_too_far_forward
140
- assert_argument_value_raises '+6'
141
- end
142
-
143
- def xxxtest_range_svn_word_to_number
144
- assert_argument_value 'BASE:1', 'BASE:1'
145
- end
146
-
147
- def xxxtest_date
148
- assert_argument_to_s '1967-12-10', '1967-12-10'
149
- end
150
-
151
- def test_to_s
152
- assert_argument_to_s '5', '5'
153
- assert_argument_to_s 'HEAD', 'HEAD'
154
- end
155
-
156
- def test_eq
157
- assert_argument_eq true, '5', '5'
158
- assert_argument_eq false, '4', '5'
159
- assert_argument_eq false, '5', '4'
160
- end
161
-
162
- def test_gt
163
- assert_argument_gt true, '17', '16'
164
- assert_argument_gt false, '13', '14'
165
- end
166
- end
167
- end