Issue 281 - add @packages/root (#282)

* link: create fake @packages/root

* server: switch to loading @packages/root

* server: update tests after using @packages/root

* load root package in other places

* load root package in build using @packages/root

* update tests that mock root package

* server: fix server start whenever loading root package in updater

* fix updater test

* uncomment code
This commit is contained in:
Gleb Bahmutov
2017-07-10 10:07:52 -04:00
committed by GitHub
parent 4bb476753d
commit a364607b6b
19 changed files with 50 additions and 46 deletions
+6
View File
@@ -0,0 +1,6 @@
{
"name": "@packages/root",
"version": "0.0.0",
"description": "dummy package pointing at the root package",
"main": "../../package.json"
}
+1 -1
View File
@@ -4,8 +4,8 @@ getos = require("getos")
request = require("request-promise")
errors = require("request-promise/errors")
Promise = require("bluebird")
pkg = require("@packages/root")
Routes = require("./util/routes")
pkg = require("../package.json")
getos = Promise.promisify(getos)
@@ -1,7 +1,7 @@
_ = require("lodash")
send = require("send")
runner = require("@packages/runner")
pkg = require("../../package.json")
pkg = require("@packages/root")
module.exports = {
serve: (req, res, config, getRemoteState) ->
+2 -2
View File
@@ -13,7 +13,7 @@ Error.stackTraceLimit = Infinity
## cannot use relative require statement
## here because when obfuscated package
## would not be available
pkg = cwd("package.json")
pkg = require("@packages/root")
try
## i wish we didn't have to do this but we have to append
@@ -32,6 +32,6 @@ getEnv = ->
## use env from package first
## or development as default
process.env["CYPRESS_ENV"] or= fs.readJsonSync(pkg).env ? "development"
process.env["CYPRESS_ENV"] or= pkg.env ? "development"
module.exports = getEnv()
+2 -1
View File
@@ -6,6 +6,7 @@ user = require("./user")
cache = require("./cache")
logger = require("./logger")
Settings = require("./util/settings")
pkg = require("@packages/root")
## POST https://api.cypress.io/exceptions
## sets request body
@@ -31,7 +32,7 @@ module.exports = {
}
getVersion: ->
fs.readJsonAsync("./package.json").get("version")
Promise.resolve(pkg.version)
getBody: (err, settings) ->
body = {err: @getErr(err)}
+3 -8
View File
@@ -1,14 +1,9 @@
_ = require("lodash")
fs = require("fs-extra")
path = require("path")
Promise = require("bluebird")
cwd = require("../cwd")
fs = Promise.promisifyAll(fs)
pathToPkg = cwd("package.json")
json = require("@packages/root")
module.exports = (options) ->
fs.readJsonAsync(pathToPkg)
.then (json) ->
Promise.resolve(
## TODO: omit anything from options which is a function
_.extend {}, options, _.pick(json, "version")
)
+1 -1
View File
@@ -6,6 +6,7 @@ chalk = require("chalk")
human = require("human-interval")
Promise = require("bluebird")
random = require("randomstring")
pkg = require("@packages/root")
ss = require("../screenshots")
user = require("../user")
stats = require("../stats")
@@ -20,7 +21,6 @@ trash = require("../util/trash")
terminal = require("../util/terminal")
humanTime = require("../util/human_time")
Windows = require("../gui/windows")
pkg = require("../../package.json")
log = require("../log")
fs = Promise.promisifyAll(fs)
+2 -6
View File
@@ -1,9 +1,5 @@
fs = require("fs-extra")
path = require("path")
Promise = require("bluebird")
cwd = require("../cwd")
fs = Promise.promisifyAll(fs)
pkg = require("@packages/root")
module.exports = ->
fs.readJsonAsync cwd("package.json")
Promise.resolve(pkg)
+3 -3
View File
@@ -3,6 +3,8 @@ nmi = require("node-machine-id")
semver = require("semver")
request = require("request")
NwUpdater = require("node-webkit-updater")
_ = require("lodash")
pkg = require("@packages/root")
cwd = require("./cwd")
konfig = require("./konfig")
logger = require("./logger")
@@ -65,9 +67,7 @@ class Updater
@getClient().getAppPath = -> cwd()
getPackage: ->
pkg = fs.readJsonSync cwd("package.json")
pkg.manifestUrl = konfig("desktop_manifest_url")
pkg
_.extend({}, pkg, {manifestUrl: konfig("desktop_manifest_url")})
getClient: ->
## requiring inline due to easier testability
+4 -1
View File
@@ -3,13 +3,16 @@ path = require("path")
ospath = require("ospath")
Promise = require("bluebird")
log = require("debug")("cypress:server:appdata")
pkg = require("@packages/root")
cwd = require("../cwd")
pkg = require("../../package.json")
fs = Promise.promisifyAll(fs)
name = pkg.productName or pkg.name
data = ospath.data()
if not name
throw new Error("Root package is missing name")
isProduction = ->
process.env.CYPRESS_ENV is "production"
@@ -3,7 +3,7 @@ require("../spec_helper")
_ = require("lodash")
cp = require("child_process")
pr = require("../support/helpers/process")
pkg = require("#{root}package.json")
pkg = require("@packages/root")
anyLineWithCaret = (str) ->
str[0] is ">"
@@ -11,7 +11,7 @@ Promise = require("bluebird")
electron = require("electron")
Fixtures = require("../support/helpers/fixtures")
extension = require("@packages/extension")
pkg = require("#{root}package.json")
pkg = require("@packages/root")
git = require("#{root}lib/util/git")
bundle = require("#{root}lib/util/bundle")
connect = require("#{root}lib/util/connect")
@@ -17,7 +17,7 @@ streamToPromise = require("stream-to-promise")
evilDns = require("evil-dns")
Promise = require("bluebird")
httpsServer = require("#{root}../https-proxy/test/helpers/https_server")
pkg = require("#{root}package.json")
pkg = require("@packages/root")
config = require("#{root}lib/config")
Server = require("#{root}lib/server")
Watchers = require("#{root}lib/watchers")
+1 -1
View File
@@ -3,7 +3,7 @@ require("../spec_helper")
_ = require("lodash")
rp = require("request-promise")
os = require("os")
pkg = require("#{root}package.json")
pkg = require("@packages/root")
api = require("#{root}lib/api")
Promise = require("bluebird")
@@ -1,5 +1,7 @@
require("../spec_helper")
pkg = require("@packages/root")
describe "lib/environment", ->
before ->
@env = process.env["CYPRESS_ENV"]
@@ -34,9 +36,12 @@ describe "lib/environment", ->
context "uses package.json env", ->
beforeEach ->
@setEnv = (env) =>
@sandbox.stub(fs, "readJsonSync").returns({env: env})
pkg.env = env
@expectedEnv(env)
afterEach ->
delete pkg.env
it "is production", ->
@setEnv("production")
@@ -10,6 +10,7 @@ cache = require("#{root}lib/cache")
exception = require("#{root}lib/exception")
Routes = require("#{root}lib/util/routes")
Settings = require("#{root}lib/util/settings")
pkg = require("@packages/root")
describe "lib/exceptions", ->
context ".getAuthToken", ->
@@ -58,9 +59,7 @@ describe "lib/exceptions", ->
context ".getVersion", ->
it "returns version from package.json", ->
@sandbox.stub(fs, "readJsonAsync")
.withArgs("./package.json")
.resolves({version: "0.1.2"})
@sandbox.stub(pkg, "version", "0.1.2")
exception.getVersion().then (v) ->
expect(v).to.eq("0.1.2")
@@ -70,10 +69,7 @@ describe "lib/exceptions", ->
@sandbox.stub(cache, "read").resolves({foo: "foo"})
@sandbox.stub(logger, "getLogs").resolves([])
@err = new Error()
@sandbox.stub(fs, "readJsonAsync")
.withArgs("./package.json")
.resolves({version: "0.1.2"})
@sandbox.stub(pkg, "version", "0.1.2")
it "sets err", ->
exception.getBody(@err).then (body) ->
@@ -6,6 +6,8 @@ nmi = require("node-machine-id")
cwd = require("#{root}lib/cwd")
request = require("request")
Updater = require("#{root}lib/updater")
pkg = require("@packages/root")
_ = require("lodash")
describe "lib/updater", ->
context "interface", ->
@@ -15,15 +17,17 @@ describe "lib/updater", ->
context "#getPackage", ->
beforeEach ->
@sandbox.stub(fs, "readJsonSync").returns({foo: "bar"})
pkg.foo = "bar"
@updater = Updater({})
afterEach ->
delete pkg.foo
it "inserts manifestUrl to package.json", ->
expect(@updater.getPackage()).to.deep.eq {
expected = _.extend({}, pkg, {
foo: "bar"
manifestUrl: "https://download.cypress.io/desktop.json"
}
})
expect(@updater.getPackage()).to.deep.eq expected
context "#getClient", ->
it "sets .client to new Updater", ->
+3 -5
View File
@@ -23,6 +23,8 @@ packages = require("./util/packages")
Darwin = require("./darwin")
Linux = require("./linux")
rootPackage = require("@packages/root")
sign = Promise.promisify(signOsxApp)
fs = Promise.promisifyAll(fse)
@@ -105,6 +107,7 @@ buildCypressApp = (platform, version, options = {}) ->
fs.outputJsonAsync(distDir("package.json"), {
name: "cypress"
productName: "Cypress",
description: rootPackage.description
version: version
main: "index.js"
scripts: {}
@@ -248,11 +251,6 @@ buildCypressApp = (platform, version, options = {}) ->
.then(removeDevElectronApp)
.then(copyPackageProxies(buildAppDir))
.then(runSmokeTest)
# older build steps
# .then(@runProjectTest) # if run larger tests need to cleanup symlinks
# .then(@runFailingProjectTest)
# .then(@cleanupCy)
.then(codeSign) ## codesign after running smoke tests due to changing .cy
.then(verifyAppCanOpen)
.return({
+1 -1
View File
@@ -32,7 +32,7 @@ function proxyModule (name, pathToMain, pathToBrowser) {
const pkg = {
name,
version: '0.0.0',
description: `fake proxy module to packages/${name}`,
description: `fake proxy module ${name}`,
main: pathToMain,
}
if (pathToBrowser) {