Class: Hobby::Devtools::RSpec

Inherits:
Object
  • Object
show all
Defined in:
lib/hobby/devtools/rspec.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ RSpec

Returns a new instance of RSpec.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/hobby/devtools/rspec.rb', line 15

def initialize &block
  @path = 'spec/http'
  instance_exec &block

  Dir["#{@path}/**/*.yml"].each do |file|
    test = Hobby::Test.from_file file, format: @format
    ::RSpec.describe(file).instance_exec test, @app do |test, app|
      before :each do |example|
        socket = "app.for.#{SecureRandom.uuid}.socket"
        @pid = fork do
          server = Puma::Server.new app.call
          server.add_unix_listener socket
          server.run
          sleep
        end

        sleep 0.01 until File.exist? socket

        @socket = socket
        @report = test[socket]
      end

      after(:each) {
        `kill -9 #{@pid}`
        `rm #{@socket}`
      }

      it 'works' do
        expect(@report).to be_ok
      end
    end
  end
end

Class Method Details

.describe(&block) ⇒ Object



11
12
13
# File 'lib/hobby/devtools/rspec.rb', line 11

def self.describe &block
  new &block
end

Instance Method Details

#app(&block) ⇒ Object



49
50
51
# File 'lib/hobby/devtools/rspec.rb', line 49

def app &block
  @app = block
end

#format(format) ⇒ Object



57
58
59
# File 'lib/hobby/devtools/rspec.rb', line 57

def format format
  @format = format
end

#path(path) ⇒ Object



53
54
55
# File 'lib/hobby/devtools/rspec.rb', line 53

def path path
  @path = path
end