From 59bd00d8413fc95cb285e838e66f26b5b09fd2bb Mon Sep 17 00:00:00 2001 From: Jakub Koralewski Date: Mon, 22 Feb 2021 16:33:11 +0100 Subject: [PATCH] fix: Fix tests on windows (#1419) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 강동윤 --- .gitattributes | 11 ++++++----- ecmascript/jsdoc/tests/fixture.rs | 3 +-- package.json | 2 +- spack/Cargo.toml | 3 +++ spack/src/lib.rs | 1 + spack/src/resolvers/mod.rs | 29 +++++++++++++++++++++-------- testing/macros/src/fixture.rs | 1 + 7 files changed, 34 insertions(+), 16 deletions(-) diff --git a/.gitattributes b/.gitattributes index 2c1f50d59bf..0059461ce61 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,8 +2,9 @@ * text=auto -*.ts text merge=union eol=lf -*.tsx text merge=union eol=lf -*.rs text merge=union eol=lf -*.js text merge=union eol=lf -*.json text merge=union eol=lf +*.ts text eol=lf merge=union +*.tsx text eol=lf merge=union +*.rs text eol=lf merge=union +*.js text eol=lf merge=union +*.json text eol=lf merge=union +*.debug text eol=lf merge=union diff --git a/ecmascript/jsdoc/tests/fixture.rs b/ecmascript/jsdoc/tests/fixture.rs index dc8da1aec35..5b63ea85697 100644 --- a/ecmascript/jsdoc/tests/fixture.rs +++ b/ecmascript/jsdoc/tests/fixture.rs @@ -33,7 +33,6 @@ fn add_test( } #[test] - fn fixture() { let args: Vec<_> = env::args().collect(); let mut tests = Vec::new(); @@ -63,7 +62,7 @@ fn add_fixture(tests: &mut Vec) -> Result<(), Error> { let fm = cm .load_file(entry.path()) - .expect("failed to load fixtue file"); + .expect("failed to load fixture file"); let lexer = Lexer::new( Syntax::Es(EsConfig { diff --git a/package.json b/package.json index 7be8470119c..28109166091 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "@types/node": "^14.0.5", "axios": "^0.21.1", "babel-plugin-transform-node-env-inline": "^0.4.3", - "browserslist": "^4.12.0", + "browserslist": "^4.16.3", "jest": "^23.6.0", "lodash": "^4.17.11", "progress": "^2.0.3", diff --git a/spack/Cargo.toml b/spack/Cargo.toml index 8a8bd9278a3..bcd40dc4603 100644 --- a/spack/Cargo.toml +++ b/spack/Cargo.toml @@ -44,5 +44,8 @@ walkdir = "2.3.1" [target.'cfg(all(unix, not(target_env = "musl")))'.dev-dependencies] jemallocator = {version = "0.3", features = ["disable_initial_exec_tls"]} +[target.'cfg(windows)'.dependencies] +normpath="0.2" + [target.'cfg(windows)'.dev-dependencies] mimalloc = {version = "0.1"} diff --git a/spack/src/lib.rs b/spack/src/lib.rs index ca6eaf32b8a..5eee4f1262e 100644 --- a/spack/src/lib.rs +++ b/spack/src/lib.rs @@ -1,4 +1,5 @@ #![cfg_attr(test, feature(test))] +#![feature(or_patterns)] #[cfg(test)] extern crate test; diff --git a/spack/src/resolvers/mod.rs b/spack/src/resolvers/mod.rs index a0fc81feb2f..d592f46f7a5 100644 --- a/spack/src/resolvers/mod.rs +++ b/spack/src/resolvers/mod.rs @@ -4,13 +4,17 @@ use anyhow::{bail, Context, Error}; use lru::LruCache; +#[cfg(windows)] +use normpath::BasePath; +// use path_slash::{PathBufExt, PathExt}; use serde::Deserialize; use std::{ fs::File, io::BufReader, - path::{Path, PathBuf}, + path::{Component, Path, PathBuf}, sync::Mutex, }; + use swc_bundler::Resolve; use swc_common::FileName; @@ -49,7 +53,7 @@ impl NodeResolver { } fn wrap(&self, base: &PathBuf, target: &str, path: PathBuf) -> Result { - let path = path.canonicalize().context("failaed to canonicalize")?; + let path = path.canonicalize().context("failed to canonicalize")?; self.store(base, target, path.clone()); Ok(FileName::Real(path)) } @@ -176,12 +180,10 @@ impl Resolve for NodeResolver { Err(_) => {} } } + let target_path = Path::new(target); - // Absolute path - if target.starts_with("/") { - let base_dir = &Path::new("/"); - - let path = base_dir.join(target); + if target_path.is_absolute() { + let path = PathBuf::from(target_path); return self .resolve_as_file(&path) .or_else(|_| self.resolve_as_directory(&path)) @@ -190,8 +192,19 @@ impl Resolve for NodeResolver { let cwd = &Path::new("."); 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); return self .resolve_as_file(&path) diff --git a/testing/macros/src/fixture.rs b/testing/macros/src/fixture.rs index db93c3c153d..5ac6fa17605 100644 --- a/testing/macros/src/fixture.rs +++ b/testing/macros/src/fixture.rs @@ -133,6 +133,7 @@ pub fn expand(test_file: &SourceFile, callee: &Ident, attr: Config) -> Result