Rex::Test::Spec - Write Rex::Test like RSpec!
Version 0.08
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;
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.
describe "strings"
context resource type object
its(key)
it
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.
Now support cron, gateway, iptables, port, routes, service, user, file, group, pkg, process, run, sysctl.
See "SYNOPSIS" for more details.
Rao Chenlin(chenryn), <rao.chenlin at gmail.com>
<rao.chenlin at gmail.com>
http://rspec.info/
http://serverspec.org/
http://en.wikipedia.org/wiki/Test-driven_development
http://en.wikipedia.org/wiki/Behavior_Driven_Development
Please report any bugs or feature requests to bug-rex-test-spec at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Rex-Test-Spec. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-rex-test-spec at rt.cpan.org
Also accept pull requests and issue at https://github.com/chenryn/Rex--Test--Spec.
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
http://www.apache.org/licenses/LICENSE-2.0/
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.
To install Rex::Test::Spec, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Rex::Test::Spec
CPAN shell
perl -MCPAN -e shell install Rex::Test::Spec
For more information on module installation, please visit the detailed CPAN module installation guide.