From 0f5fc76f491ad2a8b199927affa0bfd5aec3dd11 Mon Sep 17 00:00:00 2001 From: Steve Faulkner Date: Fri, 30 Nov 2018 15:13:40 -0500 Subject: [PATCH] TS Consumer Smoke Test (#199) * WIP * Rename files * Add back lib reference * Rename folder * Create ci script * Loop over array for TS test. Opt out of latest via env var * Log versions * Include ts-test * Clean up CI script * Remove compiled file --- .gitignore | 4 +++ .travis.yml | 3 +-- package-lock.json | 62 +++++++++++++++++++++++++++++++++++++---------- package.json | 4 ++- ts-test.js | 35 ++++++++++++++++++++++++++ ts-test/test.ts | 3 +++ 6 files changed, 95 insertions(+), 16 deletions(-) create mode 100644 ts-test.js create mode 100644 ts-test/test.ts diff --git a/.gitignore b/.gitignore index 88c3880..40f754e 100644 --- a/.gitignore +++ b/.gitignore @@ -260,3 +260,7 @@ node_modules lib/** *.tgz + +ts-test/package-lock.json +ts-test/package.json +ts-test/*.js diff --git a/.travis.yml b/.travis.yml index da9ba7f..55589b9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,5 +4,4 @@ notifications: node_js: - 10 script: - - npm run build - - npm run test \ No newline at end of file + - npm run ci diff --git a/package-lock.json b/package-lock.json index 849f499..e69d7d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2866,13 +2866,13 @@ } }, "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -2880,15 +2880,23 @@ "strip-eof": "^1.0.0" }, "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "pump": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } } } @@ -6399,7 +6407,7 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, @@ -6412,6 +6420,34 @@ "execa": "^0.7.0", "lcid": "^1.0.0", "mem": "^1.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + } } }, "os-tmpdir": { diff --git a/package.json b/package.json index f8a3e33..ce4cc26 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ "build-prod": "npm run clean && npm run check-format && npm run lint && npm run compile-prod && npm run docs && npm run webpack-prod", "test": "mocha -r ./src/test/common/setup.ts ./lib/test/ --recursive --timeout 100000 -i -g .*ignore.js", "test-ts": "mocha -r ts-node/register -r ./src/test/common/setup.ts ./src/test/**/*.spec.ts --recursive --timeout 100000 -i -g .*ignore.js", - "test-browser": "karma start ./karma.config.js --single-run" + "test-browser": "karma start ./karma.config.js --single-run", + "ci": "npm run build && npm run test && node ts-test.js" }, "devDependencies": { "@types/mocha": "^5.2.5", @@ -43,6 +44,7 @@ "@types/sinon": "^4.3.3", "@types/tunnel": "^0.0.0", "@types/underscore": "^1.8.8", + "execa": "1.0.0", "karma": "^3.0.0", "karma-chrome-launcher": "^2.2.0", "karma-cli": "^1.0.1", diff --git a/ts-test.js b/ts-test.js new file mode 100644 index 0000000..c0e803d --- /dev/null +++ b/ts-test.js @@ -0,0 +1,35 @@ +const execa = require("execa"); + +let versions = ["3.0", "3.1"]; + +if (!process.env.SKIP_LATEST) { + versions.push("latest"); +} + +async function exec(cmd) { + const command = execa.shell(cmd, { cwd: "./ts-test" }); + command.stderr.pipe(process.stderr); + command.stdout.pipe(process.stdout); + return command; +} + +(async () => { + try { + console.log("Running typescript consumer test againast", versions); + await exec("npm init -y"); + console.log("Setting up typescript consumer project"); + await exec("npm install --save ./.."); + console.log("Installing @azure/cosmos as a file dependency"); + for (const version of versions) { + console.log(`Installing typescript@${version}`); + await exec(`npm install --save typescript@${version}`); + console.log(`Compling with typescript@${version}`); + await exec(`tsc ./test.ts --allowSyntheticDefaultImports true`); + } + process.exit(0); + } catch (error) { + console.log("Typescript consumer test failed!"); + console.log(error); + process.exit(1); + } +})(); diff --git a/ts-test/test.ts b/ts-test/test.ts new file mode 100644 index 0000000..b63fc13 --- /dev/null +++ b/ts-test/test.ts @@ -0,0 +1,3 @@ +import * as Cosmos from "@azure/cosmos"; + +console.log(Object.keys(Cosmos));