@ -6,6 +6,7 @@ package queue 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					import  (  
			
		
	
		
			
				
						"io/ioutil"   
			
		
	
		
			
				
						"sync"   
			
		
	
		
			
				
						"testing"   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						"code.gitea.io/gitea/modules/util"   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -22,6 +23,7 @@ func TestPersistableChannelQueue(t *testing.T) { 
			
		
	
		
			
				
							}   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						lock  :=  sync . Mutex { }   
			
		
	
		
			
				
						queueShutdown  :=  [ ] func ( ) { }   
			
		
	
		
			
				
						queueTerminate  :=  [ ] func ( ) { }   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -41,8 +43,12 @@ func TestPersistableChannelQueue(t *testing.T) { 
			
		
	
		
			
				
						assert . NoError ( t ,  err )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						go  queue . Run ( func ( shutdown  func ( ) )  {   
			
		
	
		
			
				
							lock . Lock ( )   
			
		
	
		
			
				
							defer  lock . Unlock ( )   
			
		
	
		
			
				
							queueShutdown  =  append ( queueShutdown ,  shutdown )   
			
		
	
		
			
				
						} ,  func ( terminate  func ( ) )  {   
			
		
	
		
			
				
							lock . Lock ( )   
			
		
	
		
			
				
							defer  lock . Unlock ( )   
			
		
	
		
			
				
							queueTerminate  =  append ( queueTerminate ,  terminate )   
			
		
	
		
			
				
						} )   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -69,7 +75,11 @@ func TestPersistableChannelQueue(t *testing.T) { 
			
		
	
		
			
				
						assert . Error ( t ,  err )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						// Now shutdown the queue
   
			
		
	
		
			
				
						for  _ ,  callback  :=  range  queueShutdown  {   
			
		
	
		
			
				
						lock . Lock ( )   
			
		
	
		
			
				
						callbacks  :=  make ( [ ] func ( ) ,  len ( queueShutdown ) )   
			
		
	
		
			
				
						copy ( callbacks ,  queueShutdown )   
			
		
	
		
			
				
						lock . Unlock ( )   
			
		
	
		
			
				
						for  _ ,  callback  :=  range  callbacks  {   
			
		
	
		
			
				
							callback ( )   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -87,7 +97,11 @@ func TestPersistableChannelQueue(t *testing.T) { 
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						// terminate the queue
   
			
		
	
		
			
				
						for  _ ,  callback  :=  range  queueTerminate  {   
			
		
	
		
			
				
						lock . Lock ( )   
			
		
	
		
			
				
						callbacks  =  make ( [ ] func ( ) ,  len ( queueTerminate ) )   
			
		
	
		
			
				
						copy ( callbacks ,  queueTerminate )   
			
		
	
		
			
				
						lock . Unlock ( )   
			
		
	
		
			
				
						for  _ ,  callback  :=  range  callbacks  {   
			
		
	
		
			
				
							callback ( )   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -110,8 +124,12 @@ func TestPersistableChannelQueue(t *testing.T) { 
			
		
	
		
			
				
						assert . NoError ( t ,  err )   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						go  queue . Run ( func ( shutdown  func ( ) )  {   
			
		
	
		
			
				
							lock . Lock ( )   
			
		
	
		
			
				
							defer  lock . Unlock ( )   
			
		
	
		
			
				
							queueShutdown  =  append ( queueShutdown ,  shutdown )   
			
		
	
		
			
				
						} ,  func ( terminate  func ( ) )  {   
			
		
	
		
			
				
							lock . Lock ( )   
			
		
	
		
			
				
							defer  lock . Unlock ( )   
			
		
	
		
			
				
							queueTerminate  =  append ( queueTerminate ,  terminate )   
			
		
	
		
			
				
						} )   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -122,10 +140,19 @@ func TestPersistableChannelQueue(t *testing.T) { 
			
		
	
		
			
				
						result4  :=  <- handleChan   
			
		
	
		
			
				
						assert . Equal ( t ,  test2 . TestString ,  result4 . TestString )   
			
		
	
		
			
				
						assert . Equal ( t ,  test2 . TestInt ,  result4 . TestInt )   
			
		
	
		
			
				
						for  _ ,  callback  :=  range  queueShutdown  {   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						lock . Lock ( )   
			
		
	
		
			
				
						callbacks  =  make ( [ ] func ( ) ,  len ( queueShutdown ) )   
			
		
	
		
			
				
						copy ( callbacks ,  queueShutdown )   
			
		
	
		
			
				
						lock . Unlock ( )   
			
		
	
		
			
				
						for  _ ,  callback  :=  range  callbacks  {   
			
		
	
		
			
				
							callback ( )   
			
		
	
		
			
				
						}   
			
		
	
		
			
				
						for  _ ,  callback  :=  range  queueTerminate  {   
			
		
	
		
			
				
						lock . Lock ( )   
			
		
	
		
			
				
						callbacks  =  make ( [ ] func ( ) ,  len ( queueTerminate ) )   
			
		
	
		
			
				
						copy ( callbacks ,  queueTerminate )   
			
		
	
		
			
				
						lock . Unlock ( )   
			
		
	
		
			
				
						for  _ ,  callback  :=  range  callbacks  {   
			
		
	
		
			
				
							callback ( )   
			
		
	
		
			
				
						}