docu 0.0.2 → 0.0.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.
data/README.md CHANGED
@@ -35,3 +35,18 @@ Usage
35
35
  gem install docu
36
36
  docu README.md.docu
37
37
  ```
38
+
39
+ Rake Task
40
+ ---------
41
+
42
+ ```ruby
43
+ require "docu/rake/task"
44
+
45
+ Docu::Rake::Task.new do |task|
46
+ task.file = "README.md.docu"
47
+ end
48
+ ```
49
+
50
+ ```
51
+ rake docu
52
+ ```
data/bin/docu CHANGED
@@ -2,4 +2,4 @@
2
2
  $:.unshift(File.dirname(__FILE__) + '/../lib')
3
3
 
4
4
  require "docu"
5
- Docu::ExecutesExamples.new(Kernel).execute(ARGV.first)
5
+ Docu::ExecutesExamples.new.execute(ARGV.first)
@@ -1,12 +1,11 @@
1
1
  module Docu
2
2
  class ExecutesExamples
3
- def initialize output, kernel = Kernel
4
- @output = output
3
+ def initialize kernel = Kernel
5
4
  @kernel = kernel
6
5
  end
7
6
 
8
7
  def execute path
9
- @output.puts "Executing Examples"
8
+ @kernel.puts "Executing Examples"
10
9
  errors = []
11
10
  successes = 0
12
11
 
@@ -25,11 +24,11 @@ module Docu
25
24
  end
26
25
  end
27
26
 
28
- @output.puts "#{errors.size} example(s) failed, #{successes} example(s) passed"
27
+ @kernel.puts "#{errors.size} example(s) failed, #{successes} example(s) passed"
29
28
 
30
29
  if errors.any?
31
30
  errors.each do |error|
32
- @output.puts error
31
+ @kernel.puts error
33
32
  end
34
33
  @kernel.exit 1
35
34
  else
@@ -0,0 +1,24 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../../')
2
+
3
+ require "rake"
4
+ require "rake/tasklib"
5
+ require "docu"
6
+
7
+ module Docu
8
+ module Rake
9
+ class Task < ::Rake::TaskLib
10
+ include ::Rake::DSL if defined?(::Rake::DSL)
11
+
12
+ attr_accessor :name, :file
13
+
14
+ def initialize(*args)
15
+ @name = args.shift || :docu
16
+ desc "Execute examples in documentation" unless ::Rake.application.last_comment
17
+ yield self if block_given?
18
+ task name do
19
+ ExecutesExamples.new.execute(file)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module Docu
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -6,18 +6,16 @@ require "minitest/autorun"
6
6
  require "minitest/spec"
7
7
 
8
8
  module Docu
9
- class OutputSpy
10
- attr_accessor :output
9
+ class SpyKernel
10
+ attr_accessor :output, :exit_status
11
+
11
12
  def puts(*a)
12
13
  @output ||= []
13
14
  a.each do |i|
14
15
  @output << i
15
16
  end
16
17
  end
17
- end
18
18
 
19
- class SpyKernel
20
- attr_accessor :exit_status
21
19
  def exit status
22
20
  @exit_status = status
23
21
  end
@@ -34,12 +32,11 @@ module Docu
34
32
  end
35
33
 
36
34
  it "writes out some text" do
37
- output_spy = OutputSpy.new
38
35
  File.open("TEST_README.md.docu", "w") do |file|
39
36
  file.puts
40
37
  end
41
- Docu::ExecutesExamples.new(output_spy, kernel).execute("TEST_README.md.docu")
42
- output_spy.output.must_include "Executing Examples"
38
+ Docu::ExecutesExamples.new(kernel).execute("TEST_README.md.docu")
39
+ kernel.output.must_include "Executing Examples"
43
40
  end
44
41
 
45
42
  describe "one failing example and one passing example" do
@@ -58,27 +55,22 @@ module Docu
58
55
  end
59
56
 
60
57
  it "mentions failure and success" do
61
- output_spy = OutputSpy.new
62
- Docu::ExecutesExamples.new(output_spy, kernel).execute("TEST_README.md.docu")
63
- output_spy.output.must_include "1 example(s) failed, 1 example(s) passed"
58
+ Docu::ExecutesExamples.new(kernel).execute("TEST_README.md.docu")
59
+ kernel.output.must_include "1 example(s) failed, 1 example(s) passed"
64
60
  end
65
61
 
66
62
  it "outputs errors" do
67
- output_spy = OutputSpy.new
68
- Docu::ExecutesExamples.new(output_spy, kernel).execute("TEST_README.md.docu")
69
- output_spy.output.must_include "Assertion does not match example. Expected \"2\" to equal \"23\""
63
+ Docu::ExecutesExamples.new(kernel).execute("TEST_README.md.docu")
64
+ kernel.output.must_include "Assertion does not match example. Expected \"2\" to equal \"23\""
70
65
  end
71
66
 
72
67
  it "does not write the file" do
73
- output_spy = OutputSpy.new
74
- Docu::ExecutesExamples.new(output_spy, kernel).execute("TEST_README.md.docu")
68
+ Docu::ExecutesExamples.new(kernel).execute("TEST_README.md.docu")
75
69
  File.exist?("TEST_README.md").must_equal false
76
70
  end
77
71
 
78
72
  it "exits with non-zero exit status" do
79
- output_spy = OutputSpy.new
80
- executes_examples = Docu::ExecutesExamples.new(output_spy, kernel)
81
- Docu::ExecutesExamples.new(output_spy, kernel).execute("TEST_README.md.docu")
73
+ Docu::ExecutesExamples.new(kernel).execute("TEST_README.md.docu")
82
74
  kernel.exit_status.must_equal 1
83
75
  end
84
76
  end
@@ -94,8 +86,7 @@ module Docu
94
86
  end
95
87
 
96
88
  it "writes out the file removing all :example: and :end: markers" do
97
- output_spy = OutputSpy.new
98
- Docu::ExecutesExamples.new(output_spy).execute("TEST_README.md.docu")
89
+ Docu::ExecutesExamples.new(kernel).execute("TEST_README.md.docu")
99
90
  File.exist?("TEST_README.md").must_equal true
100
91
  contents = File.read("TEST_README.md").to_s
101
92
  contents.must_equal "1 + 1\n#=> 2\n"
@@ -0,0 +1,41 @@
1
+ $:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "../../lib")))
2
+ require "minitest/pride"
3
+ require "minitest/autorun"
4
+ require "minitest/spec"
5
+ require "rake"
6
+ require "docu/rake/task"
7
+
8
+ module Docu
9
+ module Rake
10
+ describe Task do
11
+ before do
12
+ File.delete "TEST-README.md.docu" if File.exist? "TEST-README.md.docu"
13
+ File.delete "TEST-README.md" if File.exist? "TEST-README.md"
14
+ end
15
+
16
+ it "has a default name" do
17
+ Task.new.name.must_equal :docu
18
+ end
19
+
20
+ it "can have any name" do
21
+ Task.new(:execute_scripts).name.must_equal :execute_scripts
22
+ end
23
+
24
+ it "yields self" do
25
+ yielded_task = nil
26
+ task = Task.new do |t|
27
+ yielded_task = t
28
+ end
29
+ yielded_task.must_equal task
30
+ end
31
+
32
+ it "executes documentation" do
33
+ task = Task.new(:docu_test)
34
+ task.file = "TEST-README.md.docu"
35
+ File.open("TEST-README.md.docu", "w") { |f| f.write("example") }
36
+ ::Rake::Task[:docu_test].invoke
37
+ File.exist?("TEST-README.md").must_equal true
38
+ end
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
16
- requirement: &70235153514700 !ruby/object:Gem::Requirement
16
+ requirement: &70339569711840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70235153514700
24
+ version_requirements: *70339569711840
25
25
  description: ''
26
26
  email:
27
27
  - andrew.vos@gmail.com
@@ -40,8 +40,10 @@ files:
40
40
  - docu.gemspec
41
41
  - lib/docu.rb
42
42
  - lib/docu/executes_examples.rb
43
+ - lib/docu/rake/task.rb
43
44
  - lib/docu/version.rb
44
45
  - spec/docu/executes_examples_spec.rb
46
+ - spec/docu/rake/task_spec.rb
45
47
  homepage: ''
46
48
  licenses: []
47
49
  post_install_message:
@@ -68,3 +70,4 @@ specification_version: 3
68
70
  summary: ''
69
71
  test_files:
70
72
  - spec/docu/executes_examples_spec.rb
73
+ - spec/docu/rake/task_spec.rb