gherkin_language 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20a151e3bf96f970ae834694fa2e52d6741f7100
4
- data.tar.gz: 934027d4a4613b2846eb266823e65e078a911317
3
+ metadata.gz: f3ff47e5efcaf5646238231cfc30a418a320d9a2
4
+ data.tar.gz: 435a443e36b153809de0fc9b0706e2a68cc1c6b0
5
5
  SHA512:
6
- metadata.gz: 3e28b413f04838881e6913fe4ec59e5b0f46c755d313c082e87cbd982ac8ff1ea250e549e4e7176c3cfa433947727a6ae1c3bacb0c71f4d7d75b02aee5743cc2
7
- data.tar.gz: c83b49a25e3c8dcba77c1750635df0dec54d7665a10140d892aa369fc9231706dcdc20252e65de6aa50d6a45c9578eafb03c0243571c44de7156e7122be055f8
6
+ metadata.gz: dbbed75c28198258ec1213db2bfaf63762cefc28ee1311cb2c4dfaf4052469f6160b411117b8f9bce0cdd4ce440b5d6c92e710a7bdcb6ebc10549d33c6a5913a
7
+ data.tar.gz: 5e00377cc5240362ac380f978e0b6caeeb40e43f448144b5150db8acda394545bb645e7947380430ff4e52b054ebe7a6df59246861ad414cd29e833ad08ca1d4
data/README.md CHANGED
@@ -25,6 +25,8 @@ To ignore specific rules, mention them with an `--ignore RULE`. This allows to b
25
25
 
26
26
  To check for confused words, based on ngrams, add `--ngram`. Please note, that it requires much disk space and time.
27
27
 
28
+ By default it will accept unknown words. For warnings about unknown words add `--unknown-words`.
29
+
28
30
  Get a readability report using `--readability`. It indicates, which files are not good readable.
29
31
 
30
32
 
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ task test: :cucumber
18
18
 
19
19
  desc 'Publishes the Gem'
20
20
  task push: :build do
21
- sh 'gem push gherkin_language-0.1.3.gem'
21
+ sh 'gem push gherkin_language-0.1.4.gem'
22
22
  end
23
23
 
24
24
  desc 'Checks ruby style'
@@ -26,9 +26,15 @@ OptionParser.new do |opts|
26
26
  opts.on('--readability', 'readbility by file') do |readability|
27
27
  options[:readability] = readability
28
28
  end
29
+ opts.on('--unknown-words', 'determine unknown words') do |unknown_words|
30
+ options[:unknown_words] = unknown_words
31
+ end
29
32
  end.parse!
30
33
 
31
- language = GherkinLanguage.new(options.key?(:no_cache), options.key?(:ngram))
34
+ language = GherkinLanguage.new(
35
+ options.key?(:no_cache),
36
+ options.key?(:ngram),
37
+ options.key?(:unknown_words))
32
38
 
33
39
  if options.key? :sentences
34
40
  ARGV.each { |file| puts language.extract_sentences language.parse file }
@@ -39,3 +39,17 @@ Feature: Correct
39
39
  """
40
40
 
41
41
  """
42
+
43
+ Scenario: Scenario without Given
44
+ Given a file named "test.feature" with:
45
+ """
46
+ Feature: Test
47
+ Scenario: Test
48
+ When execute
49
+ Then verify
50
+ """
51
+ When I run `ruby report.rb`
52
+ Then it should pass with exactly:
53
+ """
54
+
55
+ """
@@ -14,6 +14,7 @@ Feature: Exception
14
14
  language.ignore 'EN_A_VS_AN'
15
15
  language.analyze 'test.feature'
16
16
  exit language.report
17
+
17
18
  """
18
19
 
19
20
  Scenario: Accept ignored rules
@@ -48,6 +49,5 @@ Feature: Exception
48
49
  Context: Given a test when exicute then pass
49
50
  Replacements: execute
50
51
  References: test.feature
51
- 1 unknown words: exicute
52
52
 
53
53
  """
@@ -10,7 +10,9 @@ Feature: Glossary
10
10
  require 'gherkin_language'
11
11
 
12
12
  no_cache = true
13
- language = GherkinLanguage.new no_cache
13
+ ngram = false
14
+ unknown_words = true
15
+ language = GherkinLanguage.new no_cache, ngram, unknown_words
14
16
  language.analyze 'test.feature'
15
17
  exit language.report
16
18
 
@@ -10,7 +10,9 @@ Feature: Report
10
10
  require 'gherkin_language'
11
11
 
12
12
  no_cache = true
13
- language = GherkinLanguage.new no_cache
13
+ ngram = false
14
+ unknown_words = true
15
+ language = GherkinLanguage.new no_cache, ngram, unknown_words
14
16
  language.analyze 'test.feature'
