cucumber-pro 0.0.7 → 0.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2f9c9dbcd22da3dd2ba2f4425bdedf75ad38e81
4
- data.tar.gz: 09b7f4082579620d02cd18ee40a69c478b954c75
3
+ metadata.gz: a57bcad6666fb5df2180cb02c2206bc18fe2bf99
4
+ data.tar.gz: 5957942d5725e1f253d222763e2e2493aaa69307
5
5
  SHA512:
6
- metadata.gz: 353dfdd453bed887ec481e1e612e6aaf778fdb5343520dcb7336f292c1c4e64cf1a79fc012c78fe067fba81824f25becbe6fcaa9bbde61ae3602527d4bcf05a7
7
- data.tar.gz: 39c8b407a6640993f972b1a04c2537a8b5f3e5488afde5040fee2e2249c88308bb3e4e4f6eedd2d275455a4b82ee0d9a5fb13c84b1a9e0e3d6bd775d7775c266
6
+ metadata.gz: 47a6059e95e4e5c381f33d74f2875785cfba2ca3a0cb47d77427b4fb8200cd6d33dcac1e9ab4dc83002eb676a418abdfb3b7a379172b64db0cbda4bf3dd8810a
7
+ data.tar.gz: c4efd4814be45731a516aeb7247584cab215696b6a280bfd2fa922641e9108f03bdf4bb30014452d8f7332b59c61d3d42e9a9fc3a636a91c0043d6c6d304b8ce
@@ -0,0 +1,153 @@
1
+ Metarepo is a service for storing and retrieving metadata about files in
2
+ a repository.
3
+
4
+ Metarepo is both a standalone server (for receiving and storing metadata via
5
+ a WebSocket connection) and a library (npm module) for querying stored metadata.
6
+
7
+ The typical use case is an application that displays files in a repository
8
+ such as Git or Subversion where there is additional information about files
9
+ that can't live in Git/Subversion. For example:
10
+
11
+ * Comments or discussions about a file
12
+ * Information about a line in a file
13
+
14
+ Metarepo stores this extra information (metadata) about files.
15
+ Each little piece of information has the following attributes:
16
+
17
+ * `url` (what repository is it)
18
+ * `rev` (what branch does the file live in)
19
+ * `rev` (what revision of the file is it)
20
+ * `group` (grouping metadata for the same url+rev) - typically a CI run id.
21
+ * `path` (where is the file)
22
+ * `location` (where in the file should the metadata be attached - currently a line number)
23
+ * `mime_type` (what kind of data)
24
+ * `json_body` (the metadata)
25
+
26
+ This is split up over 3 tables:
27
+
28
+ +-------+ +--------+ +-----------+
29
+ | repos +-----> | group +-----> | metadata |
30
+ +-------+ +--------+ +-----------+
31
+ | url | | branch | | path |
32
+ +-------+ | rev | | location |
33
+ | group | | mime_type |
34
+ +--------+ | json_body |
35
+ +-----------+
36
+
37
+
38
+ Here are some examples of metadata:
39
+
40
+ ## Ruby Stacktrace
41
+
42
+ mime_type: text/vnd.cucumber-pro.stacktrace.ruby+plain
43
+ json_body: { "text" : "some ruby stacktrace" }
44
+
45
+ ## Screenshot
46
+
47
+ mime_type: image/png
48
+ json_body: { "path" : "path/within/s3" }
49
+
50
+ See below about the protocol for storing binary attachments.
51
+
52
+ ## Test Case result (typically a Cucumber Scenario, but could also be from RSpec, JUnit etc)
53
+
54
+ mime_type: application/vnd.cucumber-pro.test-case-result+json
55
+ json_body: { "status" : "failed" }
56
+
57
+
58
+ ## Test Step result (Cucumber Step)
59
+
60
+ application/vnd.cucumber.test-step-result+json
61
+ json_body: { "status" : "failed" }
62
+
63
+ ## Discussion
64
+
65
+ mime_type: application/vnd.cucumber-pro.discussion-message+json
66
+ json_body: { "who": "matt", "message": "I like this" }
67
+
68
+ Metadata can be stored with WebSockets (for the standalone mode) and retrieved with method calls
69
+ (in the npm module mode).
70
+
71
+ # Hacking
72
+
73
+ ## Create the local databases
74
+
75
+ ```
76
+ createdb metarepo-test
77
+ createdb metarepo-development
78
+ createuser -s -r postgres
79
+ ```
80
+
81
+ Run the tests (this will automatically migrate the databases):
82
+
83
+ ```
84
+ npm test
85
+ ```
86
+
87
+ # Try it out
88
+
89
+ ## Fire up the server
90
+
91
+ ```
92
+ DEBUG="metarepo:*,omnirepo:*,svnlite:*" npm start
93
+ ```
94
+
95
+ ## Store some metadata over the WebSocket API
96
+
97
+ First, you need the `authToken` of a cpro user, which you will find in mongodb.
98
+
99
+ Connect a WebSocket
100
+
101
+ ```
102
+ ./node_modules/.bin/wscat --connect ws://localhost:5000/ws?token=authToken
103
+ ```
104
+
105
+ Or if you want to do it on Heroku:
106
+
107
+ ```
108
+ ./node_modules/.bin/wscat --no-check --connect wss://results.cucumber.pro/ws?token=authToken
109
+ ```
110
+
111
+ Initiate the session
112
+
113
+ ```json
114
+ { "repo_url": "memory://metarepo/test", "rev": "1", "branch": "master", "group": "run-1", "info": {} }
115
+ ```
116
+
117
+ Store some metadata
118
+
119
+ ```json
120
+ { "path": "hello/world.feature", "location": 2, "mime_type": "application/vnd.cucumber.test-case-result+json", "body": { "status": "passed" } }
121
+ { "path": "hello/world.feature", "location": 3, "mime_type": "application/vnd.cucumber.test-case-result+json", "body": { "status": "failed" } }
122
+ { "path": "hello/world.feature", "location": 4, "mime_type": "application/vnd.cucumber.test-case-result+json", "body": { "status": "pending" } }
123
+ ```
124
+
125
+ Query the database:
126
+
127
+ ```sql
128
+ SELECT json_body->>'status' AS status, count(json_body) FROM metadata GROUP BY json_body->>'status';
129
+ ```
130
+
131
+ The `PgStore.aggregateResult` method uses a similar query to report aggregate results.
132
+
133
+ ## Storing blobs
134
+
135
+ The protocol for storing metadata where the body is a blob (such as an image) is
136
+ to send two messages where the first one is a regular metadata JSON message
137
+ *without* the body field set.
138
+
139
+ When the `body` field is not set, metarepo expects the next message to be a *binary* message.
140
+ The body of the binary message will be stored in an external store (S3), and the metadata record
141
+ in the database will point to the path of the file in S3.
142
+
143
+ ## BUGS
144
+
145
+ 2) Not storing timezones
146
+
147
+ See http://www.craigkerstiens.com/2014/05/07/Postgres-datatypes-the-ones-youre-not-using/
148
+
149
+ ## Release process
150
+
151
+ npm version NEW_VERSION
152
+ npm publish
153
+ git push --tags
@@ -0,0 +1,19 @@
1
+ require 'rbconfig'
2
+ require 'etc'
3
+ require 'cucumber/platform'
4
+
5
+ module Cucumber
6
+ module Pro
7
+ class Info
8
+ def to_h
9
+ {
10
+ os: "#{RbConfig::CONFIG['host_os']} (#{RbConfig::CONFIG['host_cpu']})",
11
+ platform_version: "#{RbConfig::CONFIG['ruby_install_name']} #{RbConfig::CONFIG['ruby_version']}",
12
+ tool_version: "cucumber-ruby #{Cucumber::VERSION}}",
13
+ os_user: Etc.getlogin,
14
+ client_version: "cucumber-pro-ruby #{File.read(File.dirname(__FILE__) + '/version').strip}"
15
+ }
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
@@ -0,0 +1,11 @@
1
+ require 'cucumber/pro/info'
2
+
3
+ module Cucumber
4
+ module Pro
5
+ describe Info do
6
+ it "can create a meaningful Hash" do
7
+ expect(Info.new.to_h[:client_version]).to match(/^cucumber-pro-ruby/)
8
+ end
9
+ end
10
+ end
11
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-pro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Wynne
@@ -158,10 +158,13 @@ files:
158
158
  - features/support/fake_results_service.rb
