Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
deno
提交
0d3584cf
D
deno
项目概览
张重言
/
deno
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
deno
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0d3584cf
编写于
12月 07, 2018
作者:
K
Kevin (Kun) "Kassimo" Qian
提交者:
Ryan Dahl
12月 07, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Don't crash when .mime file not exist in cache (#1291)
上级
c113df1b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
56 addition
and
2 deletion
+56
-2
src/deno_dir.rs
src/deno_dir.rs
+56
-2
未找到文件。
src/deno_dir.rs
浏览文件 @
0d3584cf
...
...
@@ -152,8 +152,12 @@ impl DenoDir {
(
source
,
map_content_type
(
&
p
,
Some
(
&
content_type
)))
}
else
{
let
source
=
fs
::
read_to_string
(
&
p
)
?
;
let
content_type
=
fs
::
read_to_string
(
&
mt
)
?
;
(
source
,
map_content_type
(
&
p
,
Some
(
&
content_type
)))
// .mime file might not exists with bundled deps
let
maybe_content_type_string
=
fs
::
read_to_string
(
&
mt
)
.ok
();
// Option<String> -> Option<&str>
let
maybe_content_type_str
=
maybe_content_type_string
.as_ref
()
.map
(
String
::
as_str
);
(
source
,
map_content_type
(
&
p
,
maybe_content_type_str
))
};
Ok
(
src
)
}
...
...
@@ -498,6 +502,56 @@ macro_rules! add_root {
};
}
#[test]
fn
test_fetch_remote_source_1
()
{
use
tokio_util
;
// http_util::fetch_sync_string requires tokio
tokio_util
::
init
(||
{
let
(
_
temp_dir
,
deno_dir
)
=
test_setup
();
let
module_name
=
"http://localhost:4545/tests/subdir/mt_video_mp2t.t3.ts"
;
let
filename
=
deno_fs
::
normalize_path
(
deno_dir
.deps_http
.join
(
"localhost_PORT4545/tests/subdir/mt_video_mp2t.t3.ts"
)
.as_ref
(),
);
let
mime_file_name
=
format!
(
"{}.mime"
,
&
filename
);
let
result
=
deno_dir
.fetch_remote_source
(
module_name
,
&
filename
);
assert
!
(
result
.is_ok
());
let
r
=
result
.unwrap
();
assert_eq!
(
&
(
r
.0
),
"export const loaded = true;
\n
"
);
assert_eq!
(
&
(
r
.1
),
&
msg
::
MediaType
::
TypeScript
);
assert_eq!
(
fs
::
read_to_string
(
&
mime_file_name
)
.unwrap
(),
"video/mp2t"
);
// Modify .mime, make sure still read from local
let
_
=
fs
::
write
(
&
mime_file_name
,
"text/javascript"
);
let
result2
=
deno_dir
.fetch_remote_source
(
module_name
,
&
filename
);
assert
!
(
result2
.is_ok
());
let
r2
=
result2
.unwrap
();
assert_eq!
(
&
(
r2
.0
),
"export const loaded = true;
\n
"
);
// Not MediaType::TypeScript due to .mime modification
assert_eq!
(
&
(
r2
.1
),
&
msg
::
MediaType
::
JavaScript
);
});
}
#[test]
fn
test_fetch_remote_source_2
()
{
// only local, no http_util::fetch_sync_string called
let
(
_
temp_dir
,
deno_dir
)
=
test_setup
();
let
cwd
=
std
::
env
::
current_dir
()
.unwrap
();
let
cwd_string
=
cwd
.to_str
()
.unwrap
();
let
module_name
=
"http://example.com/mt_text_typescript.t1.ts"
;
// not used
let
filename
=
format!
(
"{}/tests/subdir/mt_text_typescript.t1.ts"
,
&
cwd_string
);
let
result
=
deno_dir
.fetch_remote_source
(
module_name
,
&
filename
);
assert
!
(
result
.is_ok
());
let
r
=
result
.unwrap
();
assert_eq!
(
&
(
r
.0
),
"export const loaded = true;
\n
"
);
assert_eq!
(
&
(
r
.1
),
&
msg
::
MediaType
::
TypeScript
);
}
#[test]
fn
test_code_fetch
()
{
let
(
_
temp_dir
,
deno_dir
)
=
test_setup
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录