ataru 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +100 -14
- data/ataru.gemspec +4 -4
- data/example.md +12 -0
- data/lib/ataru/cli/application.rb +23 -7
- data/lib/ataru/test_class_builder.rb +3 -9
- data/test/resources/test_markdown.md +1 -1
- data/test/test_class_builder_test.rb +7 -6
- metadata +9 -9
- data/lib/ataru/errors.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 275aed877820525a59f2c7ad8843ca1cf75deec6
|
4
|
+
data.tar.gz: b26d4c1513cc9448578df33c5ba326865c22f58a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8112d22c879ec32f86ed22370097e5c4988a60ef7b98cbf9c439d4967bc7d1d83e465ba658154a5b9d44a1c7e4c47cec7588f34dee6de70f6036f6e138508f2
|
7
|
+
data.tar.gz: d3b74b70233e7c708a35421998b829e9553772e5df083d4c162cffbb91437a8e2f47975ca3226357302c3682b90e1c87f7d72c9bfe16b0a1822eb2913d3f7315
|
data/README.md
CHANGED
@@ -16,16 +16,17 @@ The output of the results has the MiniTest style.
|
|
16
16
|
- Ataru can read files written in Github Flavoured Markdown, as it uses Kramdown with Github Flavoured Markdown Parser.
|
17
17
|
|
18
18
|
- Ataru is currently able to test the Ruby code only.
|
19
|
+
It checks the Ruby syntax and implements assertions (`assert_equal`) in place of `#=>` and `# =>`.
|
19
20
|
|
20
21
|
## Requirements
|
21
22
|
|
22
23
|
- The dependencies of your gem have to be in the range of the latest major versions of:
|
23
24
|
|
24
|
-
- minitest (~> 5)
|
25
|
-
- kramdown (~> 1)
|
26
|
-
- thor (~> 0)
|
25
|
+
- minitest (~> 5.0)
|
26
|
+
- kramdown (~> 1.3)
|
27
|
+
- thor (~> 0.19.0)
|
27
28
|
|
28
|
-
-
|
29
|
+
- In most cases, you need to create the setup file (for more info read Setup section).
|
29
30
|
|
30
31
|
## Usage as command line tool
|
31
32
|
|
@@ -55,6 +56,61 @@ The output of the results has the MiniTest style.
|
|
55
56
|
```
|
56
57
|
5. Check the results.
|
57
58
|
|
59
|
+
## Example
|
60
|
+
|
61
|
+
If this is a file called `example.md`:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
def bad
|
65
|
+
false
|
66
|
+
end
|
67
|
+
|
68
|
+
def good
|
69
|
+
true
|
70
|
+
end
|
71
|
+
|
72
|
+
bad #=> true
|
73
|
+
good #=> true
|
74
|
+
```
|
75
|
+
|
76
|
+
|
77
|
+
which renders as:
|
78
|
+
|
79
|
+
```ruby
|
80
|
+
def bad
|
81
|
+
false
|
82
|
+
end
|
83
|
+
|
84
|
+
def good
|
85
|
+
true
|
86
|
+
end
|
87
|
+
|
88
|
+
bad #=> true
|
89
|
+
good #=> true
|
90
|
+
```
|
91
|
+
|
92
|
+
Check it with ataru:
|
93
|
+
|
94
|
+
```sh
|
95
|
+
$ ataru check example.md
|
96
|
+
Run options: --seed 33946
|
97
|
+
|
98
|
+
# Running:
|
99
|
+
|
100
|
+
F
|
101
|
+
|
102
|
+
Finished in 0.001232s, 811.9236 runs/s, 811.9236 assertions/s.
|
103
|
+
|
104
|
+
1) Failure:
|
105
|
+
#<Class:0x000000033451b8>#test_example_0 [example.md:10]:
|
106
|
+
Expected: true
|
107
|
+
Actual: false
|
108
|
+
|
109
|
+
1 runs, 1 assertions, 1 failures, 0 errors, 0 skips
|
110
|
+
```
|
111
|
+
|
112
|
+
|
113
|
+
|
58
114
|
## Workflow with Travis CI
|
59
115
|
|
60
116
|
1. Add ataru to your project Gemfile.
|
@@ -71,7 +127,7 @@ The output of the results has the MiniTest style.
|
|
71
127
|
$ bundle exec ataru setup
|
72
128
|
```
|
73
129
|
|
74
|
-
4. In your
|
130
|
+
4. In your `.travis.yml` file add:
|
75
131
|
- in case you want to check all the markdown files from your project:
|
76
132
|
|
77
133
|
```
|
@@ -92,8 +148,43 @@ The output of the results has the MiniTest style.
|
|
92
148
|
## Setup
|
93
149
|
|
94
150
|
The setup file has to be created in order to enable ataru to read your project source code and use it for its checks.
|
95
|
-
|
96
|
-
|
151
|
+
What is more, in that file you can write some setup code, that will be run before (and after, shall you want that) each snippet.
|
152
|
+
If you'd like to use instance variables, define them in `setup` method.
|
153
|
+
If you'd like to clean up after running tests, write your clean up code in `teardown` method.
|
154
|
+
If you like local variables, you can use methods (see example below).
|
155
|
+
|
156
|
+
#### Example
|
157
|
+
|
158
|
+
This is `ataru_setup.rb` file for an imaginary gem `my_fancy_lib`, where instance and local variables `@number` and `number` are defined:
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
require 'my_fancy_lib'
|
162
|
+
|
163
|
+
module Setup
|
164
|
+
def setup
|
165
|
+
@number = 21
|
166
|
+
end
|
167
|
+
|
168
|
+
def teardown
|
169
|
+
end
|
170
|
+
|
171
|
+
def number
|
172
|
+
12
|
173
|
+
end
|
174
|
+
```
|
175
|
+
|
176
|
+
which allows us to use them in the code snippets in `README.md` file:
|
177
|
+
|
178
|
+
```ruby
|
179
|
+
assert_equal @number + 1, 22
|
180
|
+
```
|
181
|
+
|
182
|
+
```ruby
|
183
|
+
assert_equal number + 1, 13
|
184
|
+
```
|
185
|
+
|
186
|
+
Ataru comes with an easy to use generator for creating the setup file. When the generator process is finished, created
|
187
|
+
file is automatically passed to ataru.
|
97
188
|
|
98
189
|
To create the setup file execute:
|
99
190
|
|
@@ -101,13 +192,8 @@ To create the setup file execute:
|
|
101
192
|
$ bundle exec ataru setup
|
102
193
|
```
|
103
194
|
|
104
|
-
Open created file in your text editor and write
|
105
|
-
|
106
|
-
```
|
107
|
-
require "your_project_name"
|
108
|
-
```
|
109
|
-
|
110
|
-
Save the file.
|
195
|
+
Open created file in your text editor, do your requires and, optionally, write some setup code.
|
196
|
+
Save the file.
|
111
197
|
|
112
198
|
## Contributing
|
113
199
|
|
data/ataru.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'ataru/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "ataru"
|
8
|
-
spec.version = "0.
|
8
|
+
spec.version = "0.2.0"
|
9
9
|
spec.authors = ["Code_Padawans"]
|
10
10
|
spec.email = ["hello@code-padawans.de"]
|
11
11
|
spec.summary = %q{A documentation testing tool}
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.5"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.3"
|
23
23
|
|
24
|
-
spec.add_runtime_dependency "minitest", "~> 5"
|
25
|
-
spec.add_runtime_dependency "kramdown", "~> 1"
|
26
|
-
spec.add_runtime_dependency "thor", "~> 0"
|
24
|
+
spec.add_runtime_dependency "minitest", "~> 5.0"
|
25
|
+
spec.add_runtime_dependency "kramdown", "~> 1.3"
|
26
|
+
spec.add_runtime_dependency "thor", "~> 0.19.0"
|
27
27
|
end
|
data/example.md
ADDED
@@ -12,20 +12,36 @@ module Ataru
|
|
12
12
|
|
13
13
|
desc "setup", "Create the setup file containing all dependencies for running code snippets"
|
14
14
|
def setup
|
15
|
-
create_file(Dir.pwd
|
16
|
-
|
17
|
-
# "Please require your project source code, with the correct path"
|
15
|
+
create_file(File.join(Dir.pwd, "ataru_setup.rb"), <<-EOS)
|
16
|
+
# "Require your project source code, with the correct path"
|
18
17
|
|
19
|
-
# require
|
20
|
-
|
21
|
-
|
18
|
+
# require 'my_fancy_lib'
|
19
|
+
|
20
|
+
module Setup
|
21
|
+
def setup
|
22
|
+
# Do some nice setup that is run before every snippet
|
23
|
+
# If you'd like to use instance variables define them here, e.g
|
24
|
+
# @important_variable_i_will_use_in_my_code_snippets = true
|
25
|
+
end
|
26
|
+
|
27
|
+
def teardown
|
28
|
+
# Do some cleanup that is run after every snippet
|
29
|
+
end
|
30
|
+
|
31
|
+
# If you like local variables you can define methods, e.g
|
32
|
+
# def number_of_wishes
|
33
|
+
# 101
|
34
|
+
# end
|
35
|
+
|
36
|
+
end
|
37
|
+
EOS
|
22
38
|
puts "Well done, young Padawan!\nNow, change the created ataru_setup.rb file."
|
23
39
|
end
|
24
40
|
|
25
41
|
desc "check", "Check code snippets in all .md files of the project or, if given, specific .md files"
|
26
42
|
def check(*filenames)
|
27
43
|
if filenames.length == 0
|
28
|
-
filenames = Dir.glob('**/*md')
|
44
|
+
filenames = Dir.glob('**/*md') - Dir.glob("vendor/**/*.md")
|
29
45
|
end
|
30
46
|
path = Dir.pwd + '/ataru_setup.rb'
|
31
47
|
require path if File.exist?(path)
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'minitest'
|
2
2
|
require 'pathname'
|
3
|
-
require_relative 'errors'
|
4
3
|
require_relative 'code_sample'
|
5
4
|
|
6
5
|
module Ataru
|
@@ -14,17 +13,12 @@ module Ataru
|
|
14
13
|
def build_test_class
|
15
14
|
samples = code_samples
|
16
15
|
klass = Class.new(MiniTest::Test) do
|
16
|
+
path = Dir.pwd + '/ataru_setup.rb'
|
17
|
+
include Setup if File.exist?(path)
|
17
18
|
samples.each_with_index do |sample, index|
|
18
19
|
basename = Pathname.new(sample.file).basename(".*").to_s
|
19
20
|
define_method("test_#{basename}_#{index}") do
|
20
|
-
|
21
|
-
b = binding
|
22
|
-
|
23
|
-
begin
|
24
|
-
sample.run(b)
|
25
|
-
rescue StandardError => e
|
26
|
-
raise AtaruError.new("In the file: #{sample.file}, in line: #{sample.line_number}, the code sample number: #{index} is raising an error:" + e.inspect)
|
27
|
-
end
|
21
|
+
sample.run(binding)
|
28
22
|
end
|
29
23
|
end
|
30
24
|
end
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
2
|
require 'kramdown'
|
3
3
|
require_relative '../lib/ataru/test_class_builder'
|
4
|
-
require_relative '../lib/ataru/errors'
|
5
4
|
require_relative '../lib/ataru/code_sample'
|
6
5
|
|
7
6
|
class TestClassBuilderTest < MiniTest::Test
|
@@ -32,11 +31,13 @@ class TestClassBuilderTest < MiniTest::Test
|
|
32
31
|
|
33
32
|
def test_invalid_code_sample
|
34
33
|
code_samples = [CodeSample.new("a + 1", "my_test.md", 5)]
|
35
|
-
message = AtaruError.new("In the file: #{code_samples[0].file}, in line: #{code_samples[0].line_number}, is raising an error:")
|
36
34
|
klass = TestClassBuilder.new(code_samples).build_test_class
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
#rubinius bug https://github.com/rubinius/rubinius/issues/3101
|
36
|
+
exception_class = if RUBY_ENGINE == 'rbx'
|
37
|
+
NoMethodError
|
38
|
+
else
|
39
|
+
NameError
|
40
|
+
end
|
41
|
+
assert_raises(exception_class) { klass.new(@name_of_the_runnable).send(:test_my_test_0) }
|
40
42
|
end
|
41
|
-
|
42
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ataru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code_Padawans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,42 +44,42 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '5'
|
47
|
+
version: '5.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '5'
|
54
|
+
version: '5.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: kramdown
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1'
|
61
|
+
version: '1.3'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1'
|
68
|
+
version: '1.3'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: thor
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 0.19.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 0.19.0
|
83
83
|
description: A documentation testing tool, for documentation in Markdown files, for
|
84
84
|
Ruby code
|
85
85
|
email:
|
@@ -97,12 +97,12 @@ files:
|
|
97
97
|
- Rakefile
|
98
98
|
- ataru.gemspec
|
99
99
|
- bin/ataru
|
100
|
+
- example.md
|
100
101
|
- lib/ataru.rb
|
101
102
|
- lib/ataru/application.rb
|
102
103
|
- lib/ataru/argument_checker.rb
|
103
104
|
- lib/ataru/cli/application.rb
|
104
105
|
- lib/ataru/code_sample.rb
|
105
|
-
- lib/ataru/errors.rb
|
106
106
|
- lib/ataru/markdown_loader.rb
|
107
107
|
- lib/ataru/test_class_builder.rb
|
108
108
|
- lib/ataru/test_converter.rb
|
data/lib/ataru/errors.rb
DELETED