2016-09-19 9 views
0

У меня следующий вопрос:YAML - Побег в двойных кавычках

Классический проект Symfony 2, PHPUnit 5.1.7.

В одном конфигурационном файле YML у меня есть что-то вроде этого:

mobile_detect: 
    service: 
     mobile_detector: mobile_detect.mobile_detector.default 
    twig_extension_class: "SunCat\MobileDetectBundle\Twig\Extension\MobileDetectExtension" 

Я запускать тесты на моей локальной машине (Ubuntu) и все работает нормально.

Затем я развертываю код (среда aws) и пытаюсь запустить тесты. Все с ошибкой:

"Unescaped character \M". 

Я вижу, что в YAML двойные кавычки разбора строк так \ M действительно неопределенный характер. Мой вопрос ... Почему это рабочий файл на локальном?

Кроме того, код работает нормально, когда я пытаюсь получить доступ к нормальному (через apache-браузер). Почему так хорошо работает?

Я предполагаю, что правильный подход состоял бы в том, чтобы заменить все двойные кавычки одиночными кавычками, но это было бы действительно трудоемким (не может заменить все beacause, в некоторых случаях их использование может быть предназначено). Есть ли способ сделать тесты на тестовой машине интерпретировать yml так же, как на локальных машинах?

+0

как вы развертываете код в среде aws? Проверьте, могут ли быть параметры кодирования в процессе передачи. – Matteo

+1

Это была моя первая догадка, но кодировка в порядке, я также написал файл вручную на тестовом env (то же самое происходило). Я предполагаю, что это phpunit, потому что код работает нормально, если сделаны обычные запросы. – zozo

+0

О развертывании (забыл упомянуть об этом) Я использую эластичный beanstalk для развертывания. Он в основном создает изображение с вашим кодом, переписывает среду с определенного изображения, а затем копирует на нее изображение кода. После этого он запускает композитор и вызывает некоторые пользовательские сценарии (которые не должны влиять на текущую проблему). – zozo

ответ

0

Is there any way to make tests on the tests machine to interpret yml as they do on the local machines?

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

Как вы сами заявляете: правильный способ - исправить недопустимые файлы YAML. Будь то, используя одинарные кавычки или избегая обратных косых черт с другой обратной косой чертой. Не существует решения для хранения текущих файлов YAML, которые гарантированно будут работать при обновлении стека программного обеспечения.

+0

Прошу прощения, чтобы указать (не вниз). Это действительная точка зрения, и я согласен с ней в принципе. Воспроизведение неправильного поведения - одна из худших вещей, которые вы можете сделать - но это не всегда так. Вопрос в том, почему это происходит. Это сделало бы замечательный комментарий, но не является ответом на реальный вопрос. – zozo

 Смежные вопросы

  • Нет связанных вопросов^_^