prism_qa 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/gem/lib/prism_qa/exceptions.rb +1 -1
- data/gem/lib/prism_qa/filesystem.rb +1 -1
- data/gem/lib/prism_qa/image.rb +22 -6
- data/gem/lib/prism_qa/imageset.rb +13 -8
- data/gem/lib/prism_qa/report.rb +1 -1
- data/gem/lib/prism_qa/reportset.rb +1 -1
- data/gem/lib/prism_qa/spectrum.rb +4 -4
- data/gem/lib/prism_qa/version.rb +1 -1
- metadata +55 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 0fc3c503a5363f6fdab686018d957f2312f2b1172e2eb2287aa16c571d9a3fcf
|
4
|
+
data.tar.gz: e219b6610098b686c1db1029e8a0279ccf86353e12b5b5f8805638363dfcccda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05a3bdcbe63b248a9705dcd780378e1e35a53ce6f508cc6139d587ac01b49589a232ee65796d28ab6b0e8773713aefee5f1bf947070f1b9e33a9944a7c820b85
|
7
|
+
data.tar.gz: 10010fe3559c0d7cd16ddc69e1b6f89327d966d6e821a14a322954a11fdcf5ff547160bc9ff8fb36dd7fe6ad4e801b30dff81f16e26d54ffcf9d32408ae2bed1
|
@@ -7,7 +7,7 @@ module PrismQA
|
|
7
7
|
class IncompatibilityError < TypeError; end
|
8
8
|
|
9
9
|
# For reporting improper extension of the PrismQA base classes (developer error)
|
10
|
-
class ImplementationError <
|
10
|
+
class ImplementationError < RuntimeError; end
|
11
11
|
|
12
12
|
# For reporting assertions that fail at runtime (logic errors in extender's code)
|
13
13
|
class OperationalError < RuntimeError; end
|
@@ -14,7 +14,7 @@ def web_relative_path(web_root, base_document, child_element)
|
|
14
14
|
c = File.expand_path(child_element)
|
15
15
|
r = File.expand_path(web_root)
|
16
16
|
unless ancestor?(r, c)
|
17
|
-
|
17
|
+
raise PrismQA::OperationalError, "Child element '#{c}' is not an ancestor of the web root '#{r}'"
|
18
18
|
end
|
19
19
|
base = Pathname.new(File.dirname(File.expand_path(base_document)))
|
20
20
|
elem = Pathname.new c
|
data/gem/lib/prism_qa/image.rb
CHANGED
@@ -1,18 +1,34 @@
|
|
1
1
|
|
2
2
|
module PrismQA
|
3
3
|
|
4
|
-
# A simple container for image information
|
4
|
+
# A simple container for image information.
|
5
|
+
# Image objects represent a path on disk, with an additional
|
6
|
+
# ID field (for cross-referencing design and app images) and
|
7
|
+
# an optional user-friendly description
|
5
8
|
class Image
|
6
|
-
|
7
|
-
|
8
|
-
attr_accessor :
|
9
|
+
# The image's location on disk
|
10
|
+
# @return [String]
|
11
|
+
attr_accessor :path
|
12
|
+
|
13
|
+
# an application-specific unique identifier
|
14
|
+
# @return [String]
|
15
|
+
attr_accessor :id
|
16
|
+
|
17
|
+
# a friendly description
|
18
|
+
# @return [String]
|
19
|
+
attr_accessor :description
|
9
20
|
end
|
10
21
|
|
11
|
-
# Design images
|
22
|
+
# Design images extend Images by optionally specifying an attribute.
|
23
|
+
# This enables different design variants to be labeled, such as
|
24
|
+
# for a modified screen size.
|
12
25
|
class DesignImage < Image
|
26
|
+
# A design attribute of the image
|
27
|
+
# @return [String]
|
13
28
|
attr_accessor :attribute
|
14
29
|
end
|
15
30
|
|
16
|
-
# App images are
|
31
|
+
# App images are no different than the base class they use.
|
32
|
+
# THis class is essentially an alias for symmetry / clarity
|
17
33
|
class AppImage < Image; end
|
18
34
|
end
|
@@ -1,17 +1,20 @@
|
|
1
1
|
|
2
2
|
module PrismQA
|
3
3
|
|
4
|
-
#
|
4
|
+
# A container for sets of images, with basic sanity checking
|
5
5
|
class ImageSet
|
6
6
|
|
7
|
-
|
7
|
+
# The container for all the images in the set
|
8
|
+
# @return [Array] of PrismQA::Image objects
|
9
|
+
attr_reader :images
|
8
10
|
|
9
11
|
def initialize
|
10
12
|
@images = []
|
11
13
|
@cache_valid = false # cache invalidation is so easy
|
12
14
|
end
|
13
15
|
|
14
|
-
#
|
16
|
+
# Safely add images to the container
|
17
|
+
# @param [PrismQA::Image] The image to be added
|
15
18
|
def add(image)
|
16
19
|
allow image
|
17
20
|
# fix relative paths
|
@@ -22,6 +25,8 @@ module PrismQA
|
|
22
25
|
end
|
23
26
|
|
24
27
|
# Raise an error if the image is not appropriate for this type of set
|
28
|
+
# @param [PrismQA::Image] The image to be added
|
29
|
+
# @throws
|
25
30
|
def allow(_image)
|
26
31
|
puts " +++ If you're seeing this, #{self.class.name}.#{__method__} was not overridden"
|
27
32
|
end
|
@@ -33,11 +38,11 @@ module PrismQA
|
|
33
38
|
|
34
39
|
def allow(image)
|
35
40
|
# Ensure that image objects have an "attribute" field, among other things
|
36
|
-
|
41
|
+
raise IncompatibilityError, 'Tried to add a non- DesignImage object to a DesignImageSet' unless image.is_a? DesignImage
|
37
42
|
|
38
43
|
# no duplicates allowed
|
39
44
|
if @images.map { |i| [i.id, i.attribute] }.include? [image.id, image.attribute]
|
40
|
-
|
45
|
+
raise OperationalError, "Tried to add an image with duplicate ID '#{image.id}' and attribute '#{image.attribute}'"
|
41
46
|
end
|
42
47
|
end
|
43
48
|
|
@@ -73,7 +78,7 @@ module PrismQA
|
|
73
78
|
|
74
79
|
# if there is no attribute for this image, it should be pulled in
|
75
80
|
# ... unless there's an exact match elsewhere in the set.
|
76
|
-
next true if img.attribute.nil?
|
81
|
+
next true if img.attribute.nil? && !(@attributes_by_id[img.id.to_s].include? attribute)
|
77
82
|
|
78
83
|
false
|
79
84
|
end
|
@@ -89,11 +94,11 @@ module PrismQA
|
|
89
94
|
def allow(image)
|
90
95
|
# no duplicates
|
91
96
|
if @images.map(&:id).include? image.id
|
92
|
-
|
97
|
+
raise OperationalError, "Tried to add an image with duplicate ID '#{image.id}'"
|
93
98
|
end
|
94
99
|
|
95
100
|
# App image sets don't need to worry about specific fields, but we keep it clean and symmetric.
|
96
|
-
|
101
|
+
raise IncompatibilityError, 'Tried to add a DesignImage object to a non- DesignImageSet' if image.is_a? DesignImage
|
97
102
|
end
|
98
103
|
|
99
104
|
def cache_image_lookups
|
data/gem/lib/prism_qa/report.rb
CHANGED
@@ -54,7 +54,7 @@ module PrismQA
|
|
54
54
|
# raise an error if any problems are found
|
55
55
|
def validate_input
|
56
56
|
problems = test_input
|
57
|
-
|
57
|
+
raise OperationalError, "Found the following problems: #{problems}" unless problems.empty?
|
58
58
|
end
|
59
59
|
|
60
60
|
# render the report
|
@@ -15,7 +15,7 @@ module PrismQA
|
|
15
15
|
def allow_path(path)
|
16
16
|
unless @web_document_root.nil?
|
17
17
|
unless ancestor?(@web_document_root, path)
|
18
|
-
|
18
|
+
raise OperationalError, "Report #{path} is not an ancestor of the web root #{@web_document_root}"
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -40,11 +40,11 @@ module PrismQA
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def allow_image_set(image_set)
|
43
|
-
|
43
|
+
raise ImplementationError, "Got a nil DesignImageSet object; was #{self.class.name} properly extended?" if image_set.nil?
|
44
44
|
|
45
45
|
# Ensure that we are only looking at design images
|
46
46
|
unless image_set.is_a? DesignImageSet
|
47
|
-
|
47
|
+
raise IncompatibilityError, 'Tried to add a non- DesignImageSet object to DesignSpectrum'
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -53,10 +53,10 @@ module PrismQA
|
|
53
53
|
class AppSpectrum < Spectrum
|
54
54
|
|
55
55
|
def allow_image_set(image_set)
|
56
|
-
|
56
|
+
raise ImplementationError, "Got a nil DesignImageSet object; was #{self.class.name} properly extended?" if image_set.nil?
|
57
57
|
|
58
58
|
# Ensure that we are only looking at implementation images
|
59
|
-
|
59
|
+
raise IncompatibilityError, 'Tried to add a DesignImageSet object to AppSpectrum' if image_set.is_a? DesignImageSet
|
60
60
|
end
|
61
61
|
|
62
62
|
end
|
data/gem/lib/prism_qa/version.rb
CHANGED
metadata
CHANGED
@@ -1,148 +1,168 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prism_qa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Katz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
|
-
- -
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.3.6
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - ~>
|
27
|
+
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '1.3'
|
30
|
-
- -
|
30
|
+
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 1.3.6
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rake
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - ~>
|
37
|
+
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: '10.0'
|
40
40
|
type: :development
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - ~>
|
44
|
+
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '10.0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rubocop
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - ~>
|
51
|
+
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0.
|
54
|
-
- -
|
53
|
+
version: '0.37'
|
54
|
+
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.
|
56
|
+
version: 0.37.0
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- - ~>
|
61
|
+
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '0.
|
64
|
-
- -
|
63
|
+
version: '0.37'
|
64
|
+
- - ">="
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.
|
66
|
+
version: 0.37.0
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: rspec
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
|
-
- - ~>
|
71
|
+
- - "~>"
|
72
72
|
- !ruby/object:Gem::Version
|
73
73
|
version: '3.0'
|
74
74
|
type: :development
|
75
75
|
prerelease: false
|
76
76
|
version_requirements: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
|
-
- - ~>
|
78
|
+
- - "~>"
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '3.0'
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: simplecov
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
84
84
|
requirements:
|
85
|
-
- - ~>
|
85
|
+
- - "~>"
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
version: '0.10'
|
88
|
-
- -
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: 0.10.0
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - ~>
|
95
|
+
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0.10'
|
98
|
-
- -
|
98
|
+
- - ">="
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: 0.10.0
|
101
101
|
- !ruby/object:Gem::Dependency
|
102
102
|
name: simplecov-json
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- - ~>
|
105
|
+
- - "~>"
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0.2'
|
108
|
-
- -
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 0.2.0
|
111
111
|
type: :development
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - ~>
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0.2'
|
118
|
-
- -
|
118
|
+
- - ">="
|
119
119
|
- !ruby/object:Gem::Version
|
120
120
|
version: 0.2.0
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
name: yard
|
123
|
+
requirement: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - "~>"
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0.8'
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0.8'
|
131
|
+
type: :development
|
132
|
+
prerelease: false
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - "~>"
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0.8'
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0.8'
|
121
141
|
- !ruby/object:Gem::Dependency
|
122
142
|
name: markaby
|
123
143
|
requirement: !ruby/object:Gem::Requirement
|
124
144
|
requirements:
|
125
|
-
- - ~>
|
145
|
+
- - "~>"
|
126
146
|
- !ruby/object:Gem::Version
|
127
147
|
version: '0.8'
|
128
|
-
- -
|
148
|
+
- - ">="
|
129
149
|
- !ruby/object:Gem::Version
|
130
150
|
version: 0.8.0
|
131
151
|
type: :runtime
|
132
152
|
prerelease: false
|
133
153
|
version_requirements: !ruby/object:Gem::Requirement
|
134
154
|
requirements:
|
135
|
-
- - ~>
|
155
|
+
- - "~>"
|
136
156
|
- !ruby/object:Gem::Version
|
137
157
|
version: '0.8'
|
138
|
-
- -
|
158
|
+
- - ">="
|
139
159
|
- !ruby/object:Gem::Version
|
140
160
|
version: 0.8.0
|
141
161
|
description: Prism helps you split your apps and your design document into visible
|
142
162
|
components. Its purpose is to enable designers to be an effective part of a QA
|
143
163
|
/ Continuous Integration process.
|
144
164
|
email:
|
145
|
-
-
|
165
|
+
- ianfixes@gmail.com
|
146
166
|
executables: []
|
147
167
|
extensions: []
|
148
168
|
extra_rdoc_files: []
|
@@ -157,7 +177,7 @@ files:
|
|
157
177
|
- gem/lib/prism_qa/spectrum.rb
|
158
178
|
- gem/lib/prism_qa/target.rb
|
159
179
|
- gem/lib/prism_qa/version.rb
|
160
|
-
homepage: http://github.com/
|
180
|
+
homepage: http://github.com/ianfixes/prism_qa
|
161
181
|
licenses:
|
162
182
|
- Apache 2.0
|
163
183
|
metadata: {}
|
@@ -167,17 +187,17 @@ require_paths:
|
|
167
187
|
- gem/lib
|
168
188
|
required_ruby_version: !ruby/object:Gem::Requirement
|
169
189
|
requirements:
|
170
|
-
- -
|
190
|
+
- - ">="
|
171
191
|
- !ruby/object:Gem::Version
|
172
192
|
version: '0'
|
173
193
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
194
|
requirements:
|
175
|
-
- -
|
195
|
+
- - ">="
|
176
196
|
- !ruby/object:Gem::Version
|
177
197
|
version: '0'
|
178
198
|
requirements: []
|
179
199
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.4
|
200
|
+
rubygems_version: 2.7.4
|
181
201
|
signing_key:
|
182
202
|
specification_version: 4
|
183
203
|
summary: Design QA tool
|