159
159
  - features/support/world.rb
160
160
  - lib/cucumber/pro.rb
161
+ - lib/cucumber/pro/README.md
161
162
  - lib/cucumber/pro/formatter.rb
163
+ - lib/cucumber/pro/info.rb
162
164
  - lib/cucumber/pro/scm.rb
163
165
  - lib/cucumber/pro/version
164
166
  - lib/cucumber/pro/web_socket/session.rb
167
+ - spec/cucumber/pro/info_spec.rb
165
168
  - spec/cucumber/pro/scm/git_repo_spec.rb
166
169
  - spec/cucumber/pro/web_socket/worker_spec.rb
167
170
  - tmp/.gitkeep
@@ -189,7 +192,7 @@ rubyforge_project:
189
192
  rubygems_version: 2.0.14
190
193
  signing_key:
191
194
  specification_version: 4
192
- summary: cucumber-pro-0.0.7
195
+ summary: cucumber-pro-0.0.8
193
196
  test_files:
194
197
  - features/publish_results.feature
195
198
  - features/security.feature
@@ -198,6 +201,7 @@ test_files:
198
201
  - features/support/env.rb
199
202
  - features/support/fake_results_service.rb
200
203
  - features/support/world.rb
204
+ - spec/cucumber/pro/info_spec.rb
201
205
  - spec/cucumber/pro/scm/git_repo_spec.rb
202
206
  - spec/cucumber/pro/web_socket/worker_spec.rb
203
207
  has_rdoc: