csvlint 0.4.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +11 -0
  3. data/.github/workflows/push.yml +35 -0
  4. data/.gitignore +1 -0
  5. data/.ruby-version +1 -1
  6. data/.standard_todo.yml +43 -0
  7. data/CHANGELOG.md +38 -0
  8. data/Dockerfile +16 -0
  9. data/Gemfile +2 -2
  10. data/README.md +13 -10
  11. data/Rakefile +7 -7
  12. data/bin/create_schema +2 -2
  13. data/csvlint.gemspec +19 -22
  14. data/docker_notes_for_windows.txt +20 -0
  15. data/features/step_definitions/cli_steps.rb +11 -11
  16. data/features/step_definitions/information_steps.rb +4 -4
  17. data/features/step_definitions/parse_csv_steps.rb +11 -11
  18. data/features/step_definitions/schema_validation_steps.rb +10 -10
  19. data/features/step_definitions/sources_steps.rb +1 -1
  20. data/features/step_definitions/validation_errors_steps.rb +19 -19
  21. data/features/step_definitions/validation_info_steps.rb +9 -9
  22. data/features/step_definitions/validation_warnings_steps.rb +11 -11
  23. data/features/support/aruba.rb +10 -9
  24. data/features/support/earl_formatter.rb +39 -39
  25. data/features/support/env.rb +10 -11
  26. data/features/support/load_tests.rb +109 -105
  27. data/features/support/webmock.rb +3 -1
  28. data/lib/csvlint/cli.rb +136 -142
  29. data/lib/csvlint/csvw/column.rb +279 -280
  30. data/lib/csvlint/csvw/date_format.rb +90 -92
  31. data/lib/csvlint/csvw/metadata_error.rb +1 -3
  32. data/lib/csvlint/csvw/number_format.rb +40 -32
  33. data/lib/csvlint/csvw/property_checker.rb +714 -717
  34. data/lib/csvlint/csvw/table.rb +49 -52
  35. data/lib/csvlint/csvw/table_group.rb +24 -23
  36. data/lib/csvlint/error_collector.rb +2 -0
  37. data/lib/csvlint/error_message.rb +0 -1
  38. data/lib/csvlint/field.rb +153 -141
  39. data/lib/csvlint/schema.rb +35 -43
  40. data/lib/csvlint/validate.rb +173 -151
  41. data/lib/csvlint/version.rb +1 -1
  42. data/lib/csvlint.rb +22 -23
  43. data/spec/csvw/column_spec.rb +15 -16
  44. data/spec/csvw/date_format_spec.rb +5 -7
  45. data/spec/csvw/number_format_spec.rb +2 -4
  46. data/spec/csvw/table_group_spec.rb +103 -105
  47. data/spec/csvw/table_spec.rb +71 -73
  48. data/spec/field_spec.rb +116 -121
  49. data/spec/schema_spec.rb +131 -141
  50. data/spec/spec_helper.rb +6 -6
  51. data/spec/validator_spec.rb +167 -203
  52. metadata +41 -85
  53. data/.travis.yml +0 -37
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5d5ee384ce684c04b09f786edab7aaba1598f651
4
- data.tar.gz: 7e473e918dea5c6578c5f8d5870633c006ee7c80
2
+ SHA256:
3
+ metadata.gz: 7f9c598fca283466c50e65c4b436166fccb0e9e0340d3d370fb3f4e814cf1f3e
4
+ data.tar.gz: 321481d47fca1f6ef1df7963e5d705ce05685a9861e48d954397eb288f46541a
5
5
  SHA512:
6
- metadata.gz: e2dbc5910aca216330618cf5095950a8b227b412ccc7f6b997fa401b2e02d19895c4c18b0a4d2b01cb76c0415089a4793429f10c09a1c7eb4273d4dfa5cff0db
7
- data.tar.gz: dd5bc5ff3d8b31b52a342bbba7d9b8984dca267cfa618b514c1c3995139190e275e5c8ee6f5ac0b965910458a49891a13bf60fd46d4c329a99e4fc51d75d28ed
6
+ metadata.gz: 1e9f755b174f3c1b3052f43621e8c15cf3a3b947a5a611f370b42f309492797664a622886520a7d209d109f271a2d101aaa24017529900c82d76a71b8cb46173
7
+ data.tar.gz: 73da87ddbbc71a1e62f90ffaebca3947833921f546dcb01524bd464c7fbf1a3dbf086757443838e6ec401bac86e5cacf26a9e3b397904ba9ee32a0688c4271a0
@@ -0,0 +1,11 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ open-pull-requests-limit: 10
8
+ - package-ecosystem: github-actions
9
+ directory: "/"
10
+ schedule:
11
+ interval: weekly
@@ -0,0 +1,35 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: [ main ]
5
+ pull_request:
6
+ branches: [ main ]
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ ruby-version: ['2.5', '2.6', '2.7', '3.0', '3.1', '3.2']
13
+ fail-fast: false
14
+ steps:
15
+ - uses: actions/checkout@v3
16
+ - uses: ruby/setup-ruby@v1
17
+ with:
18
+ bundler-cache: true
19
+ ruby-version: ${{ matrix.ruby-version }}
20
+ - name: Install dependencies
21
+ run: bundle install
22
+ - name: Run the tests
23
+ run: bundle exec rake
24
+ lint:
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - uses: actions/checkout@v2
28
+ - uses: ruby/setup-ruby@v1
29
+ with:
30
+ bundler-cache: true
31
+ ruby-version: "3.2"
32
+ - name: Install dependencies
33
+ run: bundle install
34
+ - name: Run the tests
35
+ run: bundle exec standardrb
data/.gitignore CHANGED
@@ -26,3 +26,4 @@ features/fixtures/csvw
26
26
  bin/run-csvw-tests
27
27
 
28
28
  csvlint-earl.ttl
29
+ .byebug_history
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.1
1
+ 3.2.0
@@ -0,0 +1,43 @@
1
+ # Auto generated files with errors to ignore.
2
+ # Remove from this list as you refactor files.
3
+ ---
4
+ ignore:
5
+ - features/step_definitions/validation_errors_steps.rb:
6
+ - Lint/Void
7
+ - features/support/load_tests.rb:
8
+ - Style/For
9
+ - Security/Open
10
+ - Lint/UselessAssignment
11
+ - lib/csvlint/cli.rb:
12
+ - Style/NonNilCheck
13
+ - lib/csvlint/csvw/column.rb:
14
+ - Style/TernaryParentheses
15
+ - lib/csvlint/csvw/date_format.rb:
16
+ - Lint/MixedRegexpCaptureTypes
17
+ - lib/csvlint/csvw/number_format.rb:
18
+ - Style/SlicingWithRange
19
+ - Style/IdenticalConditionalBranches
20
+ - lib/csvlint/csvw/property_checker.rb:
21
+ - Performance/InefficientHashSearch
22
+ - Lint/UselessAssignment
23
+ - Naming/VariableName
24
+ - Style/SlicingWithRange
25
+ - Security/Open
26
+ - Lint/BooleanSymbol
27
+ - lib/csvlint/csvw/table_group.rb:
28
+ - Style/OptionalArguments
29
+ - lib/csvlint/field.rb:
30
+ - Naming/VariableName
31
+ - lib/csvlint/schema.rb:
32
+ - Security/Open
33
+ - Lint/UselessAssignment
34
+ - Style/SlicingWithRange
35
+ - lib/csvlint/validate.rb:
36
+ - Lint/UselessAssignment
37
+ - Performance/Count
38
+ - Lint/BooleanSymbol
39
+ - Naming/VariableName
40
+ - Security/Open
41
+ - Lint/NonLocalExitFromIterator
42
+ - spec/validator_spec.rb:
43
+ - Lint/UselessAssignment
data/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # Change Log
2
2
 
