true 0.1.5 → 0.2.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +10 -0
- data/README.md +152 -21
- data/sass/_true.scss +2 -0
- data/sass/true/_assert.scss +33 -20
- data/sass/true/_modules.scss +40 -23
- data/sass/true/_results.scss +13 -93
- data/sass/true/_settings.scss +18 -0
- data/sass/true/_tests.scss +49 -12
- data/sass/true/_utilities.scss +18 -0
- metadata +14 -37
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA512:
|
3
|
+
data.tar.gz: 6f95ec4f7cdf95ebafed598af43669a6ce28e8852b5bd2428daf4c05b7bc2f699475591768b26dd36d83e83d381aa74aa7a051354e62c98f81976e99d749df50
|
4
|
+
metadata.gz: d872cde92572c3e64cc67095de8a9acbe9371983a2c3ed3740777b4939ff9699c2d32a375b09a49792c4842b36aa0e3259595dbadd212b4651e9038feafefd9f
|
5
|
+
SHA1:
|
6
|
+
data.tar.gz: 217e7b41d4e4e3cb2e6a6c489b0f5c10c39683c0
|
7
|
+
metadata.gz: 05def0e5b64adad25f18216bce150543bc42dbf9
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
True Changelog
|
2
2
|
==============
|
3
3
|
|
4
|
+
0.2.0 (unreleased)
|
5
|
+
------------------
|
6
|
+
- Simplified reporting in both terminal and CSS.
|
7
|
+
- Remove `default-module-output`, `$default-test-output` and `$default-final-output`.
|
8
|
+
Replace them with `$true` settings map: `(output: css, summary: terminal css)`.
|
9
|
+
`output` handles test/module output, `summary` handles final output.
|
10
|
+
Assertions are always output to the terminal if they fail.
|
11
|
+
- Update to use Sass map variables.
|
12
|
+
- Add `report` function and `report` mixin, for reporting final results.
|
13
|
+
|
4
14
|
0.1.5 (6/10/13)
|
5
15
|
---------------
|
6
16
|
- Append actual results to custom failure messages.
|
data/README.md
CHANGED
@@ -7,16 +7,15 @@ True
|
|
7
7
|
*True the wheels of a bicycle after striking a pothole.*
|
8
8
|
2. To make even, symmetrical, level, etc. (often followed by *up*):
|
9
9
|
*True up the sides of a door.*
|
10
|
-
3.
|
11
|
-
*True your
|
10
|
+
3. To test your Sass/Compass code; debug, perfect, etc. (often using *True*):
|
11
|
+
*True your sweet plugin before you deploy.*
|
12
12
|
|
13
13
|
At this point
|
14
14
|
True can only test values,
|
15
15
|
not property/value output.
|
16
|
-
I'
|
17
|
-
|
18
|
-
|
19
|
-
you use True for logical unit tests,
|
16
|
+
I'm working on output tests as well.
|
17
|
+
For now,
|
18
|
+
use True for logical unit tests,
|
20
19
|
and use version-control for integration testing
|
21
20
|
by comparing changes in output files.
|
22
21
|
|
@@ -34,31 +33,163 @@ in config.rb:
|
|
34
33
|
Usage
|
35
34
|
-----
|
36
35
|
|
37
|
-
|
36
|
+
Production example from
|
37
|
+
[Susy Next](https://github.com/ericam/susy/blob/susy-next/test/scss/math/_columns.scss):
|
38
38
|
|
39
39
|
```scss
|
40
40
|
@import "true";
|
41
41
|
|
42
|
-
//
|
43
|
-
|
42
|
+
// Column Math Tests
|
43
|
+
// =================
|
44
44
|
|
45
|
-
|
46
|
-
@include test('Feature A does The Things') {
|
47
|
-
$test-1: 3*5;
|
48
|
-
$test-2: if(something, true, false);
|
45
|
+
@include test-module('Column Math') {
|
49
46
|
|
50
|
-
|
51
|
-
|
52
|
-
'Simple multiplication of `3*5` should return `15`.');
|
47
|
+
// Is Symmetrical
|
48
|
+
// --------------
|
53
49
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
50
|
+
@include test('[function] is-symmetrical()') {
|
51
|
+
$sym: 12;
|
52
|
+
$asym: 1 2 4 1 2 1;
|
53
|
+
$baz: compact(4);
|
54
|
+
|
55
|
+
// 12 is a symmetrical grid.
|
56
|
+
$s: is-symmetrical($sym);
|
57
|
+
@include assert-true($s,
|
58
|
+
'Simple number should be symmetrical grid.');
|
59
|
+
|
60
|
+
// (1 2 4 1 2 1) is not a symmetrical grid.
|
61
|
+
$a: is-symmetrical($asym);
|
62
|
+
@include assert-false($a,
|
63
|
+
'List should be asymmetrical grid.');
|
64
|
+
|
65
|
+
// compact(4) is not a symmetrical grid (because it is a list).
|
66
|
+
$b: is-symmetrical($baz);
|
67
|
+
@include assert-false($b,
|
68
|
+
'Single-item list should be asymmetrical grid.');
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
// Column Count
|
73
|
+
// ------------
|
74
|
+
|
75
|
+
@include test('[function] column-count()') {
|
76
|
+
$sym: 12;
|
77
|
+
$asym: 1 2 4 1 2 1;
|
78
|
+
|
79
|
+
// A symmetrical grid is equal to its column count.
|
80
|
+
$s-count: column-count($sym);
|
81
|
+
@include assert-equal($s-count, $sym,
|
82
|
+
'Symmetrical grid-count should equal $columns setting.');
|
83
|
+
|
84
|
+
// An asymmetrical grid has a column-count equal to its length.
|
85
|
+
$a-count: column-count($asym);
|
86
|
+
$a-length: length($asym);
|
87
|
+
@include assert-equal($a-count, $a-length,
|
88
|
+
'Asymmetrical grid-count should equal $columns length.');
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
// Column Sum
|
93
|
+
// ----------
|
94
|
+
|
95
|
+
@include test('[function] symmetrical column-sum()') {
|
96
|
+
$cols : 9;
|
97
|
+
$guts : .5;
|
98
|
+
$sum : column-sum($cols, $guts);
|
99
|
+
$outer : column-sum($cols, $guts, outer);
|
100
|
+
|
101
|
+
@include assert-equal($sum, 13,
|
102
|
+
'Column-sum for "9 .5" should be "13".');
|
103
|
+
|
104
|
+
@include assert-equal($outer, 13.5,
|
105
|
+
'Outer column-sum for "9 .5" should be "13.5".');
|
106
|
+
}
|
107
|
+
|
108
|
+
@include test('[function] asymmetrical column-sum()') {
|
109
|
+
$sum : column-sum(1 2 3 1 2, .25);
|
110
|
+
$outer : column-sum(1 2 3 1 2, .25, outer);
|
111
|
+
|
112
|
+
@include assert-equal($sum, 10,
|
113
|
+
'Column-sum for "(1 2 3 1 2) .25" should be "10".');
|
114
|
+
|
115
|
+
@include assert-equal($outer, 10.25,
|
116
|
+
'Outer column-sum for "(1 2 3 1 2) .25" should be "10.25".');
|
117
|
+
}
|
118
|
+
|
119
|
+
|
120
|
+
// Get Columns
|
121
|
+
// -----------
|
122
|
+
|
123
|
+
@include test('[function] symmetrical get-columns()') {
|
124
|
+
$span: 3;
|
125
|
+
$context: 12;
|
126
|
+
$sub: get-columns($span, 4, $context);
|
127
|
+
|
128
|
+
@include assert-equal($sub, $span,
|
129
|
+
'Symmetrical get-columns subset should be equal to its span.');
|
130
|
+
}
|
131
|
+
|
132
|
+
@include test('[function] asymmetrical get-columns()') {
|
133
|
+
$span: 3;
|
134
|
+
$context: 1 2 3 1 2;
|
135
|
+
$sub: get-columns($span, 2, $context);
|
136
|
+
|
137
|
+
@include assert-equal($sub, 2 3 1,
|
138
|
+
'Get-columns subset for "3 of (1 2 3 1 2) at 2" should be "2 3 1".');
|
139
|
+
}
|
140
|
+
|
141
|
+
|
142
|
+
// Get Column Span Sum
|
143
|
+
// -------------------
|
144
|
+
|
145
|
+
@include test('[function] symmetrical get-column-span-sum()') {
|
146
|
+
$cols: 12;
|
147
|
+
$guts: 1/8;
|
148
|
+
|
149
|
+
$sum: get-column-span-sum(3, 2, $cols, $guts);
|
150
|
+
@include assert-equal($sum, 3.25,
|
151
|
+
'Inner span-sum for "3 of 12 1/8 at 2" should be "3.25"');
|
152
|
+
|
153
|
+
$sum: get-column-span-sum(3, last, $cols, $guts, outer);
|
154
|
+
@include assert-equal($sum, 3.375,
|
155
|
+
'Outer span-sum for "last 3 of 12 1/8" should be "3.375".');
|
156
|
+
}
|
157
|
+
|
158
|
+
@include test('[function] asymmetrical get-column-span-sum()') {
|
159
|
+
$cols: 1 2 3 2 1 2 3;
|
160
|
+
$guts: 1/4;
|
161
|
+
|
162
|
+
$sum: get-column-span-sum(3, 2, $cols, $guts);
|
163
|
+
@include assert-equal($sum, 7.5,
|
164
|
+
'Inner span-sum for "3 at 2 of (1 2 3 2 1 2 3)" should be "7.5".');
|
165
|
+
|
166
|
+
$sum: get-column-span-sum(3, last, $cols, $guts, outer);
|
167
|
+
@include assert-equal($sum, 6.75,
|
168
|
+
'Outer span-sum for "last 3 of (1 2 3 2 1 2 3)" should be "6.75".');
|
58
169
|
}
|
59
170
|
|
60
171
|
}
|
61
172
|
```
|
62
173
|
|
63
174
|
**True** will report detailed results in the terminal,
|
64
|
-
and a summary of results in the output css.
|
175
|
+
and a summary of results in the output css.
|
176
|
+
|
177
|
+
Here's the Susy "Column Math" CSS output:
|
178
|
+
|
179
|
+
```css
|
180
|
+
/*
|
181
|
+
|
182
|
+
### Column Math ------ */
|
183
|
+
/* - [function] is-symmetrical() (3 Assertions, 3 Passed, 0 Failed) */
|
184
|
+
/* - [function] column-count() (2 Assertions, 2 Passed, 0 Failed) */
|
185
|
+
/* - [function] symmetrical column-sum() (2 Assertions, 2 Passed, 0 Failed) */
|
186
|
+
/* - [function] asymmetrical column-sum() (2 Assertions, 2 Passed, 0 Failed) */
|
187
|
+
/* - [function] symmetrical get-columns() (1 Assertions, 1 Passed, 0 Failed) */
|
188
|
+
/* - [function] asymmetrical get-columns() (1 Assertions, 1 Passed, 0 Failed) */
|
189
|
+
/* - [function] symmetrical get-column-span-sum() (2 Assertions, 2 Passed, 0 Failed) */
|
190
|
+
/* - [function] asymmetrical get-column-span-sum() (2 Assertions, 2 Passed, 0 Failed) */
|
191
|
+
/*
|
192
|
+
8 Tests:
|
193
|
+
- 8 Passed
|
194
|
+
- 0 Failed */
|
195
|
+
```
|
data/sass/_true.scss
CHANGED
data/sass/true/_assert.scss
CHANGED
@@ -3,42 +3,55 @@
|
|
3
3
|
|
4
4
|
@mixin assert-true(
|
5
5
|
$assert,
|
6
|
-
$fail-message:
|
6
|
+
$fail-message: ''
|
7
7
|
) {
|
8
|
-
$
|
9
|
-
$fail-message: $fail-message + $
|
10
|
-
|
11
|
-
@
|
8
|
+
$test: map-get($test-results, name);
|
9
|
+
$fail-message: '#{$test}: ' + $fail-message + ' (#{$assert} is not true)';
|
10
|
+
$result: if($assert, pass, fail);
|
11
|
+
@include report-assert($result, $fail-message);
|
12
12
|
}
|
13
13
|
|
14
14
|
@mixin assert-false(
|
15
15
|
$assert,
|
16
|
-
$fail-message:
|
16
|
+
$fail-message: ''
|
17
17
|
) {
|
18
|
-
$
|
19
|
-
$fail-message: $fail-message + $
|
20
|
-
|
21
|
-
@
|
18
|
+
$test: map-get($test-results, name);
|
19
|
+
$fail-message: '#{$test}: ' + $fail-message + ' (#{$assert} is not false)';
|
20
|
+
$result: if(not $assert, pass, fail);
|
21
|
+
@include report-assert($result, $fail-message);
|
22
22
|
}
|
23
23
|
|
24
24
|
@mixin assert-equal(
|
25
25
|
$assert,
|
26
26
|
$expected,
|
27
|
-
$fail-message:
|
27
|
+
$fail-message: ''
|
28
28
|
) {
|
29
|
-
$
|
30
|
-
$fail-message: $fail-message + $
|
31
|
-
|
32
|
-
@
|
29
|
+
$test: map-get($test-results, name);
|
30
|
+
$fail-message: '#{$test}: ' + $fail-message + ' (#{$assert} != #{$expected})';
|
31
|
+
$result: if($assert == $expected, pass, fail);
|
32
|
+
@include report-assert($result, $fail-message);
|
33
33
|
}
|
34
34
|
|
35
35
|
@mixin assert-unequal(
|
36
36
|
$assert,
|
37
37
|
$expected,
|
38
|
-
$fail-message:
|
38
|
+
$fail-message: ''
|
39
39
|
) {
|
40
|
-
$
|
41
|
-
$fail-message: $fail-message + $
|
42
|
-
|
43
|
-
@
|
40
|
+
$test: map-get($test-results, name);
|
41
|
+
$fail-message: '#{$test}: ' + $fail-message + ' (#{$assert} == #{$expected})';
|
42
|
+
$result: if($assert != $expected, pass, fail);
|
43
|
+
@include report-assert($result, $fail-message);
|
44
|
+
}
|
45
|
+
|
46
|
+
// Pass / Fail
|
47
|
+
// -----------
|
48
|
+
|
49
|
+
@mixin report-assert(
|
50
|
+
$result,
|
51
|
+
$fail-message: ''
|
52
|
+
) {
|
53
|
+
@if $result == fail and $fail-message {
|
54
|
+
@warn $fail-message;
|
55
|
+
}
|
56
|
+
$test-results: map-add($test-results, (run: 1, $result: 1)) !global;
|
44
57
|
}
|
data/sass/true/_modules.scss
CHANGED
@@ -1,45 +1,62 @@
|
|
1
|
-
// Test
|
2
|
-
//
|
1
|
+
// Test Module
|
2
|
+
// ===========
|
3
3
|
|
4
|
-
$
|
4
|
+
$module-results: null;
|
5
5
|
|
6
|
-
// Establish a new test module
|
7
6
|
@mixin test-module(
|
8
7
|
$name,
|
9
|
-
$output: true
|
8
|
+
$output: map-get($true, output)
|
10
9
|
) {
|
11
|
-
|
12
|
-
$
|
13
|
-
|
10
|
+
$module-results: $blank-results !global;
|
11
|
+
@include setup-module($name, $output);
|
12
|
+
@content;
|
13
|
+
@include report-module($name, $module-results, $output);
|
14
|
+
$module-results: null !global;
|
15
|
+
}
|
16
|
+
|
14
17
|
|
15
|
-
|
18
|
+
// Module Setup (private)
|
19
|
+
// ----------------------
|
20
|
+
@mixin setup-module(
|
21
|
+
$name,
|
22
|
+
$output: map-get($true, output)
|
23
|
+
) {
|
24
|
+
// Initial CSS Output
|
25
|
+
@if index($output, css) {
|
16
26
|
@include result-message('
|
17
27
|
|
18
28
|
### #{$name} ------', css);
|
19
29
|
}
|
30
|
+
}
|
20
31
|
|
21
|
-
// Content
|
22
|
-
@content;
|
23
32
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
33
|
+
// Module Results (private)
|
34
|
+
// ------------------------
|
35
|
+
@mixin report-module(
|
36
|
+
$name,
|
37
|
+
$module-results,
|
38
|
+
$output: map-get($true, output)
|
39
|
+
) {
|
30
40
|
|
31
|
-
|
41
|
+
// Terminal Results
|
42
|
+
@if index($output, terminal) {
|
43
|
+
$debug-message: '#{$name}: #{report($module-results, Tests)})';
|
32
44
|
@include result-message($debug-message, debug);
|
45
|
+
}
|
46
|
+
|
47
|
+
// CSS Results
|
48
|
+
@if index($output, css) {
|
49
|
+
$run: map-get($module-results, run);
|
50
|
+
$pass: map-get($module-results, pass);
|
51
|
+
$fail: map-get($module-results, fail);
|
33
52
|
|
34
53
|
$css-message: '
|
35
|
-
|
36
|
-
- #{$total} Tests
|
54
|
+
#{$run} Tests:
|
37
55
|
- #{$pass} Passed
|
38
56
|
- #{$fail} Failed';
|
39
57
|
@include result-message($css-message, css);
|
40
58
|
}
|
41
59
|
|
42
|
-
//
|
43
|
-
$
|
44
|
-
$test-module-results: null;
|
60
|
+
// Add to Total
|
61
|
+
$true-results: map-add($true-results, $module-results) !global;
|
45
62
|
}
|
data/sass/true/_results.scss
CHANGED
@@ -1,104 +1,24 @@
|
|
1
1
|
// Results
|
2
2
|
// =======
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
$
|
7
|
-
$fail-marker : f;
|
8
|
-
|
9
|
-
$test-pass-message : '.' !default;
|
10
|
-
$test-fail-message : 'F' !default;
|
11
|
-
|
12
|
-
// Collate test results
|
13
|
-
// --------------------
|
14
|
-
|
15
|
-
@function collate-results(
|
16
|
-
$results
|
17
|
-
) {
|
18
|
-
$total: length($results);
|
19
|
-
$pass: 0;
|
20
|
-
$fail: 0;
|
21
|
-
|
22
|
-
@each $test in $results {
|
23
|
-
@if $test == $pass-marker { $pass: $pass + 1; }
|
24
|
-
@if $test == $fail-marker { $fail: $fail + 1; }
|
25
|
-
}
|
26
|
-
|
27
|
-
@return $total $pass $fail;
|
28
|
-
}
|
29
|
-
|
30
|
-
|
31
|
-
// Record test results
|
32
|
-
// -------------------
|
33
|
-
|
34
|
-
@mixin record-result(
|
35
|
-
$result,
|
36
|
-
$context: $test-result-context
|
4
|
+
@function report(
|
5
|
+
$results: $true-results,
|
6
|
+
$items: 'Tests'
|
37
7
|
) {
|
38
|
-
$
|
8
|
+
$run: map-get($results, run);
|
9
|
+
$pass: map-get($results, pass);
|
10
|
+
$fail: map-get($results, fail);
|
39
11
|
|
40
|
-
|
41
|
-
$marker: $pass-marker;
|
42
|
-
} @else if $result == 'fail' {
|
43
|
-
$marker: $fail-marker;
|
44
|
-
}
|
12
|
+
$message: '#{$run} #{$items}, #{$pass} Passed, #{$fail} Failed';
|
45
13
|
|
46
|
-
|
47
|
-
@if $context == 'test' {
|
48
|
-
$test-results: append($test-results, $marker);
|
49
|
-
} @else if $context == 'module' {
|
50
|
-
$test-module-results: append($test-module-results, $marker);
|
51
|
-
}
|
14
|
+
@return $message;
|
52
15
|
}
|
53
16
|
|
54
|
-
|
55
|
-
|
56
|
-
// -------------------
|
57
|
-
|
58
|
-
@mixin report-test(
|
59
|
-
$name,
|
60
|
-
$results,
|
61
|
-
$context: module,
|
62
|
-
$output: true
|
17
|
+
@mixin report(
|
18
|
+
$output: map-get($true, summary)
|
63
19
|
) {
|
64
|
-
$
|
65
|
-
|
66
|
-
|
67
|
-
$fail: nth($results, 3);
|
68
|
-
|
69
|
-
$message: '#{$name} (#{$total} assertions, #{$pass} passed, #{$fail} failed)';
|
70
|
-
|
71
|
-
@if $fail > 0 or $pass < 1 {
|
72
|
-
$fail-message: '- FAIL: ' + $message;
|
73
|
-
@include fail($fail-message, $context, $output: $output);
|
74
|
-
@if $output { @include result-message('FAIL: ' + $message, css); }
|
20
|
+
$message: report($true-results);
|
21
|
+
@if index($output, terminal) {
|
22
|
+
@include result-message('SUMMARY: ' + $message, debug);
|
75
23
|
}
|
76
|
-
@else {
|
77
|
-
$pass-message: '- ' + $message;
|
78
|
-
@include pass($test-pass-message, $context, $output: $output);
|
79
|
-
@if $output { @include result-message($pass-message, css); }
|
80
|
-
}
|
81
|
-
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
// Pass / Fail
|
86
|
-
// -----------
|
87
|
-
|
88
|
-
@mixin pass(
|
89
|
-
$pass: $test-pass-message,
|
90
|
-
$context: $test-result-context,
|
91
|
-
$output: true
|
92
|
-
) {
|
93
|
-
@include record-result(pass, $context);
|
94
|
-
@if $output { @include result-message($pass, debug); }
|
95
|
-
}
|
96
|
-
|
97
|
-
@mixin fail(
|
98
|
-
$fail: $test-fail-message,
|
99
|
-
$context: $test-result-context,
|
100
|
-
$output: true
|
101
|
-
) {
|
102
|
-
@include record-result(fail, $context);
|
103
|
-
@if $output { @include result-message($fail, warn); }
|
104
24
|
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
// True Settings
|
2
|
+
// =============
|
3
|
+
|
4
|
+
$true: (
|
5
|
+
output: css,
|
6
|
+
summary: terminal css
|
7
|
+
) !default;
|
8
|
+
|
9
|
+
|
10
|
+
// Results (private)
|
11
|
+
// -----------------
|
12
|
+
$blank-results: (
|
13
|
+
run: 0,
|
14
|
+
pass: 0,
|
15
|
+
fail: 0,
|
16
|
+
);
|
17
|
+
|
18
|
+
$true-results: $blank-results;
|
data/sass/true/_tests.scss
CHANGED
@@ -6,22 +6,59 @@ $test-results: null;
|
|
6
6
|
// Establish a new test
|
7
7
|
@mixin test(
|
8
8
|
$name,
|
9
|
-
$output: true
|
9
|
+
$output: map-get($true, output)
|
10
10
|
) {
|
11
|
-
|
12
|
-
|
11
|
+
$test-results: map-merge($blank-results, (name: $name)) !global;
|
12
|
+
@content;
|
13
|
+
@include report-test($name, $test-results, $output);
|
14
|
+
$test-results: null !global;
|
15
|
+
}
|
13
16
|
|
14
|
-
|
15
|
-
|
16
|
-
$test-result-context: test;
|
17
|
+
// Report test results
|
18
|
+
// -------------------
|
17
19
|
|
18
|
-
|
20
|
+
@mixin report-test(
|
21
|
+
$name,
|
22
|
+
$results,
|
23
|
+
$output: map-get($true, output)
|
24
|
+
) {
|
25
|
+
$pass: map-get($results, pass);
|
26
|
+
$fail: map-get($results, fail);
|
27
|
+
$result: if($fail > 0 or $pass < 1, fail, pass);
|
28
|
+
|
29
|
+
$message: '#{$name} (#{report($results, Assertions)})';
|
30
|
+
|
31
|
+
@include test-result($result, $message, $output);
|
32
|
+
}
|
33
|
+
|
34
|
+
// Pass / Fail Tests
|
35
|
+
// -----------------
|
36
|
+
|
37
|
+
@mixin test-result(
|
38
|
+
$result,
|
39
|
+
$message: '',
|
40
|
+
$output: map-get($true, output)
|
41
|
+
) {
|
42
|
+
$css: null;
|
43
|
+
$terminal: null;
|
44
|
+
|
45
|
+
@if $result == fail {
|
46
|
+
$message: if($message, $message, map-get($true, fail));
|
47
|
+
$css: '- FAIL: ' + if($message, $message, '');
|
48
|
+
$terminal: 'FAIL: ' + if($message, $message, '');
|
49
|
+
} @else if $result == pass {
|
50
|
+
$message: if($message, $message, map-get($true, pass));
|
51
|
+
$css: '- ' + if($message, $message, '');
|
52
|
+
$terminal: if($message, $message, '');
|
53
|
+
}
|
19
54
|
|
20
|
-
$
|
55
|
+
@if index($output, terminal) and $terminal {
|
56
|
+
@include result-message($terminal, debug);
|
57
|
+
}
|
21
58
|
|
22
|
-
|
23
|
-
|
59
|
+
@if index($output, css) and $css {
|
60
|
+
@include result-message($css, css);
|
61
|
+
}
|
24
62
|
|
25
|
-
|
26
|
-
$test-results: null;
|
63
|
+
$module-results: map-add($module-results, (run: 1, $result: 1)) !global;
|
27
64
|
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
// Utilities
|
2
|
+
// =========
|
3
|
+
|
4
|
+
// Add map values together
|
5
|
+
@function map-add(
|
6
|
+
$base,
|
7
|
+
$add
|
8
|
+
) {
|
9
|
+
@each $key, $value in $add {
|
10
|
+
@if $value {
|
11
|
+
$base-value: map-get($base, $key);
|
12
|
+
$new-value: if($base-value, $base-value + $value, $value);
|
13
|
+
$base: map-merge($base, ($key: $new-value));
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
@return $base;
|
18
|
+
}
|
metadata
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: "true"
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 5
|
10
|
-
version: 0.1.5
|
4
|
+
version: 0.2.0.rc.1
|
11
5
|
platform: ruby
|
12
6
|
authors:
|
13
7
|
- Eric Meyer
|
@@ -15,41 +9,29 @@ autorequire:
|
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
11
|
|
18
|
-
date: 2013-
|
12
|
+
date: 2013-10-22 00:00:00 Z
|
19
13
|
dependencies:
|
20
14
|
- !ruby/object:Gem::Dependency
|
21
15
|
name: compass
|
22
16
|
prerelease: false
|
23
17
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
18
|
requirements:
|
26
|
-
- -
|
19
|
+
- - ~>
|
27
20
|
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 12
|
32
|
-
- 2
|
33
|
-
version: 0.12.2
|
21
|
+
version: 0.13.alpha.7
|
34
22
|
type: :runtime
|
35
23
|
version_requirements: *id001
|
36
24
|
- !ruby/object:Gem::Dependency
|
37
25
|
name: sass
|
38
26
|
prerelease: false
|
39
27
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
28
|
requirements:
|
42
|
-
- -
|
29
|
+
- - ~>
|
43
30
|
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
segments:
|
46
|
-
- 3
|
47
|
-
- 2
|
48
|
-
- 0
|
49
|
-
version: 3.2.0
|
31
|
+
version: 3.3.0.rc.1
|
50
32
|
type: :runtime
|
51
33
|
version_requirements: *id002
|
52
|
-
description:
|
34
|
+
description: Unit tests for maintaining test-driven Sass/Compass extensions.
|
53
35
|
email:
|
54
36
|
- eric@oddbird.net
|
55
37
|
executables: []
|
@@ -68,13 +50,17 @@ files:
|
|
68
50
|
- sass/true/_messages.scss
|
69
51
|
- sass/true/_modules.scss
|
70
52
|
- sass/true/_results.scss
|
53
|
+
- sass/true/_settings.scss
|
71
54
|
- sass/true/_tests.scss
|
55
|
+
- sass/true/_utilities.scss
|
72
56
|
- CHANGELOG.md
|
73
57
|
- LICENSE.txt
|
74
58
|
- README.md
|
75
|
-
homepage: http://
|
59
|
+
homepage: http://eric.andmeyer.com/true
|
76
60
|
licenses: []
|
77
61
|
|
62
|
+
metadata: {}
|
63
|
+
|
78
64
|
post_install_message:
|
79
65
|
rdoc_options:
|
80
66
|
- --line-numbers
|
@@ -86,30 +72,21 @@ rdoc_options:
|
|
86
72
|
require_paths:
|
87
73
|
- lib
|
88
74
|
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
75
|
requirements:
|
91
76
|
- - ">="
|
92
77
|
- !ruby/object:Gem::Version
|
93
|
-
hash: 3
|
94
|
-
segments:
|
95
|
-
- 0
|
96
78
|
version: "0"
|
97
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
80
|
requirements:
|
100
81
|
- - ">="
|
101
82
|
- !ruby/object:Gem::Version
|
102
|
-
hash: 11
|
103
|
-
segments:
|
104
|
-
- 1
|
105
|
-
- 2
|
106
83
|
version: "1.2"
|
107
84
|
requirements: []
|
108
85
|
|
109
86
|
rubyforge_project: "true"
|
110
|
-
rubygems_version:
|
87
|
+
rubygems_version: 2.0.3
|
111
88
|
signing_key:
|
112
89
|
specification_version: 3
|
113
|
-
summary: Testing framework for
|
90
|
+
summary: Testing framework for Sass libraries.
|
114
91
|
test_files: []
|
115
92
|
|