Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/env ruby
- $: << 'test'
- require 'bundler/setup'
- require 'socket'
- module TestServer
- class << self
- SOCK = "test.sock".freeze
- def client
- @client ||= UNIXSocket.new(SOCK)
- end
- def server
- @server ||= UNIXServer.new(SOCK)
- end
- def running?
- File.exists?(SOCK)
- end
- def test(files)
- client.sendmsg files.join(' ')
- end
- def start!
- `rm #{SOCK}` if running?
- puts "Initializing TestServer with pid #{$$}..."
- require 'test_helper'
- puts "Ready!"
- loop do
- conn = server.accept
- files, _ = conn.recvmsg
- pid = fork do
- puts "> Testing files: #{files}"
- files.split(' ').each { |f| load f }
- end
- Process.wait(pid)
- end
- ensure
- `rm #{SOCK}`
- end
- end
- end
- queue = ARGV
- until queue.empty?
- case queue.shift
- when "--serve"
- TestServer.start!
- when "--test"
- TestServer.test(queue)
- queue = []
- end
- end
Add Comment
Please, Sign In to add comment