http-2 0.11.0 → 0.12.0

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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -2
  3. data/lib/http/2/buffer.rb +6 -4
  4. data/lib/http/2/client.rb +5 -1
  5. data/lib/http/2/compressor.rb +42 -34
  6. data/lib/http/2/connection.rb +72 -86
  7. data/lib/http/2/emitter.rb +4 -1
  8. data/lib/http/2/error.rb +2 -0
  9. data/lib/http/2/flow_buffer.rb +8 -3
  10. data/lib/http/2/framer.rb +83 -94
  11. data/lib/http/2/huffman.rb +19 -17
  12. data/lib/http/2/server.rb +9 -7
  13. data/lib/http/2/stream.rb +48 -48
  14. data/lib/http/2/version.rb +3 -1
  15. data/lib/http/2.rb +2 -0
  16. metadata +7 -60
  17. data/.autotest +0 -20
  18. data/.coveralls.yml +0 -1
  19. data/.gitignore +0 -20
  20. data/.gitmodules +0 -3
  21. data/.rspec +0 -5
  22. data/.rubocop.yml +0 -93
  23. data/.rubocop_todo.yml +0 -131
  24. data/.travis.yml +0 -17
  25. data/Gemfile +0 -16
  26. data/Guardfile +0 -18
  27. data/Guardfile.h2spec +0 -12
  28. data/Rakefile +0 -49
  29. data/example/Gemfile +0 -3
  30. data/example/README.md +0 -44
  31. data/example/client.rb +0 -122
  32. data/example/helper.rb +0 -19
  33. data/example/keys/server.crt +0 -20
  34. data/example/keys/server.key +0 -27
  35. data/example/server.rb +0 -139
  36. data/example/upgrade_client.rb +0 -153
  37. data/example/upgrade_server.rb +0 -203
  38. data/http-2.gemspec +0 -22
  39. data/lib/tasks/generate_huffman_table.rb +0 -166
  40. data/spec/buffer_spec.rb +0 -28
  41. data/spec/client_spec.rb +0 -188
  42. data/spec/compressor_spec.rb +0 -666
  43. data/spec/connection_spec.rb +0 -681
  44. data/spec/emitter_spec.rb +0 -54
  45. data/spec/framer_spec.rb +0 -487
  46. data/spec/h2spec/h2spec.darwin +0 -0
  47. data/spec/h2spec/output/non_secure.txt +0 -317
  48. data/spec/helper.rb +0 -147
  49. data/spec/hpack_test_spec.rb +0 -84
  50. data/spec/huffman_spec.rb +0 -68
  51. data/spec/server_spec.rb +0 -52
  52. data/spec/stream_spec.rb +0 -878
  53. data/spec/support/deep_dup.rb +0 -55
  54. data/spec/support/duplicable.rb +0 -98
data/lib/http/2/stream.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module HTTP2
2
4
  # A single HTTP 2.0 connection can multiplex multiple streams in parallel:
3
5
  # multiple requests and responses can be in flight simultaneously and stream
@@ -49,11 +51,10 @@ module HTTP2
49
51
 
50
52
  # Stream priority as set by initiator.
51
53
  attr_reader :weight
52
- attr_reader :dependency
54
+ attr_reader :dependency, :remote_window
53
55
 
54
56
  # Size of current stream flow control window.
55
57
  attr_reader :local_window
56
- attr_reader :remote_window
57
58
  alias window local_window
58
59
 
59
60
  # Reason why connection was closed.
@@ -120,9 +121,7 @@ module HTTP2
120
121
  # An ALTSVC frame on a
121
122
  # stream other than stream 0 containing non-empty "Origin" information
122
123
  # is invalid and MUST be ignored.
123
- if !frame[:origin] || frame[:origin].empty?
124
- emit(frame[:type], frame)
125
- end
124
+ emit(frame[:type], frame) if !frame[:origin] || frame[:origin].empty?
126
125
  when :blocked
127
126
  emit(frame[:type], frame)
128
127
  end
@@ -170,7 +169,7 @@ module HTTP2
170
169
  end
171
170
 
172
171
  def promise(headers, end_headers: true, &block)
