bellite 0.0.8 → 1.4.22

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ffcbbd4905c36a0a471e6217c512b0a9e3d7e877
4
+ data.tar.gz: a6dc6bc4a07fcc3e3d5f8d15b41e4d26b3ec7ade
5
+ SHA512:
6
+ metadata.gz: f5c636d0bd931f0697bd252ae687eaf9539e70bbe7a75ae97756d4f942487bb1746d731c592dbe6c0198969deabf2a1a24654f0111f544b017c62ad88b547f14
7
+ data.tar.gz: 7b7eb5553913bfcc15046c53ccd8b544bcca702dc99d485fb559d7588643cedcdde827d49512350fcd03ed2d2d57e03b8176fb0e4cb6bfa9e85a7f846a1bb202
data/MIT-LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2013, Bellite.io.
2
+ All rights reserved.
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in
12
+ all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+
data/bellite.gemspec CHANGED
@@ -3,10 +3,10 @@ require File.expand_path('../lib/bellite/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Shane Holloway"]
6
- gem.email = ["shane@techgame.net"]
7
- gem.description = "Bellite JSON-RPC Client library"
8
- gem.summary = "Implements connection to JSON-RPC server, calling remote methods and bindings to server events"
9
- gem.homepage = ""
6
+ gem.email = ["shane@bellite.io"]
7
+ gem.description = "Bellite JSON-RPC client library"
8
+ gem.summary = "Create desktop applications for Mac OSX (10.7 & 10.8) and Windows XP, 7 & 8 using modern web technology and Ruby (Python or Node.js or PHP or Java)."
9
+ gem.homepage = "https://github.com/bellite/bellite-ruby"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
12
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
14
14
  gem.name = "bellite"
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Bellite::VERSION
17
+ gem.license = 'MIT'
17
18
 
18
19
 
19
20
  gem.add_development_dependency "redcarpet", "~> 1.17"
data/lib/bellite.rb CHANGED
@@ -5,23 +5,6 @@ require 'socket'
5
5
  include Socket::Constants
6
6
 
7
7
 
8
- # Clone of {http://docs.python.org/2/library/functools.html#functools.partial Python functools.partial}
9
- # Creates a lambda with passed func and applies to it args. Args can be overriden when this lambda called.
10
- #
11
- #@param [Proc] func - func to be called with partial parameters
12
- #@param [Array] *args - default parameters which should be passed to func
13
- #@return [Proc] wrapper around func which passes *args or new args, passed to wrapper to func
14
- def partial(func, *args)
15
- return Proc.new do |*new_args|
16
- merged_params = args.clone()
17
- new_args.each_with_index {|v,k|
18
- merged_params[k] = new_args[k]
19
- }
20
- func.call(*merged_params)
21
- end
22
- end
23
-
24
-
25
8
  # Simple implementation of {http://docs.python.org/2/library/asyncore.html Python Asyncore}
26
9
  class Async
27
10
  #!attribute @@map
@@ -87,38 +70,19 @@ class Async
87
70
  #Running check while at least one socket in objects map is connected
88
71
  #@param [Float] timeout - timeout, passed to {.check}
89
72
  #@param [Hash] map, passed to {.check}
90
- def Async.loop(timeout,map=false)
91
- while Async.check(timeout, map) != false
92
- end
73
+ def Async.loop(timeout, map=false)
74
+ return Async.check(timeout, map) != false
93
75
  end
94
76
  end
95
77
 
96
78
 
97
79
 
98
- # Implements new pythonic {http://docs.python.org/2/library/stdtypes.html#dict.setdefault setdefault} method in ruby class Hash
99
- class Hash
100
- #(see {Hash})
101
- #@param key key of hash
102
- #@param value value of key in hash
103
- #@return [Value] if key in hash - hash value, attached to key; otherwise value, passed to setdefault
104
- def setdefault(key, value)
105
- if self[key] == nil
106
- self[key] = value
107
- end
108
- return self[key]
109
- end
110
- end
111
-
112
-
113
80
  # @abstract This is common interface of Bellite json-rpc API
114
81
  class BelliteJsonRpcApi
115
82
  #Constructor. Connects to server with cred credentials
116
83
  #@param [String] cred Credentials in format: 'host:port/token';
117
- def initialize(cred)
118
- cred = findCredentials(cred)
119
- if cred
120
- _connect(cred)
121
- end
84
+ def initialize(cred=nil)
85
+ connect(cred)
122
86
  end
123
87
 
124
88
  #Authenticates with server using token
@@ -223,10 +187,28 @@ class BelliteJsonRpcApi
223
187
  end
224
188
  end
225
189
 
226
- #@abstract Connecting to JSON-RPC server
190
+ # Return promise for ready event
191
+ def ready()
192
+ return @ready
193
+ end
194
+
195
+ # Connecting to JSON-RPC server
227
196
  #@param [String] host Host
228
197
  #@param [Fixnum] port Port
229
- def _connect(host, port)
198
+ def connect(cred=nil)
199
+ cred = findCredentials(cred)
200
+ if cred
201
+ f_ready = deferred()
202
+ @ready = f_ready.promise
203
+ _connect(cred, f_ready)
204
+ return @ready
205
+ end
206
+ end
207
+
208
+ #@abstract Connecting to JSON-RPC server
209
+ #@param [String] cred Credentials in format: 'host:port/token';
210
+ #@param [Future] f_ready Ready future instance
211
+ def _connect(cred, f_ready)
230
212
  raise NotImplementedError, "Subclass Responsibility"
231
213
  end
232
214
 
@@ -272,7 +254,9 @@ class BelliteJsonRpc < BelliteJsonRpcApi
272
254
  msgId = @_nextMsgId
273
255
  @_nextMsgId += 1
274
256
  res = _newResult(msgId)
275
- _sendJsonRpc(method, params, msgId)
257
+ if not _sendJsonRpc(method, params, msgId)
258
+ res.reject('Bellite client not connected')
259
+ end
276
260
  return res.promise
277
261
  end
278
262
 
@@ -312,13 +296,17 @@ class BelliteJsonRpc < BelliteJsonRpcApi
312
296
  #Puts send packets to STDOUT
313
297
  #@param [String] msg Same as for _sendMessage
314
298
  def logSend(msg)
315
- puts "send ==> " + JSON.fast_generate(msg)
299
+ if @logging
300
+ puts "send ==> " + JSON.fast_generate(msg)
301
+ end
316
302
  end
317
303
 
318
304
  #Puts received packets to STDOUT
319
305
  #@param [String] msg Same as for _sendMessage
320
306
  def logRecv(msg)
321
- puts "recv ==> " + JSON.fast_generate(msg)
307
+ if @logging
308
+ puts "recv ==> " + JSON.fast_generate(msg)
309
+ end
322
310
  end
323
311
 
324
312
  #Receives JSON-RPC response or call from JSON-RPC Server
@@ -360,16 +348,21 @@ class BelliteJsonRpc < BelliteJsonRpcApi
360
348
  end
361
349
 
362
350
  if msg.has_key?('error')
363
- tgt.reject.call(msg['error'])
351
+ tgt.reject(msg['error'])
352
+ elsif msg['result'][0]
353
+ tgt.reject(msg['result'])
364
354
  else
365
- tgt.resolve.call(msg['result'])
355
+ tgt.resolve(msg['result'])
366
356
  end
367
357
  end
368
358
 
369
359
  #Called on connect to remote JSON-RPC server.
370
360
  #@param [Hash] cred Server credentials: port, host, token and original `credentials` string
371
- def on_connect(cred)
372
- auth(cred['token'])._then.call(method(:on_auth_succeeded), method(:on_auth_failed))
361
+ #@param [Future] f_ready Ready future instance
362
+ def on_connect(cred, f_ready)
363
+ auth(cred['token']) \
364
+ .then(f_ready.method(:resolve), f_ready.method(:reject)) \
365
+ .then(method(:on_auth_succeeded), method(:on_auth_failed))
373
366
  end
374
367
 
375
368
  #Called when auth is successfully ended
@@ -391,20 +384,13 @@ class BelliteJsonRpc < BelliteJsonRpcApi
391
384
  #~ micro event implementation ~~~~~~~~~~~~~~~~~~~~~~~
392
385
  #
393
386
 
394
- #Adds ready event handler
395
- #@param [Proc] fnReady Event hanlder lambda
396
- #@return [Proc] Your event handler
397
- def ready(fnReady)
398
- return on('ready', fnReady)
399
- end
400
-
401
387
  #Adds any event handler
402
388
  #@param [String] key Event name like `ready`
403
389
  #@param [Proc] fn Function to bind on event
404
390
  #@return [Proc] Your event handler or bindEvent method to bind your handler later if you skip fn
405
391
  def on(key, fn=false)
406
392
  bindEvent = lambda do |fn|
407
- @_evtTypeMap.setdefault(key, []) << fn
393
+ (@_evtTypeMap[key]||=[]) << fn
408
394
  return fn
409
395
  end
410
396
  if not fn
@@ -439,21 +425,22 @@ end
439
425
  class Bellite < BelliteJsonRpc
440
426
 
441
427
 
442
- #!attribute [rw] timeout
443
- # Timeout of IO.select socket wait
444
- #@return [Float] Timeout value in seconds
428
+ #!attribute [rw] timeout
429
+ # Timeout of IO.select socket wait
430
+ #@return [Float] Timeout value in seconds
445
431
  attr_accessor :timeout
446
432
 
447
433
  #Connecting to JSON-RPC server
448
434
  # Calls on_connect if connection successfull
449
- #@param [Hash] cred Server credentials: port, host, token and original `credentials` string
450
- def _connect(cred)
435
+ #@param [String] cred Credentials in format: 'host:port/token';
436
+ #@param [Future] f_ready Ready future instance
437
+ def _connect(cred, f_ready)
451
438
  @timeout = 0.5
452
439
  @conn = TCPSocket.new cred['host'], cred['port']
453
440
  @buf = ""
454
441
 
455
442
  if @conn
456
- on_connect(cred)
443
+ on_connect(cred, f_ready)
457
444
  end
458
445
  end
459
446
 
@@ -578,22 +565,32 @@ class PromiseApi
578
565
  #Runs then-function call with same function for success and failure
579
566
  #@param [Proc] fn Function to handle success or failure
580
567
  #@return Result of then-function call
581
- def always(fn)
582
- return @_then.call(fn, fn)
568
+ def always(fn=nil, &blk)
569
+ return then_(fn||blk, fn||blk)
583
570
  end
584
571
 
585
572
  #Runs then-function in case of failure
586
573
  #@param [Proc] failure Failure handler
587
574
  #@return Result of then-function call
588
- def fail(failure)
589
- return @_then.call(false, failure)
575
+ def fail(failure, &blk)
576
+ return then_(false, failure||blk)
590
577
  end
591
578
 
592
579
  #Runs then-function in case of success
593
580
  #@param [Proc] success Success handler
594
581
  #@return Result of then-function call
595
- def done(success)
596
- return @_then.call(success,false)
582
+ def done(success, &blk)
583
+ return then_(success||blk,false)
584
+ end
585
+
586
+ def then(success=false, failure=false, &blk)
587
+ return then_(success, failure, &blk)
588
+ end
589
+ def then_(success=false, failure=false, &blk)
590
+ if (blk && (success || failure))
591
+ raise ArgumentError, "Ambiguous block argument"
592
+ end
593
+ return @_then.call(success,failure)
597
594
  end
598
595
  end
599
596
 
@@ -612,13 +609,6 @@ class Promise < PromiseApi
612
609
  def promise
613
610
  return self
614
611
  end
615
-
616
- #@!attribute [r] _then
617
- # Then-function
618
- #@return [Proc,lambda]
619
- def _then
620
- @_then
621
- end
622
612
  end
623
613
 
624
614
  #Implements Future
@@ -641,15 +631,15 @@ class Future < PromiseApi
641
631
  #@!attribute [r] resolve
642
632
  # Success-function
643
633
  #@return [Proc,lambda]
644
- def resolve
645
- @resolve
634
+ def resolve(res=true)
635
+ @resolve.call(res)
646
636
  end
647
637
 
648
638
  #@!attribute [r] reject
649
639
  # Failure-function
650
640
  #@return [Proc,lambda]
651
- def reject
652
- @reject
641
+ def reject(err)
642
+ @reject.call(err)
653
643
  end
654
644
 
655
645
  #@!attribute [r] promise
@@ -658,6 +648,10 @@ class Future < PromiseApi
658
648
  def promise
659
649
  @promise
660
650
  end
651
+
652
+ def then_(success=false, failure=false)
653
+ return @promise.then_(success, failure)
654
+ end
661
655
  end
662
656
 
663
657
  #Creates Future object for JSON-RPC Server response
@@ -681,11 +675,11 @@ def deferred()
681
675
 
682
676
  resolve = lambda do |result|
683
677
  while cb.size > 0
684
- success, failure = cb.pop()
678
+ success, failure = cb.shift()
685
679
  begin
686
680
  if success != false
687
- res = success.call(result)
688
- if res != false
681
+ change, res = success.call(result)
682
+ if change and res===nil
689
683
  result = res
690
684
  end
691
685
  end
@@ -695,23 +689,19 @@ def deferred()
695
689
  elsif cb.size = 0
696
690
  #excepthook
697
691
  end
698
- if res == false
699
- return reject.call(err)
700
- else
701
- return reject.call(res)
702
- end
692
+ return reject.call(res==nil ? err : res)
703
693
  end
704
694
  end
705
- answer = partial(resolve, result)
695
+ answer = lambda { resolve.call(result) }
706
696
  end
707
697
 
708
698
  reject = lambda do |error|
709
699
  while cb.size > 0
710
- failure = cb.pop()[1]
700
+ failure = cb.shift()[1]
711
701
  begin
712
702
  if failure != false
713
- res = failure.call(error)
714
- if res != false
703
+ change, res = failure.call(error)
704
+ if change and res===nil
715
705
  error = res
716
706
  end
717
707
  end
@@ -722,9 +712,10 @@ def deferred()
722
712
  end
723
713
  end
724
714
  end
725
- answer = partial(reject, error)
715
+ answer = lambda { reject.call(error) }
726
716
  end
727
717
 
728
718
  future = Future.new _then, resolve, reject
729
719
  return future
730
720
  end
721
+
@@ -1,3 +1,3 @@
1
1
  module Bellite
2
- VERSION = "0.0.8"
2
+ VERSION = "1.4.22"
3
3
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  require '../lib/bellite.rb'
4
4
  app = Bellite.new
5
- app.ready Proc.new {
6
- puts "READY"
5
+
6
+ app.ready.done lambda {
7
7
  app.ping
8
8
  app.version
9
9
  app.perform(142, "echo", {"name" => [nil, true, 42, "value"]})
@@ -12,8 +12,6 @@ app.ready Proc.new {
12
12
  app.unbindEvent(118, "*")
13
13
 
14
14
  app.on("testEvent", lambda { |app, eobj|
15
- puts "TEST EVENT"
16
- puts eobj
17
15
  if eobj['evt']
18
16
  app.perform(0, eobj['evt'])
19
17
  else
@@ -26,4 +24,5 @@ app.ready Proc.new {
26
24
  }
27
25
 
28
26
  app.timeout = false
29
- app.loop false
27
+ while app.loop()
28
+ end
@@ -1,6 +1,6 @@
1
1
  /*-*- coding: utf-8 -*- vim: set ts=4 sw=4 expandtab
2
2
  ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
3
- ##~ Copyright (C) 2002-2012 Bellite.io ##
3
+ ##~ Copyright (C) 2002-2013 Bellite.io ##
4
4
  ##~ ##
5
5
  ##~ This library is free software; you can redistribute it ##
6
6
  ##~ and/or modify it under the terms of the MIT style License as ##
@@ -176,9 +176,9 @@ function testBelliteJSONRPC(opt, doneCallback) {
176
176
  return Object.create(rpc).connect(api) }
177
177
  })
178
178
 
179
- function spawnClient(exec, args) {
179
+ function spawnClient(exec, args, cwd) {
180
180
  var cp = require('child_process')
181
- test.proc = cp.spawn(exec, args, {stdio:'inherit',cwd:__dirname})
181
+ test.proc = cp.spawn(exec, args, {stdio:'inherit',cwd:cwd||__dirname})
182
182
  test.proc.on('exit', function(code, signal) {
183
183
  log('process_exit', code, signal)
184
184
  test.proc = false;
@@ -251,7 +251,7 @@ exports.assetTestResults = assetTestResults;
251
251
  if (!module.parent) {
252
252
  // test the bellist JSON-RPC interactions
253
253
  testBelliteJSONRPC({
254
- debugLog: console.log,
254
+ //debugLog: console.log,
255
255
  timeout: 2000,
256
256
  //timeout: false,
257
257
  //port: 3099,
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bellite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
5
- prerelease:
4
+ version: 1.4.22
6
5
  platform: ruby
7
6
  authors:
8
7
  - Shane Holloway
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-04 00:00:00.000000000 Z
11
+ date: 2013-04-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: redcarpet
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: yard
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,22 +41,20 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: json
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
- description: Bellite JSON-RPC Client library
55
+ description: Bellite JSON-RPC client library
63
56
  email:
64
- - shane@techgame.net
57
+ - shane@bellite.io
65
58
  executables: []
66
59
  extensions: []
67
60
  extra_rdoc_files: []
@@ -69,7 +62,7 @@ files:
69
62
  - .gitignore
70
63
  - .yardopts
71
64
  - Gemfile
72
- - LICENSE
65
+ - MIT-LICENSE.txt
73
66
  - README.md
74
67
  - Rakefile
75
68
  - bellite.gemspec
@@ -77,34 +70,31 @@ files:
77
70
  - lib/bellite/version.rb
78
71
  - test/_doBelliteTest.rb
79
72
  - test/testClientJSONRPC.js
80
- - test/testClientJSONRPC.py
81
- homepage: ''
82
- licenses: []
73
+ homepage: https://github.com/bellite/bellite-ruby
74
+ licenses:
75
+ - MIT
76
+ metadata: {}
83
77
  post_install_message:
84
78
  rdoc_options: []
85
79
  require_paths:
86
80
  - lib
87
81
  required_ruby_version: !ruby/object:Gem::Requirement
88
- none: false
89
82
  requirements:
90
- - - ! '>='
83
+ - - '>='
91
84
  - !ruby/object:Gem::Version
92
85
  version: '0'
93
86
  required_rubygems_version: !ruby/object:Gem::Requirement
94
- none: false
95
87
  requirements:
96
- - - ! '>='
88
+ - - '>='
97
89
  - !ruby/object:Gem::Version
98
90
  version: '0'
99
91
  requirements: []
100
92
  rubyforge_project:
101
- rubygems_version: 1.8.24
93
+ rubygems_version: 2.0.0
102
94
  signing_key:
103
- specification_version: 3
104
- summary: Implements connection to JSON-RPC server, calling remote methods and bindings
105
- to server events
95
+ specification_version: 4
96
+ summary: Create desktop applications for Mac OSX (10.7 & 10.8) and Windows XP, 7 &
97
+ 8 using modern web technology and Ruby (Python or Node.js or PHP or Java).
106
98
  test_files:
107
99
  - test/_doBelliteTest.rb
108
100
  - test/testClientJSONRPC.js
109
- - test/testClientJSONRPC.py
110
- has_rdoc:
data/LICENSE DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2012, Bellite.io.
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env python
2
- # -*- coding: utf-8 -*- vim: set ts=4 sw=4 expandtab
3
- ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
4
- ##~ Copyright (C) 2002-2012 Bellite.io ##
5
- ##~ ##
6
- ##~ This library is free software; you can redistribute it ##
7
- ##~ and/or modify it under the terms of the MIT style License as ##
8
- ##~ found in the LICENSE file included with this distribution. ##
9
- ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~##
10
-
11
- import unittest, os, sys
12
-
13
- class TestJSONRPC(unittest.TestCase):
14
- def testBelliteClient(self):
15
- src = os.path.splitext(__file__)[0]+'.js'
16
- assert 0==os.system('node '+src)
17
-
18
-
19
- if __name__=='__main__':
20
- unittest.main()
21
-