У кого стоит фремворк mzz? Дайте временный доступ на хост :)

DiMA

php.spb.ru
Команда форума
Что за бред, а? Ты изобрел метод работы с кешом без его удаления? Круто! При изменении кеша на мемкеш будем перелопачивать весь код с тестами? Гламурно .-)

Сделай тест:

$this->acl->set // создать запись
$this->acl->delete // тут же ее удали
$this->acl->get // вот и бага

Как оно может не глючить - я не понимаю. Одно из двух - либо в GET не используюй кеш на чтение, либо в DELETE кеш нужно таки удалять. В твоем случае оно должно 100% глючить в не зависимости от вида кеша.
 

zerkms

TDD infected
Команда форума
Круто! При изменении кеша на мемкеш будем перелопачивать весь код с тестами?
это ошибка, но не критическая. как только кеширование будет добавлено в каком бы то ни было жизнеспособном виде - тесты сразу отреагируют и я всё поправлю.

В твоем случае оно должно 100% глючить в не зависимости от вида кеша.
я понимаю это прекрасно, но в текущем виде работа кеша в ACL конечных приложениях меня устраивает.
 

DiMA

php.spb.ru
Команда форума
Ошибки - это полбеды, а оправдывать ошибки - чуть более, чем полностью, беда.

Ладно, вот на закуску .-)

PHP:
public function decodeUTF8(&$value)

        for ($str_pos = 0; $str_pos < strlen($value); $str_pos++) {

                $special = array(1025 => 168, 1105 => 184, 1026 => 128, 1027 => 129, 8218 => 130, 1107 => 131,
                8222 => 132, 8230 => 133, 8224 => 134, 8225 => 135, 8364 => 136, 8240 => 137, 1033 => 138,
                8249 => 139, 1034 => 140, 1036 => 141, 1035 => 142, 1039 => 143, 1106 => 144, 8216 => 145,
                8217 => 146, 8220 => 147, 8221 => 148, 8226 => 149, 8211 => 150, 8212 => 151, 65533 => 152,
                8482 => 153, 1113 => 154, 8250 => 155, 1114 => 156, 1116 => 157, 1115 => 158, 1119 => 159,
                1038 => 161, 1118 => 162, 1032 => 163, 164 => 164, 1168 => 165, 166 => 166, 167 => 167, 169 => 169,
                1028 => 170, 171 => 171, 172 => 172, 173 => 173, 174 => 174, 1031 => 175, 176 => 176, 177 => 177,
                1030 => 178, 1110 => 179, 1169 => 180, 181 => 181, 182 => 182, 183 => 183, 8470 => 185, 1108 => 186,
                187 => 187, 1112 => 188, 1029 => 189, 1109 => 190, 1111 => 191
                );

        }
}
Хороший пример правильной инициализации массивов .-)

Iconv отменили? И просто не проверяет ошибки на недопустимые символы:

$x="\xF0\x80\x80\x81,\xF0\xBF\xBF\xBF\x80,\xF0\x00,\x80,\xFF,";
var_dump("[".decodeUTF8($x)."]");
var_dump("[".iconv("UTF-8","Windows-1251",$x)."]");

выдает разные результаты:

string(25) "[& #1;,& #262143;А,Ё ,А,_,]"
string(16) "[& #1;,& #262143;]"
 

Krishna

Продался Java
Другой говорит нифига ты больших проектов не писал. Ему - назови критерии больших проектов и он пропадает.
Видимо просто не хочет сбиваться на оффтопный флейм в интересной ему теме :)
 

zerkms

TDD infected
Команда форума
Iconv отменили? И просто не проверяет ошибки на недопустимые символы:
конкретно этот код писал не я, и уже совсем забыл почему именно так было реализовано. автору вопрос задал :)

UPD: более того, этот метод уже нигде не юзается и в новой версии будет удалён. мерси :)
 

itprog

Cruftsman
это действительно очень старый код который уже как года два нигде не используется. был взят откуда-то из готового приложения как временное решение
 

fixxxer

К.О.
Партнер клуба
ну кстати как по мне нормально в неокторых случаях использовать в тестах raw sql для проверки правильности работы модели. т.е. дернули модель, дернули sql напрямую и сравнили (например, так ловятся баги с несбрасыванием кэша).

код не смотрел, мне сам подход с активными шаблонами не по душе :) чревато оно появлением лапши в оных.
 

zerkms

TDD infected
Команда форума
ну кстати как по мне нормально в неокторых случаях использовать в тестах raw sql для проверки правильности работы модели. т.е. дернули модель, дернули sql напрямую и сравнили (например, так ловятся баги с несбрасыванием кэша).
более чем нормально. потому как только запрос может гарантировать, что данные в базе именно были модифицированы.
 

DiMA

php.spb.ru
Команда форума
так вот, у меня в тестах модуля ACL сейчас 341 assert (+300 косвенно в других тестах)

> ну кстати как по мне нормально

Не вижу надобности использовать SQL, если в самой тестируемой модели уже есть готовая функция, которая возвращает то, что делает SQL запрос. Если бы делалось так, по-человечески, все бы глупые ошибки с кешированием автоматически вылезли.
 

zerkms

TDD infected
Команда форума
DiMA
смотря что ты проверяешь тестом. фикстуры тоже ведь заполняются плоскими запросами. на фикстуры сторонний человек тоже смотрит для понимания процессов, проходящих внутри.

если в самой тестируемой модели уже есть готовая функция, которая возвращает то, что делает SQL запрос. Если бы делалось так, по-человечески, все бы глупые ошибки с кешированием автоматически вылезли.
а вот тут не всё хорошо с изоляцией тестов. кейсы должны быть по возможности изолированы от других кейсов этого тестового класса и уж тем более - другого. ты не должен полагаться на то, что слой кеширования уже оттестирован и работает отлично, разрабатывая тесты для ACL.
 

DiMA

php.spb.ru
Команда форума
для этого кеширование отключается на лету, прозрачно
 

zerkms

TDD infected
Команда форума
совершенно верно.
о чём я и говорил.

а дальше у нас тестируется непосредственно логика работы ACL. и для того, чтобы проверить, что правила действительно были созданы - мы проверяем, что они были добавлены в базу.

ты ведь не тестируешь создание файла классом работы с файлами через создание и удаление? ты ведь создашь файл классом, а затем проверишь, создался он в фс или нет. верно?
 

fixxxer

К.О.
Партнер клуба
а вдруг синхронная бага в методах записи и чтения из базы? правило четности багов никто не отменял :)

лучше уж raw sql. не обманешь.
 
Сверху