173
- fail ArgumentError, 'must provide callback' unless block_given?
172
+ raise ArgumentError, 'must provide callback' unless block_given?
174
173
 
175
174
  flags = end_headers ? [:end_headers] : []
176
175
  emit(:promise, self, headers, flags, &block)
@@ -243,6 +242,7 @@ module HTTP2
243
242
  def window_update(increment)
244
243
  # emit stream-level WINDOW_UPDATE unless stream is closed
245
244
  return if @state == :closed || @state == :remote_closed
245
+
246
246
  send(type: :window_update, increment: increment)
247
247
  end
248
248
 
@@ -345,18 +345,18 @@ module HTTP2
345
345
  # connection error (Section 5.4.1) of type PROTOCOL_ERROR.
346
346
  when :reserved_local
347
347
  @state = if sending
348
- case frame[:type]
349
- when :headers then event(:half_closed_remote)
350
- when :rst_stream then event(:local_rst)
351
- else stream_error
352
- end
353
- else
354
- case frame[:type]
355
- when :rst_stream then event(:remote_rst)
356
- when :priority, :window_update then @state
357
- else stream_error
358
- end
359
- end
348
+ case frame[:type]
349
+ when :headers then event(:half_closed_remote)
350
+ when :rst_stream then event(:local_rst)
351
+ else stream_error
352
+ end
353
+ else
354
+ case frame[:type]
355
+ when :rst_stream then event(:remote_rst)
356
+ when :priority, :window_update then @state
357
+ else stream_error
358
+ end
359
+ end
360
360
 
361
361
  # A stream in the "reserved (remote)" state has been reserved by a
362
362
  # remote peer.
@@ -374,18 +374,18 @@ module HTTP2
374
374
  # error (Section 5.4.1) of type PROTOCOL_ERROR.
375
375
  when :reserved_remote
376
376
  @state = if sending
377
- case frame[:type]
378
- when :rst_stream then event(:local_rst)
379
- when :priority, :window_update then @state
380
- else stream_error
381
- end
382
- else
383
- case frame[:type]
384
- when :headers then event(:half_closed_local)
385
- when :rst_stream then event(:remote_rst)
386
- else stream_error
387
- end
388
- end
377
+ case frame[:type]
378
+ when :rst_stream then event(:local_rst)
379
+ when :priority, :window_update then @state
380
+ else stream_error
381
+ end
382
+ else
383
+ case frame[:type]
384
+ when :headers then event(:half_closed_local)
385
+ when :rst_stream then event(:remote_rst)
386
+ else stream_error
387
+ end
388
+ end
389
389
 
390
390
  # A stream in the "open" state may be used by both peers to send
391
391
  # frames of any type. In this state, sending peers observe
@@ -523,26 +523,24 @@ module HTTP2
523
523
  when :closed
524
524
  if sending
525
525
  case frame[:type]
526
- when :rst_stream then # ignore
527
- when :priority then
526
+ when :rst_stream # ignore
527
+ when :priority
528
528
  process_priority(frame)
529
529
  else
530
- stream_error(:stream_closed) unless (frame[:type] == :rst_stream)
530
+ stream_error(:stream_closed) unless frame[:type] == :rst_stream
531
531
  end
532
+ elsif frame[:type] == :priority
533
+ process_priority(frame)
532
534
  else
533
- if frame[:type] == :priority
534
- process_priority(frame)
535
- else
536
- case @closed
537
- when :remote_rst, :remote_closed
538
- case frame[:type]
539
- when :rst_stream, :window_update # nop here
540
- else
541
- stream_error(:stream_closed)
542
- end
543
- when :local_rst, :local_closed
544
- frame[:ignore] = true if frame[:type] != :window_update
535
+ case @closed
536
+ when :remote_rst, :remote_closed
537
+ case frame[:type]
538
+ when :rst_stream, :window_update # nop here
539
+ else
540
+ stream_error(:stream_closed)
545
541
  end
542
+ when :local_rst, :local_closed
543
+ frame[:ignore] = true if frame[:type] != :window_update
546
544
  end
547
545
  end
548
546
  end
