bbc-a11y 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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: