# -*- cperl -*- use strict; use warnings; use lib 't'; use Test::More; require "test-functions.pl"; if (can_svn()) { plan tests => 10; } else { plan skip_all => 'Cannot find or use svn commands.'; } my $t = reset_repo(); my $wc = catdir($t, 'wc'); my $file = catfile($wc, 'file'); set_hook(<<'EOS'); use SVN::Hooks::DenyChanges; EOS set_conf(<<'EOS'); DENY_ADDITION('string'); EOS work_nok('conf: no regex', 'DENY_CHANGES: all arguments must be qr/Regexp/', <<"EOS"); echo txt >$file svn add -q --no-auto-props $file svn ci -mx $file EOS set_conf(<<'EOS'); DENY_ADDITION(qr/add/, qr/ADD/); DENY_DELETION(qr/del/); DENY_UPDATE (qr/upd/); EOS my $add = catfile($wc, 'add'); my $ADD = catfile($wc, 'ADD'); my $del = catfile($wc, 'del'); my $upd = catfile($wc, 'upd'); work_nok('deny add', 'Cannot add:', <<"EOS"); echo txt >$add svn add -q --no-auto-props $add svn ci -mx $add EOS work_nok('deny second arg', 'Cannot add:', <<"EOS"); echo txt >$ADD svn add -q --no-auto-props $ADD svn ci -mx $ADD EOS work_ok('add del upd', <<"EOS"); echo txt >$del echo txt >$upd svn add -q --no-auto-props $del $upd svn ci -mx $del $upd EOS work_nok('deny del', 'Cannot delete:', <<"EOS"); svn rm -q $del svn ci -mx $del EOS work_nok('deny upd', 'Cannot update:', <<"EOS"); echo adsf >$upd svn ci -mx $upd EOS work_ok('update f', <<"EOS"); echo adsf >$file svn ci -mx $file EOS work_ok('del f', <<"EOS"); svn del -q $file svn ci -mx $file EOS # Grok the author name ok(my $author = get_author($t), 'grok author'); set_conf(<<"EOS"); DENY_ADDITION(qr/add/); DENY_EXCEPT_USERS($author); EOS work_ok('except user', <<"EOS"); echo txt >$add svn add -q --no-auto-props $add svn ci -mx $add EOS