Codeception / Codeception/AspectMock

Parse Error

Offen
#134 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
PHP
Sterne
784
Forks
132
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Case:
**Framework:** Yii2 2.0.11.2
**PHP:** 7.0.10
**AspeckMock** 2.0.1
**info** On ver. 1.0.0 works fine

AspectMock wrong parsing, convert and write to temporary storage this piece of code:

**original code**
```php
protected function loadConfiguration($configFile)
{
$this->stdout("Loading configuration from '{$configFile}'...\n");
foreach (require($configFile) as $name => $value) {
if (property_exists($this, $name) || $this->canSetProperty($name)) {
$this->$name = $value;
} else {
throw new Exception("Unknown configuration option: $name");
}
}

$this->getAssetManager(); // check if asset manager configuration is correct
}
```

**after convert with AspeckMock**
```php
protected function loadConfiguration($configFile)
{ if (($__am_res = __amock_before($this, __CLASS__, __FUNCTION__, array($configFile), false)) !== __AM_CONTINUE__) return $__am_res;
$this->stdout("Loading configuration from '{$configFile}'...\n");
foreach (require \Go\Instrument\Transformer\FilterInjectorTransformer::rewrite(($configFile) as $name => $value, '')) {
if (property_exists($this, $name) || $this->canSetProperty($name)) {
$this->$name = $value;
} else {
throw new Exception("Unknown configuration option: $name");
}
}

$this->getAssetManager(); // check if asset manager configuration is correct
}
```

**Problem with parse:**
```
foreach (require \Go\Instrument\Transformer\FilterInjectorTransformer::rewrite(($configFile) as $name => $value, ''))
```

**Error**
```
Exception 'ParseError' with message 'syntax error, unexpected 'as' (T_AS), expecting ',' or ')''
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Reproduzieren Sie die Transformation anhand des gemeldeten loadConfiguration($configFile)-Beispiels und PHP 7.0.10 und untersuchen Sie anschließend den im generierten Code erwähnten Einstiegspunkt FilterInjectorTransformer::rewrite. Die Fehlerbehebung ist abgeschlossen, wenn der transformierte foreach/require-Ausdruck erfolgreich geparst wird und das ursprüngliche Iterationsverhalten beibehält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
testing
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.