bellite 0.0.8 → 1.4.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
-