xmlcodec 0.1.1 → 0.1.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.
data/README CHANGED
@@ -77,5 +77,5 @@ XMLCodec::XMLElement#partial_export.
77
77
 
78
78
 
79
79
  Author:
80
- Pedro C�rte-Real
81
- <pedrocr@gmail.com>
80
+ Pedro Côrte-Real
81
+ <pedro@pedrocr.net>
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  PKG_NAME = 'xmlcodec'
2
- PKG_VERSION = '0.1.1'
2
+ PKG_VERSION = '0.1.2'
3
3
 
4
4
  require 'rake'
5
5
  require 'rake/testtask'
@@ -25,13 +25,13 @@ RDOC_EXTRA_FILES = ['README']
25
25
  spec = Gem::Specification.new do |s|
26
26
  s.platform = Gem::Platform::RUBY
27
27
  s.summary = "Generic Importer/Exporter of XML formats"
28
+ s.homepage = "http://github.com/pedrocr/xmlcodec"
28
29
  s.name = PKG_NAME
29
30
  s.version = PKG_VERSION
30
31
  s.author = 'Pedro Côrte-Real'
31
- s.email = 'pedrocr@gmail.com'
32
+ s.email = 'pedro@pedrocr.net'
32
33
  s.requirements << 'none'
33
34
  s.require_path = 'lib'
34
- s.autorequire = 'rake'
35
35
  s.files = PKG_FILES
36
36
  s.has_rdoc = true
37
37
  s.rdoc_options = RDOC_OPTIONS
@@ -42,8 +42,6 @@ EOF
42
42
  end
43
43
 
44
44
  Rake::GemPackageTask.new(spec) do |pkg|
45
- pkg.need_zip = true
46
- pkg.need_tar = true
47
45
  end
48
46
 
49
47
  Rake::TestTask.new do |t|
@@ -1,107 +1,92 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
2
 
3
3
  class TestPartialExport < Test::Unit::TestCase
4
- def validate_well_formed(filename)
5
- assert(system("rxp", "-xs", filename))
6
- end
7
-
8
- def compare_xpath(value, filename, path)
9
- assert_equal(value.strip, XMLUtils::select_path(path, filename).strip)
10
- end
11
-
12
4
  def test_simple
13
- @filename = 'test_partial_export_simple.xml'
14
5
  value = "somevalue"
15
6
 
16
- file = File.open(filepath, "w")
17
- sel = SimpleElement.new(value)
18
- sel.partial_export(file)
19
- file.close
20
-
21
- validate_well_formed(filepath)
22
- compare_xpath(value, filepath, "/abc")
7
+ with_temp_file do |file|
8
+ sel = SimpleElement.new(value)
9
+ sel.partial_export(file)
10
+ end
11
+
12
+ validate_well_formed
13
+ compare_xpath(value, "/abc")
23
14
  end
24
15
 
25
16
  def test_double
26
17
  value = 'somevalue'
27
- @filename = 'test_partial_export_double.xml'
28
18
 
29
- file = File.open(filepath, "w")
30
- sel = SimpleElement.new(value)
31
- el = TestElement.new
32
- el.abc = sel
33
-
34
- sel.partial_export(file)
35
- el.end_partial_export(file)
36
- file.close
37
-
38
- validate_well_formed(filepath)
39
- compare_xpath(value, filepath, "/subel/abc")
19
+ with_temp_file do |file|
20
+ sel = SimpleElement.new(value)
21
+ el = TestElement.new
22
+ el.abc = sel
23
+
24
+ sel.partial_export(file)
25
+ el.end_partial_export(file)
26
+ end
27
+
28
+ validate_well_formed
29
+ compare_xpath(value, "/subel/abc")
40
30
  end
41
31
 
42
32
  def test_triple
43
33
  value = 'somevalue'
44
- @filename = 'test_partial_export_double.xml'
45
-
46
- file = File.open(filepath, "w")
47
- sel = SimpleElement.new(value)
48
- el1 = TestElement.new
49
- el2 = TestElement.new
50
- el1.subel = el2
51
- el2.abc = sel
52
34
 
