Phpunit: 'рдмрдВрдж' рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 2 рдЬрдире░ 2012  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sebastianbergmann/phpunit

рд╣рд╛рд▓рд╛рдВрдХрд┐ $GLOBAL рдХреНрд▓реЛрдЬрд░ рдЕрдм рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ 01aa34783c9b19d39e568641f3f2dd0fc983b11a рдФрд░ #352 a $GLOBAL рдПрд░реЗ рдЬрд┐рд╕рдореЗрдВ рдХреНрд▓реЛрдЬрд░ рдХреЛ рдПрдХ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рднреА "'рдХреНрд▓реЛрдЬрд░' рдХреЗ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ" рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред

$GLOBALS[] = array( 'foo' => function() { return 'bar'; }  );

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЬрдм рднреА рдореИрдВ new MyRestClient() рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ $this->client = new \GuzzleHttp\Client(); ред рдпрд╣ рднреА рд╡рд╣реА рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ $x=function(){}; рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Guzzle рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрднреА рднреА phpunit рдкрд░реАрдХреНрд╖рдг рдХреЗ рднреАрддрд░ рд╕реЗ рддрддреНрдХрд╛рд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рдЕрдм рдмрд╣реБрдд рджреБрдЦреА рд╣реВрдБ : рд╕реЛрдм:

рд╕рднреА 12 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореЗрд░реЗ рд╕рд╣рд┐рдд рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред http://stackoverflow.com/questions/4366592/symfony-2-doctrine-2-phpunit-3-5-serialization-of-closure-exception

рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рдореБрдЭреЗ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ

 /* рдкрд░реАрдХреНрд╖рдг.php */
 рдХреНрд▓рд╛рд╕ рдХреНрд▓реЛрдЬрд░рдЯреЗрд╕реНрдЯ PHPUnit_Framework_TestCase рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ
 {
 рдлрд╝рдВрдХреНрд╢рди рдЯреЗрд╕реНрдЯ рдХреНрд▓реЛрдЬрд░ () {
 $this->assertEquals(1, 1);
 call_user_func (рдлрд╝рдВрдХреНрд╢рди ($ рдП) {
 рдирдпрд╛ рдлреЗрдВрдХреЗрдВ \ рдЕрдкрд╡рд╛рдж ("рдкрд░реАрдХреНрд╖рдг");
 }, 10);
 $this->assertEquals(2, 2);
 }
 }

рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдЪрд▓рд╛рдПрдВ

 phpunit --рдкреНрд░реЛрд╕реЗрд╕-рдЖрдЗрд╕реЛрд▓реЗрд╢рди рдЯреЗрд╕реНрдЯ.php

рдЖрдкрдХреЛ рдорд┐рд▓реЗрдЧрд╛

 1 рддреНрд░реБрдЯрд┐ рдереА:
 1) рдкреАрдПрдЪрдЯреЗрд╕реНрдЯ :: рдЯреЗрд╕реНрдЯ рдХреНрд▓реЛрдЬрд░
 PHPUnit_Framework_Exception: PHP рдШрд╛рддрдХ рддреНрд░реБрдЯрд┐: рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ рдЕрдкрд╡рд╛рдж 'рдЕрдкрд╡рд╛рдж' рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде 'рдмрдВрдж' рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ -:37
 рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕:
 #0 -(37): рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ (рдРрд░реЗ)
 #1 -(123): __phpunit_run_isolated_test()
 #2 {рдореБрдЦреНрдп}
 рдореЗрдВ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ - рд▓рд╛рдЗрди 37 рдкрд░
 рд╡рд┐рдлрд▓рддрд╛рдПрдВ!
 рдкрд░реАрдХреНрд╖рдг: 1, рдЕрднрд┐рдХрдерди: 0, рддреНрд░реБрдЯрд┐рдпрд╛рдБ: 1.

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдереА, рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдореЗрдВ __ рдиреАрдВрдж рдЬреЛрдбрд╝рд╛ рдФрд░ рд╡рд╣рд╛рдВ рдмрдВрдж рд╣реЛрдиреЗ рдХреЛ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ред рдореЗрд░реЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдХреБрдЫ рдореЙрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдереЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рдЕрдкрдиреА рдЧрд▓рддреА рдереА, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рдмрддрд╛рдП рдЧрдП @tmilos рдореБрджреНрджреЗ рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдЯрд┐рдХрдЯ рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХреЗрдВред рдпрджрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рддреЛ рдореИрдВ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╣рдореЗрд╢рд╛ рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ!

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдСрдл-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛ред @tmilos рджреНрд╡рд╛рд░рд╛ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдЧреЗ, рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдпрджрд┐ рдореИрдВ рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

/* test.php */
class closureTest extends PHPUnit_Framework_TestCase
{
    function testClosure() {
        call_user_func(function($a) {
            throw new \Exception("test");
        });
    }
}

