mumukit-bridge 0.1.0 → 0.2.0
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 +8 -8
- data/lib/mumukit/bridge.rb +14 -16
- data/lib/mumukit/bridge/array.rb +5 -0
- data/lib/mumukit/bridge/boolean.rb +11 -0
- data/lib/mumukit/bridge/response_type.rb +65 -0
- data/lib/mumukit/bridge/version.rb +1 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ODBiZTk4NTliZjdjODllODNhZWZjZmJlMDI2Y2Y2MTFkNmY3YWVmNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NWZhOGVlN2ZlZWYwNDFiYTE4MWEwMGM0ZDdjMDI0YmE1NWEwYzVlNQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NTM5YjJmN2QwYjI0MTc5MzI1YThlNDc0MjNiOTBiOTc3NGU3NjhlN2JkZGMx
|
10
|
+
NzA3ZDhlYmRkM2IzZTEzZTViZGEwMjNjNjJhMWU1ZjllZTMyY2E4ZWI0NGFh
|
11
|
+
ZTVmNTMxOGM5NjNlMjdkYTYxMDA2ZGE5NmFjYWI4YjM4OWRmN2E=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODNkOGEyNzY2ZWEzODYxMmViMTRjZmVjN2E5MmNhODExM2Y3ZTRmZDY4ZTEz
|
14
|
+
OGM3MzYzZjI2ZWM3OGZhZDA5YmVmMjY1ZDMzMWE1MjNiYjg3NjY0YzUzZGI2
|
15
|
+
ZjZlNGRlNDJkMzlhMTVmZTUzNzVhOTZjMDdmNmExNmQ5ZTE5OTM=
|
data/lib/mumukit/bridge.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
require 'mumukit/bridge/version'
|
2
|
+
require 'mumukit/bridge/response_type'
|
3
|
+
require 'mumukit/bridge/array'
|
4
|
+
require 'mumukit/bridge/boolean'
|
5
|
+
|
2
6
|
require 'rest_client'
|
3
7
|
|
8
|
+
require 'active_support/core_ext/object'
|
9
|
+
|
4
10
|
module Mumukit
|
5
11
|
module Bridge
|
6
12
|
class Bridge
|
@@ -13,25 +19,17 @@ module Mumukit
|
|
13
19
|
# Expects a hash
|
14
20
|
# {test: string, extra: string, content: string, expectations: [{binding:string, inspection: string})]}
|
15
21
|
# Returns a hash
|
16
|
-
# {result: string,
|
22
|
+
# {result: string,
|
23
|
+
# test_results: [{title:string, status:symbol, result:string}],
|
24
|
+
# status: :passed|:failed|:errored|:aborted|:passed_with_warnings,
|
25
|
+
# expectation_results: [{binding:string, inspection:string, result:symbol}],
|
26
|
+
# feedback: string}
|
17
27
|
def run_tests!(request)
|
18
28
|
response = post_to_server(request)
|
19
|
-
|
20
|
-
|
21
|
-
status: response['exit'],
|
22
|
-
expectation_results: parse_expectation_results(response['expectationResults'] || []),
|
23
|
-
feedback: response['feedback'] || ''}
|
24
|
-
|
29
|
+
response_type = ResponseType.for_response response
|
30
|
+
response_type.parse response
|
25
31
|
rescue Exception => e
|
26
|
-
{result: e.message, status: :
|
27
|
-
end
|
28
|
-
|
29
|
-
def parse_expectation_results(results)
|
30
|
-
results.map do |it|
|
31
|
-
{binding: it['expectation']['binding'],
|
32
|
-
inspection: it['expectation']['inspection'],
|
33
|
-
result: it['result'] ? :passed : :failed}
|
34
|
-
end
|
32
|
+
{result: e.message, status: :errored}
|
35
33
|
end
|
36
34
|
|
37
35
|
def post_to_server(request)
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Mumukit::Bridge
|
2
|
+
module ResponseType
|
3
|
+
class Base
|
4
|
+
def parse(response)
|
5
|
+
expectation_results = parse_expectation_results(response['expectationResults'] || [])
|
6
|
+
feedback = response['feedback'] || ''
|
7
|
+
result = response['out'] || ''
|
8
|
+
|
9
|
+
build_hash(response).
|
10
|
+
merge(feedback: feedback, expectation_results: expectation_results, result: result).
|
11
|
+
update(status: expectation_results.fetch_mumuki_status(:result)) { |_, t, e| global_status(t, e) }
|
12
|
+
end
|
13
|
+
|
14
|
+
def global_status(test_status, expectation_status)
|
15
|
+
if test_status == :passed && expectation_status == :failed
|
16
|
+
:passed_with_warnings
|
17
|
+
else
|
18
|
+
test_status
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_expectation_results(results)
|
23
|
+
results.map do |it|
|
24
|
+
{binding: it['expectation']['binding'],
|
25
|
+
inspection: it['expectation']['inspection'],
|
26
|
+
result: it['result'].to_mumuki_status}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class Structured < Base
|
32
|
+
def build_hash(response)
|
33
|
+
test_results = parse_test_results(response['testResults'])
|
34
|
+
{response_type: :structured,
|
35
|
+
test_results: test_results,
|
36
|
+
status: test_results.fetch_mumuki_status(:status)}
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def parse_test_results(results)
|
42
|
+
results.map { |it| {
|
43
|
+
title: it['title'],
|
44
|
+
status: it['status'].to_sym,
|
45
|
+
result: it['result']} }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class Unstructured < Base
|
50
|
+
def build_hash(response)
|
51
|
+
{response_type: :unstructured,
|
52
|
+
test_results: [],
|
53
|
+
status: response['exit'].to_sym}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.structured_test_results?(response)
|
58
|
+
response['testResults'].present?
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.for_response(response)
|
62
|
+
structured_test_results?(response) ? Structured.new : Unstructured.new
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mumukit-bridge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Franco Leonardo Bulgarelli
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activesupport
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description:
|
70
84
|
email:
|
71
85
|
- flbulgarelli@yahoo.com.ar
|
@@ -74,6 +88,9 @@ extensions: []
|
|
74
88
|
extra_rdoc_files: []
|
75
89
|
files:
|
76
90
|
- lib/mumukit/bridge.rb
|
91
|
+
- lib/mumukit/bridge/array.rb
|
92
|
+
- lib/mumukit/bridge/boolean.rb
|
93
|
+
- lib/mumukit/bridge/response_type.rb
|
77
94
|
- lib/mumukit/bridge/version.rb
|
78
95
|
homepage: http://github.com/uqbar-project/mumukit-bridge
|
79
96
|
licenses:
|