53
- sel.partial_export(file)
54
- el1.end_partial_export(file)
55
- file.close
56
-
57
- validate_well_formed(filepath)
58
- compare_xpath(value, filepath, "/subel/subel/abc")
35
+ with_temp_file do |file|
36
+ sel = SimpleElement.new(value)
37
+ el1 = TestElement.new
38
+ el2 = TestElement.new
39
+ el1.subel = el2
40
+ el2.abc = sel
41
+
42
+ sel.partial_export(file)
43
+ el1.end_partial_export(file)
44
+ end
45
+
46
+ validate_well_formed
47
+ compare_xpath(value, "/subel/subel/abc")
59
48
  end
60
49
 
61
50
  def test_attr
62
51
  value = 'somevalue'
63
- @filename = 'test_partial_export_double.xml'
64
-
65
- file = File.open(filepath, "w")
66
- el = TestElement.new
67
- el.someattr = value
68
52
 
69
- el.partial_export(file)
70
- file.close
53
+ with_temp_file do |file|
54
+ el = TestElement.new
55
+ el.someattr = value
56
+
57
+ el.partial_export(file)
58
+ end
71
59
 
72
- compare_xpath(value, filepath, "/subel/@someattr")
60
+ compare_xpath(value, "/subel/@someattr")
73
61
  end
74
62
 
75
63
  def test_mult
76
64
  value1 = 'somevalue1'
77
65
  value2 = 'somevalue2'
78
- @filename = 'test_partial_export_mult.xml'
79
-
80
- file = File.open(filepath, "w")
81
- sel1 = SimpleElement.new(value1)
82
- sel2 = SimpleElement.new(value2)
83
-
84
- el = SubelMultElement.new
85
- el.abc << sel1
86
- sel1.partial_export(file)
87
-
88
- el.abc << sel2
89
- sel2.partial_export(file)
90
- el.end_partial_export(file)
91
-
92
- file.close
93
66
 
94
- validate_well_formed(filepath)
95
- compare_xpath(value1, filepath, "/mult/abc[1]")
96
- compare_xpath(value2, filepath, "/mult/abc[2]")
67
+ with_temp_file do |file|
68
+ sel1 = SimpleElement.new(value1)
69
+ sel2 = SimpleElement.new(value2)
70
+
71
+ el = SubelMultElement.new
72
+ el.abc << sel1
73
+ sel1.partial_export(file)
74
+
75
+ el.abc << sel2
76
+ sel2.partial_export(file)
77
+ el.end_partial_export(file)
78
+ end
79
+
80
+ validate_well_formed
81
+ compare_xpath(value1, "/mult/abc[1]")
82
+ compare_xpath(value2, "/mult/abc[2]")
97
83
  end
98
84
 
99
85
  def test_subelements
100
86
  value1 = 'somevalue1'
101
87
  value2 = 'somevalue2'
102
- @filename = 'test_partial_export_subelements.xml'
103
88
 
104
- file = File.open(filepath, "w")
89
+ with_temp_file do |file|
105
90
  sel1 = SimpleElement.new(value1)
106
91
  sel2 = SimpleElement.new(value2)
107
92
 
@@ -113,58 +98,53 @@ class TestPartialExport < Test::Unit::TestCase
113
98
  sel2.partial_export(file)
114
99
  el.end_partial_export(file)
115
100
 
116
- file.close
101
+ end
117
102
 
118
- validate_well_formed(filepath)
119
- compare_xpath(value1, filepath, "/subels/abc[1]")
120
- compare_xpath(value2, filepath, "/subels/abc[2]")
103
+ validate_well_formed
104
+ compare_xpath(value1, "/subels/abc[1]")
105
+ compare_xpath(value2, "/subels/abc[2]")
121
106
  end
122
107
 
123
108
  def test_subelements_multiple
124
109
  value1 = 'somevalue1'
125
110
  value2 = 'somevalue2'
126
- @filename = 'test_partial_export_subelements2.xml'
127
-
128
- file = File.open(filepath, "w")
129
- sel1 = SimpleElement.new(value1)
130
- sel2 = SimpleElement.new(value2)
131
-
132
- el = SubelElement.new
133
- el.subelements << sel1
134
- el.subelements << sel2
135
- el.partial_export(file)
136
-
137
- file.close
138
111
 
