/* eslint-disable no-return-assign, no-unused-vars, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS102: Remove unnecessary code created because of implicit returns * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ const SandboxedModule = require('sandboxed-module'); const sinon = require('sinon'); require('chai').should(); const modulePath = require('path').join(__dirname, '../../../app/js/LockManager'); const Path = require("path"); const Errors = require("../../../app/js/Errors"); describe("DockerLockManager", function() { beforeEach(function() { this.LockManager = SandboxedModule.require(modulePath, { requires: { "settings-sharelatex": {}, "logger-sharelatex": (this.logger = { log: sinon.stub(), error: sinon.stub(), err() {} }), "fs": { lstat:sinon.stub().callsArgWith(1), readdir: sinon.stub().callsArgWith(1) }, "lockfile": (this.Lockfile = {}) } }); return this.lockFile = "/local/compile/directory/.project-lock"; }); return describe("runWithLock", function() { beforeEach(function() { this.runner = sinon.stub().callsArgWith(0, null, "foo", "bar"); return this.callback = sinon.stub(); }); describe("normally", function() { beforeEach(function() { this.Lockfile.lock = sinon.stub().callsArgWith(2, null); this.Lockfile.unlock = sinon.stub().callsArgWith(1, null); return this.LockManager.runWithLock(this.lockFile, this.runner, this.callback); }); it("should run the compile", function() { return this.runner .calledWith() .should.equal(true); }); return it("should call the callback with the response from the compile", function() { return this.callback .calledWithExactly(null, "foo", "bar") .should.equal(true); }); }); return describe("when the project is locked", function() { beforeEach(function() { this.error = new Error(); this.error.code = "EEXIST"; this.Lockfile.lock = sinon.stub().callsArgWith(2,this.error); this.Lockfile.unlock = sinon.stub().callsArgWith(1, null); return this.LockManager.runWithLock(this.lockFile, this.runner, this.callback); }); it("should not run the compile", function() { return this.runner .called .should.equal(false); }); return it("should return an error", function() { const error = new Errors.AlreadyCompilingError(); return this.callback .calledWithExactly(error) .should.equal(true); }); }); }); });