NAME Rex::Test::Spec - Write Rex::Test like RSpec! VERSION Version 0.03 SYNOPSIS use Rex::Test::Spec; describe "Nginx Test", sub { context run("nginx -t"), "nginx.conf testing", sub { like its('stdout'), qr/ok/; }; context file("~/.ssh/id_rsa"), sub { is its('ensure'), 'file'; is its('mode'), '0600'; like its('content'), qr/name\@email\.com/; }; context file("/data"), sub { is its('ensure'), 'directory'; is its('owner'), 'www'; is its('mounted_on'), '/dev/sdb1'; isnt its('writable'); }; context service("nginx"), sub { is its('ensure'), 'running'; }; context pkg("nginx"), sub { is its('ensure'), 'present'; is its('version'), '1.5.8'; }; context cron, sub { like its('www'), 'logrotate'; }; context gateway, sub { is it, '192.168.0.1'; }; context group('www'), sub { ok its('ensure'); }; context iptables, sub { }; context port(80), sub { is its('bind'), '0.0.0.0'; is its('proto'), 'tcp'; is its('command'), 'nginx'; }; context process('nginx'), sub { like its('command'), qr(nginx -c /etc/nginx.conf); ok its('mem') > 1024; }; context routes, sub { is_deeply its(1), { destination => $dest, gateway => $gw, genmask => $genmask, flags => $flags, mss => $mss, irtt => $irtt, iface => $iface, }; }; context sysctl, sub { is its('vm.swapiness'), 1; }; context user('www'), sub { ok its('ensure'); is its('home'), '/var/www/html'; is its('shell'), '/sbin/nologin'; is_deeply its('belong_to'), ['www', 'nogroup']; }; }; done_testing; EXPORT FUNCTIONS Spec definition functions These are the functions you will use to define behaviors and run your specs: *describe* (and alias to *context*), *its* (alias to *it*). Normally suggest "describe "strings"" and "context resource type object", use "its(key)" return value, "it" return objects by default. Test::More export functions This now include *is*, *isnt*, *ok*, *is_deeply*, *like*, *unlike*, *done_testing*. You'll use these to assert correct behavior. The resource type name will be automatic passed as testing message. Rex resource type generation functions Now support *cron*, *gateway*, *iptables*, *port*, *routes*, *service*, *user*, *file*, *group*, *pkg*, *process*, *run*, *sysctl*. See "SYNOPSIS" for more details. AUTHOR Rao Chenlin(chenryn), "" SEE ALSO 1. Rspec 2. Serverspec 3. TDD (Test Driven Development) 4. BDD (Behavior Driven Development) 5. Test::More 6. Rex BUGS Please report any bugs or feature requests to "bug-rex-test-spec at rt.cpan.org", or through the web interface at . I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. Also accept pull requests and issue at . LICENSE AND COPYRIGHT Copyright 2014 Rao Chenlin(chenryn). Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.