acceptence tests pass inside docker container (apart from sync)

This commit is contained in:
Henry Oswald
2018-02-16 11:36:32 +00:00
parent 017ba3a4ec
commit a2a8b70b74
16 changed files with 351 additions and 310 deletions

View File

@@ -1,23 +1,16 @@
FROM node:6.9.5 FROM node:6.13.0
RUN wget -qO- https://get.docker.com/ | sh
run apt-get install poppler-utils vim ghostscript --yes
# run git build-essential --yes
# RUN git clone https://github.com/netblue30/firejail.git
# RUN cd firejail && ./configure && make && make install-strip
# run mkdir /data
COPY ./ /app COPY ./ /app
WORKDIR /app WORKDIR /app
RUN npm install RUN npm install
RUN [ -e ./install_deps.sh ] && ./install_deps.sh
RUN npm run compile RUN npm run compile
ENV SHARELATEX_CONFIG /app/config/settings.production.coffee
ENV NODE_ENV production ENV NODE_ENV production
CMD ["node","/app/app.js"] CMD ["node","/app/app.js"]

View File

@@ -165,9 +165,17 @@ app.use (error, req, res, next) ->
logger.error {err: error, url: req.url}, "server error" logger.error {err: error, url: req.url}, "server error"
res.sendStatus(error?.statusCode || 500) res.sendStatus(error?.statusCode || 500)
app.listen port = (Settings.internal?.clsi?.port or 3013), host = (Settings.internal?.clsi?.host or "localhost"), (error) -> port = (Settings.internal?.clsi?.port or 3013)
host = (Settings.internal?.clsi?.host or "localhost")
if !module.parent # Called directly
app.listen port, host, (error) ->
logger.info "CLSI starting up, listening on #{host}:#{port}" logger.info "CLSI starting up, listening on #{host}:#{port}"
module.exports = app
setInterval () -> setInterval () ->
ProjectPersistenceManager.clearExpiredProjects() ProjectPersistenceManager.clearExpiredProjects()
, tenMinutes = 10 * 60 * 1000 , tenMinutes = 10 * 60 * 1000

View File

@@ -20,7 +20,6 @@ module.exports =
clsi: clsi:
port: 3013 port: 3013
host: process.env["LISTEN_ADDRESS"] or "0.0.0.0" host: process.env["LISTEN_ADDRESS"] or "0.0.0.0"
apis: apis:
clsi: clsi:
url: "http://#{process.env['CLSI_HOST'] or 'localhost'}:3013" url: "http://#{process.env['CLSI_HOST'] or 'localhost'}:3013"

View File

@@ -14,16 +14,17 @@ services:
entrypoint: npm run test:unit entrypoint: npm run test:unit
test_acceptance: test_acceptance:
image: node:6.9.5 build: .
volumes:
- .:/app
environment: environment:
REDIS_HOST: redis TEXLIVE_IMAGE: quay.io/sharelatex/texlive-full:2017.1
MONGO_HOST: mongo TEXLIVE_IMAGE_USER: root # Not ideal, but makes running in dev very simple
depends_on: SHARELATEX_CONFIG: /app/config/settings.defaults.coffee
- redis COMMAND_RUNNER: docker-runner-sharelatex
- mongo COMPILES_HOST_DIR: $PWD/compiles
working_dir: /app volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./docker-runner:/app/node_modules/docker-runner-sharelatex
- ./compiles:/app/compiles
entrypoint: npm run test:acceptance entrypoint: npm run test:acceptance
redis: redis:
@@ -31,19 +32,3 @@ services:
mongo: mongo:
image: mongo:3.4 image: mongo:3.4
app:
image: gcr.io/henry-terraform-admin/clsi
build: .
environment:
TEXLIVE_IMAGE: quay.io/sharelatex/texlive-full:2017.1
TEXLIVE_IMAGE_USER: root # Not ideal, but makes running in dev very simple
COMMAND_RUNNER: docker-runner-sharelatex
SHARELATEX_CONFIG: /app/config/settings.defaults.coffee
COMPILES_HOST_DIR: $PWD/compiles
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./docker-runner:/app/node_modules/docker-runner-sharelatex
- /Users/henry/Projects/sharelatex-dev-environment/clsi/compiles:/app/compiles
ports:
- 3013:3013