139
- validate_well_formed(filepath)
140
- compare_xpath(value1, filepath, "/subels/abc[1]")
141
- compare_xpath(value2, filepath, "/subels/abc[2]")
112
+ with_temp_file do |file|
113
+ sel1 = SimpleElement.new(value1)
114
+ sel2 = SimpleElement.new(value2)
115
+
116
+ el = SubelElement.new
117
+ el.subelements << sel1
118
+ el.subelements << sel2
119
+ el.partial_export(file)
120
+ end
121
+
122
+ validate_well_formed
123
+ compare_xpath(value1, "/subels/abc[1]")
124
+ compare_xpath(value2, "/subels/abc[2]")
142
125
  end
143
126
 
144
127
  def test_recursive
145
- @filename = 'test_partial_export_recursive.xml'
146
- file = File.open(filepath, "w")
147
-
148
128
  value = 'somevalue'
149
-
150
- rec1 = Recursive.new
151
- rec1.start_partial_export(file)
152
-
153
- rec2 = Recursive.new
154
- rec1.recursive << rec2
155
- rec2.start_partial_export(file)
156
-
157
- rec3 = Recursive.new
158
- rec2.recursive << rec3
159
- rec3.start_partial_export(file)
160
-
161
- sel = SimpleElement.new(value)
162
- sel.start_partial_export(file)
163
- rec3.abc = sel
164
-
165
- rec1.end_partial_export(file)
166
-
167
- file.close
168
- validate_well_formed(filepath)
129
+
130
+ with_temp_file do |file|
131
+ rec1 = Recursive.new
132
+ rec1.start_partial_export(file)
133
+
134
+ rec2 = Recursive.new
135
+ rec1.recursive << rec2
136
+ rec2.start_partial_export(file)
137
+
138
+ rec3 = Recursive.new
139
+ rec2.recursive << rec3
140
+ rec3.start_partial_export(file)
141
+
142
+ sel = SimpleElement.new(value)
143
+ sel.start_partial_export(file)
144
+ rec3.abc = sel
145
+
146
+ rec1.end_partial_export(file)
147
+ end
148
+ validate_well_formed
169
149
  end
170
150
  end
data/test/test_helper.rb CHANGED
@@ -5,7 +5,25 @@ require File.dirname(__FILE__) + '/simple_objects'
5
5
 
6
6
 
7
7
  class Test::Unit::TestCase
8
- def filepath
9
- File.join(Dir::tmpdir, @filename)
8
+ def with_temp_file
9
+ callname = Regexp.new("`(.*?)'").match(caller[0])[1]
10
+ @temp_path = File.join(Dir::tmpdir, callname+".xml")
11
+ File.open(@temp_path, "w") do |file|
12
+ yield file
13
+ end
10
14
  end
15
+
16
+ def validate_well_formed
17
+ filename = filename || @temp_path
18
+ assert(system("xmllint --version > /dev/null 2>&1"),
19
+ "xmllint utility not installed"+
20
+ "(on ubuntu/debian install package libxml2-utils)")
21
+ assert(system("xmllint #{filename} >/dev/null"),
22
+ "Validation failed for #{filename}")
23
+ end
24
+
25
+ def compare_xpath(value, path)
26
+ filename = filename || @temp_path
27
+ assert_equal(value.strip, XMLUtils::select_path(path, filename).strip)
28
+ end
11
29
  end
data/test/utils_test.rb CHANGED
@@ -16,29 +16,29 @@ class TestXMLUtils < Test::Unit::TestCase
16
16
 
17
17
  def test_get_xpath
18
18
  opts = {}
19
- assert_xpath_equal('abc', '//xpto', '<xpto>abc<xpto>')
19
+ assert_xpath_equal('abc', '//xpto', '<xpto>abc</xpto>')
20
20
 
21
- assert_xpath_equal('abc', '//xpto', '<xpto>abc<xpto2>foo</xpto2><xpto>')
21
+ assert_xpath_equal('abc', '//xpto', '<xpto>abc<xpto2>foo</xpto2></xpto>')
22
22
 
23
23
  opts[:with_attrs] = true
24
24
  opts[:recursive] = false
25
25
  opts[:multiple] = false
26
- assert_xpath_equal('attr1 abc', '//xpto', '<xpto attr1="attr1">abc<xpto2>foo</xpto2><xpto>', opts)
26
+ assert_xpath_equal('attr1 abc', '//xpto', '<xpto attr1="attr1">abc<xpto2>foo</xpto2></xpto>', opts)
27
27
 
