diff --git a/src/__tests__/PhabricatorInfrastructureTestCase.php b/src/__tests__/PhabricatorInfrastructureTestCase.php --- a/src/__tests__/PhabricatorInfrastructureTestCase.php +++ b/src/__tests__/PhabricatorInfrastructureTestCase.php @@ -50,69 +50,20 @@ 'In test cases, all applications should default to installed.'); } - public function testMySQLAgreesWithUsAboutBMP() { - // Build a string with every BMP character in it, then insert it into MySQL - // and read it back. We expect to get the same string out that we put in, - // demonstrating that strings which pass our BMP checks are also valid in - // MySQL and no silent data truncation will occur. - - $buf = ''; - - for ($ii = 0x01; $ii <= 0x7F; $ii++) { - $buf .= chr($ii); - } - - for ($ii = 0xC2; $ii <= 0xDF; $ii++) { - for ($jj = 0x80; $jj <= 0xBF; $jj++) { - $buf .= chr($ii).chr($jj); - } - } - - // NOTE: This is \xE0\xA0\xZZ. - for ($ii = 0xE0; $ii <= 0xE0; $ii++) { - for ($jj = 0xA0; $jj <= 0xBF; $jj++) { - for ($kk = 0x80; $kk <= 0xBF; $kk++) { - $buf .= chr($ii).chr($jj).chr($kk); - } - } - } - - // NOTE: This is \xE1\xZZ\xZZ through \xEF\xZZ\xZZ. - for ($ii = 0xE1; $ii <= 0xEF; $ii++) { - for ($jj = 0x80; $jj <= 0xBF; $jj++) { - for ($kk = 0x80; $kk <= 0xBF; $kk++) { - $buf .= chr($ii).chr($jj).chr($kk); - } - } - } - - $this->assertEqual(194431, strlen($buf)); - $this->assertTrue(phutil_is_utf8_with_only_bmp_characters($buf)); - - $write = id(new HarbormasterScratchTable()) - ->setData('all.utf8.bmp') - ->setBigData($buf) - ->save(); - - $read = id(new HarbormasterScratchTable())->load($write->getID()); - - $this->assertEqual($buf, $read->getBigData()); - } - - public function testRejectMySQLBMPQueries() { + public function testRejectMySQLNonUTF8Queries() { $table = new HarbormasterScratchTable(); $conn_r = $table->establishConnection('w'); $snowman = "\xE2\x98\x83"; - $gclef = "\xF0\x9D\x84\x9E"; + $invalid = "\xE6\x9D"; qsprintf($conn_r, 'SELECT %B', $snowman); qsprintf($conn_r, 'SELECT %s', $snowman); - qsprintf($conn_r, 'SELECT %B', $gclef); + qsprintf($conn_r, 'SELECT %B', $invalid); $caught = null; try { - qsprintf($conn_r, 'SELECT %s', $gclef); + qsprintf($conn_r, 'SELECT %s', $invalid); } catch (AphrontCharacterSetQueryException $ex) { $caught = $ex; }