@@ -573,94 +573,98 @@ public function dataNestedSuppressLine()
573
573
/**
574
574
* Test suppressing a scope opener.
575
575
*
576
+ * @param string $before Annotation to place before the scope opener.
577
+ * @param string $after Annotation to place after the scope opener.
578
+ * @param int $expectedErrors Optional. Number of errors expected.
579
+ * Defaults to 0.
580
+ *
581
+ * @dataProvider dataSuppressScope
582
+ * @covers PHP_CodeSniffer\Tokenizers\Tokenizer::createPositionMap
583
+ *
576
584
* @return void
577
585
*/
578
- public function testSuppressScope ()
586
+ public function testSuppressScope ($ before , $ after , $ expectedErrors = 0 )
579
587
{
580
- $ config = new Config ();
581
- $ config ->standards = ['PEAR ' ];
582
- $ config ->sniffs = ['PEAR.Functions.FunctionDeclaration ' ];
583
-
584
- $ ruleset = new Ruleset ($ config );
585
-
586
- // Process without suppression.
587
- $ content = '<?php ' .PHP_EOL .'class MyClass() { ' .PHP_EOL .'function myFunction() { ' .PHP_EOL .'$this->foo(); ' .PHP_EOL .'} ' .PHP_EOL .'} ' ;
588
- $ file = new DummyFile ($ content , $ ruleset , $ config );
589
- $ file ->process ();
590
-
591
- $ errors = $ file ->getErrors ();
592
- $ numErrors = $ file ->getErrorCount ();
593
- $ this ->assertEquals (1 , $ numErrors );
594
- $ this ->assertCount (1 , $ errors );
595
-
596
- // Process with suppression.
597
- $ content = '<?php ' .PHP_EOL .'class MyClass() { ' .PHP_EOL .'//phpcs:disable ' .PHP_EOL .'function myFunction() { ' .PHP_EOL .'//phpcs:enable ' .PHP_EOL .'$this->foo(); ' .PHP_EOL .'} ' .PHP_EOL .'} ' ;
598
- $ file = new DummyFile ($ content , $ ruleset , $ config );
599
- $ file ->process ();
600
-
601
- $ errors = $ file ->getErrors ();
602
- $ numErrors = $ file ->getErrorCount ();
603
- $ this ->assertEquals (0 , $ numErrors );
604
- $ this ->assertCount (0 , $ errors );
605
-
606
- // Process with suppression (hash comment).
607
- $ content = '<?php ' .PHP_EOL .'class MyClass() { ' .PHP_EOL .'#phpcs:disable ' .PHP_EOL .'function myFunction() { ' .PHP_EOL .'#phpcs:enable ' .PHP_EOL .'$this->foo(); ' .PHP_EOL .'} ' .PHP_EOL .'} ' ;
608
- $ file = new DummyFile ($ content , $ ruleset , $ config );
609
- $ file ->process ();
610
-
611
- $ errors = $ file ->getErrors ();
612
- $ numErrors = $ file ->getErrorCount ();
613
- $ this ->assertEquals (0 , $ numErrors );
614
- $ this ->assertCount (0 , $ errors );
588
+ static $ config , $ ruleset ;
615
589
616
- // Process with suppression.
617
- $ content = ' <?php ' . PHP_EOL . ' class MyClass() { ' . PHP_EOL . ' //@phpcs:disable ' . PHP_EOL . ' function myFunction() { ' . PHP_EOL . ' //@phpcs:enable ' . PHP_EOL . ' $this->foo(); ' . PHP_EOL . ' } ' . PHP_EOL . ' } ' ;
618
- $ file = new DummyFile ( $ content , $ ruleset , $ config ) ;
619
- $ file -> process () ;
590
+ if ( isset ( $ config , $ ruleset ) === false ) {
591
+ $ config = new Config () ;
592
+ $ config -> standards = [ ' PEAR ' ] ;
593
+ $ config -> sniffs = [ ' PEAR.Functions.FunctionDeclaration ' ] ;
620
594
621
- $ errors = $ file ->getErrors ();
622
- $ numErrors = $ file ->getErrorCount ();
623
- $ this ->assertEquals (0 , $ numErrors );
624
- $ this ->assertCount (0 , $ errors );
595
+ $ ruleset = new Ruleset ($ config );
596
+ }
625
597
626
- // Process with suppression (deprecated syntax).
627
- $ content = '<?php ' .PHP_EOL .'class MyClass() { ' .PHP_EOL .'//@codingStandardsIgnoreStart ' .PHP_EOL .'function myFunction() { ' .PHP_EOL .'//@codingStandardsIgnoreEnd ' .PHP_EOL .'$this->foo(); ' .PHP_EOL .'} ' .PHP_EOL .'} ' ;
598
+ $ content = '<?php ' .PHP_EOL .$ before .'$var = FALSE; ' .$ after .PHP_EOL .'$var = FALSE; ' ;
599
+ $ content = <<<EOD
600
+ <?php
601
+ class MyClass() {
602
+ $ before
603
+ function myFunction() {
604
+ $ after
605
+ \$this->foo();
606
+ }
607
+ }
608
+ EOD ;
628
609
$ file = new DummyFile ($ content , $ ruleset , $ config );
629
610
$ file ->process ();
630
611
631
- $ errors = $ file ->getErrors ();
632
- $ numErrors = $ file ->getErrorCount ();
633
- $ this ->assertEquals (0 , $ numErrors );
634
- $ this ->assertCount (0 , $ errors );
635
-
636
- // Process with a docblock suppression.
637
- $ content = '<?php ' .PHP_EOL .'class MyClass() { ' .PHP_EOL .'/** phpcs:disable */ ' .PHP_EOL .'function myFunction() { ' .PHP_EOL .'/** phpcs:enable */ ' .PHP_EOL .'$this->foo(); ' .PHP_EOL .'} ' .PHP_EOL .'} ' ;
638
- $ file = new DummyFile ($ content , $ ruleset , $ config );
612
+ $ this ->assertSame ($ expectedErrors , $ file ->getErrorCount ());
613
+ $ this ->assertCount ($ expectedErrors , $ file ->getErrors ());
639
614
640
- $ errors = $ file ->getErrors ();
641
- $ numErrors = $ file ->getErrorCount ();
642
- $ this ->assertEquals (0 , $ numErrors );
643
- $ this ->assertCount (0 , $ errors );
615
+ }//end testSuppressScope()
644
616
645
- // Process with a docblock @ suppression.
646
- $ content = '<?php ' .PHP_EOL .'class MyClass() { ' .PHP_EOL .'/** @phpcs:disable */ ' .PHP_EOL .'function myFunction() { ' .PHP_EOL .'/** @phpcs:enable */ ' .PHP_EOL .'$this->foo(); ' .PHP_EOL .'} ' .PHP_EOL .'} ' ;
647
- $ file = new DummyFile ($ content , $ ruleset , $ config );
648
617
649
- $ errors = $ file ->getErrors ();
650
- $ numErrors = $ file ->getErrorCount ();
651
- $ this ->assertEquals (0 , $ numErrors );
652
- $ this ->assertCount (0 , $ errors );
618
+ /**
619
+ * Data provider.
620
+ *
621
+ * @see testSuppressScope()
622
+ *
623
+ * @return array
624
+ */
625
+ public function dataSuppressScope ()
626
+ {
627
+ return [
628
+ 'no suppression ' => [
629
+ 'before ' => '' ,
630
+ 'after ' => '' ,
631
+ 'expectedErrors ' => 1 ,
632
+ ],
653
633
654
- // Process with a docblock suppression (deprecated syntax).
655
- $ content = '<?php ' .PHP_EOL .'class MyClass() { ' .PHP_EOL .'/** @codingStandardsIgnoreStart */ ' .PHP_EOL .'function myFunction() { ' .PHP_EOL .'/** @codingStandardsIgnoreEnd */ ' .PHP_EOL .'$this->foo(); ' .PHP_EOL .'} ' .PHP_EOL .'} ' ;
656
- $ file = new DummyFile ($ content , $ ruleset , $ config );
634
+ // Process with suppression.
635
+ 'disable/enable: slash comment ' => [
636
+ 'before ' => '//phpcs:disable ' ,
637
+ 'after ' => '//phpcs:enable ' ,
638
+ ],
639
+ 'disable/enable: slash comment, with @ ' => [
640
+ 'before ' => '//@phpcs:disable ' ,
641
+ 'after ' => '//@phpcs:enable ' ,
642
+ ],
643
+ 'disable/enable: hash comment ' => [
644
+ 'before ' => '#phpcs:disable ' ,
645
+ 'after ' => '#phpcs:enable ' ,
646
+ ],
647
+ 'disable/enable: single line docblock comment ' => [
648
+ 'before ' => '/** phpcs:disable */ ' ,
649
+ 'after ' => '/** phpcs:enable */ ' ,
650
+ ],
651
+ 'disable/enable: single line docblock comment, with @ ' => [
652
+ 'before ' => '/** @phpcs:disable */ ' ,
653
+ 'after ' => '/** @phpcs:enable */ ' ,
654
+ ],
657
655
658
- $ errors = $ file ->getErrors ();
659
- $ numErrors = $ file ->getErrorCount ();
660
- $ this ->assertEquals (0 , $ numErrors );
661
- $ this ->assertCount (0 , $ errors );
656
+ // Deprecated syntax.
657
+ 'old style: start/end, slash comment ' => [
658
+ 'before ' => '//@codingStandardsIgnoreStart ' ,
659
+ 'after ' => '//@codingStandardsIgnoreEnd ' ,
660
+ ],
661
+ 'old style: start/end, single line docblock comment ' => [
662
+ 'before ' => '/** @codingStandardsIgnoreStart */ ' ,
663
+ 'after ' => '/** @codingStandardsIgnoreEnd */ ' ,
664
+ ],
665
+ ];
662
666
663
- }//end testSuppressScope ()
667
+ }//end dataSuppressScope ()
664
668
665
669
666
670
/**
0 commit comments