csvlint 0.3.1 → 0.3.2
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/.travis.yml +1 -2
- data/csvlint.gemspec +1 -0
- data/features/cli.feature +26 -0
- data/features/step_definitions/cli_steps.rb +9 -1
- data/lib/csvlint/cli.rb +15 -3
- data/lib/csvlint/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YWY4NmZlNTBlYjBlZWU2MjY5NmEzNGUzNWI1ZTkzN2Y1MDcyZjQ0ZA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YTI3ODc0NWFlMzAxMzJkZTJiZjZkNjBkNmI3YjkxMDFiMTlhM2JjMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NTQwOGE2ZjdhMzg0OGJjYzFjNGQ2ZjFkMDQ0YTU1YjEzYmEyNzA4MzgyMjEw
|
10
|
+
ZmM4NGZjOWZkNWQ3YzVlNGI5ODlmMWY0Y2YwZWI4OTIwMDBiZWIxZDVlYzZh
|
11
|
+
Y2JhN2Q4MzY2ODQyYTBiMjBlZTU3OTEzZDU4NTZmOGU2ZWM3OGI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzhiOGUzYjEwYTc1YWJhMDQ2MGY2MTk5Zjk2NjI0ZjQzNzEwYTE4ZTk1NTZh
|
14
|
+
Mjc2MzcyZmJmZmNjN2ZmMDcwYWU1OTgzYTU0NDJiNGNjM2E3NDcwNWU1YTMy
|
15
|
+
YjNiNzNjYzA0ZDgxODQ2ZjMyMDgyM2IzYmQxODY5ZGIzYjE2NDA=
|
data/.travis.yml
CHANGED
@@ -27,8 +27,7 @@ after_success:
|
|
27
27
|
- '[ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && curl
|
28
28
|
-v -X POST -d ''{"ref":"refs/tags/''$GEM_VERSION''","sha":"''$TRAVIS_COMMIT''"}'' --header
|
29
29
|
"Content-Type:application/json" -u $GITHUB_USER:$GITHUB_PASSWORD "https://api.github.com/repos/$TRAVIS_REPO_SLUG/git/refs"'
|
30
|
-
-
|
31
|
-
- henry deploy
|
30
|
+
- bundle exec henry deploy
|
32
31
|
env:
|
33
32
|
global:
|
34
33
|
- secure: hM8Pv/EAZoB4fGGEUwKQQ/2+mgKbUac+PH2cwud25l2MJ64eoKEMZzfy4TF6+XMIzXhlWpsg4s51y6K3+W8pUyRAuwo2MsN5Iee7HnLz+LlYTiT0//iQdAmxQ0JlOyh8vd2SEFBcVfwpp/iZFIHAfbBO73ZDXhtGMEieMk025I0=
|
data/csvlint.gemspec
CHANGED
data/features/cli.feature
CHANGED
@@ -123,6 +123,32 @@ Feature: CSVlint CLI
|
|
123
123
|
And the output should contain "1. Id: min_length. Row: 2,2. 5"
|
124
124
|
And the output should contain "1. malformed_header. Row: 1. Bob,1234,bob@example.org"
|
125
125
|
|
126
|
+
Scenario: Schema errors with JSON
|
127
|
+
Given I have a CSV with the following content:
|
128
|
+
"""
|
129
|
+
"Bob","1234","bob@example.org"
|
130
|
+
"Alice","5","alice@example.com"
|
131
|
+
"""
|
132
|
+
And it is stored at the url "http://example.com/example1.csv"
|
133
|
+
And I have a schema with the following content:
|
134
|
+
"""
|
135
|
+
{
|
136
|
+
"fields": [
|
137
|
+
{ "name": "Name", "constraints": { "required": true } },
|
138
|
+
{ "name": "Id", "constraints": { "required": true, "minLength": 3 } },
|
139
|
+
{ "name": "Email", "constraints": { "required": true } }
|
140
|
+
]
|
141
|
+
}
|
142
|
+
"""
|
143
|
+
And the schema is stored at the url "http://example.com/schema.json"
|
144
|
+
When I run `csvlint http://example.com/example1.csv --schema http://example.com/schema.json --json`
|
145
|
+
Then the output should contain JSON
|
146
|
+
And the JSON should have a state of "invalid"
|
147
|
+
And the JSON should have 1 error
|
148
|
+
And error 1 should have the "type" "min_length"
|
149
|
+
And error 1 should have the "header" "Id"
|
150
|
+
And error 1 should have the constraint "min_length" "3"
|
151
|
+
|
126
152
|
Scenario: Invalid schema
|
127
153
|
Given I have a CSV with the following content:
|
128
154
|
"""
|
@@ -19,7 +19,7 @@ Then(/^the JSON should have a state of "(.*?)"$/) do |state|
|
|
19
19
|
expect(@json['validation']['state']).to eq(state)
|
20
20
|
end
|
21
21
|
|
22
|
-
Then(/^the JSON should have (\d+)
|
22
|
+
Then(/^the JSON should have (\d+) errors?$/) do |count|
|
23
23
|
@index = count.to_i - 1
|
24
24
|
expect(@json['validation']['errors'].count).to eq(count.to_i)
|
25
25
|
end
|
@@ -27,3 +27,11 @@ end
|
|
27
27
|
Then(/^that error should have the "(.*?)" "(.*?)"$/) do |k, v|
|
28
28
|
expect(@json['validation']['errors'][@index][k].to_s).to eq(v)
|
29
29
|
end
|
30
|
+
|
31
|
+
Then(/^error (\d+) should have the "(.*?)" "(.*?)"$/) do |index, k, v|
|
32
|
+
expect(@json['validation']['errors'][index.to_i - 1][k].to_s).to eq(v)
|
33
|
+
end
|
34
|
+
|
35
|
+
Then(/^error (\d+) should have the constraint "(.*?)" "(.*?)"$/) do |index, k, v|
|
36
|
+
expect(@json['validation']['errors'][index.to_i - 1]['constraints'][k].to_s).to eq(v)
|
37
|
+
end
|
data/lib/csvlint/cli.rb
CHANGED
@@ -4,6 +4,8 @@ require 'json'
|
|
4
4
|
require 'pp'
|
5
5
|
require 'thor'
|
6
6
|
|
7
|
+
require 'active_support/inflector'
|
8
|
+
|
7
9
|
module Csvlint
|
8
10
|
class Cli < Thor
|
9
11
|
|
@@ -93,7 +95,9 @@ module Csvlint
|
|
93
95
|
end
|
94
96
|
output_string = "#{index+1}. "
|
95
97
|
if error.column && @schema && @schema.class == Csvlint::Schema
|
96
|
-
|
98
|
+
if @schema.fields[error.column - 1] != nil
|
99
|
+
output_string += "#{@schema.fields[error.column - 1].name}: "
|
100
|
+
end
|
97
101
|
end
|
98
102
|
output_string += "#{error.type}"
|
99
103
|
output_string += ". #{location}" unless location.empty?
|
@@ -167,12 +171,20 @@ module Csvlint
|
|
167
171
|
end
|
168
172
|
|
169
173
|
def hashify(error)
|
170
|
-
{
|
174
|
+
h = {
|
171
175
|
type: error.type,
|
172
176
|
category: error.category,
|
173
177
|
row: error.row,
|
174
|
-
col: error.column
|
178
|
+
col: error.column
|
175
179
|
}
|
180
|
+
|
181
|
+
if error.column && @schema && @schema.class == Csvlint::Schema && @schema.fields[error.column - 1] != nil
|
182
|
+
field = @schema.fields[error.column - 1]
|
183
|
+
h[:header] = field.name
|
184
|
+
h[:constraints] = Hash[field.constraints.map {|k,v| [k.underscore, v] }]
|
185
|
+
end
|
186
|
+
|
187
|
+
h
|
176
188
|
end
|
177
189
|
|
178
190
|
def report_lines
|
data/lib/csvlint/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csvlint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pezholio
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mime-types
|
@@ -360,6 +360,20 @@ dependencies:
|
|
360
360
|
- - ! '>='
|
361
361
|
- !ruby/object:Gem::Version
|
362
362
|
version: '0'
|
363
|
+
- !ruby/object:Gem::Dependency
|
364
|
+
name: henry
|
365
|
+
requirement: !ruby/object:Gem::Requirement
|
366
|
+
requirements:
|
367
|
+
- - ! '>='
|
368
|
+
- !ruby/object:Gem::Version
|
369
|
+
version: '0'
|
370
|
+
type: :development
|
371
|
+
prerelease: false
|
372
|
+
version_requirements: !ruby/object:Gem::Requirement
|
373
|
+
requirements:
|
374
|
+
- - ! '>='
|
375
|
+
- !ruby/object:Gem::Version
|
376
|
+
version: '0'
|
363
377
|
description: CSV Validator
|
364
378
|
email:
|
365
379
|
- pezholio@gmail.com
|