docspec 0.1.1 → 0.1.3

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
  SHA256:
3
- metadata.gz: 330b6b64b2112f4c04771bb41f1d2baaba6040a8154f8d8d21538792c9e5531a
4
- data.tar.gz: 59df2785073b757fe4d444ab143632fa853d64f685fd9f59f967db6e338ef6d0
3
+ metadata.gz: b8a5c9b5152aec40381604f7b29473d9df865cba3cd650cd1b70dda2115e9165
4
+ data.tar.gz: 618428c8f9733ee701f6e2fb4babd5c1da39e85c0db601ae8b0f07e9f942e864
5
5
  SHA512:
6
- metadata.gz: 760aa463ba9ca213098e0dcd54b087e8f394d367ba25e19c5971fdc60db69849b2a45c50a2df4d2ff97464e34ed302ef18cb485cea52873fa7c0a7b4661d8fda
7
- data.tar.gz: 8e7010b439685d276d166e1906eaacc652b2e4bcb30bb612f0d00618b5de9c9da3bb927687f72e5c1b4992be4963c9e3b935613049e408f36940808909b44b39
6
+ metadata.gz: 2a2eacb5a463a059419863bf58676146b73e9398c5ec94563e444525865764bf2ba1814bc4cdb9980983a1314d7c8951c3be0b23f7cb3a6a4b7e312d46761164
7
+ data.tar.gz: 5de5e31541b08ba45594da601462db482b6c677eae357026b75678fb0d50dbaad861f4e86e339f2dbcdd5760fc13ae22f47d4577e39e604be83e971ef598e75a
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
- Docspec
2
- ==================================================
1
+ # Docspec
3
2
 
