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 13, 2024
1 parent 360562c commit f09b894
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 2 deletions.
7 changes: 7 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ This project adheres to [Semantic Versioning](https://semver.org/).
The format of this change log follows the advice given at [Keep a CHANGELOG](https://keepachangelog.com).

## [Unreleased]
### Fixed
- Fixed stylelinting error in non-theme plugins containing scss.

### Removed
- Stylelint less component task (`grunt stylelint:less`) has been deprecated in
Moodle 3.7.

## [4.5.4] - 2024-08-23
### Changed
- Fixed nvm loading issue caused by upstream regression.
Expand Down
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 f09b894

Please sign in to comment.