diff options
| author | Justin Karneges | 2015-02-17 22:37:34 -0800 |
|---|---|---|
| committer | Mike McQuaid | 2015-02-25 22:06:41 +0000 |
| commit | 9cdecf80222f69a43f5c78fc9c58f8afef335119 (patch) | |
| tree | c975520586923a4aa79925c220a84ed2a2d67d1a /Library/Formula | |
| parent | dc66898c88252d851ccc079f1f6ba6ecbc9f5458 (diff) | |
| download | homebrew-9cdecf80222f69a43f5c78fc9c58f8afef335119.tar.bz2 | |
zurl 1.3.1 (new formula)
Closes #36923.
Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library/Formula')
| -rw-r--r-- | Library/Formula/zurl.rb | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Library/Formula/zurl.rb b/Library/Formula/zurl.rb new file mode 100644 index 000000000..b6947d7c1 --- /dev/null +++ b/Library/Formula/zurl.rb @@ -0,0 +1,94 @@ +class Zurl < Formula + homepage "https://github.com/fanout/zurl" + url "http://packages.fanout.io/source/zurl-1.3.1.tar.bz2" + sha1 "8a04ad092a4fd9b174a352b910c190466fc39eb9" + + depends_on "pkg-config" => :build + depends_on "curl" if MacOS.version < :lion + depends_on "qt" + depends_on "zeromq" + depends_on "qjson" + + resource "pyzmq" do + url "https://pypi.python.org/packages/source/p/pyzmq/pyzmq-14.5.0.tar.gz" + sha1 "1dced02ea8527b5870ffdbe835d096aca5c01d2a" + end + + def install + system "./configure", "--prefix=#{prefix}" + system "make" + system "make", "install" + end + + test do + conffile = testpath/"zurl.conf" + ipcfile = testpath/"zurl-req" + runfile = testpath/"test.py" + + resource("pyzmq").stage { system "python", *Language::Python.setup_install_args(testpath/"vendor") } + + conffile.write(<<-EOS.undent + [General] + in_req_spec=ipc://#{ipcfile} + defpolicy=allow + timeout=10 + EOS + ) + + runfile.write(<<-EOS.undent + import json + import threading + from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer + import zmq + class TestHandler(BaseHTTPRequestHandler): + def do_GET(self): + self.send_response(200) + self.end_headers() + self.wfile.write('test response\\n') + port = None + def server_worker(c): + global port + server = HTTPServer(('', 0), TestHandler) + port = server.server_address[1] + c.acquire() + c.notify() + c.release() + try: + server.serve_forever() + except: + server.server_close() + c = threading.Condition() + c.acquire() + server_thread = threading.Thread(target=server_worker, args=(c,)) + server_thread.daemon = True + server_thread.start() + c.wait() + c.release() + ctx = zmq.Context() + sock = ctx.socket(zmq.REQ) + sock.connect('ipc://#{ipcfile}') + req = {'id': '1', 'method': 'GET', 'uri': 'http://localhost:%d/test' % port} + sock.send('J' + json.dumps(req)) + poller = zmq.Poller() + poller.register(sock, zmq.POLLIN) + socks = dict(poller.poll(15000)) + assert(socks.get(sock) == zmq.POLLIN) + resp = json.loads(sock.recv()[1:]) + assert('type' not in resp) + assert(resp['body'] == 'test response\\n') + EOS + ) + + pid = fork do + exec "#{bin}/zurl", "--config=#{conffile}" + end + + begin + ENV["PYTHONPATH"] = testpath/"vendor/lib/python2.7/site-packages" + system "python", runfile + ensure + Process.kill("TERM", pid) + Process.wait(pid) + end + end +end |
