Есть ли способ создать набор тестов JWebUnit из конфигурации перезаписи apache? - PullRequest
2 голосов
/ 27 июля 2011

Кажется маловероятным, но есть ли способ сгенерировать набор модульных тестов для следующего правила перезаписи:

RewriteRule   ^/(user|group|country)/([a-z]+)/(photos|videos)$       http:/whatever?type=$1&entity=$2&resource=$3

Из этого я хотел бы сгенерировать набор URL-адресов вида:

  • / user / foo / photos
  • / user / bar / photos
  • / group / baz / videos
  • / country / bar / photos
  • и т.д ...

Причина, по которой я не хочу делать это один раз вручную, заключается в том, что я хотел бы, чтобы ограниченные группы чередования (например, (user|group|country))иметь возможность увеличивать и поддерживать охват, не обновляя тесты вручную.

Существует ли правило перезаписи или анализатор регулярных выражений, которые могут это сделать, или я делаю это вручную?

1 Ответ

0 голосов
/ 17 ноября 2012

Если вы не возражаете взломать несколько строк Perl, есть пакет Regexp :: Genex , который вы можете использовать для создания чего-то, что вам нужно, например

# perl -MRegexp::Genex=:all -le 'print for strings(qr/\/(user|group|country)\/([a-z]+)\//)'
/user/dxb/
/user/dx/
/user/d/
/group/xd/
/group/x/
#  perl -MRegexp::Genex=:all -le 'my $re=qr/\/(user|group|country)\/([a-z]+)\/(phone|videos)/;$Regexp::Genex::DEFAULT_LEN = length $re;print for strings($re)'
/user/mgcgmccdmgdmmzccgmczgmzzdcmmd/phone
/user/mgcgmccdmgdmmzccgmczgmzzdcmm/phone
/user/mgcgmccdmgdmmzccgmczgmzzdcm/phone
/user/mgcgmccdmgdmmzccgmczgmzzdc/phone

...

/group/gg/videos
/group/g/phone
/group/g/videos
/country/jvmmm/phone
/country/jvmmm/videos
/country/jvmm/phone
/country/jvmm/videos
/country/jvm/phone
/country/jvm/videos
/country/jv/phone
/country/jv/videos
/country/j/phone
/country/j/videos
#

Примечание:

1) Вам нужно написать оболочку для анализа исходного файла, токенизации (извлечения) исходных шаблонов, экранирования определенных символов в правиле, например, "/", и, возможно, разделения ваших правилна более управляемые части, прежде чем расширяться, через Genex, а затем выводить результаты в нужном формате.

2) Для установки модуля введите: cpan Regexp :: Genex

...