diff --git a/.travis.yml b/.travis.yml index 02d1ad0..d08fe46 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,10 @@ language: node_js +os: + - linux + - osx + - windows node_js: - node - lts/* - - 14 - - 13 - 12 - - 11 - 10 diff --git a/test/e2e/build.tsx b/test/e2e/build.tsx index f4b808e..aafb10c 100644 --- a/test/e2e/build.tsx +++ b/test/e2e/build.tsx @@ -6,7 +6,9 @@ import { promises as fs } from "fs"; import * as path from "path"; -import { runCommand, WEBSNACKS_BIN_PATH, WEBSNACKS_REPO_ROOT, withTempDir } from "../helpers/e2e"; +import { + npmCmd, runCommand, WEBSNACKS_BIN_PATH, WEBSNACKS_REPO_ROOT, withTempDir +} from "../helpers/e2e"; import { testSuite } from "../lib"; testSuite("build command", ({ test }) => { @@ -38,7 +40,7 @@ testSuite("build command", ({ test }) => { await fs.writeFile( path.join(tempDirPath, "websnacks.ts"), ` - import { Config } from "${WEBSNACKS_REPO_ROOT}"; + import { Config } from "websnacks"; const config: Config = { watch: [], }; @@ -53,13 +55,25 @@ testSuite("build command", ({ test }) => { await fs.writeFile( path.join(pagesPath, "index.tsx"), ` - import { createElement } from "${WEBSNACKS_REPO_ROOT}"; + import { createElement } from "websnacks"; export const page = () => ; `, { encoding: "utf8", } ); + await fs.writeFile( + path.join(tempDirPath, "package.json"), + JSON.stringify({ + devDependencies: { + websnacks: `file:${WEBSNACKS_REPO_ROOT}`, + }, + }), + { encoding: "utf8" } + ); + await runCommand(npmCmd, ["install", "--silent"], { + cwd: tempDirPath, + }).complete; const cmd = runCommand( "node", [WEBSNACKS_BIN_PATH, "-r", "ts-node/register", "build"], @@ -101,13 +115,25 @@ testSuite("build command", ({ test }) => { await fs.writeFile( path.join(pagesPath, "index.tsx"), ` - import { createElement } from "${WEBSNACKS_REPO_ROOT}"; + import { createElement } from "websnacks"; export const page = () => ; `, { encoding: "utf8", } ); + await fs.writeFile( + path.join(tempDirPath, "package.json"), + JSON.stringify({ + devDependencies: { + websnacks: `file:${WEBSNACKS_REPO_ROOT}`, + }, + }), + { encoding: "utf8" } + ); + await runCommand(npmCmd, ["install", "--silent"], { + cwd: tempDirPath, + }).complete; const cmd = runCommand( "node", [WEBSNACKS_BIN_PATH, "-r", "ts-node/register", "build"], diff --git a/test/e2e/dev.tsx b/test/e2e/dev.tsx index 7cc8697..d23e399 100644 --- a/test/e2e/dev.tsx +++ b/test/e2e/dev.tsx @@ -7,7 +7,7 @@ import { promises as fs } from "fs"; import * as path from "path"; import { - runCommand, wait, WEBSNACKS_BIN_PATH, WEBSNACKS_REPO_ROOT, withTempDir + npmCmd, runCommand, wait, WEBSNACKS_BIN_PATH, WEBSNACKS_REPO_ROOT, withTempDir } from "../helpers/e2e"; import { testSuite } from "../lib"; @@ -40,7 +40,7 @@ testSuite("dev command", ({ test, expect }) => { await fs.writeFile( path.join(tempDirPath, "websnacks.ts"), ` - import { Config } from "${WEBSNACKS_REPO_ROOT}"; + import { Config } from "websnacks"; const config: Config = { watch: [], }; @@ -55,13 +55,25 @@ testSuite("dev command", ({ test, expect }) => { await fs.writeFile( path.join(pagesPath, "index.tsx"), ` - import { createElement } from "${WEBSNACKS_REPO_ROOT}"; + import { createElement } from "websnacks"; export const page = () => ; `, { encoding: "utf8", } ); + await fs.writeFile( + path.join(tempDirPath, "package.json"), + JSON.stringify({ + devDependencies: { + websnacks: `file:${WEBSNACKS_REPO_ROOT}`, + }, + }), + { encoding: "utf8" } + ); + await runCommand(npmCmd, ["install", "--silent"], { + cwd: tempDirPath, + }).complete; const cmd = runCommand( "node", [WEBSNACKS_BIN_PATH, "-r", "ts-node/register", "dev"], @@ -107,13 +119,25 @@ testSuite("dev command", ({ test, expect }) => { await fs.writeFile( path.join(pagesPath, "index.tsx"), ` - import { createElement } from "${WEBSNACKS_REPO_ROOT}"; + import { createElement } from "websnacks"; export const page = () => ; `, { encoding: "utf8", } ); + await fs.writeFile( + path.join(tempDirPath, "package.json"), + JSON.stringify({ + devDependencies: { + websnacks: `file:${WEBSNACKS_REPO_ROOT}`, + }, + }), + { encoding: "utf8" } + ); + await runCommand(npmCmd, ["install", "--silent"], { + cwd: tempDirPath, + }).complete; const cmd = runCommand( "node", [WEBSNACKS_BIN_PATH, "-r", "ts-node/register", "dev"], diff --git a/test/helpers/e2e.ts b/test/helpers/e2e.ts index 1808c85..0eea984 100644 --- a/test/helpers/e2e.ts +++ b/test/helpers/e2e.ts @@ -5,6 +5,7 @@ import { ChildProcess, spawn } from "child_process"; import { promises as fs } from "fs"; +import * as os from "os"; import * as path from "path"; /** @@ -165,3 +166,5 @@ export const runCommand = ( process, }; }; + +export const npmCmd = os.platform() === "win32" ? "npm.cmd" : "npm";