call_user_func рдХреЗ рдЕрдВрдд рдореЗрдВ рджрд┐рдП рдЧрдП рддрд░реНрдХ рдХреА рдХрдореА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдХреНрд░рдорд╛рдВрдХрди рдЕрдкрд╡рд╛рдж PHPUnit_Framework_TestResult рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдХреНрд░рдорд╛рдВрдХрди рдкреНрд░рдпрд╛рд╕ PHPUnit/Framework/Process/TestCaseMethod.tpl.dist рдХреА рд▓рд╛рдЗрди 42 рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯреВ-рдмреА-рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреНрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдкрддреНрддрд┐рдЬрдирдХ рд╣рд┐рд╕реНрд╕рд╛ рдЕрдкрд╡рд╛рдж рдХреЗ рдЯреНрд░реЗрд╕ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рдХреНрд▓реЛрдЬрд░ рд╕рдВрджрд░реНрдн рд╣реИ рдЬрд┐рд╕реЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

[1] => Array
    (
        [function] => {closure}
        [class] => Issue451Test
        [type] => ->
        [args] => Array
            (
            )

)

рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рддрдм, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓реА рдмрд╛рд░ PHPUnit рдкреИрдЪрд┐рдВрдЧ рд╣реИ, рдмрдВрдж рдХрд░рдиреЗ рдпрд╛ рдЗрд╕реЗ рдЕрдиреНрдпрдерд╛ рд╕реМрдореНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХрдо рд╣реИ - рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ - рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ PHPUnit-рд╕рд░реНрд╡реЛрддреНрддрдо-рдЕрднреНрдпрд╛рд╕ рддрд░реАрдХрд╛ рд╣реИ ? рдХрдо рд╕реЗ рдХрдо рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдпрд╛ рдЗрдирдкреБрдЯ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рд░рд┐рдЧреНрд░реЗрд╢рди/рдЧрд┐рдЯрд╣рдм рдХреЗ рддрд╣рдд рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛ рдерд╛ред рдХреНрдпрд╛ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ?

@kunjalpopat , рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдореИрдВ

рд╕рдорд╕реНрдпрд╛ PHPUnit_Util_GlobalState::backupGlobals :

if ($key != 'GLOBALS' &&
    !in_array($key, $superGlobalArrays) &&
    !in_array($key, $blacklist) &&
    !$GLOBALS[$key] instanceof Closure) {  // <-- this is the problem
    self::$globals['GLOBALS'][$key] = serialize($GLOBALS[$key]);
}

рдореИрдВрдиреЗ PHPUnit_Util_GlobalState рдореЗрдВ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рдмрдирд╛рдпрд╛ рд╣реИ:

public static function checkIfThereIsClosureInIt($arr) {
    if ($arr instanceof Closure)
        return true;
    if (is_object($arr))
        $arr = get_object_vars($arr);
    if (is_array($arr))
        foreach ($arr as $x)
            if (PHPUnit_Util_GlobalState::checkIfThereIsClosureInIt($x))
                return true;
    return false;
}

рдФрд░ рдереЛрдбрд╝рд╛ backupGlobals рдлрд╝рдВрдХреНрд╢рди рдмрджрд▓ рджрд┐рдпрд╛:

foreach (array_keys($GLOBALS) as $key) {
    if ($key != 'GLOBALS' &&
        !in_array($key, $superGlobalArrays) &&
        !in_array($key, $blacklist) &&
        !PHPUnit_Util_GlobalState::checkIfThereIsClosureInIt($GLOBALS[$key])
//        !$GLOBALS[$key] instanceof Closure
    ) {
        self::$globals['GLOBALS'][$key] = serialize($GLOBALS[$key]);
    }
}

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ (рдореИрдВ рдЕрдм рдЙрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝рддрд╛)ред
рдЪреВрдВрдХрд┐ рдпрд╣ $GLOBALS рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рд░рд┐рдХрд░реНрд╕рди рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕реАрдкреАрдпреВ рдХреЛ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧрд░реНрдореА рджреЗ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдЯрд╛рдлрд╝ рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдлрд┐рдХреНрд╕ рдиреЗ "рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдСрдлрд╝ рдХреНрд▓реЛрдЬрд░" рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд╛рд╕ рдореМрдЬреВрдж PHPunit рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдЬрдм рднреА рдореИрдВ new MyRestClient() рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ $this->client = new \GuzzleHttp\Client(); ред рдпрд╣ рднреА рд╡рд╣реА рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ $x=function(){}; рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Guzzle рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрднреА рднреА phpunit рдкрд░реАрдХреНрд╖рдг рдХреЗ рднреАрддрд░ рд╕реЗ рддрддреНрдХрд╛рд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВ рдЕрдм рдмрд╣реБрдд рджреБрдЦреА рд╣реВрдБ : рд╕реЛрдм:

рдмрд╕ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред рдореВрд▓ рд░реВрдк рд╕реЗ рдЬрдм рднреА рдЖрдк рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдХреНрд▓рд╛рд╕ рдХреЛ рдЯреЗрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ phpunit Serialization of 'Closure' is not allowed рдпрд╛ Serialization of 'class<strong i="6">@anonymous</strong>' is not allowed рдлреЗрдВрдХ рджреЗрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╛рд░ рдЪрд░ рд╣реИ, рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

greg0ire picture greg0ire  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stof picture stof  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AnmSaiful picture AnmSaiful  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

edyan picture edyan  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nicklevett picture nicklevett  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