2022-03-30 15:46:49 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  *  as  cache  from  "@actions/cache" ;  
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  *  as  core  from  "@actions/core" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-17 15:46:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  Events ,  Outputs ,  RefKey ,  State  }  from  "../src/constants" ;  
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  *  as  actionUtils  from  "../src/utils/actionUtils" ;  
						 
					
						
							
								
									
										
										
										
											2020-06-02 10:21:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  *  as  testUtils  from  "../src/utils/testUtils" ;  
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								jest . mock ( "@actions/core" ) ;  
						 
					
						
							
								
									
										
										
										
											2022-03-30 15:46:49 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								jest . mock ( "@actions/cache" ) ;  
						 
					
						
							
								
									
										
										
										
											2020-03-20 13:02:11 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-06-02 10:21:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								beforeAll ( ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    jest . spyOn ( core ,  "getInput" ) . mockImplementation ( ( name ,  options )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  jest . requireActual ( "@actions/core" ) . getInput ( name ,  options ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								afterEach ( ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    delete  process . env [ Events . Key ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-17 15:46:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    delete  process . env [ RefKey ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-09-29 12:36:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "isGhes returns true if server url is not github.com" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . env [ "GITHUB_SERVER_URL" ]  =  "http://example.com" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expect ( actionUtils . isGhes ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . env [ "GITHUB_SERVER_URL" ]  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-02-07 14:20:40 +09:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "isGhes returns false when server url is github.com" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2020-09-29 12:36:19 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . env [ "GITHUB_SERVER_URL" ]  =  "http://github.com" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expect ( actionUtils . isGhes ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . env [ "GITHUB_SERVER_URL" ]  =  undefined ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "isExactKeyMatch with undefined cache key returns false" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  undefined ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( actionUtils . isExactKeyMatch ( key ,  cacheKey ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "isExactKeyMatch with empty cache key returns false" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  "" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( actionUtils . isExactKeyMatch ( key ,  cacheKey ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "isExactKeyMatch with different keys returns false" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  "linux-" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( actionUtils . isExactKeyMatch ( key ,  cacheKey ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "isExactKeyMatch with different key accents returns false" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-Ɣccent" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  "linux-accent" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( actionUtils . isExactKeyMatch ( key ,  cacheKey ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "isExactKeyMatch with same key returns true" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( actionUtils . isExactKeyMatch ( key ,  cacheKey ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "isExactKeyMatch with same key and different casing returns true" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  "LINUX-RUST" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( actionUtils . isExactKeyMatch ( key ,  cacheKey ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "setOutputAndState with undefined entry to set cache-hit output" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  undefined ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  setOutputMock  =  jest . spyOn ( core ,  "setOutput" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  saveStateMock  =  jest . spyOn ( core ,  "saveState" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    actionUtils . setOutputAndState ( key ,  cacheKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( setOutputMock ) . toHaveBeenCalledWith ( Outputs . CacheHit ,  "false" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( setOutputMock ) . toHaveBeenCalledTimes ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( saveStateMock ) . toHaveBeenCalledTimes ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "setOutputAndState with exact match to set cache-hit output and state" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  setOutputMock  =  jest . spyOn ( core ,  "setOutput" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  saveStateMock  =  jest . spyOn ( core ,  "saveState" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    actionUtils . setOutputAndState ( key ,  cacheKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( setOutputMock ) . toHaveBeenCalledWith ( Outputs . CacheHit ,  "true" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( setOutputMock ) . toHaveBeenCalledTimes ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 13:46:58 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( saveStateMock ) . toHaveBeenCalledWith ( State . CacheMatchedKey ,  cacheKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    expect ( saveStateMock ) . toHaveBeenCalledTimes ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "setOutputAndState with no exact match to set cache-hit output and state" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  key  =  "linux-rust" ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  "linux-rust-bb828da54c148048dd17899ba9fda624811cfb43" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  setOutputMock  =  jest . spyOn ( core ,  "setOutput" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  saveStateMock  =  jest . spyOn ( core ,  "saveState" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    actionUtils . setOutputAndState ( key ,  cacheKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( setOutputMock ) . toHaveBeenCalledWith ( Outputs . CacheHit ,  "false" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( setOutputMock ) . toHaveBeenCalledTimes ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 13:46:58 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( saveStateMock ) . toHaveBeenCalledWith ( State . CacheMatchedKey ,  cacheKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    expect ( saveStateMock ) . toHaveBeenCalledTimes ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getCacheState with no state returns undefined" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  getStateMock  =  jest . spyOn ( core ,  "getState" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getStateMock . mockImplementation ( ( )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  state  =  actionUtils . getCacheState ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( state ) . toBe ( undefined ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 13:46:58 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( getStateMock ) . toHaveBeenCalledWith ( State . CacheMatchedKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    expect ( getStateMock ) . toHaveBeenCalledTimes ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getCacheState with valid state" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  cacheKey  =  "Linux-node-bb828da54c148048dd17899ba9fda624811cfb43" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  getStateMock  =  jest . spyOn ( core ,  "getState" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getStateMock . mockImplementation ( ( )  = >  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  cacheKey ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  state  =  actionUtils . getCacheState ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-14 17:27:38 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( state ) . toEqual ( cacheKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 13:46:58 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( getStateMock ) . toHaveBeenCalledWith ( State . CacheMatchedKey ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    expect ( getStateMock ) . toHaveBeenCalledTimes ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-11-21 14:37:54 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "logWarning logs a message with a warning prefix" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  message  =  "A warning occurred." ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  infoMock  =  jest . spyOn ( core ,  "info" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    actionUtils . logWarning ( message ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( infoMock ) . toHaveBeenCalledWith ( ` [warning] ${ message } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-17 15:46:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "isValidEvent returns false for event that does not have a branch or tag" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  event  =  "foo" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . env [ Events . Key ]  =  event ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  isValidEvent  =  actionUtils . isValidEvent ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( isValidEvent ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-04-17 15:46:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "isValidEvent returns true for event that has a ref" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    const  event  =  Events . Push ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    process . env [ Events . Key ]  =  event ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-04-17 15:46:46 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    process . env [ RefKey ]  =  "ref/heads/feature" ; 
							 
						 
					
						
							
								
									
										
										
										
											2019-11-13 16:13:00 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  isValidEvent  =  actionUtils . isValidEvent ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( isValidEvent ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2020-06-02 10:21:03 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsArray returns empty array if not required and missing" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsArray ( "foo" ) ) . toEqual ( [ ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsArray throws error if required and missing" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( ( )  = > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        actionUtils . getInputAsArray ( "foo" ,  {  required : true  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) . toThrowError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsArray handles single line correctly" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    testUtils . setInput ( "foo" ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsArray ( "foo" ) ) . toEqual ( [ "bar" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsArray handles multiple lines correctly" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    testUtils . setInput ( "foo" ,  "bar\nbaz" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsArray ( "foo" ) ) . toEqual ( [ "bar" ,  "baz" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsArray handles different new lines correctly" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    testUtils . setInput ( "foo" ,  "bar\r\nbaz" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsArray ( "foo" ) ) . toEqual ( [ "bar" ,  "baz" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsArray handles empty lines correctly" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    testUtils . setInput ( "foo" ,  "\n\nbar\n\nbaz\n\n" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsArray ( "foo" ) ) . toEqual ( [ "bar" ,  "baz" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2020-10-02 09:59:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-28 20:34:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "getInputAsArray sorts files correctly" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2022-08-22 12:45:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    testUtils . setInput ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "foo" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "bar\n!baz\nwaldo\nqux\nquux\ncorge\ngrault\ngarply" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-11-28 20:34:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsArray ( "foo" ) ) . toEqual ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "!baz" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "bar" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "corge" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "garply" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "grault" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "quux" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "qux" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "waldo" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsArray removes spaces after ! at the beginning" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    testUtils . setInput ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "foo" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "!   bar\n!  baz\n! qux\n!quux\ncorge\ngrault! garply\n!\r\t waldo" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsArray ( "foo" ) ) . toEqual ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "!bar" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "!baz" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "!quux" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "!qux" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "!waldo" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "corge" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "grault! garply" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-10-02 09:59:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								test ( "getInputAsInt returns undefined if input not set" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2020-10-02 10:55:30 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsInt ( "undefined" ) ) . toBeUndefined ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2020-10-02 09:59:55 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsInt returns value if input is valid" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    testUtils . setInput ( "foo" ,  "8" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsInt ( "foo" ) ) . toBe ( 8 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsInt returns undefined if input is invalid or NaN" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    testUtils . setInput ( "foo" ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . getInputAsInt ( "foo" ) ) . toBeUndefined ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2020-10-02 10:55:30 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "getInputAsInt throws if required and value missing" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( ( )  = > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        actionUtils . getInputAsInt ( "undefined" ,  {  required : true  } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ) . toThrowError ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2022-03-30 15:46:49 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "isCacheFeatureAvailable for ac enabled" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    jest . spyOn ( cache ,  "isFeatureAvailable" ) . mockImplementation ( ( )  = >  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    expect ( actionUtils . isCacheFeatureAvailable ( ) ) . toBe ( true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "isCacheFeatureAvailable for ac disabled on GHES" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    jest . spyOn ( cache ,  "isFeatureAvailable" ) . mockImplementation ( ( )  = >  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-09-15 05:39:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  message  =  ` Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not.
 
							 
						 
					
						
							
								
									
										
										
										
											2022-09-15 08:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Otherwise  please  upgrade  to  GHES  version  >=  3.5  and  If  you  are  also  using  Github  Connect ,  please  unretire  the  actions / cache  namespace  before  upgrade  ( see  https : //docs.github.com/en/enterprise-server@3.5/admin/github-actions/managing-access-to-actions-from-githubcom/enabling-automatic-access-to-githubcom-actions-using-github-connect#automatic-retirement-of-namespaces-for-actions-accessed-on-githubcom)`;
  
						 
					
						
							
								
									
										
										
										
											2022-03-30 15:46:49 +05:30 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  infoMock  =  jest . spyOn ( core ,  "info" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . env [ "GITHUB_SERVER_URL" ]  =  "http://example.com" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expect ( actionUtils . isCacheFeatureAvailable ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expect ( infoMock ) . toHaveBeenCalledWith ( ` [warning] ${ message } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        delete  process . env [ "GITHUB_SERVER_URL" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								test ( "isCacheFeatureAvailable for ac disabled on dotcom" ,  ( )  = >  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    jest . spyOn ( cache ,  "isFeatureAvailable" ) . mockImplementation ( ( )  = >  false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  message  = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        "An internal error has occurred in cache backend. Please check https://www.githubstatus.com/ for any ongoing issue in actions." ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  infoMock  =  jest . spyOn ( core ,  "info" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        process . env [ "GITHUB_SERVER_URL" ]  =  "http://github.com" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expect ( actionUtils . isCacheFeatureAvailable ( ) ) . toBe ( false ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expect ( infoMock ) . toHaveBeenCalledWith ( ` [warning] ${ message } ` ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  finally  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        delete  process . env [ "GITHUB_SERVER_URL" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;