3
+ ## [v1.0.0](https://github.com/Data-Liberation-Front/csvlint.rb/tree/v1.0.0) (2022-07-13)
4
+ [Full Changelog](https://github.com/theodi/csvlint.rb/compare/0.4.0...v1.0.0)
5
+
6
+ Support Ruby 3.x, and DROPPED support for Ruby 2.4 - that's why the major version bump. That and this has been around long enough that it really shouldn't be on a zero version any more :)
7
+
8
+ ## What's Changed
9
+ * Don't patch CSV#init_converters for ruby 2.5 compatibility by @rbmrclo in https://github.com/Data-Liberation-Front/csvlint.rb/pull/217
10
+ * correct typos in README by @erikj in https://github.com/Data-Liberation-Front/csvlint.rb/pull/216
11
+ * add info about your PATH by @ftrotter in https://github.com/Data-Liberation-Front/csvlint.rb/pull/222
12
+ * Remove tests on deprecated ruby versions < 2.3 by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/234
13
+ * Drop mime-types gem dependency by @ohbarye in https://github.com/Data-Liberation-Front/csvlint.rb/pull/221
14
+ * remove specific version of net-http-persistent in gemspec by @kotaro0522 in https://github.com/Data-Liberation-Front/csvlint.rb/pull/219
15
+ * Replace colorize with rainbow to make licensing consistent. by @cobbr2 in https://github.com/Data-Liberation-Front/csvlint.rb/pull/215
16
+ * Update rdf requirement from < 2.0 to < 4.0 by @dependabot-preview in https://github.com/Data-Liberation-Front/csvlint.rb/pull/231
17
+ * Test on Ruby 2.5 and 2.6 by @Domon in https://github.com/Data-Liberation-Front/csvlint.rb/pull/223
18
+ * Fix load_from_json deprecation warnings. by @jezhiggins in https://github.com/Data-Liberation-Front/csvlint.rb/pull/237
19
+ * Fix csvw tests by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/239
20
+ * Test on Ruby 2.6 and 2.7 by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/240
21
+ * Create Dependabot config file by @dependabot-preview in https://github.com/Data-Liberation-Front/csvlint.rb/pull/245
22
+ * Include active_support/object to ensure this works in ruby 2.6 by @mseverini in https://github.com/Data-Liberation-Front/csvlint.rb/pull/246
23
+ * add CI workflow for github actions by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/255
24
+ * Enable and fix tests for Ruby 2.5 by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/259
25
+ * Support Ruby 2.6 by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/262
26
+ * Ruby 2.7 support by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/263
27
+ * Drop support for Ruby 2.4 by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/265
28
+ * Ruby 3.0 by @Floppy in https://github.com/Data-Liberation-Front/csvlint.rb/pull/264
29
+
30
+ ## New Contributors
31
+ * @rbmrclo made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/217
32
+ * @erikj made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/216
33
+ * @ftrotter made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/222
34
+ * @ohbarye made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/221
35
+ * @kotaro0522 made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/219
36
+ * @cobbr2 made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/215
37
+ * @dependabot-preview made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/231
38
+ * @Domon made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/223
39
+ * @mseverini made their first contribution in https://github.com/Data-Liberation-Front/csvlint.rb/pull/246
40
+
3
41
  ## [0.4.0](https://github.com/theodi/csvlint.rb/tree/0.4.0) (2017-xx-xx)