@@ -587,9 +585,9 @@ module HTTP2
587
585
  @dependency = frame[:stream_dependency]
588
586
  emit(
589
587
  :priority,
590
- weight: frame[:weight],
588
+ weight: frame[:weight],
591
589
  dependency: frame[:stream_dependency],
592
- exclusive: frame[:exclusive],
590
+ exclusive: frame[:exclusive]
593
591
  )
594
592
  # TODO: implement dependency tree housekeeping
595
593
  # Latest draft defines a fairly complex priority control.
@@ -601,6 +599,8 @@ module HTTP2
601
599
  def end_stream?(frame)
602
600
  case frame[:type]
603
601
  when :data, :headers, :continuation
602
+ return false unless frame[:flags]
603
+
604
604
  frame[:flags].include?(:end_stream)
605
605
  else false
606
606
  end
@@ -611,7 +611,7 @@ module HTTP2
611
611
  close(error) if @state != :closed
612
612
 
613
613
  klass = error.to_s.split('_').map(&:capitalize).join
614
- fail Error.const_get(klass), msg
614
+ raise Error.const_get(klass), msg
615
615
  end
616
616
  alias error stream_error
617
617
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module HTTP2
2
- VERSION = '0.11.0'.freeze
4
+ VERSION = '0.12.0'
3
5
  end
data/lib/http/2.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'http/2/version'
2
4
  require 'http/2/error'
3
5
  require 'http/2/emitter'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http-2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Grigorik
@@ -9,16 +9,16 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-01-06 00:00:00.000000000 Z
12
+ date: 2024-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: bundler
15
+ name: base64
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
- type: :development
21
+ type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
@@ -32,30 +32,8 @@ executables: []
32
32
  extensions: []
33
33
  extra_rdoc_files: []
34
34
  files:
35
- - ".autotest"
36
- - ".coveralls.yml"
37
- - ".gitignore"
38
- - ".gitmodules"
39
- - ".rspec"
40
- - ".rubocop.yml"
41
- - ".rubocop_todo.yml"
42
- - ".travis.yml"
43
- - Gemfile
44
- - Guardfile
45
- - Guardfile.h2spec
46
35
  - LICENSE
47
36
  - README.md
48
- - Rakefile
49
- - example/Gemfile
50
- - example/README.md
51
- - example/client.rb
52
- - example/helper.rb
53
- - example/keys/server.crt
54
- - example/keys/server.key
55
- - example/server.rb
56
- - example/upgrade_client.rb
57
- - example/upgrade_server.rb
58
- - http-2.gemspec
59
37
  - lib/http/2.rb
60
38
  - lib/http/2/buffer.rb
61
39
  - lib/http/2/client.rb
@@ -70,22 +48,6 @@ files:
70
48
  - lib/http/2/server.rb
71
49
  - lib/http/2/stream.rb
72
50
  - lib/http/2/version.rb
73
- - lib/tasks/generate_huffman_table.rb
74
- - spec/buffer_spec.rb
75
- - spec/client_spec.rb
76
- - spec/compressor_spec.rb
77
- - spec/connection_spec.rb
78
- - spec/emitter_spec.rb
79
- - spec/framer_spec.rb
80
- - spec/h2spec/h2spec.darwin
81
- - spec/h2spec/output/non_secure.txt
82
- - spec/helper.rb
83
- - spec/hpack_test_spec.rb
84
- - spec/huffman_spec.rb
85
- - spec/server_spec.rb
86
- - spec/stream_spec.rb
87
- - spec/support/deep_dup.rb
88
- - spec/support/duplicable.rb
89
51
  homepage: https://github.com/igrigorik/http-2
90
52
  licenses:
91
53
  - MIT
@@ -98,30 +60,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
98
60
  requirements:
99
61
  - - ">="
100
62
  - !ruby/object:Gem::Version
101
- version: 2.1.0
63
+ version: '2.5'
102
64
  required_rubygems_version: !ruby/object:Gem::Requirement
103
65
  requirements:
104
66
  - - ">="
105
67
  - !ruby/object:Gem::Version
106
68
  version: '0'
107
69
  requirements: []
