Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
镜像
Coder
code-server
提交
85d8c14b
C
code-server
项目概览
镜像
/
Coder
/
code-server
2022-09-21 03:15:05同步失败
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
code-server
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
85d8c14b
编写于
7月 26, 2021
作者:
J
Joe Previte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: use Teffen's solution for useEnv
上级
67e9eca9
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
64 addition
and
33 deletion
+64
-33
test/unit/helpers.test.ts
test/unit/helpers.test.ts
+28
-1
test/unit/node/proxy_agent.test.ts
test/unit/node/proxy_agent.test.ts
+12
-32
test/utils/helpers.ts
test/utils/helpers.ts
+24
-0
未找到文件。
test/unit/helpers.test.ts
浏览文件 @
85d8c14b
import
{
promises
as
fs
}
from
"
fs
"
import
{
tmpdir
}
from
"
../../test/utils/helpers
"
import
{
tmpdir
,
useEnv
}
from
"
../../test/utils/helpers
"
/**
* This file is for testing test helpers (not core code).
...
...
@@ -12,3 +12,30 @@ describe("test helpers", () => {
expect
(
fs
.
access
(
pathToTempDir
)).
resolves
.
toStrictEqual
(
undefined
)
})
})
describe
(
"
useEnv
"
,
()
=>
{
beforeAll
(()
=>
{
jest
.
resetModules
()
process
.
env
.
TEST_USE_ENV
=
"
test environment variable
"
})
afterAll
(()
=>
{
delete
process
.
env
.
TEST_USE_ENV
})
it
(
"
should set and reset the env var
"
,
()
=>
{
const
envKey
=
"
TEST_ENV_VAR
"
const
[
setValue
,
resetValue
]
=
useEnv
(
envKey
)
setValue
(
"
hello-world
"
)
expect
(
process
.
env
[
envKey
]).
toEqual
(
"
hello-world
"
)
resetValue
()
expect
(
process
.
env
[
envKey
]).
toEqual
(
undefined
)
})
it
(
"
should set and reset the env var where a value was already set
"
,
()
=>
{
const
envKey
=
"
TEST_USE_ENV
"
expect
(
process
.
env
[
envKey
]).
toEqual
(
"
test environment variable
"
)
const
[
setValue
,
resetValue
]
=
useEnv
(
envKey
)
setValue
(
"
hello there
"
)
expect
(
process
.
env
[
envKey
]).
toEqual
(
"
hello there
"
)
resetValue
()
expect
(
process
.
env
[
envKey
]).
toEqual
(
"
test environment variable
"
)
})
})
test/unit/node/proxy_agent.test.ts
浏览文件 @
85d8c14b
import
{
shouldEnableProxy
}
from
"
../../../src/node/proxy_agent
"
/**
* Helper function to set an env variable.
*
* Returns a function to cleanup the env variable.
*/
function
setEnv
(
name
:
string
,
value
:
string
)
{
process
.
env
[
name
]
=
value
return
{
cleanup
()
{
delete
process
.
env
[
name
]
},
}
}
import
{
useEnv
}
from
"
../../utils/helpers
"
describe
(
"
shouldEnableProxy
"
,
()
=>
{
// Source: https://stackoverflow.com/a/48042799
const
OLD_ENV
=
process
.
env
const
[
setHTTPProxy
,
resetHTTPProxy
]
=
useEnv
(
"
HTTP_PROXY
"
)
const
[
setHTTPSProxy
,
resetHTTPSProxy
]
=
useEnv
(
"
HTTPS_PROXY
"
)
const
[
setNoProxy
,
resetNoProxy
]
=
useEnv
(
"
NO_PROXY
"
)
beforeEach
(()
=>
{
jest
.
resetModules
()
// Most important - it clears the cache
process
.
env
=
{
...
OLD_ENV
}
// Make a copy
})
afterAll
(()
=>
{
process
.
env
=
OLD_ENV
// Restore old environment
resetHTTPProxy
()
resetNoProxy
()
resetHTTPSProxy
()
})
it
(
"
returns true when HTTP_PROXY is set
"
,
()
=>
{
const
{
cleanup
}
=
setEnv
(
"
HTTP_PROXY
"
,
"
http://proxy.example.com
"
)
setHTTPProxy
(
"
http://proxy.example.com
"
)
expect
(
shouldEnableProxy
()).
toBe
(
true
)
cleanup
()
})
it
(
"
returns true when HTTPS_PROXY is set
"
,
()
=>
{
const
{
cleanup
}
=
setEnv
(
"
HTTPS_PROXY
"
,
"
http
://proxy.example.com
"
)
setHTTPSProxy
(
"
https
://proxy.example.com
"
)
expect
(
shouldEnableProxy
()).
toBe
(
true
)
cleanup
()
})
it
(
"
returns false when NO_PROXY is set
"
,
()
=>
{
const
{
cleanup
}
=
setEnv
(
"
NO_PROXY
"
,
"
*
"
)
setNoProxy
(
"
*
"
)
expect
(
shouldEnableProxy
()).
toBe
(
false
)
cleanup
()
})
it
(
"
should return false when neither HTTP_PROXY nor HTTPS_PROXY is set
"
,
()
=>
{
expect
(
shouldEnableProxy
()).
toBe
(
false
)
})
it
(
"
should return false when NO_PROXY is set to https://example.com
"
,
()
=>
{
const
{
cleanup
}
=
setEnv
(
"
NO_PROXY
"
,
"
https://example.com
"
)
setNoProxy
(
"
https://example.com
"
)
expect
(
shouldEnableProxy
()).
toBe
(
false
)
cleanup
()
})
it
(
"
should return false when NO_PROXY is set to http://example.com
"
,
()
=>
{
const
{
cleanup
}
=
setEnv
(
"
NO_PROXY
"
,
"
http://example.com
"
)
setNoProxy
(
"
http://example.com
"
)
expect
(
shouldEnableProxy
()).
toBe
(
false
)
cleanup
()
})
})
test/utils/helpers.ts
浏览文件 @
85d8c14b
...
...
@@ -37,3 +37,27 @@ export async function tmpdir(testName: string): Promise<string> {
return
await
fs
.
mkdtemp
(
path
.
join
(
dir
,
`
${
testName
}
-`
),
{
encoding
:
"
utf8
"
})
}
/**
* @description Helper function to use an environment variable.
*
* @returns an array (similar to useState in React) with a function
* to set the value and reset the value
*/
export
function
useEnv
(
key
:
string
):
[(
nextValue
:
string
|
undefined
)
=>
string
|
undefined
,
()
=>
void
]
{
const
initialValue
=
process
.
env
[
key
]
const
setValue
=
(
nextValue
:
string
|
undefined
)
=>
(
process
.
env
[
key
]
=
nextValue
)
// Node automatically converts undefined to string 'undefined'
// when assigning an environment variable.
// which is why we need to delete it if it's supposed to be undefined
// Source: https://stackoverflow.com/a/60147167
const
resetValue
=
()
=>
{
if
(
initialValue
!==
undefined
)
{
process
.
env
[
key
]
=
initialValue
}
else
{
delete
process
.
env
[
key
]
}
}
return
[
setValue
,
resetValue
]
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录