| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-22 03:23:50 +02:00
										 |  |  | require "lock_file" | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-22 03:23:50 +02:00
										 |  |  | describe LockFile do | 
					
						
							| 
									
										
										
										
											2021-01-31 13:14:23 -05:00
										 |  |  |   subject(:lock_file) { described_class.new("foo") } | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   describe "#lock" do | 
					
						
							|  |  |  |     it "does not raise an error when already locked" do | 
					
						
							| 
									
										
										
										
											2021-01-31 13:14:23 -05:00
										 |  |  |       lock_file.lock | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-31 13:14:23 -05:00
										 |  |  |       expect { lock_file.lock }.not_to raise_error | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it "raises an error if a lock already exists" do | 
					
						
							| 
									
										
										
										
											2021-01-31 13:14:23 -05:00
										 |  |  |       lock_file.lock | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       expect do | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  |         described_class.new("foo").lock | 
					
						
							| 
									
										
										
										
											2023-03-08 23:14:46 +00:00
										 |  |  |       end.to raise_error(OperationInProgressError) | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   describe "#unlock" do | 
					
						
							|  |  |  |     it "does not raise an error when already unlocked" do | 
					
						
							| 
									
										
										
										
											2021-01-31 13:14:23 -05:00
										 |  |  |       expect { lock_file.unlock }.not_to raise_error | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-22 03:23:50 +02:00
										 |  |  |     it "unlocks when locked" do | 
					
						
							| 
									
										
										
										
											2021-01-31 13:14:23 -05:00
										 |  |  |       lock_file.lock | 
					
						
							|  |  |  |       lock_file.unlock | 
					
						
							| 
									
										
										
										
											2017-02-20 22:43:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |       expect { described_class.new("foo").lock }.not_to raise_error | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |