guard-cunit 0.0.1-x86-linux

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.
Files changed (63) hide show
  1. data/.travis.yml +11 -0
  2. data/CHANGELOG.md +1 -0
  3. data/Gemfile +6 -0
  4. data/Guardfile +11 -0
  5. data/README.md +70 -0
  6. data/Rakefile +24 -0
  7. data/doc/Gemfile.html +110 -0
  8. data/doc/Guard/Cunit/CunitParser.html +396 -0
  9. data/doc/Guard/Cunit/Runner.html +522 -0
  10. data/doc/Guard/Cunit.html +278 -0
  11. data/doc/Guard/CunitGuard.html +156 -0
  12. data/doc/Guard/Dsl.html +338 -0
  13. data/doc/Guard.html +149 -0
  14. data/doc/Guardfile.html +116 -0
  15. data/doc/Object.html +359 -0
  16. data/doc/Rakefile.html +132 -0
  17. data/doc/TempPrjEnv.html +239 -0
  18. data/doc/TestOutput.html +235 -0
  19. data/doc/created.rid +12 -0
  20. data/doc/images/add.png +0 -0
  21. data/doc/images/brick.png +0 -0
  22. data/doc/images/brick_link.png +0 -0
  23. data/doc/images/bug.png +0 -0
  24. data/doc/images/bullet_black.png +0 -0
  25. data/doc/images/bullet_toggle_minus.png +0 -0
  26. data/doc/images/bullet_toggle_plus.png +0 -0
  27. data/doc/images/date.png +0 -0
  28. data/doc/images/delete.png +0 -0
  29. data/doc/images/find.png +0 -0
  30. data/doc/images/loadingAnimation.gif +0 -0
  31. data/doc/images/macFFBgHack.png +0 -0
  32. data/doc/images/package.png +0 -0
  33. data/doc/images/page_green.png +0 -0
  34. data/doc/images/page_white_text.png +0 -0
  35. data/doc/images/page_white_width.png +0 -0
  36. data/doc/images/plugin.png +0 -0
  37. data/doc/images/ruby.png +0 -0
  38. data/doc/images/tag_blue.png +0 -0
  39. data/doc/images/tag_green.png +0 -0
  40. data/doc/images/transparent.png +0 -0
  41. data/doc/images/wrench.png +0 -0
  42. data/doc/images/wrench_orange.png +0 -0
  43. data/doc/images/zoom.png +0 -0
  44. data/doc/index.html +102 -0
  45. data/doc/js/darkfish.js +153 -0
  46. data/doc/js/jquery.js +18 -0
  47. data/doc/js/navigation.js +142 -0
  48. data/doc/js/search.js +94 -0
  49. data/doc/js/search_index.js +1 -0
  50. data/doc/js/searcher.js +228 -0
  51. data/doc/lib/guard/cunit/templates/Guardfile.html +115 -0
  52. data/doc/rdoc.css +543 -0
  53. data/doc/table_of_contents.html +157 -0
  54. data/guard-cunit.gemspec +29 -0
  55. data/lib/guard/cunit/cunit_parser.rb +70 -0
  56. data/lib/guard/cunit/runner.rb +99 -0
  57. data/lib/guard/cunit/templates/Guardfile +12 -0
  58. data/lib/guard/cunit/version.rb +7 -0
  59. data/lib/guard/cunit.rb +69 -0
  60. data/spec/guard_cunit_parser_spec.rb +79 -0
  61. data/spec/guard_cunit_spec.rb +198 -0
  62. data/spec/spec_helper.rb +72 -0
  63. metadata +167 -0
