Skip to content

Commit 7d140ac

Browse files
committed
Fixed an issue with detecting the mod names when execution time of Factorio become bigger than 1000 seconds.
1 parent 5bd6c5e commit 7d140ac

File tree

5 files changed

+21
-1
lines changed

5 files changed

+21
-1
lines changed

config/autoload/dependencies.global.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
'string $factorioDownloadToken' => readConfig(ModConfigKey::MAIN, ModConfigKey::OPTIONS, ModConfigKey::OPTION_TOKEN),
109109
'string $factorioDownloadUsername' => readConfig(ModConfigKey::MAIN, ModConfigKey::OPTIONS, ModConfigKey::OPTION_USERNAME),
110110
'string $instancesDirectory' => readConfig(ConfigKey::MAIN, ConfigKey::DIRECTORIES, ConfigKey::DIRECTORY_INSTANCES),
111+
'string $logsDirectory' => readConfig(ConfigKey::MAIN, ConfigKey::DIRECTORIES, ConfigKey::DIRECTORY_LOGS),
111112
'string $modsDirectory' => readConfig(ConfigKey::MAIN, ConfigKey::DIRECTORIES, ConfigKey::DIRECTORY_MODS),
112113
'string $renderIconBinary' => readConfig(ConfigKey::MAIN, ConfigKey::RENDER_ICON_BINARY),
113114
'string $tempDirectory' => readConfig(ConfigKey::MAIN, ConfigKey::DIRECTORIES, ConfigKey::DIRECTORY_TEMP),

src/OutputProcessor/ModNameOutputProcessor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
class ModNameOutputProcessor implements OutputProcessorInterface
1717
{
18-
private const REGEX_CHECKSUM = '#^\s+[0-9.]+ Checksum of (.*): \d+$#m';
18+
private const REGEX_CHECKSUM = '#^\s*[0-9.]+ Checksum of (.*): \d+$#m';
1919
private const MOD_NAME_DUMP = 'Dump';
2020

2121
public function processLine(string $outputLine, Dump $dump): void

src/Service/FactorioExecutionService.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class FactorioExecutionService
3030
protected ModFileService $modFileService;
3131
protected string $factorioDirectory;
3232
protected string $instancesDirectory;
33+
protected string $logsDirectory;
3334
protected string $version;
3435

3536
public function __construct(
@@ -39,6 +40,7 @@ public function __construct(
3940
ModFileService $modFileService,
4041
string $factorioDirectory,
4142
string $instancesDirectory,
43+
string $logsDirectory,
4244
string $version
4345
) {
4446
$this->exportSerializer = $exportSerializer;
@@ -47,6 +49,7 @@ public function __construct(
4749
$this->modFileService = $modFileService;
4850
$this->factorioDirectory = (string) realpath($factorioDirectory);
4951
$this->instancesDirectory = (string) realpath($instancesDirectory);
52+
$this->logsDirectory = (string) realpath($logsDirectory);
5053
$this->version = $version;
5154
}
5255

@@ -199,6 +202,10 @@ public function execute(string $combinationId): Dump
199202
*/
200203
public function cleanup(string $combinationId): self
201204
{
205+
$this->fileSystem->copy(
206+
"{$this->instancesDirectory}/{$combinationId}/factorio-current.log",
207+
"{$this->logsDirectory}/factorio_{$combinationId}.log",
208+
);
202209
$this->fileSystem->remove("{$this->instancesDirectory}/{$combinationId}");
203210
return $this;
204211
}

test/src/OutputProcessor/ModNameOutputProcessorTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public function provideProcessLine(): array
2727
return [
2828
[' 69.420 Checksum of abc: 1337', ['def'], ['def', 'abc']],
2929
[' 0.061 Loading mod base 0.18.21 (data.lua)', ['def'], ['def']],
30+
['1103.226 Checksum of Dump: 1832971175', ['foo'], ['foo', 'Dump']],
3031
];
3132
}
3233

test/src/Service/FactorioExecutionServiceTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class FactorioExecutionServiceTest extends TestCase
4444
private ModFileService $modFileService;
4545
private string $factorioDirectory = 'foo';
4646
private string $instancesDirectory = 'bar';
47+
private string $logsDirectory = 'baz';
4748
private string $version = '1.2.3';
4849

4950
protected function setUp(): void
@@ -69,14 +70,17 @@ private function createInstance(array $mockedMethods = []): FactorioExecutionSer
6970
$this->modFileService,
7071
'src',
7172
'test',
73+
'test/asset',
7274
$this->version,
7375
])
7476
->getMock();
7577

7678
$this->assertSame(realpath('src'), $this->extractProperty($instance, 'factorioDirectory'));
7779
$this->assertSame(realpath('test'), $this->extractProperty($instance, 'instancesDirectory'));
80+
$this->assertSame(realpath('test/asset'), $this->extractProperty($instance, 'logsDirectory'));
7881
$this->injectProperty($instance, 'factorioDirectory', $this->factorioDirectory);
7982
$this->injectProperty($instance, 'instancesDirectory', $this->instancesDirectory);
83+
$this->injectProperty($instance, 'logsDirectory', $this->logsDirectory);
8084

8185
return $instance;
8286
}
@@ -341,6 +345,13 @@ public function testCleanup(): void
341345
{
342346
$combinationId = 'abc';
343347

348+
$this->fileSystem->expects($this->once())
349+
->method('copy')
350+
->with(
351+
$this->identicalTo('bar/abc/factorio-current.log'),
352+
$this->identicalTo('baz/factorio_abc.log'),
353+
);
354+
344355
$this->fileSystem->expects($this->once())
345356
->method('remove')
346357
->with($this->identicalTo('bar/abc'));

0 commit comments

Comments
 (0)