| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- SandboxedModule = require('sandboxed-module')
- sinon = require('sinon')
- require('chai').should()
- modulePath = require('path').join __dirname, '../../../app/js/LockManager'
- Path = require "path"
- Errors = require "../../../app/js/Errors"
- describe "DockerLockManager", ->
- beforeEach ->
- @LockManager = SandboxedModule.require modulePath, requires:
- "settings-sharelatex": {}
- "logger-sharelatex": @logger = { log: sinon.stub(), error: sinon.stub(), err:-> }
- "fs":
- lstat:sinon.stub().callsArgWith(1)
- readdir: sinon.stub().callsArgWith(1)
- "lockfile": @Lockfile = {}
- @lockFile = "/local/compile/directory/.project-lock"
- describe "runWithLock", ->
- beforeEach ->
- @runner = sinon.stub().callsArgWith(0, null, "foo", "bar")
- @callback = sinon.stub()
- describe "normally", ->
- beforeEach ->
- @Lockfile.lock = sinon.stub().callsArgWith(2, null)
- @Lockfile.unlock = sinon.stub().callsArgWith(1, null)
- @LockManager.runWithLock @lockFile, @runner, @callback
- it "should run the compile", ->
- @runner
- .calledWith()
- .should.equal true
- it "should call the callback with the response from the compile", ->
- @callback
- .calledWithExactly(null, "foo", "bar")
- .should.equal true
- describe "when the project is locked", ->
- beforeEach ->
- @error = new Error()
- @error.code = "EEXIST"
- @Lockfile.lock = sinon.stub().callsArgWith(2,@error)
- @Lockfile.unlock = sinon.stub().callsArgWith(1, null)
- @LockManager.runWithLock @lockFile, @runner, @callback
- it "should not run the compile", ->
- @runner
- .called
- .should.equal false
- it "should return an error", ->
- error = new Errors.AlreadyCompilingError()
- @callback
- .calledWithExactly(error)
- .should.equal true
|