21 Commits

Author SHA1 Message Date
Thibault Jouan
4a83e8c71a Implement `file_eq' condition keyword 2014-09-22 08:25:50 +00:00
Thibault Jouan
3c46c5bc61 Implement `test_macro' recipe keyword 2014-06-03 16:27:59 +00:00
Thibault Jouan
b995ef2680 Rename all `has_*' test keywords 2014-04-23 20:22:22 +00:00
Thibault Jouan
6f563803df Alias sh' as ` condition keyword 2014-03-08 21:10:21 +00:00
Thibault Jouan
7c6ac4c9d8 Implement `` condition keyword (shell cmd status) 2014-03-08 19:43:41 +00:00
Thibault Jouan
eeab386216 Implement `has_executable' condition keyword 2014-03-05 07:19:15 +00:00
Thibault Jouan
48a9da9365 Fix coding standards (module nesting) in specs 2014-02-08 17:59:33 +00:00
Thibault Jouan
a0482d175c Implement `file_contains' condition keyword 2014-01-23 16:37:19 +00:00
Thibault Jouan
0b4df20f55 Implement `has_dir' condition keyword 2014-01-21 15:02:07 +00:00
Thibault Jouan
6b46fac76f Change an expectation in Condition::DSL specs 2014-01-20 01:47:20 +00:00
Thibault Jouan
29b3efa580 Improve Condition::DSL spec:
* Use a real Test object;
* Use some more "classic" test style;
* Move example about defined test keywords calls in .define_test spec;
* Add missing example for #evaluate.
2014-01-19 17:11:27 +00:00
Thibault Jouan
f27ab6f074 Add Condition::DSL#{block,env} attribute readers 2014-01-19 16:50:42 +00:00
Thibault Jouan
d83b11d07b Remove Condition::DSL.evaluate method 2013-12-20 11:24:30 +00:00
Thibault Jouan
ef0307fbb5 Improve small details in specs:
* Fix coding standards;
* Simplify some expectations (eq instead of be matcher);
* Expect identity on block instead of calling;
* Change some before call as oneliners;
* Avoid shadowing variable names;
* Improve wording where needed.
2013-12-19 22:46:56 +00:00
Thibault Jouan
35621e1f5f Implement condition DSL negated test prefix (no_*)
* Allow no_* to be used for every tests in condition DSL:
  condition { no_has_env :shell, '/bin/sh' };
* Modify Test constructor to accept negated: named argument, implement
  #negated? and #pass?;
* Rename #success? to #verify in all test classes.
2013-12-19 20:22:44 +00:00
Thibault Jouan
2cbe1726f7 Implement `has_file' condition keyword 2013-09-26 00:28:40 +00:00
Thibault Jouan
04afc82a29 Implement `has_env' condition keyword 2013-08-20 03:03:17 +00:00
Thibault Jouan
ed99c191e0 Build conditions with DSL evaluated tests:
In Condition:

  * Modify constructor to accepts tests and a default return value;
  * Implement #met?;
  * Modify #! so that it return the negated value returned by #met?.

  In Condition::DSL:

  * Modify .evaluate to build the condition with tests and the value
    returned by a the evaluated condition block.

  Add a basic Test base class, with env and arguments as attributes.

  Add some spec helpers to build some easily testable kind of Test
instances (as test doubles).
2013-08-18 00:29:36 +00:00
Thibault Jouan
00a11e159f Use instance_eval in Condition::DSL#evaluate:
Use instance_eval so that the assigned block is evaluated inside the
DSL sandbox instance, giving access to all required methods and instance
variables.
2013-08-18 00:29:36 +00:00
Thibault Jouan
3a0ce82799 Improve Condition DSL framework:
Add the necessary API so that we can implement new tests easily as new
standalone classes.

  In Condition::DSL:

* Add #tests accessor;
* Modify constructor so that it accepts the env;
* Implement .define_test(keyword, class) method.
2013-08-18 00:29:36 +00:00
Thibault Jouan
639bdc1c73 Implement basic condition DSL framework for tests:
Instead of interrupting task evaluation when condition is not met,
allow the whole task to be evaluated (including condition and
evaluation) so that the interpreter will get all tasks actions (whether
condition is met or not) and be able to query the condition.

* Modify Interpreter#process_task: test if task condition is met before
  applying the actions;
* Implement condition handling in Task and Task::DSL;
* Implement Condition and Condition::DSL (useless as they are, but
  needed to implement later test keywords as part of the condition DSL.
2013-08-18 00:29:14 +00:00