4
install_deps.sh Executable file
View File

@@ -0,0 +1,4 @@
/bin/sh
wget -qO- https://get.docker.com/ | sh
apt-get install poppler-utils vim ghostscript --yes
npm rebuild

521
package-lock.json generated
View File

@@ -18,6 +18,12 @@
"resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz", "resolved": "https://registry.npmjs.org/async/-/async-0.2.9.tgz",
"integrity": "sha1-32MGD789Myhqdqr21Vophtn/hhk=" "integrity": "sha1-32MGD789Myhqdqr21Vophtn/hhk="
}, },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"optional": true
},
"bl": { "bl": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
@@ -208,6 +214,16 @@
} }
} }
}, },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
"optional": true,
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"browser-stdout": { "browser-stdout": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz",
@@ -396,8 +412,18 @@
"coffee-script": { "coffee-script": {
"version": "1.6.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz",
"integrity": "sha1-gIs5bhEPU9AhoZpO8fZb4OjjX6M=", "integrity": "sha1-gIs5bhEPU9AhoZpO8fZb4OjjX6M="
"dev": true },
"commander": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz",
"integrity": "sha1-0bhvkB+LZL2UG96tr5JFMDk76Sg="
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"optional": true
}, },
"concat-stream": { "concat-stream": {
"version": "1.5.2", "version": "1.5.2",
@@ -429,6 +455,11 @@
} }
} }
}, },
"cookie": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
},
"core-util-is": { "core-util-is": {
"version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
@@ -440,10 +471,15 @@
"ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
} }
}, },
"diff": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz",
"integrity": "sha1-JLuwAcSn1VIhaefKvbLCgU7ZHPQ="
},
"docker-modem": { "docker-modem": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-1.0.4.tgz", "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-1.0.4.tgz",
"integrity": "sha512-pkXB9p7KWagegOXm2NsbVDBluQQLCBJzX9uYJzVbL6CHwe4d2sSbcACJ4K8ISX1l1JUUmFSiwNkBKc1uTiU4MA==", "integrity": "sha1-JEJUsiax1/YCJfgjlb2FGQz3Ves=",
"requires": { "requires": {
"JSONStream": "0.10.0", "JSONStream": "0.10.0",
"debug": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "debug": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -467,17 +503,26 @@
"dockerode": { "dockerode": {
"version": "2.5.3", "version": "2.5.3",
"resolved": "https://registry.npmjs.org/dockerode/-/dockerode-2.5.3.tgz", "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-2.5.3.tgz",
"integrity": "sha512-LQKXR5jyI+G/+5OhZCi40m0ArY4j46g7Tl71Vtn10Ekt5TiyDzZAoqXOCS6edQpEuGbdFgSDJxleFqLxACpKJg==", "integrity": "sha1-Wsw8Bx96JuRDpbWM83U+8vPCvAQ=",
"requires": { "requires": {
"concat-stream": "1.5.2", "concat-stream": "1.5.2",
"docker-modem": "1.0.4", "docker-modem": "1.0.4",
"tar-fs": "1.12.0" "tar-fs": "1.12.0"
} }
}, },
"dtrace-provider": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz",
"integrity": "sha1-CweNVReTfYcxAUUtkUZzdVe3XlE=",
"optional": true,
"requires": {
"nan": "2.8.0"
}
},
"end-of-stream": { "end-of-stream": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=",
"requires": { "requires": {
"once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
} }
@@ -773,7 +818,7 @@
"setprototypeof": { "setprototypeof": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY="
}, },
"statuses": { "statuses": {
"version": "1.3.1", "version": "1.3.1",
@@ -932,6 +977,52 @@
} }
} }
}, },
"glob": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
"optional": true,
"requires": {
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
},
"dependencies": {
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"optional": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"optional": true,
"requires": {
"wrappy": "1.0.2"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"optional": true
}
}
},
"graceful-fs": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz",
"integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA="
},
"growl": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz",
"integrity": "sha1-3i1mE20ALhErpw8/EMMc98NQsto="
},
"grunt": { "grunt": {
"version": "0.4.5", "version": "0.4.5",
"resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz", "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
@@ -1478,6 +1569,32 @@
"resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.9.tgz", "resolved": "https://registry.npmjs.org/heapdump/-/heapdump-0.3.9.tgz",
"integrity": "sha1-A8dOsN9dZ74Jgug0KbqcnSs7f3g=" "integrity": "sha1-A8dOsN9dZ74Jgug0KbqcnSs7f3g="
}, },
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"optional": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
},
"dependencies": {
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"optional": true,
"requires": {
"wrappy": "1.0.2"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
},
"inherits": { "inherits": {
"version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
@@ -1486,6 +1603,32 @@
"version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
}, },
"jade": {
"version": "0.26.3",
"resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
"integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=",
"requires": {
"commander": "0.6.1",
"mkdirp": "0.3.0"
},
"dependencies": {
"commander": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
"integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY="
},
"mkdirp": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
"integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4="
}
}
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
"jsonparse": { "jsonparse": {
"version": "0.0.5", "version": "0.0.5",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
@@ -1504,22 +1647,6 @@
"raven": "1.2.1" "raven": "1.2.1"
}, },
"dependencies": { "dependencies": {
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"optional": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"optional": true,
"requires": {
"balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
"bunyan": { "bunyan": {
"version": "1.5.1", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz", "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.5.1.tgz",
@@ -1534,165 +1661,19 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz", "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.4.0.tgz",
"integrity": "sha1-XjvIqsJsAajie/EHcixWVfWtfTY=" "integrity": "sha1-XjvIqsJsAajie/EHcixWVfWtfTY="
}, }
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"optional": true
},
"cookie": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
},
"dtrace-provider": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz",
"integrity": "sha1-CweNVReTfYcxAUUtkUZzdVe3XlE=",
"optional": true,
"requires": {
"nan": "2.8.0"
} }
}, },
"glob": { "lru-cache": {
"version": "6.0.4", "version": "2.7.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
"optional": true,
"requires": {
"inflight": "1.0.6",
"inherits": "2.0.3",
"minimatch": "3.0.4",
"once": "1.4.0",
"path-is-absolute": "1.0.1"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"optional": true,
"requires": {
"once": "1.4.0",
"wrappy": "1.0.2"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"optional": true
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
}, },
"lsmod": { "lsmod": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/lsmod/-/lsmod-1.0.0.tgz", "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-1.0.0.tgz",
"integrity": "sha1-mgD3bco26yP6BTUK/htYXUKZ5ks=" "integrity": "sha1-mgD3bco26yP6BTUK/htYXUKZ5ks="
}, },
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"optional": true,
"requires": {
"brace-expansion": "1.1.11"
}
},
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"optional": true
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"optional": true,
"requires": {
"minimist": "0.0.8"
}
},
"mv": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
"integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
"optional": true,
"requires": {
"mkdirp": "0.5.1",
"ncp": "2.0.0",
"rimraf": "2.4.5"
}
},
"nan": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz",
"integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=",
"optional": true
},
"ncp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
"optional": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1.0.2"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"optional": true
},
"raven": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/raven/-/raven-1.2.1.tgz",
"integrity": "sha1-lJwTTbAooZC3u/j3kKrlQbfAIL0=",
"requires": {
"cookie": "0.3.1",
"json-stringify-safe": "5.0.1",
"lsmod": "1.0.0",
"stack-trace": "0.0.9",
"uuid": "3.0.0"
}
},
"rimraf": {
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
"integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
"optional": true,
"requires": {
"glob": "6.0.4"
}
},
"stack-trace": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz",
"integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU="
},
"uuid": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz",
"integrity": "sha1-Zyj8BFnEUNeWqZwxg3VpvfZy1yg="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
}
}
},
"lynx": { "lynx": {
"version": "0.0.11", "version": "0.0.11",
"resolved": "https://registry.npmjs.org/lynx/-/lynx-0.0.11.tgz", "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.0.11.tgz",
@@ -1714,6 +1695,11 @@
} }
} }
}, },
"mersenne": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.4.tgz",
"integrity": "sha1-QB/ex+whzbngPNPTAhOY2iGycIU="
},
"metrics-sharelatex": { "metrics-sharelatex": {
"version": "git+https://github.com/sharelatex/metrics-sharelatex.git#05bd57604115ae5efdca2a419fbef4f25e9a780f", "version": "git+https://github.com/sharelatex/metrics-sharelatex.git#05bd57604115ae5efdca2a419fbef4f25e9a780f",
"requires": { "requires": {
@@ -1722,11 +1708,6 @@
"underscore": "1.6.0" "underscore": "1.6.0"
}, },
"dependencies": { "dependencies": {
"coffee-script": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz",
"integrity": "sha1-gIs5bhEPU9AhoZpO8fZb4OjjX6M="
},
"lynx": { "lynx": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz", "resolved": "https://registry.npmjs.org/lynx/-/lynx-0.1.1.tgz",
@@ -1736,16 +1717,6 @@
"statsd-parser": "0.0.4" "statsd-parser": "0.0.4"
} }
}, },
"mersenne": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/mersenne/-/mersenne-0.0.4.tgz",
"integrity": "sha1-QB/ex+whzbngPNPTAhOY2iGycIU="
},
"statsd-parser": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz",
"integrity": "sha1-y9JDlTzELv/VSLXSI4jtaJ7GOb0="
},
"underscore": { "underscore": {
"version": "1.6.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
@@ -1753,6 +1724,15 @@
} }
} }
}, },
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
"optional": true,
"requires": {
"brace-expansion": "1.1.11"
}
},
"minimist": { "minimist": {
"version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
@@ -1765,7 +1745,7 @@
"mocha": { "mocha": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz", "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.1.0.tgz",
"integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", "integrity": "sha1-fYbPvPNcuCnidUwy4XNV7AUzh5Q=",
"dev": true, "dev": true,
"requires": { "requires": {
"browser-stdout": "1.3.0", "browser-stdout": "1.3.0",
@@ -1799,7 +1779,7 @@
"commander": { "commander": {
"version": "2.11.0", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
"integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=",
"dev": true "dev": true
}, },
"concat-map": { "concat-map": {
@@ -1811,7 +1791,7 @@
"debug": { "debug": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
"dev": true, "dev": true,
"requires": { "requires": {
"ms": "2.0.0" "ms": "2.0.0"
@@ -1820,7 +1800,7 @@
"diff": { "diff": {
"version": "3.3.1", "version": "3.3.1",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz",
"integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", "integrity": "sha1-qoVnpu7QPFMfyJ0/cRzQ5SWd7HU=",
"dev": true "dev": true
}, },
"fs.realpath": { "fs.realpath": {
@@ -1846,7 +1826,7 @@
"growl": { "growl": {
"version": "1.10.3", "version": "1.10.3",
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz",
"integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", "integrity": "sha1-GSa6kM8+3+KttJJ/WIC8IsZseQ8=",
"dev": true "dev": true
}, },
"inflight": { "inflight": {
@@ -1922,6 +1902,34 @@
"version": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "version": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}, },
"mv": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
"integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
"optional": true,
"requires": {
"mkdirp": "0.5.1",
"ncp": "2.0.0",
"rimraf": "2.4.5"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"optional": true
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"optional": true,
"requires": {
"minimist": "0.0.8"
}
}
}
},
"mysql": { "mysql": {
"version": "2.6.2", "version": "2.6.2",
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.6.2.tgz", "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.6.2.tgz",
@@ -1975,6 +1983,18 @@
} }
} }
}, },
"nan": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz",
"integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=",
"optional": true
},
"ncp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
"optional": true
},
"node-uuid": { "node-uuid": {
"version": "1.4.8", "version": "1.4.8",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
@@ -1987,6 +2007,12 @@
"wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
} }
}, },
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"optional": true
},
"process-nextick-args": { "process-nextick-args": {
"version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
@@ -1994,16 +2020,28 @@
"pump": { "pump": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
"integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", "integrity": "sha1-Xf6DEcM7v2/BgmH580cCxHwIqVQ=",
"requires": { "requires": {
"end-of-stream": "1.4.1", "end-of-stream": "1.4.1",
"once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
} }
}, },
"raven": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/raven/-/raven-1.2.1.tgz",
"integrity": "sha1-lJwTTbAooZC3u/j3kKrlQbfAIL0=",
"requires": {
"cookie": "0.3.1",
"json-stringify-safe": "5.0.1",
"lsmod": "1.0.0",
"stack-trace": "0.0.9",
"uuid": "3.0.0"
}
},
"request": { "request": {
"version": "2.83.0", "version": "2.83.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
"integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "integrity": "sha1-ygtl2gLtYpNYh4COb1EDgQNOM1Y=",
"requires": { "requires": {
"aws-sign2": "0.7.0", "aws-sign2": "0.7.0",
"aws4": "1.6.0", "aws4": "1.6.0",
@@ -2361,7 +2399,7 @@
"uuid": { "uuid": {
"version": "3.2.1", "version": "3.2.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
"integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" "integrity": "sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ="
}, },
"verror": { "verror": {
"version": "1.10.0", "version": "1.10.0",
@@ -2375,6 +2413,15 @@
} }
} }
}, },
"rimraf": {
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
"integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
"optional": true,
"requires": {
"glob": "6.0.4"
}
},
"safe-buffer": { "safe-buffer": {
"version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM="
@@ -2471,14 +2518,12 @@
"version": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559", "version": "git+https://github.com/sharelatex/settings-sharelatex.git#cbc5e41c1dbe6789721a14b3fdae05bf22546559",
"requires": { "requires": {
"coffee-script": "1.6.0" "coffee-script": "1.6.0"
}
}, },
"dependencies": { "sigmund": {
"coffee-script": { "version": "1.0.1",
"version": "1.6.0", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.6.0.tgz", "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
"integrity": "sha1-gIs5bhEPU9AhoZpO8fZb4OjjX6M="
}
}
}, },
"sinon": { "sinon": {
"version": "1.7.3", "version": "1.7.3",
@@ -2512,16 +2557,6 @@
"mocha": "1.17.1" "mocha": "1.17.1"
}, },
"dependencies": { "dependencies": {
"commander": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.0.0.tgz",
"integrity": "sha1-0bhvkB+LZL2UG96tr5JFMDk76Sg="
},
"diff": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/diff/-/diff-1.0.7.tgz",
"integrity": "sha1-JLuwAcSn1VIhaefKvbLCgU7ZHPQ="
},
"glob": { "glob": {
"version": "3.2.3", "version": "3.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz",
@@ -2532,47 +2567,11 @@
"minimatch": "0.2.14" "minimatch": "0.2.14"
} }
}, },
"graceful-fs": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz",
"integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA="
},
"growl": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/growl/-/growl-1.7.0.tgz",
"integrity": "sha1-3i1mE20ALhErpw8/EMMc98NQsto="
},
"inherits": { "inherits": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
}, },
"jade": {
"version": "0.26.3",
"resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
"integrity": "sha1-jxDXl32NefL2/4YqgbBRPMslaGw=",
"requires": {
"commander": "0.6.1",
"mkdirp": "0.3.0"
},
"dependencies": {
"commander": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz",
"integrity": "sha1-+mihT2qUXVTbvlDYzbMyDp47GgY="
},
"mkdirp": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz",
"integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4="
}
}
},
"lru-cache": {
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
"integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
},
"minimatch": { "minimatch": {
"version": "0.2.14", "version": "0.2.14",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
@@ -2595,11 +2594,6 @@
"jade": "0.26.3", "jade": "0.26.3",
"mkdirp": "0.3.5" "mkdirp": "0.3.5"
} }
},
"sigmund": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
"integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
} }
} }
}, },
@@ -3325,6 +3319,16 @@
} }
} }
}, },
"stack-trace": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz",
"integrity": "sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU="
},
"statsd-parser": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/statsd-parser/-/statsd-parser-0.0.4.tgz",
"integrity": "sha1-y9JDlTzELv/VSLXSI4jtaJ7GOb0="
},
"string_decoder": { "string_decoder": {
"version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
@@ -3332,7 +3336,7 @@
"supports-color": { "supports-color": {
"version": "4.4.0", "version": "4.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz",
"integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", "integrity": "sha1-iD992rwWUUKyphQn8zUt7RldGj4=",
"dev": true, "dev": true,
"requires": { "requires": {
"has-flag": "2.0.0" "has-flag": "2.0.0"
@@ -3361,7 +3365,7 @@
"tar-stream": { "tar-stream": {
"version": "1.5.5", "version": "1.5.5",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz",
"integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", "integrity": "sha1-XK2Ed59FyDsfJQjZawnYjHIYr1U=",
"requires": { "requires": {
"bl": "1.2.1", "bl": "1.2.1",
"end-of-stream": "1.4.1", "end-of-stream": "1.4.1",
@@ -3423,6 +3427,11 @@
"version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
}, },
"uuid": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.0.tgz",
"integrity": "sha1-Zyj8BFnEUNeWqZwxg3VpvfZy1yg="
},
"v8-profiler": { "v8-profiler": {
"version": "5.7.0", "version": "5.7.0",
"resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.7.0.tgz", "resolved": "https://registry.npmjs.org/v8-profiler/-/v8-profiler-5.7.0.tgz",

View File

@@ -43,7 +43,7 @@
"sequelize": "^2.1.3", "sequelize": "^2.1.3",
"settings-sharelatex": "git+https://github.com/sharelatex/settings-sharelatex.git#v1.0.0", "settings-sharelatex": "git+https://github.com/sharelatex/settings-sharelatex.git#v1.0.0",
"smoke-test-sharelatex": "git+https://github.com/sharelatex/smoke-test-sharelatex.git#v0.2.0", "smoke-test-sharelatex": "git+https://github.com/sharelatex/smoke-test-sharelatex.git#v0.2.0",
"sqlite3": "~3.1.8", "sqlite3": "^3.1.13",
"underscore": "^1.8.2", "underscore": "^1.8.2",
"v8-profiler": "^5.2.4", "v8-profiler": "^5.2.4",
"wrench": "~1.5.4" "wrench": "~1.5.4"

View File

@@ -1,9 +1,10 @@
Client = require "./helpers/Client" Client = require "./helpers/Client"
request = require "request" request = require "request"
require("chai").should() require("chai").should()
ClsiApp = require "./helpers/ClsiApp"
describe "Broken LaTeX file", -> describe "Broken LaTeX file", ->
before -> before (done)->
@broken_request = @broken_request =
resources: [ resources: [
path: "main.tex" path: "main.tex"
@@ -24,6 +25,7 @@ describe "Broken LaTeX file", ->
\\end{document} \\end{document}
''' '''
] ]
ClsiApp.ensureRunning done
describe "on first run", -> describe "on first run", ->
before (done) -> before (done) ->
@@ -31,6 +33,7 @@ describe "Broken LaTeX file", ->
Client.compile @project_id, @broken_request, (@error, @res, @body) => done() Client.compile @project_id, @broken_request, (@error, @res, @body) => done()
it "should return a failure status", -> it "should return a failure status", ->
console.log(@error, @res, @body)
@body.compile.status.should.equal "failure" @body.compile.status.should.equal "failure"
describe "on second run", -> describe "on second run", ->

View File

@@ -1,9 +1,10 @@
Client = require "./helpers/Client" Client = require "./helpers/Client"
request = require "request" request = require "request"
require("chai").should() require("chai").should()
ClsiApp = require "./helpers/ClsiApp"
describe "Deleting Old Files", -> describe "Deleting Old Files", ->
before -> before (done)->
@request = @request =
resources: [ resources: [
path: "main.tex" path: "main.tex"
@@ -14,6 +15,7 @@ describe "Deleting Old Files", ->
\\end{document} \\end{document}
''' '''
] ]
ClsiApp.ensureRunning done
describe "on first run", -> describe "on first run", ->
before (done) -> before (done) ->

View File

@@ -3,6 +3,7 @@ request = require "request"
require("chai").should() require("chai").should()
fs = require "fs" fs = require "fs"
ChildProcess = require "child_process" ChildProcess = require "child_process"
ClsiApp = require "./helpers/ClsiApp"
fixturePath = (path) -> __dirname + "/../fixtures/" + path fixturePath = (path) -> __dirname + "/../fixtures/" + path
@@ -86,7 +87,9 @@ Client.runServer(4242, fixturePath("examples"))
describe "Example Documents", -> describe "Example Documents", ->
before (done) -> before (done) ->
ChildProcess.exec("rm test/acceptance/fixtures/tmp/*").on "exit", () -> done() ChildProcess.exec("rm test/acceptance/fixtures/tmp/*").on "exit", () ->
ClsiApp.ensureRunning done
for example_dir in fs.readdirSync fixturePath("examples") for example_dir in fs.readdirSync fixturePath("examples")
do (example_dir) -> do (example_dir) ->

View File

@@ -1,6 +1,7 @@
Client = require "./helpers/Client" Client = require "./helpers/Client"
request = require "request" request = require "request"
require("chai").should() require("chai").should()
ClsiApp = require "./helpers/ClsiApp"
describe "Simple LaTeX file", -> describe "Simple LaTeX file", ->
before (done) -> before (done) ->
@@ -15,6 +16,7 @@ describe "Simple LaTeX file", ->
\\end{document} \\end{document}
''' '''
] ]
ClsiApp.ensureRunning =>
Client.compile @project_id, @request, (@error, @res, @body) => done() Client.compile @project_id, @request, (@error, @res, @body) => done()
it "should return the PDF", -> it "should return the PDF", ->

View File

@@ -2,6 +2,7 @@ Client = require "./helpers/Client"
request = require "request" request = require "request"
require("chai").should() require("chai").should()
expect = require("chai").expect expect = require("chai").expect
ClsiApp = require "./helpers/ClsiApp"
describe "Syncing", -> describe "Syncing", ->
before (done) -> before (done) ->
@@ -16,6 +17,7 @@ describe "Syncing", ->
''' '''
] ]
@project_id = Client.randomId() @project_id = Client.randomId()
ClsiApp.ensureRunning =>
Client.compile @project_id, @request, (@error, @res, @body) => done() Client.compile @project_id, @request, (@error, @res, @body) => done()
describe "from code to pdf", -> describe "from code to pdf", ->

View File

@@ -1,6 +1,8 @@
Client = require "./helpers/Client" Client = require "./helpers/Client"
request = require "request" request = require "request"
require("chai").should() require("chai").should()
ClsiApp = require "./helpers/ClsiApp"
describe "Timed out compile", -> describe "Timed out compile", ->
before (done) -> before (done) ->
@@ -18,6 +20,7 @@ describe "Timed out compile", ->
''' '''
] ]
@project_id = Client.randomId() @project_id = Client.randomId()
ClsiApp.ensureRunning =>
Client.compile @project_id, @request, (@error, @res, @body) => done() Client.compile @project_id, @request, (@error, @res, @body) => done()
it "should return a timeout error", -> it "should return a timeout error", ->

View File

@@ -2,6 +2,7 @@ Client = require "./helpers/Client"
request = require "request" request = require "request"
require("chai").should() require("chai").should()
sinon = require "sinon" sinon = require "sinon"
ClsiApp = require "./helpers/ClsiApp"
host = "localhost" host = "localhost"
@@ -46,6 +47,7 @@ describe "Url Caching", ->
}] }]
sinon.spy Server, "getFile" sinon.spy Server, "getFile"
ClsiApp.ensureRunning =>
Client.compile @project_id, @request, (@error, @res, @body) => done() Client.compile @project_id, @request, (@error, @res, @body) => done()
afterEach -> afterEach ->

