diff --git a/src/Command/GruntCommand.php b/src/Command/GruntCommand.php index 74f9a5a8..2d19079a 100644 --- a/src/Command/GruntCommand.php +++ b/src/Command/GruntCommand.php @@ -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') @@ -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': diff --git a/tests/Command/GruntCommandTest.php b/tests/Command/GruntCommandTest.php index 40dd79df..18b1cb83 100644 --- a/tests/Command/GruntCommandTest.php +++ b/tests/Command/GruntCommandTest.php @@ -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); @@ -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')); }