bbc-a11y 0.0.6 → 0.0.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02a747cee79f3519c0fc2124d6069462c8d3a567
4
- data.tar.gz: 2206a476f841791cb74013b54f9403c3a3da39b9
3
+ metadata.gz: 7c500e30582170fa192229eecaf43deaa0433188
4
+ data.tar.gz: b241d785a67dd287ee88237bcd7e8dd51693f86f
5
5
  SHA512:
6
- metadata.gz: c4945eae8117e5e223ac27d834d23196646f7e31b730d958fd5345d8d5928b16816ae828563304f9b9c7b6dbd7dd7aaced3fa3e1726104cc2026592f35684f43
7
- data.tar.gz: 5f45f2a0bcb880de8f87edbeee24fc99b60899ab092d26495457e20ff2a77b7a8fbfcdbe615ee993270b46a139e6a760adfa69cd994529be9ed375ed9a728744
6
+ metadata.gz: 2f408fbb3a4eee36ed69a9b63876738355c78504df3165da084e708597c4af3cb975df980a9dd7d8a8cb00a2dafeb8cd27aa92c614b4b04b4ac96526bb6087f6
7
+ data.tar.gz: c8aaec1516aa562b8dd35509ed92cc499e720fe72ab49c6641b7add0e35ea4e19f1dc22b21f0dd437fe6f095434ef385670934fd9a1bba426978398eee1f88e3
@@ -1,5 +1,5 @@
1
1
  Before do |test_case|
2
- if settings.scenarios_to_skip.any? { |name| test_case.name.match name }
2
+ if settings.skip_test_case?(test_case)
3
3
  skip_this_scenario "Configured to be skipped"
4
4
  end
5
5
  end
@@ -15,6 +15,7 @@ module BBC
15
15
  end
16
16
 
17
17
  def call
18
+ trap_interrupt
18
19
  CucumberRunner.new(settings, cucumber_args).call
19
20
  rescue MissingArgument => error
20
21
  stderr.puts "You missed an argument: #{error.message}"
@@ -33,6 +34,14 @@ module BBC
33
34
  args[args.find_index('--')+1..-1]
34
35
  end
35
36
 
37
+ def trap_interrupt
38
+ trap('INT') do
39
+ exit!(1) if Cucumber.wants_to_quit
40
+ Cucumber.wants_to_quit = true
41
+ STDERR.puts "\nExiting... Interrupt again to exit immediately."
42
+ end
43
+ end
44
+
36
45
  attr_reader :stdin, :stderr, :stdout, :args
37
46
  private :stdin, :stderr, :stdout, :args
38
47
 
@@ -21,30 +21,44 @@ module BBC
21
21
  :after_all_hooks,
22
22
  :pages
23
23
 
24
- def initialize
25
- @before_all_hooks = []
26
- @after_all_hooks = []
27
- @pages = []
24
+ def initialize(before_all_hooks = [], after_all_hooks = [], pages = [])
25
+ @before_all_hooks = before_all_hooks
26
+ @after_all_hooks = after_all_hooks
27
+ @pages = pages
28
28
  freeze
29
29
  end
30
+
31
+ def with_pages(new_pages)
32
+ self.class.new(before_all_hooks, after_all_hooks, new_pages)
33
+ end
30
34
  end
31
35
 
32
36
  class PageSettings
33
37
  attr_reader :url, :scenarios_to_skip, :world_extensions
34
38
 
35
- def initialize(url)
39
+ def initialize(url, scenarios_to_skip = [], world_extensions = [])
36
40
  @url = url
37
- @scenarios_to_skip = []
38
- @world_extensions = []
41
+ @scenarios_to_skip = scenarios_to_skip
42
+ @world_extensions = world_extensions
39
43
  freeze
40
44
  end
45
+
46
+ def skip_test_case?(test_case)
47
+ @scenarios_to_skip.any? { |pattern| pattern.match test_case.name }
48
+ end
49
+
50
+ def merge(other)
51
+ self.class.new(url, scenarios_to_skip + other.scenarios_to_skip, world_extensions + other.world_extensions)
52
+ end
41
53
  end
42
54
 
43
55
  class DSL
44
56
  attr_reader :settings
45
57
  def initialize(block)
46
58
  @settings = Settings.new
59
+ @general_page_settings = []
47
60
  instance_eval &block
61
+ @settings = settings.with_pages(apply_general_settings(settings.pages))
48
62
  end
49
63
 
50
64
  def before_all(&block)
@@ -58,6 +72,21 @@ module BBC
58
72
  def page(url, &block)
59
73
  settings.pages << PageDSL.new(url, block).settings
60
74
  end
75
+
76
+ def for_pages_matching(url, &block)
77
+ @general_page_settings << PageDSL.new(url, block).settings
78
+ end
79
+
80
+ private
81
+
82
+ def apply_general_settings(all_page_settings)
83
+ all_page_settings.map { |page_settings|
84
+ matching_general_settings = @general_page_settings.select { |general_page_settings| general_page_settings.url.match page_settings.url }
85
+ matching_general_settings.reduce(page_settings) { |page_settings, general_page_settings|
86
+ page_settings.merge(general_page_settings)
87
+ }
88
+ }
89
+ end
61
90
  end
62
91
 
63
92
  class PageDSL