View File

@@ -4,6 +4,7 @@ require("chai").should()
expect = require("chai").expect expect = require("chai").expect
path = require("path") path = require("path")
fs = require("fs") fs = require("fs")
ClsiApp = require "./helpers/ClsiApp"
describe "Syncing", -> describe "Syncing", ->
before (done) -> before (done) ->
@@ -13,6 +14,7 @@ describe "Syncing", ->
content: fs.readFileSync(path.join(__dirname,"../fixtures/naugty_strings.txt"),"utf-8") content: fs.readFileSync(path.join(__dirname,"../fixtures/naugty_strings.txt"),"utf-8")
] ]
@project_id = Client.randomId() @project_id = Client.randomId()
ClsiApp.ensureRunning =>
Client.compile @project_id, @request, (@error, @res, @body) => done() Client.compile @project_id, @request, (@error, @res, @body) => done()
describe "wordcount file", -> describe "wordcount file", ->

View File

@@ -0,0 +1,24 @@
app = require('../../../../app')
require("logger-sharelatex").logger.level("error")
logger = require("logger-sharelatex")
Settings = require("settings-sharelatex")
module.exports =
running: false
initing: false
callbacks: []
ensureRunning: (callback = (error) ->) ->
if @running
return callback()
else if @initing
@callbacks.push callback
else
@initing = true
@callbacks.push callback
app.listen Settings.internal?.clsi?.port, "localhost", (error) =>
throw error if error?
@running = true
logger.log("clsi running in dev mode")
for callback in @callbacks
callback()