Skip to content

Commit

Permalink
fix: windows test failed.
Browse files Browse the repository at this point in the history
  • Loading branch information
ynfeng committed Feb 19, 2021
1 parent dbacad6 commit 3fc4d2d
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 25 deletions.
9 changes: 8 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions framework/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,5 @@ lazy_static = "1.2"
walkdir = "2"

regex = "1"

maplit="0.1.6"
37 changes: 15 additions & 22 deletions framework/src/framework_detector.rs
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
use crate::facet::{Facet, FacetsBuilder};
use crate::lang::LangDetectors;
use std::cell::RefCell;
use std::collections::BTreeMap;
use std::collections::{BTreeMap, HashSet};
use std::path::Path;

#[derive(Serialize, PartialEq, Debug, Clone, Ord, PartialOrd, Eq)]
#[derive(Serialize, PartialEq, Debug, Clone)]
pub struct Framework {
pub name: String,
pub path: String,
// in some languages has different framework file
// | languages | files |
// |-------------|------------|
// | Java | build.gradle, settings.gradle |
pub files: RefCell<Vec<String>>,
pub files: RefCell<HashSet<String>>,
// in JVM projects, has different languages, such as Java, Groovy, Kotlin...
pub languages: RefCell<Vec<String>>,
pub languages: RefCell<HashSet<String>>,
}

#[derive(Serialize)]
Expand All @@ -36,7 +36,6 @@ impl Frameworks {
if !self.frameworks.borrow().contains(&framework) {
self.associate_with_source_files(&framework);
self.frameworks.borrow_mut().push(framework);
self.frameworks.borrow_mut().sort();
}
}

Expand All @@ -56,16 +55,14 @@ impl Frameworks {
fn add_language_to_frameworks(&self, file_path: &str, language: &str) {
for framework in self.frameworks.borrow_mut().iter() {
if file_path.starts_with(&framework.path)
&& !framework.languages.borrow().contains(&language.to_string())
{
Frameworks::add_language_to_framework(language.to_string(), framework);
}
}
}

fn add_language_to_framework(language: String, framework: &Framework) {
framework.languages.borrow_mut().push(language);
framework.languages.borrow_mut().sort();
framework.languages.borrow_mut().insert(language);
}

fn cache_source_file(&self, file_path: &str, language: &str) {
Expand All @@ -84,8 +81,7 @@ impl Frameworks {
pub fn add_settings_file(&self, framework_name: &str, file_path: &str, file_name: &str) {
for framework in self.frameworks.borrow_mut().iter() {
if file_path.starts_with(&framework.path) && framework.name.eq(framework_name) {
framework.files.borrow_mut().push(file_name.to_string());
framework.files.borrow_mut().sort();
framework.files.borrow_mut().insert(file_name.to_string());
}
}
}
Expand Down Expand Up @@ -256,23 +252,20 @@ mod tests {
let files = framework.files.borrow();
let languages = framework.languages.borrow();
assert_eq!(name, "Gradle");
assert_eq!(files.get(0).unwrap().as_str(), "build.gradle");
assert_eq!(files.get(1).unwrap().as_str(), "settings.gradle");
assert_eq!(languages.get(0).unwrap().as_str(), "Groovy");
assert_eq!(languages.get(1).unwrap().as_str(), "Java");
assert_eq!(languages.get(2).unwrap().as_str(), "Kotlin");
assert_eq!(languages.get(3).unwrap().as_str(), "Scala");
assert_eq!(files.contains("build.gradle"), true);
assert_eq!(files.contains("settings.gradle"), true);
assert_eq!(languages.contains("Groovy"), true);
assert_eq!(languages.contains("Java"), true);
assert_eq!(languages.contains("Kotlin"), true);
assert_eq!(languages.contains("Scala"), true);

let framework = frameworks.get(1).unwrap();
let name = framework.name.to_string();
let files = framework.files.borrow();
let languages = framework.languages.borrow();
for lang in languages.iter() {
println!("{}", lang);
}
assert_eq!(name, "Maven");
assert_eq!(files.get(0).unwrap().as_str(), "pom.xml");
assert_eq!(languages.get(0).unwrap().as_str(), "Java");
assert_eq!(languages.get(1).unwrap().as_str(), "Kotlin");
assert_eq!(files.contains("pom.xml"), true);
assert_eq!(languages.contains("Java"), true);
assert_eq!(languages.contains("Kotlin"), true);
}
}
4 changes: 2 additions & 2 deletions framework/src/lang/jvm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ pub fn framework_analysis(entry: &DirEntry, frameworks: &Frameworks) {
frameworks.add_framework(Framework {
name: ident_framework_name(file_name).to_string(),
path: entry.path().parent().unwrap().to_str().unwrap().to_string(),
files: RefCell::new(vec![file_name.to_string()]),
languages: RefCell::new(vec![]),
files: RefCell::new(hashset! {file_name.to_string()}),
languages: RefCell::new(hashset! {}),
});
}

Expand Down
3 changes: 3 additions & 0 deletions framework/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
#[macro_use]
extern crate lazy_static;

#[macro_use]
extern crate maplit;

#[macro_use]
extern crate serde_derive;
extern crate regex;
Expand Down

0 comments on commit 3fc4d2d

Please sign in to comment.