@@ -3876,6 +3876,75 @@ describe("ESLint", () => {
38763876
38773877 } ) ;
38783878
3879+ // https://github.com/eslint/markdown/blob/main/rfcs/configure-file-name-from-block-meta.md#name-uniqueness
3880+ it ( "should allow processors to return filenames with a slash and treat them as subpaths" , async ( ) => {
3881+ eslint = new ESLint ( {
3882+ flags,
3883+ overrideConfigFile : true ,
3884+ overrideConfig : [
3885+ {
3886+ plugins : {
3887+ test : {
3888+ processors : {
3889+ txt : {
3890+ preprocess ( input ) {
3891+ return input . split ( " " ) . map ( ( text , index ) => ( {
3892+ filename : `example-${ index } /a.js` ,
3893+ text
3894+ } ) ) ;
3895+ } ,
3896+ postprocess ( messagesList ) {
3897+ return messagesList . flat ( ) ;
3898+ }
3899+ }
3900+ } ,
3901+ rules : {
3902+ "test-rule" : {
3903+ meta : { } ,
3904+ create ( context ) {
3905+ return {
3906+ Identifier ( node ) {
3907+ context . report ( {
3908+ node,
3909+ message : `filename: ${ context . filename } physicalFilename: ${ context . physicalFilename } identifier: ${ node . name } `
3910+ } ) ;
3911+ }
3912+ } ;
3913+ }
3914+ }
3915+ }
3916+ }
3917+ }
3918+ } ,
3919+ {
3920+ files : [ "**/*.txt" ] ,
3921+ processor : "test/txt"
3922+ } ,
3923+ {
3924+ files : [ "**/a.js" ] ,
3925+ rules : {
3926+ "test/test-rule" : "error"
3927+ }
3928+ }
3929+ ] ,
3930+ cwd : path . join ( fixtureDir , ".." )
3931+ } ) ;
3932+ const filename = getFixturePath ( "processors" , "test" , "test-subpath.txt" ) ;
3933+ const [ result ] = await eslint . lintFiles ( [ filename ] ) ;
3934+
3935+ assert . strictEqual ( result . messages . length , 3 ) ;
3936+
3937+ assert . strictEqual ( result . messages [ 0 ] . ruleId , "test/test-rule" ) ;
3938+ assert . strictEqual ( result . messages [ 0 ] . message , `filename: ${ path . join ( filename , "0_example-0" , "a.js" ) } physicalFilename: ${ filename } identifier: foo` ) ;
3939+ assert . strictEqual ( result . messages [ 1 ] . ruleId , "test/test-rule" ) ;
3940+ assert . strictEqual ( result . messages [ 1 ] . message , `filename: ${ path . join ( filename , "1_example-1" , "a.js" ) } physicalFilename: ${ filename } identifier: bar` ) ;
3941+ assert . strictEqual ( result . messages [ 2 ] . ruleId , "test/test-rule" ) ;
3942+ assert . strictEqual ( result . messages [ 2 ] . message , `filename: ${ path . join ( filename , "2_example-2" , "a.js" ) } physicalFilename: ${ filename } identifier: baz` ) ;
3943+
3944+ assert . strictEqual ( result . suppressedMessages . length , 0 ) ;
3945+
3946+ } ) ;
3947+
38793948 describe ( "autofixing with processors" , ( ) => {
38803949 const HTML_PROCESSOR = Object . freeze ( {
38813950 preprocess ( text ) {
0 commit comments