Skip to content

Commit 40f9cda

Browse files
committed
Fix username detection with \W characters
1 parent b3516b1 commit 40f9cda

3 files changed

Lines changed: 12 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
# v1.1.2
4+
Fixes:
5+
- Usernames can contain `\W` characters [PR #3](https://github.com/mintware-de/native-cron/pull/3)
6+
37
# v1.1.1
48
Fixes:
59
- Crontabs must end with an empty line [PR #2](https://github.com/mintware-de/native-cron/pull/2)

src/Content/CronJobLine.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
class CronJobLine implements CrontabLineInterface
1010
{
11-
public const PATTERN_WITH_USER = '~^(?P<datetime>'.DateTimeDefinition::PATTERN.')\s*(?P<user>\w+)\s*(?P<command>.+)$~';
11+
public const PATTERN_WITH_USER = '~^(?P<datetime>'.DateTimeDefinition::PATTERN.')\s*(?P<user>[^\s]+)\s*(?P<command>.+)$~';
1212
public const PATTERN_WITHOUT_USER = '~^(?P<datetime>'.DateTimeDefinition::PATTERN.')\s*(?P<command>.+)$~';
1313

1414
private bool $includeUser;

tests/Content/CronjobLineTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,13 @@ public function testBuildAdvanced(): void
132132
self::assertEquals($line, $cronjobLine->build());
133133
}
134134

135+
public function testUserWithDashes(): void
136+
{
137+
$line = '* * * * * www-data command';
138+
$cronjobLine = new CronJobLine($line, true);
139+
self::assertEquals('www-data', $cronjobLine->getUser());
140+
}
141+
135142
private function checkEmptyValues(CronJobLine $cronjobLine): void
136143
{
137144
$dateTimeDefinition = $cronjobLine->getDateTimeDefinition();

0 commit comments

Comments
 (0)