mirror of
https://github.com/swc-project/swc.git
synced 2024-11-23 00:32:15 +03:00
fix: Fix tests on windows (#1419)
Co-authored-by: 강동윤 <kdy1997.dev@gmail.com>
This commit is contained in:
parent
f28cd51e22
commit
59bd00d841
11
.gitattributes
vendored
11
.gitattributes
vendored
@ -2,8 +2,9 @@
|
|||||||
* text=auto
|
* text=auto
|
||||||
|
|
||||||
|
|
||||||
*.ts text merge=union eol=lf
|
*.ts text eol=lf merge=union
|
||||||
*.tsx text merge=union eol=lf
|
*.tsx text eol=lf merge=union
|
||||||
*.rs text merge=union eol=lf
|
*.rs text eol=lf merge=union
|
||||||
*.js text merge=union eol=lf
|
*.js text eol=lf merge=union
|
||||||
*.json text merge=union eol=lf
|
*.json text eol=lf merge=union
|
||||||
|
*.debug text eol=lf merge=union
|
||||||
|
@ -33,7 +33,6 @@ fn add_test<F: FnOnce() + Send + 'static>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
||||||
fn fixture() {
|
fn fixture() {
|
||||||
let args: Vec<_> = env::args().collect();
|
let args: Vec<_> = env::args().collect();
|
||||||
let mut tests = Vec::new();
|
let mut tests = Vec::new();
|
||||||
@ -63,7 +62,7 @@ fn add_fixture(tests: &mut Vec<TestDescAndFn>) -> Result<(), Error> {
|
|||||||
|
|
||||||
let fm = cm
|
let fm = cm
|
||||||
.load_file(entry.path())
|
.load_file(entry.path())
|
||||||
.expect("failed to load fixtue file");
|
.expect("failed to load fixture file");
|
||||||
|
|
||||||
let lexer = Lexer::new(
|
let lexer = Lexer::new(
|
||||||
Syntax::Es(EsConfig {
|
Syntax::Es(EsConfig {
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
"@types/node": "^14.0.5",
|
"@types/node": "^14.0.5",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"babel-plugin-transform-node-env-inline": "^0.4.3",
|
"babel-plugin-transform-node-env-inline": "^0.4.3",
|
||||||
"browserslist": "^4.12.0",
|
"browserslist": "^4.16.3",
|
||||||
"jest": "^23.6.0",
|
"jest": "^23.6.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.11",
|
||||||
"progress": "^2.0.3",
|
"progress": "^2.0.3",
|
||||||
|
@ -44,5 +44,8 @@ walkdir = "2.3.1"
|
|||||||
[target.'cfg(all(unix, not(target_env = "musl")))'.dev-dependencies]
|
[target.'cfg(all(unix, not(target_env = "musl")))'.dev-dependencies]
|
||||||
jemallocator = {version = "0.3", features = ["disable_initial_exec_tls"]}
|
jemallocator = {version = "0.3", features = ["disable_initial_exec_tls"]}
|
||||||
|
|
||||||
|
[target.'cfg(windows)'.dependencies]
|
||||||
|
normpath="0.2"
|
||||||
|
|
||||||
[target.'cfg(windows)'.dev-dependencies]
|
[target.'cfg(windows)'.dev-dependencies]
|
||||||
mimalloc = {version = "0.1"}
|
mimalloc = {version = "0.1"}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#![cfg_attr(test, feature(test))]
|
#![cfg_attr(test, feature(test))]
|
||||||
|
#![feature(or_patterns)]
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
extern crate test;
|
extern crate test;
|
||||||
|
@ -4,13 +4,17 @@
|
|||||||
|
|
||||||
use anyhow::{bail, Context, Error};
|
use anyhow::{bail, Context, Error};
|
||||||
use lru::LruCache;
|
use lru::LruCache;
|
||||||
|
#[cfg(windows)]
|
||||||
|
use normpath::BasePath;
|
||||||
|
// use path_slash::{PathBufExt, PathExt};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::{
|
use std::{
|
||||||
fs::File,
|
fs::File,
|
||||||
io::BufReader,
|
io::BufReader,
|
||||||
path::{Path, PathBuf},
|
path::{Component, Path, PathBuf},
|
||||||
sync::Mutex,
|
sync::Mutex,
|
||||||
};
|
};
|
||||||
|
|
||||||
use swc_bundler::Resolve;
|
use swc_bundler::Resolve;
|
||||||
use swc_common::FileName;
|
use swc_common::FileName;
|
||||||
|
|
||||||
@ -49,7 +53,7 @@ impl NodeResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn wrap(&self, base: &PathBuf, target: &str, path: PathBuf) -> Result<FileName, Error> {
|
fn wrap(&self, base: &PathBuf, target: &str, path: PathBuf) -> Result<FileName, Error> {
|
||||||
let path = path.canonicalize().context("failaed to canonicalize")?;
|
let path = path.canonicalize().context("failed to canonicalize")?;
|
||||||
self.store(base, target, path.clone());
|
self.store(base, target, path.clone());
|
||||||
Ok(FileName::Real(path))
|
Ok(FileName::Real(path))
|
||||||
}
|
}
|
||||||
@ -176,12 +180,10 @@ impl Resolve for NodeResolver {
|
|||||||
Err(_) => {}
|
Err(_) => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let target_path = Path::new(target);
|
||||||
|
|
||||||
// Absolute path
|
if target_path.is_absolute() {
|
||||||
if target.starts_with("/") {
|
let path = PathBuf::from(target_path);
|
||||||
let base_dir = &Path::new("/");
|
|
||||||
|
|
||||||
let path = base_dir.join(target);
|
|
||||||
return self
|
return self
|
||||||
.resolve_as_file(&path)
|
.resolve_as_file(&path)
|
||||||
.or_else(|_| self.resolve_as_directory(&path))
|
.or_else(|_| self.resolve_as_directory(&path))
|
||||||
@ -190,8 +192,19 @@ impl Resolve for NodeResolver {
|
|||||||
|
|
||||||
let cwd = &Path::new(".");
|
let cwd = &Path::new(".");
|
||||||
let base_dir = base.parent().unwrap_or(&cwd);
|
let base_dir = base.parent().unwrap_or(&cwd);
|
||||||
|
let mut components = target_path.components();
|
||||||
|
|
||||||
if target.starts_with("./") || target.starts_with("../") {
|
if let Some(Component::CurDir | Component::ParentDir) = components.next() {
|
||||||
|
#[cfg(windows)]
|
||||||
|
let path = {
|
||||||
|
let base_dir = BasePath::new(base_dir).unwrap();
|
||||||
|
base_dir
|
||||||
|
.join(target.replace('/', "\\"))
|
||||||
|
.normalize_virtually()
|
||||||
|
.unwrap()
|
||||||
|
.into_path_buf()
|
||||||
|
};
|
||||||
|
#[cfg(not(windows))]
|
||||||
let path = base_dir.join(target);
|
let path = base_dir.join(target);
|
||||||
return self
|
return self
|
||||||
.resolve_as_file(&path)
|
.resolve_as_file(&path)
|
||||||
|
@ -133,6 +133,7 @@ pub fn expand(test_file: &SourceFile, callee: &Ident, attr: Config) -> Result<Ve
|
|||||||
callee,
|
callee,
|
||||||
path_for_name
|
path_for_name
|
||||||
.to_string_lossy()
|
.to_string_lossy()
|
||||||
|
.replace("\\", "__")
|
||||||
.replace("/", "__")
|
.replace("/", "__")
|
||||||
.replace(".", "_")
|
.replace(".", "_")
|
||||||
.replace("-", "_")
|
.replace("-", "_")
|
||||||
|
Loading…
Reference in New Issue
Block a user