@@ -1 +1 @@
1
- 0.0.6
1
+ 0.0.7
@@ -0,0 +1,62 @@
1
+ require 'bbc/a11y/configuration'
2
+
3
+ module BBC::A11y
4
+ describe Configuration do
5
+
6
+ before do
7
+ # reset configuration which is held in a class variable
8
+ BBC::A11y.instance_variable_set :@settings, nil
9
+ end
10
+
11
+ it "allows you to specify multiple pages" do
12
+ BBC::A11y.configure do
13
+ page "one.html"
14
+ page "two.html"
15
+ end
16
+
17
+ expect(BBC::A11y.configuration.pages.length).to eq 2
18
+ expect(BBC::A11y.configuration.pages[0].url).to eq "one.html"
19
+ expect(BBC::A11y.configuration.pages[1].url).to eq "two.html"
20
+ end
21
+
22
+ it "allows you to specify scenarios to be skipped for a given page" do
23
+ BBC::A11y.configure do
24
+ page "three.html" do
25
+ skip_scenario /^foo/
26
+ end
27
+ end
28
+
29
+ page_settings = BBC::A11y.configuration.pages[0]
30
+ test_case = double(name: "foo_page.html")
31
+ expect(page_settings.skip_test_case?(test_case)).to be_truthy
32
+ end
33
+
34
+ it "allows you to specify settings for all pages matching a given URL pattern" do
35
+ BBC::A11y.configure do
36
+ page "three.html" do
37
+ skip_scenario /^foo/
38
+ end
39
+ page "four.html"
40
+ page "five.html"
41
+
42
+ for_pages_matching /^f/ do
43
+ skip_scenario /^bar/
44
+ end
45
+
46
+ for_pages_matching /^five/ do
47
+ skip_scenario /^baz/
48
+ end
49
+ end
50
+
51
+ bar = double(name: "bar_page.html")
52
+ baz = double(name: "baz_page.html")
53
+ four_page_settings = BBC::A11y.configuration.pages[1]
54
+ expect(four_page_settings.skip_test_case?(bar)).to be_truthy
55
+ five_page_settings = BBC::A11y.configuration.pages[2]
56
+ expect(five_page_settings.skip_test_case?(bar)).to be_truthy
57
+ expect(five_page_settings.skip_test_case?(baz)).to be_truthy
58
+ end
59
+
60
+ end
61
+ end
62
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bbc-a11y
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Wynne
@@ -9,146 +9,146 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-12 00:00:00.000000000 Z
12
+ date: 2015-03-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cucumber
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
20
  version: 2.0.0.rc
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ~>
26
26
  - !ruby/object:Gem::Version
27
27
  version: 2.0.0.rc
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rspec
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ~>
33
33
  - !ruby/object:Gem::Version
34
34
  version: '3.0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ~>
40
40
  - !ruby/object:Gem::Version
41
41
  version: '3.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: capybara
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: poltergeist
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - '>='
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: w3c_validators
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - '>='
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - '>='
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: cld
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - '>='
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  type: :runtime
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'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: colorize
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - '>='
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ">="
109
+ - - '>='
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: aruba
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ">="
116
+ - - '>='
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ">="
123
+ - - '>='
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: pry
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ">="
130
+ - - '>='
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ">="
137
+ - - '>='
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: rake
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - ">="
144
+ - - '>='
145
145
  - !ruby/object:Gem::Version
146
146
  version: '0'
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - ">="
151
+ - - '>='
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  description: A tool for testing the compliance of web URLs against the BBC's accessibilty
@@ -159,7 +159,7 @@ executables:
159
159
  extensions: []
160
160
  extra_rdoc_files: []
161
161
  files:
162
- - ".rspec"
162
+ - .rspec
163
163
  - CONTRIBUTING.md
164
164
  - Gemfile
165
165
  - LICENSE
@@ -217,6 +217,7 @@ files:
217
217
  - lib/bbc/a11y/cucumber_support/per_page_checks.rb
218
218
  - lib/bbc/a11y/cucumber_support/w3c.rb
219
219
  - lib/bbc/a11y/version
220
+ - spec/bbc/a11y/configuration_spec.rb
220
221
  - spec/bbc/a11y/cucumber_support/heading_hierarchy_spec.rb
221
222
  - spec/bbc/a11y/cucumber_support/page_spec.rb
222
223
  homepage: https://cucumber.pro
@@ -225,25 +226,25 @@ licenses:
225
226
  metadata: {}
226
227
  post_install_message:
227
228
  rdoc_options:
228
- - "--charset=UTF-8"
229
+ - --charset=UTF-8
229
230
  require_paths:
230
231
  - lib
231
232
  required_ruby_version: !ruby/object:Gem::Requirement
232
233
  requirements:
233
- - - ">="
234
+ - - '>='
234
235
  - !ruby/object:Gem::Version
235
236
  version: 1.9.3
236
237
  required_rubygems_version: !ruby/object:Gem::Requirement
237
238
  requirements:
238
- - - ">="
239
+ - - '>='
239
240
  - !ruby/object:Gem::Version
240
241
  version: '0'
241
242
  requirements: []
242
243
  rubyforge_project:
243
- rubygems_version: 2.4.5
244
+ rubygems_version: 2.0.14
244
245
  signing_key:
245
246
  specification_version: 4
246
- summary: bbc-a11y-0.0.6
247
+ summary: bbc-a11y-0.0.7
247
248
  test_files:
248
249
  - features/01_core-purpose.md
249
250
  - features/02_validation.feature
@@ -274,5 +275,7 @@ test_files:
274
275
  - features/support/skipper.rb
275
276
  - features/support/world.rb
276
277
  - features/support/world_extender.rb
278
+ - spec/bbc/a11y/configuration_spec.rb
277
279
  - spec/bbc/a11y/cucumber_support/heading_hierarchy_spec.rb
278
280
  - spec/bbc/a11y/cucumber_support/page_spec.rb
281
+ has_rdoc: