Guest User

Untitled

a guest
Nov 21st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #! /usr/bin/env ruby
  2.  
  3. $: << 'test'
  4. require 'bundler/setup'
  5. require 'socket'
  6.  
  7. module TestServer
  8. class << self
  9. SOCK = "test.sock".freeze
  10.  
  11. def client
  12. @client ||= UNIXSocket.new(SOCK)
  13. end
  14.  
  15. def server
  16. @server ||= UNIXServer.new(SOCK)
  17. end
  18.  
  19. def running?
  20. File.exists?(SOCK)
  21. end
  22.  
  23. def test(files)
  24. client.sendmsg files.join(' ')
  25. end
  26.  
  27. def start!
  28. `rm #{SOCK}` if running?
  29. puts "Initializing TestServer with pid #{$$}..."
  30. require 'test_helper'
  31. puts "Ready!"
  32. loop do
  33. conn = server.accept
  34. files, _ = conn.recvmsg
  35. pid = fork do
  36. puts "> Testing files: #{files}"
  37. files.split(' ').each { |f| load f }
  38. end
  39. Process.wait(pid)
  40. end
  41. ensure
  42. `rm #{SOCK}`
  43. end
  44. end
  45. end
  46.  
  47. queue = ARGV
  48. until queue.empty?
  49. case queue.shift
  50. when "--serve"
  51. TestServer.start!
  52. when "--test"
  53. TestServer.test(queue)
  54. queue = []
  55. end
  56. end
Add Comment
Please, Sign In to add comment