| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- const { expect } = require('chai')
- const sinon = require('sinon')
- const LockManager = require('../../../app/js/LockManager')
- const Errors = require('../../../app/js/Errors')
- describe('LockManager', function () {
- beforeEach(function () {
- this.key = '/local/compile/directory'
- this.clock = sinon.useFakeTimers()
- })
- afterEach(function () {
- this.clock.restore()
- })
- describe('when the lock is available', function () {
- it('the lock can be acquired', function () {
- const lock = LockManager.acquire(this.key)
- expect(lock).to.exist
- lock.release()
- })
- })
- describe('after the lock is acquired', function () {
- beforeEach(function () {
- this.lock = LockManager.acquire(this.key)
- })
- afterEach(function () {
- if (this.lock != null) {
- this.lock.release()
- }
- })
- it("the lock can't be acquired again", function () {
- expect(() => LockManager.acquire(this.key)).to.throw(
- Errors.AlreadyCompilingError
- )
- })
- it('another lock can be acquired', function () {
- const lock = LockManager.acquire('another key')
- expect(lock).to.exist
- lock.release()
- })
- it('the lock can be acquired again after an expiry period', function () {
- // The expiry time is a little bit over 10 minutes. Let's wait 15 minutes.
- this.clock.tick(15 * 60 * 1000)
- this.lock = LockManager.acquire(this.key)
- expect(this.lock).to.exist
- })
- it('the lock can be acquired again after it was released', function () {
- this.lock.release()
- this.lock = LockManager.acquire(this.key)
- expect(this.lock).to.exist
- })
- })
- })
|