true 2.2.1 → 2.2.2
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/CHANGELOG.md +6 -0
- data/README.md +143 -0
- data/bin/true-cli +10 -4
- data/sass/true/_assert.scss +18 -4
- data/sass/true/_modules.scss +1 -0
- data/sass/true/_results.scss +67 -4
- data/sass/true/_tests.scss +1 -0
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd6cc4853271c5c85b0991afcdb45a63cf9af818
|
4
|
+
data.tar.gz: 463cddf82b9dbe01121277074f257377af2dd2da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de700ce77b7ddabe698e23def93433bce2096f9c0c44fbe740bdf883f11ab6c46cd040b199f2e8b914f56308278e02f6c3632f7ebf28a14234324aebd2e73ac4
|
7
|
+
data.tar.gz: ad30953383bc554625fce61bda64eaf9355486fb8afe018a42d26682ee3947250d2e121c2f1d0ce100b4c16d4321531e271d18bcd7619fd7f82c58c756332d69
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
True Changelog
|
2
2
|
==============
|
3
3
|
|
4
|
+
2.2.2 (4/11/17)
|
5
|
+
---------------
|
6
|
+
- `assert-true` returns false on empty strings and lists
|
7
|
+
- `assert-false` returns true on empty strings and lists
|
8
|
+
- Module/Test/Assertion stats are included in reports
|
9
|
+
|
4
10
|
|
5
11
|
2.2.1 (2/7/17)
|
6
12
|
--------------
|
data/README.md
CHANGED
@@ -181,3 +181,146 @@ toggles output to the terminal on or off.
|
|
181
181
|
- `true` will show detailed information on failing assertions.
|
182
182
|
This is the default, and best for using `true-cli`.
|
183
183
|
- `false` to turn off all terminal output.
|
184
|
+
|
185
|
+
## API
|
186
|
+
|
187
|
+
### Tests
|
188
|
+
|
189
|
+
Tests help define what we are testing for. They can be used individually or
|
190
|
+
grouped as a test module.
|
191
|
+
|
192
|
+
#### `@include test-module()`
|
193
|
+
|
194
|
+
Defines a test module. Allows the grouping of several common purposed tests.
|
195
|
+
|
196
|
+
- `@param` {`String`} `$description` [''] - Module description
|
197
|
+
|
198
|
+
```scss
|
199
|
+
@include test-module('Description of the module being tested') {
|
200
|
+
// Your tests here
|
201
|
+
}
|
202
|
+
```
|
203
|
+
|
204
|
+
#### `@include test()`
|
205
|
+
|
206
|
+
Defines a test. Allows the definition of a single test for your module.
|
207
|
+
|
208
|
+
- `@param` {`String`} `$description` [''] - Test description
|
209
|
+
|
210
|
+
```scss
|
211
|
+
@include test-module('My test module description') {
|
212
|
+
@include test('Your test description') {
|
213
|
+
// Your asserts go here.
|
214
|
+
}
|
215
|
+
}
|
216
|
+
```
|
217
|
+
|
218
|
+
### Asserts
|
219
|
+
|
220
|
+
Asserts help define what we are testing for. A test must contain at least one
|
221
|
+
assert but can have as many as necessary based on your testing needs.
|
222
|
+
|
223
|
+
#### `@include assert()`
|
224
|
+
|
225
|
+
Defines a single assert for a CSS output. It's used together with the
|
226
|
+
`output()` and `expect()` mixins to compare a mixin with it's expected output.
|
227
|
+
|
228
|
+
|
229
|
+
```scss
|
230
|
+
@include test('Your test description') {
|
231
|
+
@include assert('Your assert description') {
|
232
|
+
@include output {
|
233
|
+
// Mixin to be evaluated
|
234
|
+
@include the-mixin-to-be-tested();
|
235
|
+
}
|
236
|
+
|
237
|
+
@include expect {
|
238
|
+
// The expected output of the-mixin-to-be-tested()
|
239
|
+
...
|
240
|
+
}
|
241
|
+
}
|
242
|
+
}
|
243
|
+
```
|
244
|
+
|
245
|
+
|
246
|
+
#### `@include assert-false()`
|
247
|
+
|
248
|
+
Asserts that the output of a test is falsy. This includes `false`, `null`,
|
249
|
+
`''` (empty string) and `()` (empty list).
|
250
|
+
|
251
|
+
- `@param` {`*`} `$assert` - Assert to be tested
|
252
|
+
- `@param` {`String`} `$description` [''] - Assert description
|
253
|
+
|
254
|
+
```scss
|
255
|
+
@include test('Your test description') {
|
256
|
+
$test: sample-function(5);
|
257
|
+
|
258
|
+
@include assert-false($test, 'Your assert description');
|
259
|
+
}
|
260
|
+
```
|
261
|
+
|
262
|
+
|
263
|
+
#### `@include assert-true()`
|
264
|
+
|
265
|
+
Asserts that the output of a test is not falsy. The test will pass as long as
|
266
|
+
the assert returns something.
|
267
|
+
|
268
|
+
- `@param` {`*`} `$assert` - Assert to be tested
|
269
|
+
- `@param` {`String`} `$description` [''] - Assert description
|
270
|
+
|
271
|
+
```scss
|
272
|
+
@include test('Your test description') {
|
273
|
+
$test: sample-function(5);
|
274
|
+
|
275
|
+
@include assert-true($test, 'Your assert description');
|
276
|
+
}
|
277
|
+
```
|
278
|
+
|
279
|
+
|
280
|
+
#### `@include assert-equal()`
|
281
|
+
|
282
|
+
Asserts that two parameters are equal.
|
283
|
+
|
284
|
+
- `@param` {`*`} `$assert` - Assert to be tested
|
285
|
+
- `@param` {`*`} `$expected` - Expected result
|
286
|
+
- `@param` {`String`} `$description` [''] - Assert description
|
287
|
+
|
288
|
+
```scss
|
289
|
+
@include test('Your test description') {
|
290
|
+
$test: sample-function(5);
|
291
|
+
|
292
|
+
@include assert-equals($test, 10, 'Your assert description');
|
293
|
+
}
|
294
|
+
```
|
295
|
+
|
296
|
+
|
297
|
+
#### `@include assert-unequal()`
|
298
|
+
|
299
|
+
Asserts that two parameters are unequal.
|
300
|
+
|
301
|
+
- `@param` {`*`} `$assert` - Assert to be tested
|
302
|
+
- `@param` {`*`} `$expected` - Expected result
|
303
|
+
- `@param` {`String`} `$description` [''] - Assert description
|
304
|
+
|
305
|
+
```scss
|
306
|
+
@include test('Your test description') {
|
307
|
+
$test: sample-function(5);
|
308
|
+
|
309
|
+
@include assert-unequal($test, 10, 'Your assert description');
|
310
|
+
}
|
311
|
+
```
|
312
|
+
|
313
|
+
### Summary
|
314
|
+
|
315
|
+
Reports show a summary of total, passed, failed, and output to CSS tests. The summary can be output into CSS and/or onto the terminal. If you use Mocha, reporting to the command line is automatic. If you use true-cli, `@include report(terminal)` is required at the end of your main test file for output.
|
316
|
+
|
317
|
+
#### `@include report()`
|
318
|
+
|
319
|
+
Reports summary and stats data into CSS and/or onto the terminal.
|
320
|
+
|
321
|
+
- `@param` {`Bool`} `$terminal` [`true`] - Optionally output results to the terminal
|
322
|
+
- `@param` {`Bool`} `$fail-on-error` [`false`] - Optionally error out the compiler if tests have failed
|
323
|
+
|
324
|
+
```scss
|
325
|
+
@include report();
|
326
|
+
```
|
data/bin/true-cli
CHANGED
@@ -59,8 +59,9 @@ output = with_captured_stdout do
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
+
matches = output.match(%r{(?<tests>\d+) Tests?, (?<passed>\d+) Passed, (?<failed>\d+) Failed})
|
63
|
+
stats_matches = output.match(%r{(?<modules>\d+) Modules?, (?<tests>\d+) Tests?, (?<assertions>\d+) Assertions?})
|
62
64
|
|
63
|
-
matches = output.match(%r{(?<tests>\d+) Tests, (?<passed>\d+) Passed, (?<failed>\d+) Failed})
|
64
65
|
if matches.nil? # return sass errors
|
65
66
|
puts output
|
66
67
|
exit(2)
|
@@ -68,10 +69,15 @@ end
|
|
68
69
|
|
69
70
|
if matches[:failed] == '0'
|
70
71
|
if options['color']
|
71
|
-
|
72
|
-
|
72
|
+
unless options['silent']
|
73
|
+
puts COLORS[:ok] + matches.to_s + COLORS[:end]
|
74
|
+
puts COLORS[:ok] + stats_matches.to_s + COLORS[:end]
|
75
|
+
end
|
73
76
|
else
|
74
|
-
|
77
|
+
unless options['silent']
|
78
|
+
puts matches
|
79
|
+
puts stats_matches
|
80
|
+
end
|
75
81
|
end
|
76
82
|
exit(0)
|
77
83
|
else
|
data/sass/true/_assert.scss
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
// Assert True
|
7
7
|
// -----------
|
8
|
-
/// Assert that a parameter is
|
8
|
+
/// Assert that a parameter is truey (anything not falsey)
|
9
9
|
/// @access public
|
10
10
|
/// @group testing
|
11
11
|
/// @param {*} $assert - Assert
|
@@ -15,15 +15,21 @@
|
|
15
15
|
$description: null
|
16
16
|
) {
|
17
17
|
$default: '"#{inspect($assert)}" should be truthy';
|
18
|
+
$truey-assert: if(
|
19
|
+
not not $assert and
|
20
|
+
$assert != '' and
|
21
|
+
$assert != (),
|
22
|
+
true,
|
23
|
+
false);
|
18
24
|
@include _true-context('assert', $description or $default);
|
19
|
-
@include _true-assert-results('assert-true',
|
25
|
+
@include _true-assert-results('assert-true', $truey-assert, true);
|
20
26
|
}
|
21
27
|
|
22
28
|
|
23
29
|
|
24
30
|
// Assert False
|
25
31
|
// ------------
|
26
|
-
/// Assert that a parameter is
|
32
|
+
/// Assert that a parameter is falsey (false, null, empty stirng or empty list)
|
27
33
|
/// @access public
|
28
34
|
/// @group testing
|
29
35
|
/// @param {*} $assert -
|
@@ -35,8 +41,14 @@
|
|
35
41
|
$description: null
|
36
42
|
) {
|
37
43
|
$default: '"#{inspect($assert)}" should be falsey';
|
44
|
+
$falsey-assert: if(
|
45
|
+
not $assert or
|
46
|
+
$assert == '' or
|
47
|
+
$assert == (),
|
48
|
+
true,
|
49
|
+
false);
|
38
50
|
@include _true-context('assert', $description or $default);
|
39
|
-
@include _true-assert-results('assert-false',
|
51
|
+
@include _true-assert-results('assert-false', $falsey-assert, true);
|
40
52
|
}
|
41
53
|
|
42
54
|
|
@@ -105,6 +117,7 @@
|
|
105
117
|
@content;
|
106
118
|
|
107
119
|
@include _true-update-test('output-to-css');
|
120
|
+
@include _true-update-stats-count('assertions');
|
108
121
|
@include _true-context-pop();
|
109
122
|
@include _true-message(' END_ASSERT ', 'comments');
|
110
123
|
}
|
@@ -211,5 +224,6 @@
|
|
211
224
|
}
|
212
225
|
|
213
226
|
@include _true-update-test($result);
|
227
|
+
@include _true-update-stats-count('assertions');
|
214
228
|
@include _true-context-pop();
|
215
229
|
}
|
data/sass/true/_modules.scss
CHANGED
data/sass/true/_results.scss
CHANGED
@@ -11,12 +11,13 @@
|
|
11
11
|
/// @param {Bool} $terminal [$true-terminal-output] -
|
12
12
|
/// Optionally output results to the terminal
|
13
13
|
/// @param {Bool} $fail-on-error [false] -
|
14
|
-
/// Optionally error out
|
14
|
+
/// Optionally error out the compiler if tests have failed
|
15
15
|
@mixin report(
|
16
16
|
$terminal: $true-terminal-output,
|
17
17
|
$fail-on-error: false
|
18
18
|
) {
|
19
19
|
$message: _true-report-message('global', 'multiple');
|
20
|
+
$stats-message: _true-stats-message($_true-stats-count, 'multiple');
|
20
21
|
|
21
22
|
$fail: map-get($_true-results, 'fail');
|
22
23
|
@if $fail-on-error and ($fail > 0) {
|
@@ -25,12 +26,17 @@
|
|
25
26
|
|
26
27
|
@include _true-message('# SUMMARY ----------', 'comments');
|
27
28
|
@include _true-message($message, 'comments');
|
29
|
+
@include _true-message($stats-message, 'comments');
|
28
30
|
@include _true-message('--------------------', 'comments');
|
29
31
|
|
30
32
|
@if $terminal {
|
31
33
|
$message: _true-report-message('global', 'single');
|
32
34
|
@include _true-message($message, 'debug');
|
35
|
+
|
36
|
+
$stats-message: _true-stats-message($_true-stats-count, 'single');
|
37
|
+
@include _true-message($stats-message, 'debug');
|
33
38
|
}
|
39
|
+
|
34
40
|
}
|
35
41
|
|
36
42
|
|
@@ -95,7 +101,8 @@ $_true-test-result: null;
|
|
95
101
|
/// Report message
|
96
102
|
/// @access private
|
97
103
|
/// @param {String} $scope [test] - Scope
|
98
|
-
/// @param {String} $lines [single] -
|
104
|
+
/// @param {String} $lines [single] -
|
105
|
+
/// Return message either as a single line or in multiple lines
|
99
106
|
/// @return {String} - Reported message
|
100
107
|
@function _true-report-message(
|
101
108
|
$scope: 'test',
|
@@ -110,9 +117,9 @@ $_true-test-result: null;
|
|
110
117
|
$message: null;
|
111
118
|
|
112
119
|
@if $scope == 'global' or $scope == 'module' {
|
113
|
-
$items: 'Tests';
|
120
|
+
$items: if($run == 1, 'Test', 'Tests');
|
114
121
|
} @else if $scope == 'test' {
|
115
|
-
$items: 'Assertions';
|
122
|
+
$items: if($run == 1, 'Assertion', 'Assertions');
|
116
123
|
}
|
117
124
|
|
118
125
|
@if $lines == 'single' {
|
@@ -125,3 +132,59 @@ $_true-test-result: null;
|
|
125
132
|
|
126
133
|
@return $message;
|
127
134
|
}
|
135
|
+
|
136
|
+
// Stats Count
|
137
|
+
// -----------
|
138
|
+
/// Global stats count of how many modules, tests, and assertions are found
|
139
|
+
/// @access private
|
140
|
+
/// @type Map<String: Number>
|
141
|
+
$_true-stats-count: (
|
142
|
+
'modules': 0,
|
143
|
+
'tests': 0,
|
144
|
+
'assertions': 0
|
145
|
+
);
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
// Update stats count
|
150
|
+
// ------------------
|
151
|
+
/// Add to a stats count type count by 1
|
152
|
+
/// @param {String} $type - The stats type to add to
|
153
|
+
/// @access private
|
154
|
+
@mixin _true-update-stats-count($type) {
|
155
|
+
$_true-stats-count: _true-map-increment($_true-stats-count, ($type: 1)) !global;
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
// Stats Message
|
161
|
+
// -------------
|
162
|
+
/// Stats message
|
163
|
+
/// @access private
|
164
|
+
/// @param {Map<String: Number>} $stats [$_true-stats-count] -
|
165
|
+
/// Map that contains the stats counts for modules, tests, and assertions found
|
166
|
+
/// @param {String} $lines [single] -
|
167
|
+
/// Return message either as a single line or in multiple lines
|
168
|
+
/// @return {String} - Stats count message
|
169
|
+
@function _true-stats-message(
|
170
|
+
$stats: $_true-stats-count,
|
171
|
+
$lines: 'single'
|
172
|
+
) {
|
173
|
+
$message: null;
|
174
|
+
|
175
|
+
$modules: map-get($stats, 'modules');
|
176
|
+
$tests: map-get($stats, 'tests');
|
177
|
+
$assertions: map-get($stats, 'assertions');
|
178
|
+
|
179
|
+
$modules-label: if($modules == 1, 'Module', 'Modules');
|
180
|
+
$tests-label: if($tests == 1, 'Test', 'Tests');
|
181
|
+
$assertions-label: if($assertions == 1, 'Assertion', 'Assertions');
|
182
|
+
|
183
|
+
@if $lines == 'single' {
|
184
|
+
$message: '#{$modules} #{$modules-label}, #{$tests} #{$tests-label}, #{$assertions} #{$assertions-label}';
|
185
|
+
} @else {
|
186
|
+
$message: 'Stats: #{$_tnl} - #{$modules} #{$modules-label} #{$_tnl} - #{$tests} #{$tests-label} #{$_tnl} - #{$assertions} #{$assertions-label}';
|
187
|
+
}
|
188
|
+
|
189
|
+
@return $message;
|
190
|
+
}
|
data/sass/true/_tests.scss
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: 'true'
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miriam Eric Suzanne
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
name: sass
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - ~>
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '3.4'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - ~>
|
26
|
+
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '3.4'
|
29
29
|
description: Unit tests for maintaining test-driven Sass libraries.
|
@@ -40,6 +40,11 @@ extra_rdoc_files:
|
|
40
40
|
- README.md
|
41
41
|
- lib/true.rb
|
42
42
|
files:
|
43
|
+
- CHANGELOG.md
|
44
|
+
- LICENSE.txt
|
45
|
+
- README.md
|
46
|
+
- VERSION
|
47
|
+
- bin/true-cli
|
43
48
|
- lib/compass-true.rb
|
44
49
|
- lib/main.js
|
45
50
|
- lib/true.rb
|
@@ -52,37 +57,32 @@ files:
|
|
52
57
|
- sass/true/_settings.scss
|
53
58
|
- sass/true/_tests.scss
|
54
59
|
- sass/true/_utilities.scss
|
55
|
-
- CHANGELOG.md
|
56
|
-
- LICENSE.txt
|
57
|
-
- README.md
|
58
|
-
- VERSION
|
59
|
-
- bin/true-cli
|
60
60
|
homepage: http://oddbird.net/true
|
61
61
|
licenses: []
|
62
62
|
metadata: {}
|
63
63
|
post_install_message:
|
64
64
|
rdoc_options:
|
65
|
-
- --line-numbers
|
66
|
-
- --inline-source
|
67
|
-
- --title
|
65
|
+
- "--line-numbers"
|
66
|
+
- "--inline-source"
|
67
|
+
- "--title"
|
68
68
|
- 'true'
|
69
|
-
- --main
|
69
|
+
- "--main"
|
70
70
|
- README.md
|
71
71
|
require_paths:
|
72
72
|
- lib
|
73
73
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - ">="
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.2'
|
83
83
|
requirements: []
|
84
84
|
rubyforge_project: 'true'
|
85
|
-
rubygems_version: 2.
|
85
|
+
rubygems_version: 2.6.10
|
86
86
|
signing_key:
|
87
87
|
specification_version: 3
|
88
88
|
summary: Testing framework for Sass libraries.
|