15
17
  exit language.report
16
18
 
@@ -10,7 +10,9 @@ Feature: Tag
10
10
  require 'gherkin_language'
11
11
 
12
12
  no_cache = true
13
- language = GherkinLanguage.new no_cache
13
+ ngram = false
14
+ unknown_words = true
15
+ language = GherkinLanguage.new no_cache, ngram, unknown_words
14
16
  puts language.tag ['tag.feature']
15
17
 
16
18
  """
@@ -35,6 +37,4 @@ Feature: Tag
35
37
  execute[execute/VB,execute/VBP,B-VP]
36
38
  then[then/JJ,then/NN,then/RB,I-VP]
37
39
  pass[pass/JJ,pass/NN,pass/VB,pass/VBP,I-VP]"["/'',B-ADVP]][</S>,O]
38
-
39
-
40
40
  """
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'gherkin_language'
3
- s.version = '0.1.3'
4
- s.date = '2016-02-03'
3
+ s.version = '0.1.4'
4
+ s.date = '2016-02-28'
5
5
  s.summary = 'Gherkin Language'
6
6
  s.description = 'Check language and readability of Gherkin Files'
7
7
  s.authors = ['Stefan Rohe']
@@ -18,7 +18,7 @@ require 'digest'
18
18
 
19
19
  # gherkin utilities
20
20
  class GherkinLanguage
21
- def initialize(no_cache = false, ngram = false)
21
+ def initialize(no_cache = false, ngram = false, unknown_words = false)
22
22
  path = "~/.gherkin_language/#{LanguageToolProcess::VERSION}/accepted_paragraphs.yml"
23
23
  @settings_path = File.expand_path path
24
24
  @accepted_paragraphs = {}
@@ -29,8 +29,9 @@ class GherkinLanguage
29
29
  end
30
30
  @references = {}
31
31
  @line_to_reference = {}
32
- @exceptions = []
32
+ @exceptions = %w(SENTENCE_FRAGMENT) # sentences starting with 'When' are perfectly fine in gherkin
33
33
  @ngram = ngram
34
+ @unknown_words = unknown_words
34
35
  end
35
36
 
36
37
  def ignore(exception)
@@ -115,7 +116,7 @@ class GherkinLanguage
115
116
 
116
117
  def report
117
118
  return 0 if @references.keys.empty?
118
- language = LanguageToolProcess.new @ngram
119
+ language = LanguageToolProcess.new(@ngram, @unknown_words)
119
120
  language.start!
120
121
 
121
122
  @references.keys.each do |sentence|
@@ -21,7 +21,7 @@ class LanguageToolProcess
21
21
  NGRAM_VERSION = 'ngrams-en-20150817'.freeze
22
22
  NGRAM_URL = "https://languagetool.org/download/ngram-data/#{NGRAM_VERSION}.zip".freeze
23
23
 
24
- def initialize(ngrams = false)
24
+ def initialize(ngrams = false, unknown_words = false)
25
25
  path = Dir.tmpdir
26
26
  download(path, URL) unless File.exist? "#{path}/#{VERSION}/languagetool-commandline.jar"
27
27
  if ngrams
@@ -32,6 +32,7 @@ class LanguageToolProcess
32
32
  @p = nil
33
33
  @reference_line = 0
34
34
  @errors = []
35
+ @check_unknown_words = unknown_words
35
36
  @unknown_words = []
36
37
  @ngrams = ngrams
37
38
  use_user_glossary "#{path}/#{VERSION}" if File.exist? '.glossary'
@@ -57,8 +58,10 @@ class LanguageToolProcess
57
58
  @unknown_words = []
58
59
  @reference_line = 0
59
60
  Dir.chdir("#{@path}/#{VERSION}/") do
60
- command = 'java -jar languagetool-commandline.jar --list-unknown --api --language en-US'
61
- command += " --languagemodel #{@ngrams_path}" if @ngrams
61
+ command = 'java -jar languagetool-commandline.jar '
62
+ command += '--list-unknown ' if @check_unknown_words
63
+ command += '--api --language en-US '
64
+ command += "--languagemodel #{@ngrams_path}" if @ngrams
62
65
  @p = IO.popen("#{command} -", 'r+')
63
66
  end
64
67
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gherkin_language
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Rohe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-03 00:00:00.000000000 Z
11
+ date: 2016-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gherkin
@@ -116,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  requirements: []
118
118
  rubyforge_project:
119
- rubygems_version: 2.2.5
119
+ rubygems_version: 2.2.2
120
120
  signing_key:
121
121
  specification_version: 4
122
122
  summary: Gherkin Language