@@ -0,0 +1 @@
1
+ var search_data = {"index":{"searchIndex":["guard","guard","cunit","cunitparser","runner","cunitguard","dsl","object","tempprjenv","testoutput","cleanup_tmp_prj_dir()","create_tmp_prj_dir()","cunit_output()","cunit_runner()","failures_output()","fake_test_exe()","full_output()","get_failures()","get_summary()","guardfile_has_unit_test_exe()","libdir()","limit_to_rows()","limit_to_rows!()","new()","new()","new()","new()","parse_output()","popen_failing_fake()","popen_successfull_fake()","run()","run_all()","run_clean()","run_make()","run_on_change()","run_task()","run_tests()","set_builder()","set_builder()","set_cleaner()","set_cleaner()","set_libdir()","set_runner()","setup_guard()","gemfile","guardfile","rakefile","guardfile"],"longSearchIndex":["guard","guard","guard::cunit","guard::cunit::cunitparser","guard::cunit::runner","guard::cunitguard","guard::dsl","object","tempprjenv","testoutput","tempprjenv::cleanup_tmp_prj_dir()","tempprjenv::create_tmp_prj_dir()","guard::cunit::cunitparser#cunit_output()","guard::dsl#cunit_runner()","guard::cunit::cunitparser#failures_output()","object#fake_test_exe()","guard::cunit::cunitparser#full_output()","guard::cunit::cunitparser#get_failures()","guard::cunit::cunitparser#get_summary()","object#guardfile_has_unit_test_exe()","guard::dsl#libdir()","testoutput#limit_to_rows()","testoutput#limit_to_rows!()","guard::cunit::new()","guard::cunit::cunitparser::new()","guard::cunit::runner::new()","guard::dsl::new()","guard::cunit::cunitparser#parse_output()","object#popen_failing_fake()","object#popen_successfull_fake()","guard::cunit::runner#run()","guard::cunit#run_all()","guard::cunit::runner#run_clean()","guard::cunit::runner#run_make()","guard::cunit#run_on_change()","guard::cunit::runner#run_task()","guard::cunit::runner#run_tests()","guard::cunit::runner::set_builder()","guard::dsl#set_builder()","guard::cunit::runner::set_cleaner()","guard::dsl#set_cleaner()","guard::cunit::runner::set_libdir()","guard::cunit::runner::set_runner()","object#setup_guard()","","","",""],"info":[["Guard","","Guard.html","","<p>version\n"],["Guard","","Guard.html","",""],["Guard::Cunit","","Guard/Cunit.html","","<p>main child class of Guard to nherit guard’s behaviour\n"],["Guard::Cunit::CunitParser","","Guard/Cunit/CunitParser.html","",""],["Guard::Cunit::Runner","","Guard/Cunit/Runner.html","","<p>the class implements running and handling of results of the tasks that made\nup the cunit guard\n"],["Guard::CunitGuard","","Guard/CunitGuard.html","",""],["Guard::Dsl","","Guard/Dsl.html","","<p>add more behaviour to Guard’s DSL to be able to configure executors of all\nthe CUnit’s Guard tasks\n"],["Object","","Object.html","",""],["TempPrjEnv","","TempPrjEnv.html","","<p>a class to set/cleanup environment for fake project\n"],["TestOutput","","TestOutput.html","",""],["cleanup_tmp_prj_dir","TempPrjEnv","TempPrjEnv.html#method-c-cleanup_tmp_prj_dir","()","<p>cleanup the subdir\n"],["create_tmp_prj_dir","TempPrjEnv","TempPrjEnv.html#method-c-create_tmp_prj_dir","()","<p>create a tmp subdir and within it fake project directory\n"],["cunit_output","Guard::Cunit::CunitParser","Guard/Cunit/CunitParser.html#method-i-cunit_output","()","<p>display summary of the suites/tests/asserts\n"],["cunit_runner","Guard::Dsl","Guard/Dsl.html#method-i-cunit_runner","(name)","<p>dsl call to set cunit test executable\n"],["failures_output","Guard::Cunit::CunitParser","Guard/Cunit/CunitParser.html#method-i-failures_output","()","<p>display failures output\n"],["fake_test_exe","Object","Object.html#method-i-fake_test_exe","(exe_name,successful = :fail)","<p>fake the test executable runner, its existance and result\n"],["full_output","Guard::Cunit::CunitParser","Guard/Cunit/CunitParser.html#method-i-full_output","()","<p>copy of the cunit output\n"],["get_failures","Guard::Cunit::CunitParser","Guard/Cunit/CunitParser.html#method-i-get_failures","()","<p>find failures from Cunit test report\n"],["get_summary","Guard::Cunit::CunitParser","Guard/Cunit/CunitParser.html#method-i-get_summary","()","<p>find summary of the cunit test reprot\n"],["guardfile_has_unit_test_exe","Object","Object.html#method-i-guardfile_has_unit_test_exe","(params={ :test_exe=>nil, :builder=>nil, :cleaner=>nil, :libdir=>nil})","<p>a generator for CUnit Guardfile\n"],["libdir","Guard::Dsl","Guard/Dsl.html#method-i-libdir","(name)","<p>dsl call to set dir, where library under test is generated, by default\ncurrent dir\n"],["limit_to_rows","TestOutput","TestOutput.html#method-i-limit_to_rows","(number_of_rows)","<p>limit the output to given nr rows\n"],["limit_to_rows!","TestOutput","TestOutput.html#method-i-limit_to_rows-21","(number_of_rows)","<p>bang version\n"],["new","Guard::Cunit","Guard/Cunit.html#method-c-new","(watchers = [], options = {})","<p>new method that also creates the runner class\n"],["new","Guard::Cunit::CunitParser","Guard/Cunit/CunitParser.html#method-c-new","(task_output = nil)","<p>constructor\n"],["new","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-c-new","()",""],["new","Guard::Dsl","Guard/Dsl.html#method-c-new","()","<p>put default values to task executors\n"],["parse_output","Guard::Cunit::CunitParser","Guard/Cunit/CunitParser.html#method-i-parse_output","( task_output )","<p>get cunit output\n"],["popen_failing_fake","Object","Object.html#method-i-popen_failing_fake","(fakename)","<p>setup stub for system command with failing exit result\n"],["popen_successfull_fake","Object","Object.html#method-i-popen_successfull_fake","(fakename)","<p>setup stub for system command with successful exit result\n"],["run","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-i-run","()","<p>run them all\n"],["run_all","Guard::Cunit","Guard/Cunit.html#method-i-run_all","()","<p>Called when just `enter` is pressed This method should be principally used\nfor long action like running …\n"],["run_clean","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-i-run_clean","()","<p>run clean before each run all start with clean\n"],["run_make","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-i-run_make","()","<p>run make command to build the project\n"],["run_on_change","Guard::Cunit","Guard/Cunit.html#method-i-run_on_change","(paths)",""],["run_task","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-i-run_task","(task_executable)","<p>run one phase of the guard via a system command/executable\n"],["run_tests","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-i-run_tests","()","<p>run unit tests via cunit executable\n"],["set_builder","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-c-set_builder","(name)","<p>set command to run to prepare build\n"],["set_builder","Guard::Dsl","Guard/Dsl.html#method-i-set_builder","(name)","<p>dsl call to set cunit build command/script, by default make\n"],["set_cleaner","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-c-set_cleaner","(name)","<p>set cleaner script/exe/command\n"],["set_cleaner","Guard::Dsl","Guard/Dsl.html#method-i-set_cleaner","(name)","<p>dsl call to set cunit clean command/script, by default ‘make clean’\n"],["set_libdir","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-c-set_libdir","(name)","<p>set directory where library under test is generated\n"],["set_runner","Guard::Cunit::Runner","Guard/Cunit/Runner.html#method-c-set_runner","(name)","<p>set the executable file name to run CUNIT tests\n"],["setup_guard","Object","Object.html#method-i-setup_guard","()",""],["Gemfile","","Gemfile.html","","<p>source “rubygems.org”\n<p># Specify your gem’s dependencies in guard-cunit.gemspec gemspec gem\n‘guard’, …\n"],["Guardfile","","Guardfile.html","","<p># A sample Guardfile # More info at github.com/guard/guard#readme\n<p>guard ‘rspec’, :version =&gt; 2 do\n\n<pre>watch(%r{^spec/.+_spec\\.rb$}) ...</pre>\n"],["Rakefile","","Rakefile.html","","<p>require “bundler/gem_tasks” require ‘rspec/core/rake_task’\n<p>Bundler::GemHelper.install_tasks …\n"],["Guardfile","","lib/guard/cunit/templates/Guardfile.html","","<p># # Cunit Guardfile - keep dflt builders after guard watcher’s block #\nguard ‘cunit’ do\n\n<pre>watch(%r{((.+)\\.c$)|((.+)\\.h$)|((M|m)akefile$)} ...</pre>\n"]]}}
@@ -0,0 +1,228 @@
1
+ Searcher = function(data) {
2
+ this.data = data;
3
+ this.handlers = [];
4
+ }
5
+
6
+ Searcher.prototype = new function() {
7
+ // search is performed in chunks of 1000 for non-blocking user input
8
+ var CHUNK_SIZE = 1000;
9
+ // do not try to find more than 100 results
10
+ var MAX_RESULTS = 100;
11
+ var huid = 1;
12
+ var suid = 1;
13
+ var runs = 0;
14
+
15
+ this.find = function(query) {
16
+ var queries = splitQuery(query);
17
+ var regexps = buildRegexps(queries);
18
+ var highlighters = buildHilighters(queries);
19
+ var state = { from: 0, pass: 0, limit: MAX_RESULTS, n: suid++};
20
+ var _this = this;
21
+
22
+ this.currentSuid = state.n;
23
+
24
+ if (!query) return;
25
+
26
+ var run = function() {
27
+ // stop current search thread if new search started
28
+ if (state.n != _this.currentSuid) return;
29
+
30
+ var results =
31
+ performSearch(_this.data, regexps, queries, highlighters, state);
32
+ var hasMore = (state.limit > 0 && state.pass < 4);
33
+
34
+ triggerResults.call(_this, results, !hasMore);
35
+ if (hasMore) {
36
+ setTimeout(run, 2);
37
+ }
38
+ runs++;
39
+ };
40
+ runs = 0;
41
+
42
+ // start search thread
43
+ run();
44
+ }
45
+
46
+ /* ----- Events ------ */
47
+ this.ready = function(fn) {
48
+ fn.huid = huid;
49
+ this.handlers.push(fn);
50
+ }
51
+
52
+ /* ----- Utilities ------ */
53
+ function splitQuery(query) {
54
+ return jQuery.grep(query.split(/(\s+|::?|\(\)?)/), function(string) {
55
+ return string.match(/\S/)
56
+ });
57
+ }
58
+
59
+ function buildRegexps(queries) {
60
+ return jQuery.map(queries, function(query) {
61
+ return new RegExp(query.replace(/(.)/g, '([$1])([^$1]*?)'), 'i')
62
+ });
63
+ }
64
+
65
+ function buildHilighters(queries) {
66
+ return jQuery.map(queries, function(query) {
67
+ return jQuery.map(query.split(''), function(l, i) {
68
+ return '\u0001$' + (i*2+1) + '\u0002$' + (i*2+2);
69
+ }).join('');
70
+ });
71
+ }
72
+
73
+ // function longMatchRegexp(index, longIndex, regexps) {
74
+ // for (var i = regexps.length - 1; i >= 0; i--){
75
+ // if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false;
76
+ // };
77
+ // return true;
78
+ // }
79
+
80
+
81
+ /* ----- Mathchers ------ */
82
+
83
+ /*
84
+ * This record matches if the index starts with queries[0] and the record
85
+ * matches all of the regexps
86
+ */
87
+ function matchPassBeginning(index, longIndex, queries, regexps) {
88
+ if (index.indexOf(queries[0]) != 0) return false;
89
+ for (var i=1, l = regexps.length; i < l; i++) {
90
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
91
+ return false;
92
+ };
93
+ return true;
94
+ }
95
+
96
+ /*
97
+ * This record matches if the longIndex starts with queries[0] and the
98
+ * longIndex matches all of the regexps
99
+ */
100
+ function matchPassLongIndex(index, longIndex, queries, regexps) {
101
+ if (longIndex.indexOf(queries[0]) != 0) return false;
102
+ for (var i=1, l = regexps.length; i < l; i++) {
103
+ if (!longIndex.match(regexps[i]))
104
+ return false;
105
+ };
106
+ return true;
107
+ }
108
+
109
+ /*
110
+ * This record matches if the index contains queries[0] and the record
111
+ * matches all of the regexps
112
+ */
113
+ function matchPassContains(index, longIndex, queries, regexps) {
114
+ if (index.indexOf(queries[0]) == -1) return false;
115
+ for (var i=1, l = regexps.length; i < l; i++) {
116
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
117
+ return false;
118
+ };
119
+ return true;
120
+ }
121
+
122
+ /*
123
+ * This record matches if regexps[0] matches the index and the record
124
+ * matches all of the regexps
125
+ */
126
+ function matchPassRegexp(index, longIndex, queries, regexps) {
127
+ if (!index.match(regexps[0])) return false;
128
+ for (var i=1, l = regexps.length; i < l; i++) {
129
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
130
+ return false;
131
+ };
132
+ return true;
133
+ }
134
+
135
+
136
+ /* ----- Highlighters ------ */
137
+ function highlightRegexp(info, queries, regexps, highlighters) {
138
+ var result = createResult(info);
139
+ for (var i=0, l = regexps.length; i < l; i++) {
140
+ result.title = result.title.replace(regexps[i], highlighters[i]);
141
+ result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
142
+ };
143
+ return result;
144
+ }
145
+
146
+ function hltSubstring(string, pos, length) {
147
+ return string.substring(0, pos) + '\u0001' + string.substring(pos, pos + length) + '\u0002' + string.substring(pos + length);
148
+ }
149
+
150
+ function highlightQuery(info, queries, regexps, highlighters) {
151
+ var result = createResult(info);
152
+ var pos = 0;
153
+ var lcTitle = result.title.toLowerCase();
154
+
155
+ pos = lcTitle.indexOf(queries[0]);
156
+ if (pos != -1) {
157
+ result.title = hltSubstring(result.title, pos, queries[0].length);
158
+ }
159
+
160
+ result.namespace = result.namespace.replace(regexps[0], highlighters[0]);
161
+ for (var i=1, l = regexps.length; i < l; i++) {
162
+ result.title = result.title.replace(regexps[i], highlighters[i]);
163
+ result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
164
+ };
165
+ return result;
166
+ }
167
+
168
+ function createResult(info) {
169
+ var result = {};
170
+ result.title = info[0];
171
+ result.namespace = info[1];
172
+ result.path = info[2];
173
+ result.params = info[3];
174
+ result.snippet = info[4];
175
+ return result;
176
+ }
177
+
178
+ /* ----- Searching ------ */
179
+ function performSearch(data, regexps, queries, highlighters, state) {
180
+ var searchIndex = data.searchIndex;
181
+ var longSearchIndex = data.longSearchIndex;
182
+ var info = data.info;
183
+ var result = [];
184
+ var i = state.from;
185
+ var l = searchIndex.length;
186
+ var togo = CHUNK_SIZE;
187
+ var matchFunc, hltFunc;
188
+
189
+ while (state.pass < 4 && state.limit > 0 && togo > 0) {
190
+ if (state.pass == 0) {
191
+ matchFunc = matchPassBeginning;
192
+ hltFunc = highlightQuery;
193
+ } else if (state.pass == 1) {
194
+ matchFunc = matchPassLongIndex;
195
+ hltFunc = highlightQuery;
196
+ } else if (state.pass == 2) {
197
+ matchFunc = matchPassContains;
198
+ hltFunc = highlightQuery;
199
+ } else if (state.pass == 3) {
200
+ matchFunc = matchPassRegexp;
201
+ hltFunc = highlightRegexp;
202
+ }
203
+
204
+ for (; togo > 0 && i < l && state.limit > 0; i++, togo--) {
205
+ if (info[i].n == state.n) continue;
206
+ if (matchFunc(searchIndex[i], longSearchIndex[i], queries, regexps)) {
207
+ info[i].n = state.n;
208
+ result.push(hltFunc(info[i], queries, regexps, highlighters));
209
+ state.limit--;
210
+ }
211
+ };
212
+ if (searchIndex.length <= i) {
213
+ state.pass++;
214
+ i = state.from = 0;
215
+ } else {
216
+ state.from = i;
217
+ }
218
+ }
219
+ return result;
220
+ }
221
+
222
+ function triggerResults(results, isLast) {
223
+ jQuery.each(this.handlers, function(i, fn) {
224
+ fn.call(this, results, isLast)
225
+ })
226
+ }
227
+ }
228
+
@@ -0,0 +1,115 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <head>
5
+ <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
6
+
7
+ <title>Guardfile - RDoc Documentation</title>
8
+
9
+ <link type="text/css" media="screen" href="../../../../rdoc.css" rel="stylesheet">
10
+
11
+ <script type="text/javascript">
12
+ var rdoc_rel_prefix = "../../../../";
13
+ </script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="../../../../js/jquery.js"></script>
16
+ <script type="text/javascript" charset="utf-8" src="../../../../js/navigation.js"></script>
17
+ <script type="text/javascript" charset="utf-8" src="../../../../js/search_index.js"></script>
18
+ <script type="text/javascript" charset="utf-8" src="../../../../js/search.js"></script>
19
+ <script type="text/javascript" charset="utf-8" src="../../../../js/searcher.js"></script>
20
+ <script type="text/javascript" charset="utf-8" src="../../../../js/darkfish.js"></script>
21
+
22
+
23
+ <body class="file">
24
+ <nav id="metadata">
25
+ <nav id="home-section" class="section">
26
+ <h3 class="section-header">
27
+ <a href="../../../../index.html">Home</a>
28
+ <a href="../../../../table_of_contents.html#classes">Classes</a>
29
+ <a href="../../../../table_of_contents.html#methods">Methods</a>
30
+ </h3>
31
+ </nav>
32
+
33
+
34
+ <nav id="search-section" class="section project-section" class="initially-hidden">
35
+ <form action="#" method="get" accept-charset="utf-8">
36
+ <h3 class="section-header">
37
+ <input type="text" name="search" placeholder="Search" id="search-field"
38
+ title="Type to search, Up and Down to navigate, Enter to load">
39
+ </h3>
40
+ </form>
41
+
42
+ <ul id="search-results" class="initially-hidden"></ul>
43
+ </nav>
44
+
45
+
46
+ <div id="project-metadata">
47
+ <nav id="fileindex-section" class="section project-section">
48
+ <h3 class="section-header">Pages</h3>
49
+
50
+ <ul>
51
+
52
+ <li class="file"><a href="../../../../Gemfile.html">Gemfile</a>
53
+
54
+ <li class="file"><a href="../../../../Guardfile.html">Guardfile</a>
55
+
56
+ <li class="file"><a href="../../../../Rakefile.html">Rakefile</a>
57
+
58
+ <li class="file"><a href="../../../../lib/guard/cunit/templates/Guardfile.html">Guardfile</a>
59
+
60
+ </ul>
61
+ </nav>
62
+
63
+ <nav id="classindex-section" class="section project-section">
64
+ <h3 class="section-header">Class and Module Index</h3>
65
+
66
+ <ul class="link-list">
67
+
68
+ <li><a href="../../../../Guard.html">Guard</a>
69
+
70
+ <li><a href="../../../../Guard.html">Guard</a>
71
+
72
+ <li><a href="../../../../Guard/Cunit.html">Guard::Cunit</a>
73
+
74
+ <li><a href="../../../../Guard/Cunit/CunitParser.html">Guard::Cunit::CunitParser</a>
75
+
76
+ <li><a href="../../../../Guard/Cunit/Runner.html">Guard::Cunit::Runner</a>
77
+
78
+ <li><a href="../../../../Guard/CunitGuard.html">Guard::CunitGuard</a>
79
+
80
+ <li><a href="../../../../Guard/Dsl.html">Guard::Dsl</a>
81
+
82
+ <li><a href="../../../../Object.html">Object</a>
83
+
84
+ <li><a href="../../../../TempPrjEnv.html">TempPrjEnv</a>
85
+
86
+ <li><a href="../../../../TestOutput.html">TestOutput</a>
87
+
88
+ </ul>
89
+ </nav>
90
+
91
+ </div>
92
+ </nav>
93
+
94
+ <div id="documentation" class="description">
95
+
96
+ <p># # Cunit <a href="../../../../Guardfile.html">Guardfile</a> - keep dflt
97
+ builders after guard watcher’s block # guard ‘cunit’ do</p>
98
+
99
+ <pre>watch(%r{((.+)\.c$)|((.+)\.h$)|((M|m)akefile$)} )</pre>
100
+
101
+ <p>end</p>
102
+
103
+ <p>set_builder “make 2&gt;&amp;1” set_cleaner “make clean” cunit_runner
104
+ “#{File.basename(Dir.getwd)}_unit” libdir “#{Dir.getwd}”</p>
105
+
106
+ </div>
107
+
108
+
109
+
110
+ <footer id="validator-badges">
111
+ <p><a href="http://validator.w3.org/check/referer">[Validate]</a>
112
+ <p>Generated by <a href="https://github.com/rdoc/rdoc">RDoc</a> 3.12.
113
+ <p>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish Rdoc Generator</a> 3.
114
+ </footer>
115
+