matest 0.1.0 → 0.2.0
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 +4 -4
- data/README.md +141 -2
- data/lib/matest.rb +11 -2
- data/lib/matest/version.rb +1 -1
- data/spec/matest_spec.rb +4 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e6e7d1a7872997bc4b3fad1f258f0093f9f32ea
|
4
|
+
data.tar.gz: 78015cdf727f064505dbba282a5e008bdf8ecf1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05aaa86b1200e3dc2b973ceab2efd6e0f5c78dbbdd1addcfc974f77131819ec89bdb97a160d0b61290fc5629ae8d85f57e5cdc40e4043774a3730c54c714d8e3
|
7
|
+
data.tar.gz: 627b3b5a0a537325677319564fd80f3de92a99acbdfc95f981b51535d2e9c06f3d0aba7921c623ed76014303787fcf6165be6aa2b1226bb8a6c1c090ef29065a
|
data/README.md
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
# Matest
|
2
2
|
|
3
|
-
Tests Gasoleros (
|
3
|
+
Tests Gasoleros (Very cheap tests)
|
4
|
+
|
5
|
+
## Description
|
6
|
+
|
7
|
+
Matest is a very small testing library.
|
8
|
+
|
9
|
+
It doesn't use the usual assertion style (`assert(1, 1)`) nor the rspec style(`1.should == 1` or `1.must_equal(1)`).
|
10
|
+
|
11
|
+
It uses natural assertions.
|
12
|
+
|
13
|
+
This means that:
|
14
|
+
- A test will pass if it returns true
|
15
|
+
- A test will fail if it returns false
|
4
16
|
|
5
17
|
## Installation
|
6
18
|
|
@@ -20,7 +32,134 @@ Or install it yourself as:
|
|
20
32
|
|
21
33
|
## Usage
|
22
34
|
|
23
|
-
|
35
|
+
To run Matest, you just need to execute the `mt` command, passing as arguments the desired test files.
|
36
|
+
|
37
|
+
```bash
|
38
|
+
$ mt spec/my_spec.rb
|
39
|
+
```
|
40
|
+
|
41
|
+
You can also use wildcards.
|
42
|
+
|
43
|
+
For example, to run all the specs in a directory:
|
44
|
+
```bash
|
45
|
+
$ mt spec/*_spec.rb
|
46
|
+
```
|
47
|
+
|
48
|
+
Or to run recursively
|
49
|
+
```bash
|
50
|
+
$ mt spec/**/*_spec.rb
|
51
|
+
```
|
52
|
+
|
53
|
+
## Specs
|
54
|
+
|
55
|
+
To define a test, first you need to set a scope, and inside it, define your spec.
|
56
|
+
```ruby
|
57
|
+
scope do
|
58
|
+
spec do
|
59
|
+
true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
```
|
63
|
+
|
64
|
+
If the return value of the `spec` block is `true`, the spec will pass and if it's false it will `fail`.
|
65
|
+
|
66
|
+
If you return anithing else, you'll get a `NOT A NATURAL ASSERTION` status.
|
67
|
+
|
68
|
+
You can also add descriptions to either the `scope` or the `spec` blocks:
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
scope "a description" do
|
72
|
+
spec "another description" do
|
73
|
+
true
|
74
|
+
end
|
75
|
+
end
|
76
|
+
```
|
77
|
+
|
78
|
+
## Raising Errors
|
79
|
+
|
80
|
+
If your test raises an error during the run, youll get an `ERROR` status and you'll see the backtrace.
|
81
|
+
|
82
|
+
## Skipping
|
83
|
+
|
84
|
+
You can skip a test in two possible ways: You can declare a spec whithout a block or use the `xspec` method.
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
scope do
|
88
|
+
xspec "I'll be skipped" do
|
89
|
+
true
|
90
|
+
end
|
91
|
+
spec "I'll be skipped too"
|
92
|
+
end
|
93
|
+
```
|
94
|
+
|
95
|
+
This will skip you spec and inform you when you run.
|
96
|
+
|
97
|
+
You can skip the whole scope by using `xscope` instead of `scope`.
|
98
|
+
|
99
|
+
Take into account that `xscope` is a no-op so you won't be informed when you skip a scope.
|
100
|
+
|
101
|
+
## Let and let!
|
102
|
+
|
103
|
+
Matest steals the `let` and `let!` features from `RSpec` and `Minitest`.
|
104
|
+
|
105
|
+
With `let` you can declare a lazy variable valid on the current scope and all sub-scopes.
|
106
|
+
|
107
|
+
Here are some examples of what you can do with them:
|
108
|
+
|
109
|
+
```ruby
|
110
|
+
scope do
|
111
|
+
let(:m1) { :m1 }
|
112
|
+
let!(:m3) { :m3 }
|
113
|
+
|
114
|
+
let(:m4) { :m4 }
|
115
|
+
let!(:m5) { :m5 }
|
116
|
+
|
117
|
+
spec do
|
118
|
+
m1 == :m1
|
119
|
+
end
|
120
|
+
|
121
|
+
spec do
|
122
|
+
! defined?(m2)
|
123
|
+
end
|
124
|
+
|
125
|
+
spec do
|
126
|
+
m3 == :m3
|
127
|
+
end
|
128
|
+
|
129
|
+
spec do
|
130
|
+
! defined?(@m4)
|
131
|
+
end
|
132
|
+
|
133
|
+
spec do
|
134
|
+
!! defined?(@m5)
|
135
|
+
end
|
136
|
+
|
137
|
+
scope do
|
138
|
+
let(:m2) { :m2 }
|
139
|
+
spec do
|
140
|
+
m1 == :m1
|
141
|
+
end
|
142
|
+
|
143
|
+
spec do
|
144
|
+
m2 == :m2
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
```
|
149
|
+
|
150
|
+
## Aliases
|
151
|
+
|
152
|
+
You may be used to other keywords provenient from different testing frameworks. Matest has a couple of alias that you may use indistinctly to fit your style.
|
153
|
+
|
154
|
+
`scope` has the following aliases:
|
155
|
+
- `context` (and `xcontext`)
|
156
|
+
- `describe` (and `xdescribe`)
|
157
|
+
- `group` (and `xgroup`)
|
158
|
+
|
159
|
+
`spec` has the following aliases:
|
160
|
+
- `it` (and `xit`)
|
161
|
+
- `test` (and `xtest`)
|
162
|
+
- `example` (and `xexample`)
|
24
163
|
|
25
164
|
## Contributing
|
26
165
|
|
data/lib/matest.rb
CHANGED
@@ -157,8 +157,8 @@ module Matest
|
|
157
157
|
spec(description)
|
158
158
|
end
|
159
159
|
|
160
|
-
[:it, :
|
161
|
-
alias m :spec
|
160
|
+
[:it, :test, :example].each do |m|
|
161
|
+
alias :"#{m}" :spec
|
162
162
|
alias :"x#{m}" :xspec
|
163
163
|
end
|
164
164
|
|
@@ -204,3 +204,12 @@ end
|
|
204
204
|
def scope(description=nil, &block)
|
205
205
|
Matest::Runner.runner << Matest::ExampleGroup.new(block)
|
206
206
|
end
|
207
|
+
|
208
|
+
def xscope(description=nil, &block)
|
209
|
+
# no-op
|
210
|
+
end
|
211
|
+
|
212
|
+
[:describe, :context, :group].each do |m|
|
213
|
+
alias :"#{m}" :scope
|
214
|
+
alias :"x#{m}" :xscope
|
215
|
+
end
|
data/lib/matest/version.rb
CHANGED
data/spec/matest_spec.rb
CHANGED