Skip to content

Commit

Permalink
Use general stylelint task in grunt command.
Browse files Browse the repository at this point in the history
So that core grunt task will decide whether css or scss linter needs to be run (or both).

Fixes moodlehq#314
  • Loading branch information
kabalin committed Sep 10, 2024
1 parent 360562c commit 42968a4
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
5 changes: 4 additions & 1 deletion src/Command/GruntCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ protected function configure(): void
{
parent::configure();

$tasks = ['amd', 'yui', 'gherkinlint', 'stylelint:css', 'stylelint:scss'];
$tasks = ['amd', 'yui', 'gherkinlint', 'stylelint'];

$this->setName('grunt')
->setDescription('Run Grunt task on a plugin')
Expand Down Expand Up @@ -194,6 +194,9 @@ public function toGruntTask(string $task): ?GruntTaskModel
}

return new GruntTaskModel($task, $this->moodle->directory);
case 'stylelint':
// Let stylelint task logic to determine which type of linter to run.
return $this->plugin->hasFilesWithName('*.css') || $this->plugin->hasFilesWithName('*.scss') ? $defaultTaskPluginDir : null;
case 'stylelint:css':
return $this->plugin->hasFilesWithName('*.css') ? $defaultTaskPluginDir : null;
case 'stylelint:scss':
Expand Down
32 changes: 31 additions & 1 deletion tests/Command/GruntCommandTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,16 @@ public function testToGruntTaskWithGherkin()
$this->assertNull($command->toGruntTask('gherkinlint'));
}

public function testToGruntTaskWithStyles()
public function testToGruntTaskWithStylesCss()
{
$command = $this->newCommand();

$task = $command->toGruntTask('stylelint');
$this->assertInstanceOf(GruntTaskModel::class, $task);
$this->assertSame('stylelint', $task->taskName);
$this->assertSame('', $task->buildDirectory);
$this->assertSame($this->pluginDir, $task->workingDirectory);

$task = $command->toGruntTask('stylelint:css');
$this->assertInstanceOf(GruntTaskModel::class, $task);
$this->assertSame('stylelint:css', $task->taskName);
Expand All @@ -144,7 +150,31 @@ public function testToGruntTaskWithStyles()

$this->fs->remove($this->pluginDir . '/styles.css');

$this->assertNull($command->toGruntTask('stylelint'));
$this->assertNull($command->toGruntTask('stylelint:css'));
}

public function testToGruntTaskWithStylesScss()
{
$command = $this->newCommand();
$this->fs->mkdir($this->pluginDir . '/scss');
$this->fs->rename($this->pluginDir . '/styles.css', $this->pluginDir . '/scss/styles.scss');

$task = $command->toGruntTask('stylelint');
$this->assertInstanceOf(GruntTaskModel::class, $task);
$this->assertSame('stylelint', $task->taskName);
$this->assertSame('', $task->buildDirectory);
$this->assertSame($this->pluginDir, $task->workingDirectory);

$task = $command->toGruntTask('stylelint:scss');
$this->assertInstanceOf(GruntTaskModel::class, $task);
$this->assertSame('stylelint:scss', $task->taskName);
$this->assertSame('', $task->buildDirectory);
$this->assertSame($this->pluginDir, $task->workingDirectory);

$this->fs->remove($this->pluginDir . '/scss');

$this->assertNull($command->toGruntTask('stylelint'));
$this->assertNull($command->toGruntTask('stylelint:scss'));
}

Expand Down

0 comments on commit 42968a4

Please sign in to comment.