4
3
  [![Gem Version](https://badge.fury.io/rb/docspec.svg)](https://badge.fury.io/rb/docspec)
5
- [![Build Status](https://travis-ci.com/DannyBen/docspec.svg?branch=master)](https://travis-ci.com/DannyBen/docspec)
4
+ [![Build Status](https://github.com/DannyBen/docspec/workflows/Test/badge.svg)](https://github.com/DannyBen/docspec/actions?query=workflow%3ATest)
6
5
  [![Maintainability](https://api.codeclimate.com/v1/badges/e0c15c1f33fa4aa45f70/maintainability)](https://codeclimate.com/github/DannyBen/docspec/maintainability)
7
6
 
8
7
  Docspec lets you reuse your Markdown documents as the unit tests for your
@@ -11,30 +10,29 @@ Ruby library.
11
10
  ---
12
11
 
13
12
 
14
- Installation
15
- --------------------------------------------------
13
+ ## Installation
16
14
 
17
- $ gem install docspec
15
+ ```
16
+ $ gem install docspec
17
+ ```
18
18
 
19
19
 
20
- Demo
21
- --------------------------------------------------
20
+ ## Demo
22
21
 
23
- ![Demo](demo/cast.svg)
22
+ ![Demo](demo/cast.gif)
24
23
 
25
24
 
26
- Usage
27
- --------------------------------------------------
25
+ ## Usage
28
26
 
29
27
  Docspec expects one or more Markdown files with embedded code snippets to
30
28
  test.
31
29
 
32
30
  Code snippets should be enclosed in a `ruby` or `shell` code fence:
33
31
 
34
- ```ruby
35
- puts "code to test (should output something)"
36
- #=> code to test (should output something)
37
- ```
32
+ ```ruby
33
+ puts "code to test (should output something)"
34
+ #=> code to test (should output something)
35
+ ```
38
36
 
39
37
  This document itself serves as the test suite for this gem, so you can take a
40
38
  look at its source.
@@ -86,13 +84,19 @@ success = runner.run
86
84
  #=> file : test/sample.md
87
85
  #=> pass : Sample Test
88
86
  #=>
89
- #=> 2 tests, 0 failed
87
+ #=> file : test/sample2.md
88
+ #=> pass : echo shell
89
+ #=> void : echo shell
90
+ #=> pass : puts "ruby"
91
+ #=> void : puts "ruby"
92
+ #=>
93
+ #=> 6 tests, 0 failed
94
+
90
95
  ```
91
96
 
92
97
 
93
98
 
94
- Examples
95
- --------------------------------------------------
99
+ ## Examples
96
100
 
97
101
  Code examples that you want to test, should output something to stdout.
98
102
  Specify the expected output by prefixing it with `#=>`:
@@ -211,4 +215,3 @@ SOME_ENV_VAR=yes
211
215
  echo $SOME_ENV_VAR
212
216
  #=> yes
213
217
  ```
214
-
data/bin/docspec CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- if Gem.loaded_specs.has_key?('simplecov') and !ENV['DISABLE_SIMPLECOV']
2
+ if Gem.loaded_specs.has_key?('simplecov') && !ENV['DISABLE_SIMPLECOV']
3
3
  require 'simplecov'
4
4
  SimpleCov.configure do
5
5
  command_name ENV['SIMPLECOV_COMMAND'] || 'Docspec'
data/lib/docspec/cli.rb CHANGED
@@ -5,7 +5,7 @@ module Docspec
5
5
  class CLI
6
6
  attr_reader :target, :exit_code, :total_examples, :failed_examples
7
7
 
8
- def initialize(target=nil)
8
+ def initialize(target = nil)
9
9
  @target = target || 'README.md'
10
10
  end
11
11
 
@@ -33,9 +33,9 @@ module Docspec
33
33
 
34
34
  def run_dir
35
35
  all_success = true
36
- Dir["#{target}/**/*.md"].each do |file|
36
+ Dir["#{target}/**/*.md"].sort.each do |file|
37
37
  say ''
38
- say "!txtcyn!file : #{file}"
38
+ say "c`file : #{file}`"
39
39
  success = run_file file
40
40
  all_success = false unless success
41
41
  end
@@ -45,27 +45,23 @@ module Docspec
45
45
  def run_file(file)
46
46
  document = Docspec::Document.from_file file
47
47
  document.test
48
-
48
+
49
49
  @failed_examples += document.failed_examples.count
50
50
  @total_examples += document.examples.count
51
-
51
+
52
52
  document.success?
53
53
  end
54
54
 
55
55
  def show_footer
56
56
  say ''
57
57
 
58
- if failed_examples == 0
59
- say "!txtgrn!#{total_examples} tests, #{failed_examples} failed\n"
58
+ if failed_examples.zero?
59
+ say "g`#{total_examples} tests, #{failed_examples} failed`\n"
60
60
  true
61
61
  else
62
- say "!txtred!#{total_examples} tests, #{failed_examples} failed\n"
62
+ say "r`#{total_examples} tests, #{failed_examples} failed`\n"
63
63
  false
64
64
  end
65
65
  end
66
-
67
66
  end
68
67
  end
69
-
70
-
71
-
@@ -25,16 +25,15 @@ module Docspec
25
25
  result = []
26
26
  markdown.scan(/```(ruby|shell)\s*\n(.*?)```/m) do |type, code|
27
27
  example = Example.new(type: type, code: code, before: before[type])
28
-
28
+
29
29
  next if example.skip?
30
30
 
31
31
  before[type] ||= []
32
32
  before[type] << example.code if example.empty?
33
-
33
+
34
34
  result << example
35
35
  end
36
36
  result
37
37
  end
38
-
39
38
  end
40
39
  end
@@ -6,7 +6,9 @@ module Docspec
6
6
  attr_reader :code, :type, :before
7
7
 
8
8
  def initialize(type:, code:, before: nil)
9
- @code, @type, @before = code, type, before
9
+ @code = code
10
+ @type = type
11
+ @before = before
10
12
  end
11
13
 
12
14
  def actual
@@ -30,7 +32,7 @@ module Docspec
30
32
  end
31
33
 
32
34
  def failed?
33
- !success?
35
+ !success? && !empty?
34
36
  end
35
37
 
36
38
  def first_line
@@ -76,12 +78,12 @@ module Docspec
76
78
 
77
79
  def full_code!
78
80
  return code unless before
81
+
79
82
  [before.join("\n\n"), code].join "\n"
80
83
  end
81
84
 
82
85
  def label!
83
86
  first_line.gsub(/^#\s*/, '').strip
84
87
  end
85
-
86
88
  end
87
89
  end
@@ -5,7 +5,7 @@ module Docspec
5
5
  include Colsole
6
6
 
7
7
  def success?
8
- failed_examples.count == 0
8
+ failed_examples.count.zero?
9
9
  end
10
10
 
11
11
  def failed_examples
@@ -15,18 +15,16 @@ module Docspec
15
15
  def test
16
16
  examples.each do |example|
17
17
  if example.empty?
18
- say "!txtpur!void :!txtrst! #{example.label}"
18
+ say "m`void :` #{example.label}"
19
19
  elsif example.success?
20
- say "!txtgrn!pass :!txtrst! #{example.label}"
20
+ say "g`pass :` #{example.label}"
21
21
  else
22
- say "!txtred!FAIL : #{example.label}"
23
- say "---"
22
+ say "r`FAIL : #{example.label}`"
23
+ say '---'
24
24
  puts example.diff
25
- say "---"
25
+ say '---'
26
26
  end
27
27
  end
28
28
  end
29
-
30
29
  end
31
30
  end
32
-
@@ -1,3 +1,3 @@
1
1
  module Docspec
2
- VERSION = "0.1.1"
3
- end
2
+ VERSION = '0.1.3'
3
+ end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danny Ben Shitrit
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-07 00:00:00.000000000 Z
11
+ date: 2023-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colsole
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.8.1
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '0.5'
22
+ version: '2.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 0.8.1
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '0.5'
32
+ version: '2.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: diffy
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -57,7 +63,8 @@ files:
57
63
  homepage: https://github.com/dannyben/docspec
58
64
  licenses:
59
65
  - MIT
60
- metadata: {}
66
+ metadata:
67
+ rubygems_mfa_required: 'true'
61
68
  post_install_message:
62
69
  rdoc_options: []
63
70
  require_paths:
@@ -66,14 +73,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
66
73
  requirements:
67
74
  - - ">="
68
75
  - !ruby/object:Gem::Version
69
- version: 2.3.0
76
+ version: '2.7'
70
77
  required_rubygems_version: !ruby/object:Gem::Requirement
71
78
  requirements:
72
79
  - - ">="
73
80
  - !ruby/object:Gem::Version
74
81
  version: '0'
75
82
  requirements: []
76
- rubygems_version: 3.0.3
83
+ rubygems_version: 3.4.8
77
84
  signing_key:
78
85
  specification_version: 4
79
86
  summary: Embedded tests in Markdown documents