108
- rubygems_version: 3.0.3
70
+ rubygems_version: 3.3.26
109
71
  signing_key:
110
72
  specification_version: 4
111
73
  summary: Pure-ruby HTTP 2.0 protocol implementation
112
- test_files:
113
- - spec/buffer_spec.rb
114
- - spec/client_spec.rb
115
- - spec/compressor_spec.rb
116
- - spec/connection_spec.rb
117
- - spec/emitter_spec.rb
118
- - spec/framer_spec.rb
119
- - spec/h2spec/h2spec.darwin
120
- - spec/h2spec/output/non_secure.txt
121
- - spec/helper.rb
122
- - spec/hpack_test_spec.rb
123
- - spec/huffman_spec.rb
124
- - spec/server_spec.rb
125
- - spec/stream_spec.rb
126
- - spec/support/deep_dup.rb
127
- - spec/support/duplicable.rb
74
+ test_files: []
data/.autotest DELETED
@@ -1,20 +0,0 @@
1
- require 'autotest/growl'
2
-
3
- Autotest.add_hook(:initialize) {|at|
4
- at.add_exception %r{^\.git|\.yardoc}
5
- at.add_exception %r{^./tmp}
6
- at.add_exception %r{coverage}
7
-
8
- at.clear_mappings
9
-
10
- at.add_mapping(%r%^spec/.*_spec\.rb$%) { |filename, _|
11
- filename
12
- }
13
- at.add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
14
- ["spec/#{m[1].split('/').last}_spec.rb"]
15
- }
16
- at.add_mapping(%r%^spec/(spec_helper|shared/.*)\.rb$%) {
17
- files_matching %r%^spec/.*_spec\.rb$%
18
- }
19
- nil
20
- }
data/.coveralls.yml DELETED
@@ -1 +0,0 @@
1
- service_name: travis-ci
data/.gitignore DELETED
@@ -1,20 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- .DS_Store
7
- .idea
8
- Gemfile.lock
9
- InstalledFiles
10
- _yardoc
11
- coverage
12
- doc/
13
- vendor/
14
- lib/bundler/man
15
- pkg
16
- rdoc
17
- spec/reports
18
- test/tmp
19
- test/version_tmp
20
- tmp
data/.gitmodules DELETED
@@ -1,3 +0,0 @@
1
- [submodule "spec/hpack-test-case"]
2
- path = spec/hpack-test-case
3
- url = https://github.com/http2jp/hpack-test-case
data/.rspec DELETED
@@ -1,5 +0,0 @@
1
- autotest
2
- --color
3
- --format documentation
4
- --order rand
5
- --warnings
data/.rubocop.yml DELETED
@@ -1,93 +0,0 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
- AllCops:
4
- TargetRubyVersion: 2.1
5
- DisplayCopNames: true
6
- Exclude:
7
- - 'bin/**'
8
- - 'vendor/**/*'
9
- - '**/huffman_statemachine.rb'
10
-
11
- Layout/IndentHeredoc:
12
- Exclude:
13
- - 'lib/tasks/generate_huffman_table.rb'
14
- - 'example/*'
15
-
16
- Metrics/LineLength:
17
- Max: 120
18
-
19
- Metrics/BlockLength:
20
- Max: 700
21
-
22
- Layout/EndAlignment:
23
- EnforcedStyleAlignWith: variable
24
-
25
- Layout/CaseIndentation:
26
- EnforcedStyle: end
27
-
28
- Layout/IndentHash:
29
- EnforcedStyle: consistent
30
-
31
- Style/TrailingCommaInArrayLiteral:
32
- EnforcedStyleForMultiline: comma
33
-
34
- Style/TrailingCommaInHashLiteral:
35
- EnforcedStyleForMultiline: comma
36
-
37
- Layout/SpaceAroundOperators:
38
- Enabled: false
39
-
40
- Layout/ExtraSpacing:
41
- Enabled: false
42
-
43
- Layout/EmptyLinesAroundExceptionHandlingKeywords:
44
- Enabled: false
45
-
46
- Naming/UncommunicativeMethodParamName:
47
- Enabled: false
48
-
49
- Style/SignalException:
50
- Enabled: false
51
-
52
- Style/FrozenStringLiteralComment:
53
- Enabled: false
54
-
55
- Style/ParallelAssignment:
56
- Enabled: false
57
-
58
- Style/ParenthesesAroundCondition:
59
- Enabled: false
60
-
61
- Style/IfInsideElse:
62
- Enabled: false
63
-
64
- Style/IfUnlessModifier:
65
- Enabled: false
66
-
67
- Style/MultilineIfModifier:
68
- Enabled: false
69
-
70
- Lint/EmptyWhen:
71
- Enabled: false
72
-
73
- Style/TrailingCommaInArguments:
74
- Enabled: false
75
-
76
- Style/TrailingUnderscoreVariable:
77
- Enabled: false
78
-
79
- Style/SymbolArray:
80
- Enabled: false
81
-
82
- Style/CommentedKeyword:
83
- Enabled: false
84
-
85
- Style/PercentLiteralDelimiters:
86
- Enabled: false
87
-
88
- Performance/TimesMap:
89
- Enabled: false
90
-
91
- Performance/RedundantBlockCall:
92
- Enabled: false
93
-
data/.rubocop_todo.yml DELETED
@@ -1,131 +0,0 @@
1
- # This configuration was generated by
2
- # `rubocop --auto-gen-config`
3
- # on 2016-06-09 10:57:54 -0400 using RuboCop version 0.40.0.
4
- # The point is for the user to remove these configuration records
5
- # one by one as the offenses are removed from the code base.
6
- # Note that changes in the inspected code, or installation of new
7
- # versions of RuboCop, may require this file to be generated again.
8
-
9
- # Offense count: 24
10
- Metrics/AbcSize:
11
- Max: 185
12
-
13
- # Offense count: 16
14
- Metrics/BlockNesting:
15
- Max: 5
16
-
17
- # Offense count: 5
18
- # Configuration parameters: CountComments.
19
- Metrics/ClassLength:
20
- Max: 325
21
-
22
- Metrics/ModuleLength:
23
- Max: 120
24
-
25
- # Offense count: 12
26
- Metrics/CyclomaticComplexity:
27
- Max: 60
28
-
29
- # Offense count: 9
30
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes.
31
- # URISchemes: http, https
32
- Metrics/LineLength:
33
- Max: 108
34
-
35
- # Offense count: 29
36
- # Configuration parameters: CountComments.
37
- Metrics/MethodLength:
38
- Max: 134
39
-
40
- # Offense count: 1
41
- # Configuration parameters: CountKeywordArgs.
42
- Metrics/ParameterLists:
43
- Max: 7
44
-
45
- # Offense count: 10
46
- Metrics/PerceivedComplexity:
47
- Max: 46
48
-
49
- # Offense count: 1
50
- # Cop supports --auto-correct.
51
- # Configuration parameters: MaxKeyValuePairs.
52
- Performance/RedundantMerge:
53
- Exclude:
54
- - 'lib/http/2/server.rb'
55
-
56
- # Offense count: 4
57
- Style/Documentation:
58
- Exclude:
59
- - 'spec/**/*'
60
- - 'test/**/*'
61
- - 'example/helper.rb'
62
- - 'example/upgrade_server.rb'
63
- - 'lib/tasks/generate_huffman_table.rb'
64
-
65
- # Offense count: 3
66
- # Cop supports --auto-correct.
67
- # Configuration parameters: EnforcedStyle.
68
- # SupportedStyles: braces, no_braces, context_dependent
69
- Style/BracesAroundHashParameters:
70
- Exclude:
71
- - 'spec/connection_spec.rb'
72
- - 'spec/server_spec.rb'
73
-
74
- # Offense count: 1
75
- # Cop supports --auto-correct.
76
- Style/EmptyCaseCondition:
77
- Exclude:
78
- - 'example/upgrade_server.rb'
79
-
80
- # Offense count: 1
81
- # Configuration parameters: MinBodyLength.
82
- Style/GuardClause:
83
- Exclude:
84
- - 'lib/http/2/connection.rb'
85
-
86
- # Offense count: 2
87
- # Cop supports --auto-correct.
88
- # Configuration parameters: SupportedStyles, IndentationWidth.
89
- # SupportedStyles: special_inside_parentheses, consistent, align_brackets
90
- Layout/IndentArray:
91
- EnforcedStyle: consistent
92
-
93
- # Offense count: 1
94
- # Cop supports --auto-correct.
95
- # Configuration parameters: EnforcedStyle, SupportedStyles.
96
- # SupportedStyles: symmetrical, new_line, same_line
97
- Layout/MultilineArrayBraceLayout:
98
- Exclude:
99
- - 'spec/compressor_spec.rb'
100
-
101
- # Offense count: 16
102
- # Cop supports --auto-correct.
103
- # Configuration parameters: EnforcedStyle, SupportedStyles.
104
- # SupportedStyles: symmetrical, new_line, same_line
105
- Layout/MultilineHashBraceLayout:
106
- Exclude:
107
- - 'spec/compressor_spec.rb'
108
-
109
- # Offense count: 1
110
- # Cop supports --auto-correct.
111
- Style/MutableConstant:
112
- Exclude:
113
- - 'example/upgrade_server.rb'
114
-
115
- # Offense count: 1
116
- # Cop supports --auto-correct.
117
- Style/RedundantSelf:
118
- Exclude:
119
- - 'lib/http/2/connection.rb'
120
-
121
- # Offense count: 1
122
- # Cop supports --auto-correct.
123
- Style/UnneededInterpolation:
124
- Exclude:
125
- - 'spec/compressor_spec.rb'
126
-
127
- # Offense count: 1
128
- # Cop supports --auto-correct.
129
- Style/ZeroLengthPredicate:
130
- Exclude:
131
- - 'lib/http/2/framer.rb'
data/.travis.yml DELETED
@@ -1,17 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- rvm:
4
- - 2.1
5
- - 2.2
6
- - 2.3
7
- - 2.4
8
- - 2.5
9
- - 2.6
10
- - 2.7
11
- - jruby-9.2.0.0 # latest stable
12
- - jruby-head
13
- - rbx-2
14
- matrix:
15
- allow_failures:
16
- - rvm: jruby-head
17
- - rvm: rbx-2
data/Gemfile DELETED
@@ -1,16 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'rake'
4
- gem 'yard'
5
-
6
- group :test do
7
- gem 'autotest-standalone'
8
- gem 'coveralls', require: false
9
- gem 'pry'
10
- gem 'pry-byebug', platform: :mri
11
- gem 'rspec', '~> 3.4.0'
12
- gem 'rspec-autotest'
13
- gem 'rubocop', '0.57.2'
14
- end
15
-
16
- gemspec
data/Guardfile DELETED
@@ -1,18 +0,0 @@
1
- guard :process, name: 'HTTP/2 Server', command: 'ruby example/server.rb', stop_signal: 'TERM' do
2
- watch(%r{^example/(.+)\.rb$})
3
- watch(%r{^lib/http/2/(.+)\.rb$})
4
-
5
- watch('Gemfile.lock')
6
- end
7
-
8
- def h2spec
9
- puts 'Starting H2 Spec'
10
- sleep 0.7
11
- system '~/go-workspace/bin/h2spec -p 8080 -o 1 -s 4.2'
12
- puts "\n"
13
- end
14
-
15
- guard :shell, name: 'H2 Spec' do
16
- watch(%r{^example/(.+)\.rb$}) { h2spec }
17
- watch(%r{^lib/http/2/(.+)\.rb$}) { h2spec }
18
- end
data/Guardfile.h2spec DELETED
@@ -1,12 +0,0 @@
1
- def h2spec
2
- puts "Starting H2 Spec"
3
- sleep 0.7
4
- system '~/go-workspace/bin/h2spec -p 8080 -o 1 -s 5.1'
5
- puts "\n"
6
- end
7
-
8
- guard :shell, name:'H2 Spec' do
9
- watch(%r{^example/(.+)\.rb$}) { h2spec }
10
- watch(%r{^lib/http/2/(.+)\.rb$}) { h2spec }
11
- end
12
-