chore: update CHANGELOG

This commit is contained in:
Joe Previte 2021-05-10 16:27:47 -07:00
parent d7f1415290
commit 46fe77d464
No known key found for this signature in database
GPG Key ID: 2C91590C6B742C24
4 changed files with 173 additions and 29 deletions

View File

@ -72,6 +72,7 @@ VS Code v1.56
### Development ### Development
- chore: ignore updates to microsoft/playwright-github-action - chore: ignore updates to microsoft/playwright-github-action
- fix(socket): use xdgBasedir.runtime instead of tmp #3304 @jsjoeio
## 3.10.0 ## 3.10.0

View File

@ -76,7 +76,7 @@ export class SocketProxyProvider {
.then((pipe) => { .then((pipe) => {
this.proxyPipe = pipe this.proxyPipe = pipe
return Promise.all([ return Promise.all([
fs.mkdir(paths.runtime, { recursive: true }), fs.mkdir(path.dirname(this.proxyPipe), { recursive: true }),
fs.rmdir(this.proxyPipe, { recursive: true }), fs.rmdir(this.proxyPipe, { recursive: true }),
]) ])
}) })

View File

@ -7,9 +7,8 @@ import * as os from "os"
import * as path from "path" import * as path from "path"
import * as util from "util" import * as util from "util"
import xdgBasedir from "xdg-basedir" import xdgBasedir from "xdg-basedir"
import { tmpdir } from "./constants"
interface Paths { export interface Paths {
data: string data: string
config: string config: string
runtime: string runtime: string
@ -23,26 +22,33 @@ export const paths = getEnvPaths()
* ones. Most CLIs do this as in practice only GUI apps use the standard macOS directories. * ones. Most CLIs do this as in practice only GUI apps use the standard macOS directories.
*/ */
export function getEnvPaths(): Paths { export function getEnvPaths(): Paths {
let paths: Paths const paths = envPaths("code-server", { suffix: "" })
if (process.platform === "win32") { const append = (p: string): string => path.join(p, "code-server")
paths = { switch (process.platform) {
...envPaths("code-server", { case "darwin":
suffix: "", return {
}), // envPaths uses native directories so force Darwin to use the XDG spec
runtime: tmpdir, // to align with other CLI tools.
} data: xdgBasedir.data ? append(xdgBasedir.data) : paths.data,
} else { config: xdgBasedir.config ? append(xdgBasedir.config) : paths.config,
if (xdgBasedir.data === undefined || xdgBasedir.config === undefined) { // Fall back to temp if there is no runtime dir.
throw new Error("No home folder?") runtime: xdgBasedir.runtime ? append(xdgBasedir.runtime) : paths.temp,
} }
paths = { case "win32":
data: path.join(xdgBasedir.data, "code-server"), return {
config: path.join(xdgBasedir.config, "code-server"), data: paths.data,
runtime: xdgBasedir.runtime ? path.join(xdgBasedir.runtime, "code-server") : tmpdir, config: paths.config,
} // Windows doesn't have a runtime dir.
runtime: paths.temp,
}
default:
return {
data: paths.data,
config: paths.config,
// Fall back to temp if there is no runtime dir.
runtime: xdgBasedir.runtime ? append(xdgBasedir.runtime) : paths.temp,
}
} }
return paths
} }
/** /**

View File

@ -1,10 +1,147 @@
import { getEnvPaths } from "../../../src/node/util"
describe("getEnvPaths", () => { describe("getEnvPaths", () => {
it("should return an object with the data, config and runtime path", () => { describe("on darwin", () => {
const actualPaths = getEnvPaths() let ORIGINAL_PLATFORM = ""
expect(actualPaths.hasOwnProperty("data")).toBe(true)
expect(actualPaths.hasOwnProperty("config")).toBe(true) beforeAll(() => {
expect(actualPaths.hasOwnProperty("runtime")).toBe(true) ORIGINAL_PLATFORM = process.platform
Object.defineProperty(process, "platform", {
value: "darwin",
})
})
beforeEach(() => {
jest.resetModules()
jest.mock("env-paths", () => {
return () => ({
data: "/home/envPath/.local/share",
config: "/home/envPath/.config",
temp: "/tmp/envPath/runtime",
})
})
})
afterAll(() => {
// Restore old platform
Object.defineProperty(process, "platform", {
value: ORIGINAL_PLATFORM,
})
})
it("should return the env paths using xdgBasedir", () => {
jest.mock("xdg-basedir", () => ({
data: "/home/usr/.local/share",
config: "/home/usr/.config",
runtime: "/tmp/runtime",
}))
const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/home/usr/.local/share/code-server")
expect(envPaths.config).toEqual("/home/usr/.config/code-server")
expect(envPaths.runtime).toEqual("/tmp/runtime/code-server")
})
it("should return the env paths using envPaths when xdgBasedir is undefined", () => {
jest.mock("xdg-basedir", () => ({}))
const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/home/envPath/.local/share")
expect(envPaths.config).toEqual("/home/envPath/.config")
expect(envPaths.runtime).toEqual("/tmp/envPath/runtime")
})
})
describe("on win32", () => {
let ORIGINAL_PLATFORM = ""
beforeAll(() => {
ORIGINAL_PLATFORM = process.platform
Object.defineProperty(process, "platform", {
value: "win32",
})
})
beforeEach(() => {
jest.resetModules()
jest.mock("env-paths", () => {
return () => ({
data: "/windows/envPath/.local/share",
config: "/windows/envPath/.config",
temp: "/tmp/envPath/runtime",
})
})
})
afterAll(() => {
// Restore old platform
Object.defineProperty(process, "platform", {
value: ORIGINAL_PLATFORM,
})
})
it("should return the env paths using envPaths", () => {
const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/windows/envPath/.local/share")
expect(envPaths.config).toEqual("/windows/envPath/.config")
expect(envPaths.runtime).toEqual("/tmp/envPath/runtime")
})
})
describe("on other platforms", () => {
let ORIGINAL_PLATFORM = ""
beforeAll(() => {
ORIGINAL_PLATFORM = process.platform
Object.defineProperty(process, "platform", {
value: "linux",
})
})
beforeEach(() => {
jest.resetModules()
jest.mock("env-paths", () => {
return () => ({
data: "/linux/envPath/.local/share",
config: "/linux/envPath/.config",
temp: "/tmp/envPath/runtime",
})
})
})
afterAll(() => {
// Restore old platform
Object.defineProperty(process, "platform", {
value: ORIGINAL_PLATFORM,
})
})
it("should return the runtime using xdgBasedir if it exists", () => {
jest.mock("xdg-basedir", () => ({
runtime: "/tmp/runtime",
}))
const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/linux/envPath/.local/share")
expect(envPaths.config).toEqual("/linux/envPath/.config")
expect(envPaths.runtime).toEqual("/tmp/runtime/code-server")
})
it("should return the env paths using envPaths when xdgBasedir is undefined", () => {
jest.mock("xdg-basedir", () => ({}))
const getEnvPaths = require("../../../src/node/util").getEnvPaths
const envPaths = getEnvPaths()
expect(envPaths.data).toEqual("/linux/envPath/.local/share")
expect(envPaths.config).toEqual("/linux/envPath/.config")
expect(envPaths.runtime).toEqual("/tmp/envPath/runtime")
})
}) })
}) })