ruby3mf 0.2.3 → 0.2.4
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/PO_102_03.3mf +0 -0
- data/bin/batch.rb +3 -5
- data/bin/cli.rb +1 -4
- data/foo/2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model +18747 -0
- data/foo/3D/3dmodel.model +40 -0
- data/foo/3D/_rels/3dmodel.model.rels +4 -0
- data/foo/Thumbnails/ffffa6c3-ba74-4bea-a4d0-167a4211134d.model +0 -0
- data/foo/[Content_Types].xml +7 -0
- data/foo/_rels/.rels +5 -0
- data/lib/ruby3mf/3MFcoreSpec_1.1.xsd.template +2 -2
- data/lib/ruby3mf/content_types.rb +42 -18
- data/lib/ruby3mf/document.rb +19 -33
- data/lib/ruby3mf/edge_list.rb +3 -4
- data/lib/ruby3mf/errors.yml +15 -9
- data/lib/ruby3mf/log3mf.rb +22 -31
- data/lib/ruby3mf/mesh_analyzer.rb +35 -32
- data/lib/ruby3mf/model3mf.rb +12 -33
- data/lib/ruby3mf/schema_files.rb +16 -2
- data/lib/ruby3mf/thumbnail3mf.rb +5 -0
- data/lib/ruby3mf/version.rb +1 -1
- data/lib/ruby3mf/xml_val.rb +1 -8
- data/suite.011917.out +237 -0
- metadata +10 -3
- data/bin/suite.rb +0 -50
data/lib/ruby3mf/model3mf.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
class Model3mf
|
2
2
|
|
3
|
+
MATERIAL_EXTENSION = 'http://schemas.microsoft.com/3dmanufacturing/material/2015/02'
|
4
|
+
SLICE_EXTENSION = 'http://schemas.microsoft.com/3dmanufacturing/slice/2015/07'
|
5
|
+
PRODUCTION_EXTENSION = 'http://schemas.microsoft.com/3dmanufacturing/production/2015/06'
|
6
|
+
|
3
7
|
VALID_EXTENSIONS = {
|
4
|
-
|
5
|
-
|
6
|
-
|
8
|
+
MATERIAL_EXTENSION => {},
|
9
|
+
SLICE_EXTENSION => {},
|
10
|
+
PRODUCTION_EXTENSION => {}
|
7
11
|
}.freeze
|
8
12
|
|
9
13
|
VALID_CORE_METADATA_NAMES = ['Title', 'Designer', 'Description', 'Copyright', 'LicenseTerms', 'Rating', 'CreationDate', 'ModificationDate'].freeze
|
@@ -58,22 +62,6 @@ class Model3mf
|
|
58
62
|
}
|
59
63
|
end
|
60
64
|
|
61
|
-
l.context "verifying 3D resource types" do |l|
|
62
|
-
model_types = model_doc.css("//model//resources//*[path]").collect { |t| t["contenttype"] }
|
63
|
-
|
64
|
-
#for each, ensure they exist in ContentTypes
|
65
|
-
all_types = document.types.map { |t, v| v }
|
66
|
-
|
67
|
-
bad_types = (model_types - all_types)
|
68
|
-
if bad_types.empty?
|
69
|
-
l.info "All model resource contenttypes are valid"
|
70
|
-
else
|
71
|
-
bad_types.each { |bt|
|
72
|
-
l.error :resource_contentype_invalid, bt: bt
|
73
|
-
}
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
65
|
l.context "verifying StartPart relationship points to the root 3D Model" do |l|
|
78
66
|
#Find the root 3D model which is pointed to by the start part
|
79
67
|
root_rels = document.relationships['_rels/.rels']
|
@@ -104,18 +92,9 @@ class Model3mf
|
|
104
92
|
end
|
105
93
|
|
106
94
|
l.context "verifying build items" do |l|
|
107
|
-
|
108
|
-
if build
|
109
|
-
|
110
|
-
|
111
|
-
resources = find_child(model_doc.root, "resources")
|
112
|
-
resources.children.each do |resource|
|
113
|
-
if resource.name == "object"
|
114
|
-
object_id = resource.attributes["id"].to_s()
|
115
|
-
l.error :build_with_other_item if resource.attributes["type"].to_s() == "other" and items.include?(object_id)
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
95
|
+
|
96
|
+
l.error :build_with_other_item if model_doc.css('build/item').map { |x| x.attributes["objectid"].value }.map{ |id| model_doc.search(".//xmlns:object[@id=$id][@type=$type]", nil, { :id => id, :type => 'other' } ) }.flatten.any?
|
97
|
+
|
119
98
|
end
|
120
99
|
|
121
100
|
l.context "checking metadata" do |l|
|
@@ -134,8 +113,8 @@ class Model3mf
|
|
134
113
|
end
|
135
114
|
end
|
136
115
|
end
|
137
|
-
|
138
|
-
MeshAnalyzer.validate(model_doc)
|
116
|
+
includes_material = model_doc.namespaces.values.include?(MATERIAL_EXTENSION)
|
117
|
+
MeshAnalyzer.validate(model_doc, includes_material)
|
139
118
|
end
|
140
119
|
model_doc
|
141
120
|
end
|
data/lib/ruby3mf/schema_files.rb
CHANGED
@@ -5,8 +5,22 @@ class SchemaFiles
|
|
5
5
|
SchemaTemplate = File.join(File.dirname(__FILE__), "3MFcoreSpec_1.1.xsd.template")
|
6
6
|
SchemaLocation = File.join(File.dirname(__FILE__), "xml.xsd")
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
class << self
|
9
|
+
|
10
|
+
def open(file)
|
11
|
+
@@template ||= File.open(file, "r") do |file|
|
12
|
+
file.read
|
13
|
+
end
|
14
|
+
|
15
|
+
yield(SchemaFiles.render)
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
def render
|
20
|
+
@@xsd_content ||= ERB.new(@@template).result( binding )
|
21
|
+
end
|
22
|
+
|
10
23
|
end
|
11
24
|
|
25
|
+
|
12
26
|
end
|
data/lib/ruby3mf/thumbnail3mf.rb
CHANGED
@@ -11,6 +11,11 @@ class Thumbnail3mf
|
|
11
11
|
|
12
12
|
img_colorspace = MiniMagick::Image.read(relationship_file.get_input_stream).colorspace
|
13
13
|
l.fatal_error :invalid_thumbnail_colorspace if img_colorspace.include? "CMYK"
|
14
|
+
|
15
|
+
if relationship_file.respond_to?(:name)
|
16
|
+
decl_type = doc.types.get_type(relationship_file.name)
|
17
|
+
l.error :thumbnail_image_type_mismatch if decl_type != img_type.to_s
|
18
|
+
end
|
14
19
|
end
|
15
20
|
end
|
16
21
|
end
|
data/lib/ruby3mf/version.rb
CHANGED
data/lib/ruby3mf/xml_val.rb
CHANGED
@@ -10,13 +10,6 @@ class XmlVal
|
|
10
10
|
doc
|
11
11
|
end
|
12
12
|
|
13
|
-
def self.open_schema_file(file)
|
14
|
-
File.open(file, "r") do |file|
|
15
|
-
template = file.read
|
16
|
-
yield(SchemaFiles.render(template))
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
13
|
def self.validate(file, document, schema_filename = nil)
|
21
14
|
Log3mf.context "validations" do |l|
|
22
15
|
l.error :has_xml_space_attribute if space_attribute_exists?(document)
|
@@ -27,7 +20,7 @@ class XmlVal
|
|
27
20
|
|
28
21
|
if schema_filename
|
29
22
|
Log3mf.context "validating core schema" do |l|
|
30
|
-
|
23
|
+
SchemaFiles.open(schema_filename) do |content|
|
31
24
|
xsd = Nokogiri::XML::Schema(content)
|
32
25
|
puts "the schema is NIL!" if xsd.nil?
|
33
26
|
core_schema_errors = xsd.validate(document)
|
data/suite.011917.out
ADDED
@@ -0,0 +1,237 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
Positive
|
4
|
+
...............
|
5
|
+
../3mf-test-suite/Positive/PC_304_01.3mf
|
6
|
+
{:context=>"zip/relationship elements//Metadata/core.prop", :severity=>:error, :message=>"Invalid relationship type 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties' specified in .rels relationship file. Parts in the 3D payload MUST use one of the appropriate relationship types to establish that relationship between two parts in the payload."}
|
7
|
+
.
|
8
|
+
../3mf-test-suite/Positive/PC_305_01.3mf
|
9
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/verifying 3D payload required resources/verifying 3D resource types", :severity=>:error, :message=>"Resource in model has invalid contenttype image/png"}
|
10
|
+
{:context=>"zip/relationship elements//3D/Textures/texture.png/Texture3mf", :severity=>:fatal_error, :message=>"Texture file must be valid image file"}
|
11
|
+
.............
|
12
|
+
../3mf-test-suite/Positive/PC_312_01.3mf
|
13
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/verifying resources", :severity=>:error, :message=>"resources must be unique within the model"}
|
14
|
+
.................................................................................
|
15
|
+
../3mf-test-suite/Positive/PM_909_02.3mf
|
16
|
+
{:context=>"zip/relationship elements//2D/337.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
17
|
+
.
|
18
|
+
../3mf-test-suite/Positive/PM_909_03.3mf
|
19
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/checking metadata", :severity=>:error, :message=>"Metadata without a namespace name must only contain allowed name values"}
|
20
|
+
.
|
21
|
+
../3mf-test-suite/Positive/PM_909_04.3mf
|
22
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
23
|
+
..
|
24
|
+
../3mf-test-suite/Positive/PO_101_01.3mf
|
25
|
+
{:context=>"zip/content types", :severity=>:error, :message=>"Required 3D model payload not found with provided Content Type model extension: .ModeL"}
|
26
|
+
.
|
27
|
+
../3mf-test-suite/Positive/PO_101_02.3mf
|
28
|
+
{:context=>"zip/relationship elements//2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
29
|
+
.
|
30
|
+
../3mf-test-suite/Positive/PO_101_03.3mf
|
31
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
32
|
+
.
|
33
|
+
../3mf-test-suite/Positive/PO_102_01.3mf
|
34
|
+
{:context=>"zip/content types/parse", :severity=>:error, :message=>"[Content_Types].xml is missing required ContentType \"application/vnd.ms-package.3dmanufacturing-3dmodel+xml\""}
|
35
|
+
{:context=>"zip/content types", :severity=>:error, :message=>"Required 3D model payload not found with provided Content Type model extension: ."}
|
36
|
+
{:context=>"zip/relationship elements//2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.moodel/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
37
|
+
.
|
38
|
+
../3mf-test-suite/Positive/PO_102_02.3mf
|
39
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
40
|
+
..
|
41
|
+
../3mf-test-suite/Positive/PO_103_01.3mf
|
42
|
+
{:context=>"zip/relationship elements//2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
43
|
+
.
|
44
|
+
../3mf-test-suite/Positive/PO_104_01.3mf
|
45
|
+
{:context=>"zip/relationship elements//2D/1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
46
|
+
.
|
47
|
+
../3mf-test-suite/Positive/PO_104_02.3mf
|
48
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
49
|
+
.
|
50
|
+
../3mf-test-suite/Positive/PO_104_03.3mf
|
51
|
+
{:context=>"zip/part names /2D/fdfd166f-4f4c-4259-bb96-01e4fb03\xC3\x86381.model", :severity=>:fatal_error, :message=>"This NEVER Happens! mdw 12Jan2017"}
|
52
|
+
.
|
53
|
+
../3mf-test-suite/Positive/PO_105_02.3mf
|
54
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
55
|
+
.
|
56
|
+
../3mf-test-suite/Positive/PO_105_03.3mf
|
57
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
58
|
+
..
|
59
|
+
../3mf-test-suite/Positive/PO_105_05.3mf
|
60
|
+
{:context=>"zip/relationship elements//2D/9e1cbf53-9bb1-48fb-aced-acbb9cbbe79f.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
61
|
+
..
|
62
|
+
../3mf-test-suite/Positive/PO_105_07.3mf
|
63
|
+
{:context=>"zip/relationship elements//2D/9e1cbf53-9bb1-48fb-aced-acbb9cbbe79f.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
64
|
+
.
|
65
|
+
../3mf-test-suite/Positive/PO_105_09.3mf
|
66
|
+
{:context=>"zip/relationship elements//2D/9e1cbf53-9bb1-48fb-aced-acbb9cbbe79f.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
67
|
+
...
|
68
|
+
../3mf-test-suite/Positive/PO_106_01.3mf
|
69
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
70
|
+
..
|
71
|
+
../3mf-test-suite/Positive/PO_107_01.3mf
|
72
|
+
{:context=>"zip/relationship elements//2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
73
|
+
.
|
74
|
+
../3mf-test-suite/Positive/PO_107_02.3mf
|
75
|
+
{:context=>"zip/relationship elements//2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
76
|
+
.
|
77
|
+
../3mf-test-suite/Positive/PO_108_01.3mf
|
78
|
+
{:context=>"zip/relationship elements//2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
79
|
+
.
|
80
|
+
../3mf-test-suite/Positive/PP_701_01.3mf
|
81
|
+
{:context=>"zip/relationship elements//2D/7b7c4f2f-3b64-49b9-a098-a978332e8d1a.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
82
|
+
.
|
83
|
+
../3mf-test-suite/Positive/PP_701_02.3mf
|
84
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
85
|
+
.
|
86
|
+
../3mf-test-suite/Positive/PP_701_04.3mf
|
87
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
88
|
+
.
|
89
|
+
../3mf-test-suite/Positive/PP_701_05.3mf
|
90
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
91
|
+
..
|
92
|
+
../3mf-test-suite/Positive/PP_701_07.3mf
|
93
|
+
{:context=>"zip/relationship elements//2D/d9d8d141-23ff-4cdc-8da1-66b33dd69757.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
94
|
+
.
|
95
|
+
../3mf-test-suite/Positive/PP_701_08.3mf
|
96
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
97
|
+
.
|
98
|
+
../3mf-test-suite/Positive/PP_701_09.3mf
|
99
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
100
|
+
.
|
101
|
+
../3mf-test-suite/Positive/PP_701_11.3mf
|
102
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
103
|
+
.
|
104
|
+
../3mf-test-suite/Positive/PP_701_12.3mf
|
105
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/verifying 3D payload required resources/verifying StartPart relationship points to the root 3D Model", :severity=>:fatal_error, :message=>"Invalid StartPart target '/3D/3dmodel.model'. The 3MF Document StartPart relationship MUST point to the 3D Model part that identifies the root of the 3D payload."}
|
106
|
+
.
|
107
|
+
../3mf-test-suite/Positive/PP_701_13.3mf
|
108
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
109
|
+
.
|
110
|
+
../3mf-test-suite/Positive/PP_701_14.3mf
|
111
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
112
|
+
...
|
113
|
+
../3mf-test-suite/Positive/PP_701_17.3mf
|
114
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
115
|
+
.
|
116
|
+
../3mf-test-suite/Positive/PP_701_18.3mf
|
117
|
+
{:context=>"zip/relationship elements//2D/0082f270-d84a-4646-8510-05bc3490bd6f.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
118
|
+
.
|
119
|
+
../3mf-test-suite/Positive/PP_701_19.3mf
|
120
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
121
|
+
.
|
122
|
+
../3mf-test-suite/Positive/PP_701_20.3mf
|
123
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
124
|
+
.
|
125
|
+
../3mf-test-suite/Positive/PP_701_21.3mf
|
126
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
127
|
+
..
|
128
|
+
../3mf-test-suite/Positive/PP_701_23.3mf
|
129
|
+
{:context=>"zip/relationship elements//2D/dbc5f09a-6bf4-4e9b-9b70-0e418111e81f.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
130
|
+
...
|
131
|
+
../3mf-test-suite/Positive/PP_701_26.3mf
|
132
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
133
|
+
.
|
134
|
+
../3mf-test-suite/Positive/PP_701_27.3mf
|
135
|
+
{:context=>"zip/relationship elements//2D/topref.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
136
|
+
.
|
137
|
+
../3mf-test-suite/Positive/PP_701_30.3mf
|
138
|
+
{:context=>"zip/relationship elements//2D/0c853b1f-388f-4bd0-a23e-45426e2aa769.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
139
|
+
..
|
140
|
+
../3mf-test-suite/Positive/PP_701_32.3mf
|
141
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/verifying 3D payload required resources/verifying StartPart relationship points to the root 3D Model", :severity=>:fatal_error, :message=>"Invalid StartPart target '/3D/3dmodel.model'. The 3MF Document StartPart relationship MUST point to the 3D Model part that identifies the root of the 3D payload."}
|
142
|
+
.
|
143
|
+
../3mf-test-suite/Positive/PP_703_01.3mf
|
144
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
145
|
+
.
|
146
|
+
../3mf-test-suite/Positive/PP_704_01.3mf
|
147
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
148
|
+
......
|
149
|
+
../3mf-test-suite/Positive/PS_502_03.3mf
|
150
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
151
|
+
.
|
152
|
+
../3mf-test-suite/Positive/PS_502_04.3mf
|
153
|
+
{:context=>"zip/relationship elements//2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
154
|
+
.
|
155
|
+
../3mf-test-suite/Positive/PS_502_05.3mf
|
156
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
157
|
+
.
|
158
|
+
../3mf-test-suite/Positive/PS_503_01.3mf
|
159
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
160
|
+
.
|
161
|
+
../3mf-test-suite/Positive/PS_503_02.3mf
|
162
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
163
|
+
...
|
164
|
+
../3mf-test-suite/Positive/PS_505_01.3mf
|
165
|
+
{:context=>"zip/relationship elements//2D/917d27a5-e210-4bd8-a430-0dacc3be6d95.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
166
|
+
.
|
167
|
+
../3mf-test-suite/Positive/PS_505_02.3mf
|
168
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
169
|
+
..
|
170
|
+
../3mf-test-suite/Positive/PS_506_01.3mf
|
171
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/verifying resources", :severity=>:error, :message=>"resources must be unique within the model"}
|
172
|
+
{:context=>"zip/relationship elements//2D/ad8bd6de-d9b5-446a-8fcd-e75a3bc63c8b.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
173
|
+
.....
|
174
|
+
../3mf-test-suite/Positive/PS_509_02.3mf
|
175
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
176
|
+
..
|
177
|
+
../3mf-test-suite/Positive/PS_509_04.3mf
|
178
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
179
|
+
..
|
180
|
+
../3mf-test-suite/Positive/PS_511_01.3mf
|
181
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
182
|
+
.
|
183
|
+
../3mf-test-suite/Positive/PS_511_02.3mf
|
184
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
185
|
+
.
|
186
|
+
../3mf-test-suite/Positive/PS_511_03.3mf
|
187
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
188
|
+
.
|
189
|
+
../3mf-test-suite/Positive/PS_511_04.3mf
|
190
|
+
{:context=>"zip/relationship elements//2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
191
|
+
...
|
192
|
+
../3mf-test-suite/Positive/PS_512_01.3mf
|
193
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
194
|
+
..
|
195
|
+
../3mf-test-suite/Positive/PS_513_02.3mf
|
196
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
197
|
+
.
|
198
|
+
../3mf-test-suite/Positive/PS_513_03.3mf
|
199
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
200
|
+
.
|
201
|
+
../3mf-test-suite/Positive/PS_514_01.3mf
|
202
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
203
|
+
..
|
204
|
+
../3mf-test-suite/Positive/PS_515_01.3mf
|
205
|
+
{:context=>"zip/relationship elements//2D/9e1cbf53-9bb1-48fb-aced-acbb9cbbe79f.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
206
|
+
.
|
207
|
+
../3mf-test-suite/Positive/PS_516_01.3mf
|
208
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/verifying 3D payload required resources/verifying StartPart relationship points to the root 3D Model", :severity=>:fatal_error, :message=>"Invalid StartPart target '/3D/3dmodel.model'. The 3MF Document StartPart relationship MUST point to the 3D Model part that identifies the root of the 3D payload."}
|
209
|
+
.
|
210
|
+
../3mf-test-suite/Positive/PS_516_02.3mf
|
211
|
+
{:context=>"zip/relationship elements//3D/3dmodel.model/parsing model/validations/validating core schema", :severity=>:fatal_error, :message=>"Model file invalid XML. Exception attribute use (unknown), attribute 'ref': The QName value '{http://www.w3.org/XML/1998/namespace}lang' does not resolve to a(n) attribute declaration."}
|
212
|
+
|
213
|
+
|
214
|
+
Negative
|
215
|
+
...............
|
216
|
+
../3mf-test-suite/Negative/NC_405_04.3mf - No Errors Found!
|
217
|
+
.....
|
218
|
+
../3mf-test-suite/Negative/NC_407_02.3mf - No Errors Found!
|
219
|
+
.......
|
220
|
+
../3mf-test-suite/Negative/NC_411_01.3mf - No Errors Found!
|
221
|
+
.....
|
222
|
+
../3mf-test-suite/Negative/NC_413_01.3mf - No Errors Found!
|
223
|
+
.................
|
224
|
+
../3mf-test-suite/Negative/NO_202_01.3mf - No Errors Found!
|
225
|
+
...
|
226
|
+
../3mf-test-suite/Negative/NO_205_01.3mf - No Errors Found!
|
227
|
+
.
|
228
|
+
../3mf-test-suite/Negative/NO_205_02.3mf - No Errors Found!
|
229
|
+
....
|
230
|
+
../3mf-test-suite/Negative/NP_801_01.3mf - No Errors Found!
|
231
|
+
...
|
232
|
+
../3mf-test-suite/Negative/NP_801_04.3mf - No Errors Found!
|
233
|
+
...
|
234
|
+
../3mf-test-suite/Negative/NP_801_07.3mf - No Errors Found!
|
235
|
+
.
|
236
|
+
../3mf-test-suite/Negative/NP_801_08.3mf - No Errors Found!
|
237
|
+
....................................
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby3mf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Whitmarsh, Jeff Porter, and William Hertling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -139,6 +139,7 @@ files:
|
|
139
139
|
- CODE_OF_CONDUCT.md
|
140
140
|
- Gemfile
|
141
141
|
- LICENSE.txt
|
142
|
+
- PO_102_03.3mf
|
142
143
|
- README.md
|
143
144
|
- Rakefile
|
144
145
|
- bin/batch.rb
|
@@ -146,8 +147,13 @@ files:
|
|
146
147
|
- bin/console
|
147
148
|
- bin/folder_test.sh
|
148
149
|
- bin/setup
|
149
|
-
- bin/suite.rb
|
150
150
|
- bin/suite_test.sh
|
151
|
+
- foo/2D/ffffa2c3-ba74-4bea-a4d0-167a4211134d.model
|
152
|
+
- foo/3D/3dmodel.model
|
153
|
+
- foo/3D/_rels/3dmodel.model.rels
|
154
|
+
- foo/Thumbnails/ffffa6c3-ba74-4bea-a4d0-167a4211134d.model
|
155
|
+
- foo/[Content_Types].xml
|
156
|
+
- foo/_rels/.rels
|
151
157
|
- lib/ruby3mf.rb
|
152
158
|
- lib/ruby3mf/3MFcoreSpec_1.1.xsd.template
|
153
159
|
- lib/ruby3mf/content_types.rb
|
@@ -166,6 +172,7 @@ files:
|
|
166
172
|
- lib/ruby3mf/xml.xsd
|
167
173
|
- lib/ruby3mf/xml_val.rb
|
168
174
|
- ruby3mf.gemspec
|
175
|
+
- suite.011917.out
|
169
176
|
homepage: https://github.com/IPGPTP/ruby3mf
|
170
177
|
licenses:
|
171
178
|
- MIT
|
data/bin/suite.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require_relative '../lib/ruby3mf'
|
4
|
-
|
5
|
-
# usage
|
6
|
-
# bin/suite.rb {path to 3mf-test-suite} optional
|
7
|
-
# assumes . is ~/src/ruby3mf and that ~/src/3mf-test-suite is path to suite repo files
|
8
|
-
|
9
|
-
$stdout.sync = true
|
10
|
-
|
11
|
-
good_files = Dir["#{ARGV[0] || '../3mf-test-suite'}/Positive/*.3mf"]
|
12
|
-
bad_files = Dir["#{ARGV[0] || '../3mf-test-suite'}/Negative/*.3mf"]
|
13
|
-
|
14
|
-
false_negatives = {}
|
15
|
-
true_negatives={}
|
16
|
-
false_positives = []
|
17
|
-
|
18
|
-
def val3mf(f)
|
19
|
-
Log3mf.reset_log
|
20
|
-
Document.read(f)
|
21
|
-
Log3mf.entries(:fatal_error, :error)
|
22
|
-
end
|
23
|
-
|
24
|
-
puts "\n\nPositive"
|
25
|
-
good_files.each do |file|
|
26
|
-
print "." # "Validating file: #{file}"
|
27
|
-
errors=val3mf(file)
|
28
|
-
|
29
|
-
if errors.size > 0
|
30
|
-
false_negatives[file]=errors
|
31
|
-
puts "\n#{file}"
|
32
|
-
errors.each do |ent|
|
33
|
-
h = {context: ent[0], severity: ent[1], message: ent[2]}
|
34
|
-
puts " #{h}"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
|
40
|
-
puts "\n\nNegative"
|
41
|
-
bad_files.each do |file|
|
42
|
-
print "." #puts "Validating file #{file}"
|
43
|
-
errors=val3mf(file)
|
44
|
-
if errors.size > 0
|
45
|
-
true_negatives[file] = errors
|
46
|
-
else
|
47
|
-
false_positives << file
|
48
|
-
puts "\n#{file} - No Errors Found!"
|
49
|
-
end
|
50
|
-
end
|