28
28
  opts[:with_attrs] = false
29
29
  opts[:recursive] = true
30
30
  opts[:multiple] = false
31
- assert_xpath_equal('abc foo', '//xpto', '<xpto>abc<xpto2 attr1="attr1">foo</xpto2><xpto>', opts)
31
+ assert_xpath_equal('abc foo', '//xpto', '<xpto>abc<xpto2 attr1="attr1">foo</xpto2></xpto>', opts)
32
32
 
33
33
  opts[:with_attrs] = true
34
34
  opts[:recursive] = true
35
35
  opts[:multiple] = false
36
- assert_xpath_equal('abc attr1 foo', '//xpto', '<xpto>abc<xpto2 attr1="attr1">foo</xpto2><xpto>', opts)
36
+ assert_xpath_equal('abc attr1 foo', '//xpto', '<xpto>abc<xpto2 attr1="attr1">foo</xpto2></xpto>', opts)
37
37
 
38
38
  opts[:with_attrs] = false
39
39
  opts[:recursive] = false
40
40
  opts[:multiple] = true
41
- assert_xpath_equal('abc foo', '//xpto', '<xpto>abc<xpto attr1="attr1">foo</xpto><xpto>', opts)
41
+ assert_xpath_equal('abc foo', '//xpto', '<xpto>abc<xpto attr1="attr1">foo</xpto></xpto>', opts)
42
42
  end
43
43
 
44
44
  def assert_xpath_equal(result, path, xml, opts={})
metadata CHANGED
@@ -1,65 +1,88 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
3
- specification_version: 1
4
2
  name: xmlcodec
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.1.1
7
- date: 2006-09-12 00:00:00 +01:00
8
- summary: Generic Importer/Exporter of XML formats
9
- require_paths:
10
- - lib
11
- email: pedrocr@gmail.com
12
- homepage:
13
- rubyforge_project:
14
- description: A library that eases the creation of XML importers and exporters for ruby.
15
- autorequire: rake
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ hash: 31
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 2
10
+ version: 0.1.2
25
11
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
12
  authors:
30
13
  - "Pedro C\xC3\xB4rte-Real"
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-14 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: |
23
+ A library that eases the creation of XML importers and exporters for ruby.
24
+
25
+ email: pedro@pedrocr.net
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - README
31
32
  files:
32
- - test/multi_format_test.rb
33
+ - test/partial_export_test.rb
34
+ - test/subelements_test.rb
33
35
  - test/utils_test.rb
36
+ - test/test_helper.rb
37
+ - test/multi_format_test.rb
34
38
  - test/stream_parser_test.rb
35
39
  - test/element_test.rb
36
- - test/partial_export_test.rb
37
40
  - test/simple_objects.rb
38
41
  - test/stream_object_parser_test.rb
39
- - test/test_helper.rb
40
- - test/subelements_test.rb
41
- - lib/stream_parser.rb
42
- - lib/XMLUtils.rb
43
- - lib/subelements.rb
44
42
  - lib/element.rb
45
- - lib/stream_object_parser.rb
43
+ - lib/subelements.rb
44
+ - lib/XMLUtils.rb
46
45
  - lib/xmlcodec.rb
46
+ - lib/stream_object_parser.rb
47
+ - lib/stream_parser.rb
47
48
  - README
48
49
  - LICENSE
49
50
  - Rakefile
50
- test_files: []
51
+ has_rdoc: true
52
+ homepage: http://github.com/pedrocr/xmlcodec
53
+ licenses: []
51
54
 
55
+ post_install_message:
52
56
  rdoc_options:
53
57
  - -S
54
58
  - -w 2
55
59
  - -N
56
- extra_rdoc_files:
57
- - README
58
- executables: []
59
-
60
- extensions: []
61
-
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ hash: 3
68
+ segments:
69
+ - 0
70
+ version: "0"
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
62
80
  requirements:
63
81
  - none
64
- dependencies: []
82
+ rubyforge_project:
83
+ rubygems_version: 1.3.7
84
+ signing_key:
85
+ specification_version: 3
86
+ summary: Generic Importer/Exporter of XML formats
87
+ test_files: []
65
88