4
42
  [Full Changelog](https://github.com/theodi/csvlint.rb/compare/0.3.3...0.4.0)
5
43
 
data/Dockerfile ADDED
@@ -0,0 +1,16 @@
1
+ FROM ruby:2.5.8-buster
2
+
3
+ # throw errors if Gemfile has been modified since Gemfile.lock
4
+ RUN bundle config --global frozen 1
5
+
6
+ WORKDIR /usr/src/app
7
+
8
+ ENV LANG C.UTF-8
9
+
10
+ COPY ./lib/csvlint/version.rb ./lib/csvlint/
11
+ COPY csvlint.gemspec Gemfile Gemfile.lock ./
12
+ RUN bundle install
13
+
14
+ COPY ./ ./
15
+
16
+ CMD ["./bin/csvlint"]
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in csvlint.rb.gemspec
4
- gemspec
4
+ gemspec
data/README.md CHANGED
@@ -1,23 +1,23 @@
1
- [![Build Status](http://img.shields.io/travis/theodi/csvlint.rb.svg)](https://travis-ci.org/theodi/csvlint.rb)
2
- [![Dependency Status](http://img.shields.io/gemnasium/theodi/csvlint.rb.svg)](https://gemnasium.com/theodi/csvlint.rb)
3
- [![Coverage Status](http://img.shields.io/coveralls/theodi/csvlint.rb.svg)](https://coveralls.io/r/theodi/csvlint.rb)
1
+ [![Build Status](https://img.shields.io/github/workflow/status/Data-Liberation-Front/csvlint.rb/CI/main)](https://travis-ci.org/theodi/csvlint.rb)
2
+ [![Dependency Status](https://img.shields.io/librariesio/github/Data-Liberation-Front/csvlint.rb)](https://libraries.io/github/Data-Liberation-Front/csvlint.rb)
3
+ [![Coverage Status](http://img.shields.io/coveralls/Data-Liberation-Front/csvlint.rb.svg)](https://coveralls.io/r/Data-Liberation-Front/csvlint.rb)
4
4
  [![License](http://img.shields.io/:license-mit-blue.svg)](http://theodi.mit-license.org)
5
5
  [![Badges](http://img.shields.io/:badges-5/5-ff6799.svg)](https://github.com/pikesley/badger)
6
6
 
7
7
  # CSV Lint
8
8
 
9
- A ruby gem to support validating CSV files to check their syntax and contents. You can either use this gem within your own Ruby code, or as a standolone command line application
9
+ A ruby gem to support validating CSV files to check their syntax and contents. You can either use this gem within your own Ruby code, or as a standalone command line application
10
10
 
11
11
  ## Summary of features
12
12
 
13
- * Validation that checks the structural formatting of a CSV file
13
+ * Validation that checks the structural formatting of a CSV file
14
14
  * Validation of a delimiter-separated values (dsv) file accesible via URL, File, or an IO-style object (e.g. StringIO)
15
- * Validation against [CSV dialects](http://dataprotocols.org/csv-dialect/)
16
- * Validation against multiple schema standards; [JSON Table Schema](https://github.com/theodi/csvlint.rb/blob/master/README.md#json-table-schema-support) and [CSV on the Web](https://github.com/theodi/csvlint.rb/blob/master/README.md#csv-on-the-web-validation-support)
15
+ * Validation against [CSV dialects](http://dataprotocols.org/csv-dialect/)
16
+ * Validation against multiple schema standards; [JSON Table Schema](https://github.com/theodi/csvlint.rb/blob/master/README.md#json-table-schema-support) and [CSV on the Web](https://github.com/theodi/csvlint.rb/blob/master/README.md#csv-on-the-web-validation-support)
17
17
 
18
18
  ## Development
19
19
 
20
- `ruby version 2.1.4`
20
+ `ruby version 3.2`
21
21
 
22
22
  ### Tests
23
23
 
@@ -63,7 +63,7 @@ Or install it yourself as:
63
63
 
64
64
  ## Usage
65
65
 
66
- You can either use this gem within your own Ruby code, or as a standolone command line application
66
+ You can either use this gem within your own Ruby code, or as a standalone command line application
67
67
 
68
68
  ## On the command line
69
69
 
@@ -71,6 +71,9 @@ After installing the gem, you can validate a CSV on the command line like so:
71
71
 
72
72
  csvlint myfile.csv
73
73
 
74
+ You may need to add the gem exectuable directory to your path, by adding '/usr/local/lib/ruby/gems/2.6.0/bin'
75
+ or whatever your version is, to your .bash_profile PATH entry. [like so](https://stackoverflow.com/questions/2392293/ruby-gems-returns-command-not-found)
76
+
74
77
  You will then see the validation result, together with any warnings or errors e.g.
75
78
 
76
79
  ```
@@ -210,7 +213,7 @@ An example JSON Table Schema schema file is:
210
213
  "name": "price",
211
214
  "constraints": {
212
215
  "required": true,
213
- "minLength": 1
216
+ "minLength": 1
214
217
  }
215
218
  },
216
219
  {
data/Rakefile CHANGED
@@ -1,12 +1,12 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
- $:.unshift File.join( File.dirname(__FILE__), "lib")
3
+ $:.unshift File.join(File.dirname(__FILE__), "lib")
4
4
 
5
- require 'rubygems'
6
- require 'cucumber'
7
- require 'cucumber/rake/task'
8
- require 'coveralls/rake/task'
9
- require 'rspec/core/rake_task'
5
+ require "rubygems"
6
+ require "cucumber"
7
+ require "cucumber/rake/task"
8
+ require "coveralls/rake/task"
9
+ require "rspec/core/rake_task"
10
10
 
11
11
  RSpec::Core::RakeTask.new(:spec)
12
12
  Coveralls::RakeTask.new
@@ -14,4 +14,4 @@ Cucumber::Rake::Task.new(:features) do |t|
14
14
  t.cucumber_opts = "features --format pretty"
15
15
  end
16
16
 
17
- task :default => [:spec, :features, 'coveralls:push']
17
+ task default: [:spec, :features, "coveralls:push"]
data/bin/create_schema CHANGED
@@ -5,7 +5,7 @@ require 'csvlint'
5
5
 
6
6
  begin
7
7
  puts ARGV[0]
8
- csv = CSV.new( open(ARGV[0]) )
8
+ csv = CSV.new( URI.open(ARGV[0]) )
9
9
  headers = csv.shift
10
10
 
11
11
  name = File.basename( ARGV[0] )
@@ -29,4 +29,4 @@ rescue => e
29
29
  puts e
30
30
  puts e.backtrace
31
31
  puts "Unable to parse CSV file"
32
- end
32
+ end
data/csvlint.gemspec CHANGED
@@ -1,27 +1,24 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'csvlint/version'
3
+ require "csvlint/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "csvlint"
8
- spec.version = Csvlint::VERSION
9
- spec.authors = ["pezholio"]
10
- spec.email = ["pezholio@gmail.com"]
11
- spec.description = %q{CSV Validator}
12
- spec.summary = %q{CSV Validator}
13
- spec.homepage = "https://github.com/theodi/csvlint.rb"
14
- spec.license = "MIT"
6
+ spec.name = "csvlint"
7
+ spec.version = Csvlint::VERSION
8
+ spec.authors = ["pezholio"]
9
+ spec.email = ["pezholio@gmail.com"]
10
+ spec.description = "CSV Validator"
11
+ spec.summary = "CSV Validator"
12
+ spec.homepage = "https://github.com/theodi/csvlint.rb"
13
+ spec.license = "MIT"
15
14
 
16
- spec.files = `git ls-files`.split($/)
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
17
  spec.require_paths = ["lib"]
20
18
 
21
- spec.required_ruby_version = ['~> 2.0']
19
+ spec.required_ruby_version = [">= 2.5", "< 3.3"]
22
20
 
23
- spec.add_dependency "mime-types"
24
- spec.add_dependency "colorize"
21
+ spec.add_dependency "rainbow"
25
22
  spec.add_dependency "open_uri_redirections"
26
23
  spec.add_dependency "activesupport"
27
24
  spec.add_dependency "addressable"
@@ -30,9 +27,9 @@ Gem::Specification.new do |spec|
30
27
  spec.add_dependency "uri_template"
31
28
  spec.add_dependency "thor"
32
29
  spec.add_dependency "rack"
33
- spec.add_dependency "net-http-persistent", "< 3.0"
30
+ spec.add_dependency "net-http-persistent"
34
31
 
35
- spec.add_development_dependency "bundler", "~> 1.3"
32
+ spec.add_development_dependency "bundler", ">= 1.3"
36
33
  spec.add_development_dependency "rake"
37
34
  spec.add_development_dependency "cucumber"
38
35
  spec.add_development_dependency "simplecov"
@@ -43,11 +40,11 @@ Gem::Specification.new do |spec|
43
40
  spec.add_development_dependency "rspec-pride"
44
41
  spec.add_development_dependency "rspec-expectations"
45
42
  spec.add_development_dependency "coveralls"
46
- spec.add_development_dependency "pry"
43
+ spec.add_development_dependency "byebug"
47
44
  spec.add_development_dependency "github_changelog_generator"
48
45
  spec.add_development_dependency "aruba"
49
- spec.add_development_dependency "rdf", "< 2.0"
46
+ spec.add_development_dependency "rdf", "< 4.0"
50
47
  spec.add_development_dependency "rdf-turtle"
51
48
  spec.add_development_dependency "henry"
52
-
49
+ spec.add_development_dependency "standardrb"
53
50
  end
@@ -0,0 +1,20 @@
1
+ # Note that these commands are specific for a docker environment on MS Windows.
2
+
3
+ # to generate Gemfile.lock file
4
+ docker run --rm -v %CD%:/usr/src/app -w /usr/src/app ruby:2.5 bundle install
5
+
6
+ # to build docker image from source (the ending dot is significant)
7
+ docker build -t csvlint .
8
+
9
+ # to run tests
10
+ docker run -it --rm csvlint rake
11
+
12
+ # to run csvlint command line with a CSV file.
13
+ # cd to the directory with the CSV file then
14
+ docker run -it --rm -v %CD%:/tmp csvlint ./bin/csvlint --dump-errors /tmp/file-to-lint.csv
15
+
16
+ # to enter the linux container
17
+ docker run -it --rm -v %CD%:/tmp csvlint bash
18
+
19
+ # to enter the ruby REPL
20
+ docker run -it --rm -v %CD%:/tmp csvlint irb
@@ -1,37 +1,37 @@
1
- Given(/^I have stubbed stdin to contain "(.*?)"$/) do |file|
2
- expect(STDIN).to receive(:read).and_return(File.read(file))
1
+ Given(/^I have stubbed $stdin to contain "(.*?)"$/) do |file|
2
+ expect($stdin).to receive(:read).and_return(File.read(file))
3
3
  end
4
4
 
5
- Given(/^I have stubbed stdin to contain nothing$/) do
6
- expect(STDIN).to receive(:read).and_return(nil)
5
+ Given(/^I have stubbed $stdin to contain nothing$/) do
6
+ expect($stdin).to receive(:read).and_return(nil)
7
7
  end
8
8
 
9
9
  Then(/^nothing should be outputted to STDERR$/) do
10
- expect(STDERR).to_not receive(:puts)
10
+ expect($stderr).to_not receive(:puts)
11
11
  end
12
12
 
13
13
  Then(/^the output should contain JSON$/) do
14
14
  @json = JSON.parse(all_stdout)
15
- expect(@json['validation']).to be_present
15
+ expect(@json["validation"]).to be_present
16
16
  end
17
17
 
18
18
  Then(/^the JSON should have a state of "(.*?)"$/) do |state|
19
- expect(@json['validation']['state']).to eq(state)
19
+ expect(@json["validation"]["state"]).to eq(state)
20
20
  end
21
21
 
22
22
  Then(/^the JSON should have (\d+) errors?$/) do |count|
23
23
  @index = count.to_i - 1
24
- expect(@json['validation']['errors'].count).to eq(count.to_i)
24
+ expect(@json["validation"]["errors"].count).to eq(count.to_i)
25
25
  end
26
26
 
27
27
  Then(/^that error should have the "(.*?)" "(.*?)"$/) do |k, v|
28
- expect(@json['validation']['errors'][@index][k].to_s).to eq(v)
28
+ expect(@json["validation"]["errors"][@index][k].to_s).to eq(v)
29
29
  end
30
30
 
31
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)
32
+ expect(@json["validation"]["errors"][index.to_i - 1][k].to_s).to eq(v)
33
33
  end
34
34
 
35
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)
36
+ expect(@json["validation"]["errors"][index.to_i - 1]["constraints"][k].to_s).to eq(v)
37
37
  end
@@ -3,11 +3,11 @@ Given(/^the content type is "(.*?)"$/) do |arg1|
3
3
  end
4
4
 
5
5
  Then(/^the "(.*?)" should be "(.*?)"$/) do |type, encoding|
6
- validator = Csvlint::Validator.new( @url, default_csv_options )
7
- expect( validator.send(type.to_sym) ).to eq( encoding )
6
+ validator = Csvlint::Validator.new(@url, default_csv_options)
7
+ expect(validator.send(type.to_sym)).to eq(encoding)
8
8
  end
9
9
 
10
10
  Then(/^the metadata content type should be "(.*?)"$/) do |content_type|
11
- validator = Csvlint::Validator.new( @url, default_csv_options )
12
- expect( validator.headers['content-type'] ).to eq( content_type )
11
+ validator = Csvlint::Validator.new(@url, default_csv_options)
12
+ expect(validator.headers["content-type"]).to eq(content_type)
13
13
  end
@@ -12,31 +12,31 @@ Given(/^it is stored at the url "(.*?)"$/) do |url|
12
12
  charset = @encoding || "UTF-8"
13
13
  headers = {"Content-Type" => "#{content_type}; charset=#{charset}"}
14
14
  headers["Link"] = @link if @link
15
- stub_request(:get, url).to_return(:status => 200, :body => @csv, :headers => headers)
16
- stub_request(:get, URI.join(url, '/.well-known/csvm')).to_return(:status => 404)
17
- stub_request(:get, url + '-metadata.json').to_return(:status => 404)
18
- stub_request(:get, URI.join(url, 'csv-metadata.json')).to_return(:status => 404)
15
+ stub_request(:get, url).to_return(status: 200, body: @csv, headers: headers)
16
+ stub_request(:get, URI.join(url, "/.well-known/csvm")).to_return(status: 404)
17
+ stub_request(:get, url + "-metadata.json").to_return(status: 404)
18
+ stub_request(:get, URI.join(url, "csv-metadata.json")).to_return(status: 404)
19
19
  end
20
20
 
21
21
  Given(/^it is stored at the url "(.*?)" with no character set$/) do |url|
22
22
  @url = url
23
23
  content_type = @content_type || "text/csv"
24
- stub_request(:get, url).to_return(:status => 200, :body => @csv, :headers => {"Content-Type" => "#{content_type}"})
25
- stub_request(:get, URI.join(url, '/.well-known/csvm')).to_return(:status => 404)
26
- stub_request(:get, url + '-metadata.json').to_return(:status => 404)
27
- stub_request(:get, URI.join(url, 'csv-metadata.json')).to_return(:status => 404)
24
+ stub_request(:get, url).to_return(status: 200, body: @csv, headers: {"Content-Type" => content_type.to_s})
25
+ stub_request(:get, URI.join(url, "/.well-known/csvm")).to_return(status: 404)
26
+ stub_request(:get, url + "-metadata.json").to_return(status: 404)
27
+ stub_request(:get, URI.join(url, "csv-metadata.json")).to_return(status: 404)
28
28
  end
29
29
 
30
30
  When(/^I ask if the CSV is valid$/) do
31
31
  @csv_options ||= default_csv_options
32
- @validator = Csvlint::Validator.new( @url, @csv_options )
32
+ @validator = Csvlint::Validator.new(@url, @csv_options)
33
33
  @valid = @validator.valid?
34
34
  end
35
35
 
36
36
  Then(/^I should get the value of true$/) do
37
- expect( @valid ).to be(true)
37
+ expect(@valid).to be(true)
38
38
  end
39
39
 
40
40
  Then(/^I should get the value of false$/) do
41
- expect( @valid ).to be(false)
41
+ expect(@valid).to be(false)
42
42
  end
@@ -10,24 +10,24 @@ end
10
10
 
11
11
  Given(/^I have a metadata file called "([^"]*)"$/) do |filename|
12
12
  @schema_type = :csvw_metadata
13
- @schema_json = File.read( File.join( File.dirname(__FILE__), "..", "fixtures", filename ) )
13
+ @schema_json = File.read(File.join(File.dirname(__FILE__), "..", "fixtures", filename))
14
14
  end
15
15
 
16
- Given(/^the (schema|metadata) is stored at the url "(.*?)"$/) do |schema_type,schema_url|
16
+ Given(/^the (schema|metadata) is stored at the url "(.*?)"$/) do |schema_type, schema_url|
17
17
  @schema_url = schema_url
18
- stub_request(:get, @schema_url).to_return(:status => 200, :body => @schema_json.to_str)
18
+ stub_request(:get, @schema_url).to_return(status: 200, body: @schema_json.to_str)
19
19
  end
20
20
 
21
21
  Given(/^there is a file at "(.*?)" with the content:$/) do |url, content|
22
- stub_request(:get, url).to_return(:status => 200, :body => content.to_str)
22
+ stub_request(:get, url).to_return(status: 200, body: content.to_str)
23
23
  end
24
24
 
25
- Given(/^I have a file called "(.*?)" at the url "(.*?)"$/) do |filename,url|
26
- content = File.read( File.join( File.dirname(__FILE__), "..", "fixtures", filename ) )
27
- content_type = filename =~ /.csv$/ ? "text/csv" : "application/csvm+json"
28
- stub_request(:get, url).to_return(:status => 200, :body => content, :headers => {"Content-Type" => "#{content_type}; charset=UTF-8"})
25
+ Given(/^I have a file called "(.*?)" at the url "(.*?)"$/) do |filename, url|
26
+ content = File.read(File.join(File.dirname(__FILE__), "..", "fixtures", filename))
27
+ content_type = /.csv$/.match?(filename) ? "text/csv" : "application/csvm+json"
28
+ stub_request(:get, url).to_return(status: 200, body: content, headers: {"Content-Type" => "#{content_type}; charset=UTF-8"})
29
29
  end
30
30
 
31
31
  Given(/^there is no file at the url "(.*?)"$/) do |url|
32
- stub_request(:get, url).to_return(:status => 404)
33
- end
32
+ stub_request(:get, url).to_return(status: 404)
33
+ end
@@ -3,5 +3,5 @@ Given(/^it is parsed as a StringIO$/) do
3
3
  end
4
4
 
5
5
  Given(/^I parse a file called "(.*?)"$/) do |filename|
6
- @url = File.new( File.join( File.dirname(__FILE__), "..", "fixtures", filename ) )
6
+ @url = File.new(File.join(File.dirname(__FILE__), "..", "fixtures", filename))
7
7
  end
@@ -2,14 +2,14 @@ When(/^I ask if there are errors$/) do
2
2
  @csv_options ||= default_csv_options
3
3
 
4
4
  if @schema_json
5
- if @schema_type == :json_table
6
- @schema = Csvlint::Schema.from_json_table( @schema_url || "http://example.org ", JSON.parse(@schema_json) )
5
+ @schema = if @schema_type == :json_table
6
+ Csvlint::Schema.from_json_table(@schema_url || "http://example.org ", JSON.parse(@schema_json))
7
7
  else
8
- @schema = Csvlint::Schema.from_csvw_metadata( @schema_url || "http://example.org ", JSON.parse(@schema_json) )
8
+ Csvlint::Schema.from_csvw_metadata(@schema_url || "http://example.org ", JSON.parse(@schema_json))
9
9
  end
10
10
  end
11
11
 
12
- @validator = Csvlint::Validator.new( @url, @csv_options, @schema )
12
+ @validator = Csvlint::Validator.new(@url, @csv_options, @schema)
13
13
  @errors = @validator.errors
14
14
  end
15
15
 
@@ -19,10 +19,10 @@ When(/^I carry out CSVW validation$/) do
19
19
  begin
20
20
  if @schema_json
21
21
  json = JSON.parse(@schema_json)
22
- if @schema_type == :json_table
23
- @schema = Csvlint::Schema.from_json_table( @schema_url || "http://example.org ", json )
22
+ @schema = if @schema_type == :json_table
23
+ Csvlint::Schema.from_json_table(@schema_url || "http://example.org ", json)
24
24
  else
25
- @schema = Csvlint::Schema.from_csvw_metadata( @schema_url || "http://example.org ", json )
25
+ Csvlint::Schema.from_csvw_metadata(@schema_url || "http://example.org ", json)
26
26
  end
27
27
  end
28
28
 
@@ -30,12 +30,12 @@ When(/^I carry out CSVW validation$/) do
30
30
  @errors = []
31
31
  @warnings = []
32
32
  @schema.tables.keys.each do |table_url|
33
- validator = Csvlint::Validator.new( table_url, @csv_options, @schema )
33
+ validator = Csvlint::Validator.new(table_url, @csv_options, @schema)
34
34
  @errors += validator.errors
35
35
  @warnings += validator.warnings
36
36
  end
37
37
  else
38
- validator = Csvlint::Validator.new( @url, @csv_options, @schema )
38
+ validator = Csvlint::Validator.new(@url, @csv_options, @schema)
39
39
  @errors = validator.errors
40
40
  @warnings = validator.warnings
41
41
  end
@@ -49,42 +49,42 @@ end
49
49
  Then(/^there should be errors$/) do
50
50
  # this test is only used for CSVW testing; :invalid_encoding & :line_breaks mask lack of real errors
51
51
  @errors.delete_if { |e| e.instance_of?(Csvlint::ErrorMessage) && [:invalid_encoding, :line_breaks].include?(e.type) }
52
- expect( @errors.count ).to be > 0
52
+ expect(@errors.count).to be > 0
53
53
  end
54
54
 
55
55
  Then(/^there should not be errors$/) do
56
- expect( @errors.count ).to eq(0)
56
+ expect(@errors.count).to eq(0)
57
57
  end
58
58
 
59
59
  Then(/^there should be (\d+) error$/) do |count|
60
- expect( @errors.count ).to eq( count.to_i )
60
+ expect(@errors.count).to eq(count.to_i)
61
61
  end
62
62
 
63
63
  Then(/^that error should have the type "(.*?)"$/) do |type|
64
- expect( @errors.first.type ).to eq( type.to_sym )
64
+ expect(@errors.first.type).to eq(type.to_sym)
65
65
  end
66
66
 
67
67
  Then(/^that error should have the row "(.*?)"$/) do |row|
68
- expect( @errors.first.row ).to eq( row.to_i )
68
+ expect(@errors.first.row).to eq(row.to_i)
69
69
  end
70
70
 
71
71
  Then(/^that error should have the column "(.*?)"$/) do |column|
72
- expect( @errors.first.column ).to eq( column.to_i )
72
+ expect(@errors.first.column).to eq(column.to_i)
73
73
  end
74
74
 
75
75
  Then(/^that error should have the content "(.*)"$/) do |content|
76
- expect( @errors.first.content.chomp ).to eq( content.chomp )
76
+ expect(@errors.first.content.chomp).to eq(content.chomp)
77
77
  end
78
78
 
79
79
  Then(/^that error should have no content$/) do
80
- expect( @errors.first.content ).to eq( nil )
80
+ expect(@errors.first.content).to eq(nil)
81
81
  end
82
82
 
83
83
  Given(/^I have a CSV that doesn't exist$/) do
84
84
  @url = "http//www.example.com/fake-csv.csv"
85
- stub_request(:get, @url).to_return(:status => 404)
85
+ stub_request(:get, @url).to_return(status: 404)
86
86
  end
87
87
 
88
88
  Then(/^there should be no "(.*?)" errors$/) do |type|
89
- @errors.each do |error| error.type.should_not == type.to_sym end
89
+ @errors.each { |error| error.type.should_not == type.to_sym }
90
90
  end