summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarol Fuksiewicz <kfuks2@gmail.com>2020-04-28 10:53:30 +0200
committerGitHub <noreply@github.com>2020-04-28 10:53:30 +0200
commiteba4d87612cf659b21390dd2f1ee55be36f35efe (patch)
tree25234920743effddea8007420710c29ee861cc32
parent8e8519552f32313eacc835b8526aa44655c7904c (diff)
feat(package): configurable displaying package version for packages marked as private (#1109)
* feat(package): config for enabling package version in private packages * test(package): refactor package tests
-rw-r--r--docs/config/README.md11
-rw-r--r--src/configs/package.rs2
-rw-r--r--src/modules/crystal.rs6
-rw-r--r--src/modules/elixir.rs4
-rw-r--r--src/modules/elm.rs12
-rw-r--r--src/modules/erlang.rs4
-rw-r--r--src/modules/golang.rs18
-rw-r--r--src/modules/haskell.rs8
-rw-r--r--src/modules/julia.rs8
-rw-r--r--src/modules/nodejs.rs10
-rw-r--r--src/modules/package.rs389
-rw-r--r--src/modules/php.rs8
-rw-r--r--src/modules/ruby.rs8
-rw-r--r--src/modules/utils/test.rs8
14 files changed, 298 insertions, 198 deletions
diff --git a/docs/config/README.md b/docs/config/README.md
index 64fefd1c3..42a97cca2 100644
--- a/docs/config/README.md
+++ b/docs/config/README.md
@@ -1074,11 +1074,12 @@ package, and shows its current version. The module currently supports `npm`, `ca
### Options
-| Variable | Default | Description |
-| ---------- | ------------ | ---------------------------------------------------------- |
-| `symbol` | `"📦 "` | The symbol used before displaying the version the package. |
-| `style` | `"bold red"` | The style for the module. |
-| `disabled` | `false` | Disables the `package` module. |
+| Variable | Default | Description |
+| ----------------- | ------------ | ---------------------------------------------------------- |
+| `symbol` | `"📦 "` | The symbol used before displaying the version the package. |
+| `style` | `"bold red"` | The style for the module. |
+| `display_private` | `false` | Enable displaying version for packages marked as private. |
+| `disabled` | `false` | Disables the `package` module. |
### Example
diff --git a/src/configs/package.rs b/src/configs/package.rs
index fd1662e1a..40ccaf1f1 100644
--- a/src/configs/package.rs
+++ b/src/configs/package.rs
@@ -7,6 +7,7 @@ use starship_module_config_derive::ModuleConfig;
pub struct PackageConfig<'a> {
pub symbol: SegmentConfig<'a>,
pub style: Style,
+ pub display_private: bool,
pub disabled: bool,
}
@@ -15,6 +16,7 @@ impl<'a> RootModuleConfig<'a> for PackageConfig<'a> {
PackageConfig {
symbol: SegmentConfig::new("📦 "),
style: Color::Fixed(208).bold(),
+ display_private: false,
disabled: false,
}
}
diff --git a/src/modules/crystal.rs b/src/modules/crystal.rs
index 62e4023a1..322631ff0 100644
--- a/src/modules/crystal.rs
+++ b/src/modules/crystal.rs
@@ -55,7 +55,7 @@ mod tests {
#[test]
fn folder_without_crystal_files() -> io::Result<()> {
let dir = tempfile::tempdir()?;
- let actual = render_module("crystal", dir.path());
+ let actual = render_module("crystal", dir.path(), None);
let expected = None;
assert_eq!(expected, actual);
@@ -67,7 +67,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("shard.yml"))?.sync_all()?;
- let actual = render_module("crystal", dir.path());
+ let actual = render_module("crystal", dir.path(), None);
let expected = Some(format!("via {} ", Color::Red.bold().paint("🔮 v0.32.1")));
assert_eq!(expected, actual);
@@ -79,7 +79,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("main.cr"))?.sync_all()?;
- let actual = render_module("crystal", dir.path());
+ let actual = render_module("crystal", dir.path(), None);
let expected = Some(format!("via {} ", Color::Red.bold().paint("🔮 v0.32.1")));
assert_eq!(expected, actual);
diff --git a/src/modules/elixir.rs b/src/modules/elixir.rs
index 6eb5ed954..dff4b9316 100644
--- a/src/modules/elixir.rs
+++ b/src/modules/elixir.rs
@@ -83,7 +83,7 @@ Elixir 1.10 (compiled with Erlang/OTP 22)
let dir = tempfile::tempdir()?;
let expected = None;
- let output = render_module("elixir", dir.path());
+ let output = render_module("elixir", dir.path(), None);
assert_eq!(output, expected);
@@ -99,7 +99,7 @@ Elixir 1.10 (compiled with Erlang/OTP 22)
"via {} ",
Color::Purple.bold().paint("💧 1.10 (OTP 22)")
));
- let output = render_module("elixir", dir.path());
+ let output = render_module("elixir", dir.path(), None);
assert_eq!(output, expected);
diff --git a/src/modules/elm.rs b/src/modules/elm.rs
index 48629fa0f..8b943ecd6 100644
--- a/src/modules/elm.rs
+++ b/src/modules/elm.rs
@@ -46,7 +46,7 @@ mod tests {
#[test]
fn folder_without_elm() -> io::Result<()> {
let dir = tempfile::tempdir()?;
- let actual = render_module("elm", dir.path());
+ let actual = render_module("elm", dir.path(), None);
let expected = None;
assert_eq!(expected, actual);
dir.close()
@@ -56,7 +56,7 @@ mod tests {
fn folder_with_elm_json() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("elm.json"))?.sync_all()?;
- let actual = render_module("elm", dir.path());
+ let actual = render_module("elm", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🌳 v0.19.1")));
assert_eq!(expected, actual);
dir.close()
@@ -66,7 +66,7 @@ mod tests {
fn folder_with_elm_package_json() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("elm-package.json"))?.sync_all()?;
- let actual = render_module("elm", dir.path());
+ let actual = render_module("elm", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🌳 v0.19.1")));
assert_eq!(expected, actual);
dir.close()
@@ -76,7 +76,7 @@ mod tests {
fn folder_with_elm_version() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join(".elm-version"))?.sync_all()?;
- let actual = render_module("elm", dir.path());
+ let actual = render_module("elm", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🌳 v0.19.1")));
assert_eq!(expected, actual);
dir.close()
@@ -87,7 +87,7 @@ mod tests {
let dir = tempfile::tempdir()?;
let elmstuff = dir.path().join("elm-stuff");
fs::create_dir_all(&elmstuff)?;
- let actual = render_module("elm", dir.path());
+ let actual = render_module("elm", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🌳 v0.19.1")));
assert_eq!(expected, actual);
dir.close()
@@ -97,7 +97,7 @@ mod tests {
fn folder_with_elm_file() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("main.elm"))?.sync_all()?;
- let actual = render_module("elm", dir.path());
+ let actual = render_module("elm", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🌳 v0.19.1")));
assert_eq!(expected, actual);
dir.close()
diff --git a/src/modules/erlang.rs b/src/modules/erlang.rs
index 505d34ebb..11af74367 100644
--- a/src/modules/erlang.rs
+++ b/src/modules/erlang.rs
@@ -57,7 +57,7 @@ mod tests {
let dir = tempfile::tempdir()?;
let expected = None;
- let output = render_module("erlang", dir.path());
+ let output = render_module("erlang", dir.path(), None);
assert_eq!(output, expected);
@@ -70,7 +70,7 @@ mod tests {
File::create(dir.path().join("rebar.config"))?.sync_all()?;
let expected = Some(format!("via {} ", Color::Red.bold().paint("🖧 22.1.3")));
- let output = render_module("erlang", dir.path());
+ let output = render_module("erlang", dir.path(), None);
assert_eq!(output, expected);
diff --git a/src/modules/golang.rs b/src/modules/golang.rs
index 915c24eb3..e74e8ab3c 100644
--- a/src/modules/golang.rs
+++ b/src/modules/golang.rs
@@ -75,7 +75,7 @@ mod tests {
fn folder_without_go_files() -> io::Result<()> {
let dir = tempfile::tempdir()?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = None;
assert_eq!(expected, actual);
@@ -87,7 +87,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("main.go"))?.sync_all()?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
assert_eq!(expected, actual);
@@ -99,7 +99,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("go.mod"))?.sync_all()?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
assert_eq!(expected, actual);
@@ -111,7 +111,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("go.sum"))?.sync_all()?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
assert_eq!(expected, actual);
@@ -124,7 +124,7 @@ mod tests {
let godeps = dir.path().join("Godeps");
fs::create_dir_all(&godeps)?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
assert_eq!(expected, actual);
@@ -136,7 +136,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("glide.yaml"))?.sync_all()?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
assert_eq!(expected, actual);
@@ -148,7 +148,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("Gopkg.yml"))?.sync_all()?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
assert_eq!(expected, actual);
@@ -159,7 +159,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("Gopkg.lock"))?.sync_all()?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
assert_eq!(expected, actual);
dir.close()
@@ -169,7 +169,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join(".go-version"))?.sync_all()?;
- let actual = render_module("golang", dir.path());
+ let actual = render_module("golang", dir.path(), None);
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
assert_eq!(expected, actual);
dir.close()
diff --git a/src/modules/haskell.rs b/src/modules/haskell.rs
index 0e41d6b75..9977809ce 100644
--- a/src/modules/haskell.rs
+++ b/src/modules/haskell.rs
@@ -54,7 +54,7 @@ mod tests {
#[test]
fn folder_without_stack_yaml() -> io::Result<()> {
let dir = tempfile::tempdir()?;
- let actual = render_module("haskell", dir.path());
+ let actual = render_module("haskell", dir.path(), None);
let expected = None;
assert_eq!(expected, actual);
dir.close()
@@ -64,7 +64,7 @@ mod tests {
fn folder_with_hpack_file() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("package.yaml"))?.sync_all()?;
- let actual = render_module("haskell", dir.path());
+ let actual = render_module("haskell", dir.path(), None);
let expected = Some(format!("via {} ", Color::Red.bold().paint("λ v8.6.5")));
assert_eq!(expected, actual);
dir.close()
@@ -73,7 +73,7 @@ mod tests {
fn folder_with_cabal_file() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("test.cabal"))?.sync_all()?;
- let actual = render_module("haskell", dir.path());
+ let actual = render_module("haskell", dir.path(), None);
let expected = Some(format!("via {} ", Color::Red.bold().paint("λ v8.6.5")));
assert_eq!(expected, actual);
dir.close()
@@ -83,7 +83,7 @@ mod tests {
fn folder_with_stack_yaml() -> io::Result<()> {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("stack.yaml"))?.sync_all()?;
- let actual = render_module("haskell", dir.path());
+ let actual = render_module("haskell", dir.path(), None);
let expected = Some(format!("via {} ", Color::Red.bold().paint("λ v8.6.5")));
assert_eq!(expected, actual);
dir.close()
diff --git a/src/modules/julia.rs b/src/modules/julia.rs
index fc5f01b95..ee5404423 100644
--- a/src/modules/julia.rs
+++ b/src/modules/julia.rs
@@ -60,7 +60,7 @@ mod tests {
fn folder_without_julia_file() -> io::Result<()> {
let dir = tempfile::tempdir()?;
- let actual = render_module("julia", dir.path());
+ let actual = render_module("julia", dir.path(), None);
let expected = None;
assert_eq!(expected, actual);
@@ -72,7 +72,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("hello.jl"))?.sync_all()?;
- let actual = render_module("julia", dir.path());
+ let actual = render_module("julia", dir.path(), None);
let expected = Some(format!("via {} ", Color::Purple.bold().paint("ஃ v1.4.0")));
assert_eq!(expected, actual);
@@ -84,7 +84,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("Project.toml"))?.sync_all()?;
- let actual = render_module("julia", dir.path());
+ let actual = render_module("julia", dir.path(), None);
let expected = Some(format!("via {} ", Color::Purple.bold().paint("ஃ v1.4.0")));
assert_eq!(expected, actual);
@@ -96,7 +96,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("Manifest.toml"))?.sync_all()?;
- let actual = render_module("julia", dir.path());
+ let actual = render_module("julia", dir.path(), None);
let expected = Some(format!("via {} ", Color::Purple.bold().paint("ஃ v1.4.0")));
assert_eq!(expected, actual);
diff --git a/src/modules/nodejs.rs b/src/modules/nodejs.rs
index 309287dc4..d07d19aff 100644
--- a/src/modules/nodejs.rs
+++ b/src/modules/nodejs.rs
@@ -45,7 +45,7 @@ mod tests {
#[test]
fn folder_without_node_files() -> io::Result<()> {
let dir = tempfile::tempdir()?;
- let actual = render_module("nodejs", dir.path());
+ let actual = render_module("nodejs", dir.path(), None);
let expected = None;
assert_eq!(expected, actual);
dir.close()
@@ -56,7 +56,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("package.json"))?.sync_all()?;
- let actual = render_module("nodejs", dir.path());
+ let actual = render_module("nodejs", dir.path(), None);
let expected = Some(format!("via {} ", Color::Green.bold().paint("⬢ v12.0.0")));
assert_eq!(expected, actual);
dir.close()
@@ -67,7 +67,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join(".node-version"))?.sync_all()?;
- let actual = render_module("nodejs", dir.path());
+ let actual = render_module("nodejs", dir.path(), None);
let expected = Some(format!("via {} ", Color::Green.bold().paint("⬢ v12.0.0")));
assert_eq!(expected, actual);
dir.close()
@@ -78,7 +78,7 @@ mod tests {
let dir = tempfile::tempdir()?;
File::create(dir.path().join("index.js"))?.sync_all()?;
- let actual = render_module("nodejs", dir.path());
+ let actual = render_module("nodejs", dir.path(), None);
let expected = Some(format!("via {} ", Color::Green.bold().paint("⬢ v12.0.0")));
assert_eq!(expected, actual);
dir.close()
@@ -90,7 +90,7 @@ mod tests {
let node_modules = dir.path().join("node_modules");
fs::create_dir_all(&node_modules)?;
- let actual = render_module("nodejs", dir.path());
+ let actual = render_module("nodejs", dir.path(), None);
let expected = Some(format!("via {} ", Color::Green.bold().paint("⬢ v12.0.0")));
assert_eq!(expected, actual);
dir.close()
diff --git a/src/modules/package.rs b/src/modules/package.rs
index e34f90e66..ff192dad8 100644
--- a/src/modules/package.rs
+++ b/src/modules/package.rs
@@ -13,11 +13,11 @@ use crate::configs::package::PackageConfig;
///
/// Will display if a version is defined for your Node.js or Rust project (if one exists)
pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
- match get_package_version(&context.current_dir) {
- Some(package_version) => {
- let mut module = context.new_module("package");
- let config: PackageConfig = PackageConfig::try_load(module.config);
+ let mut module = context.new_module("package");
+ let config: PackageConfig = PackageConfig::try_load(module.config);
+ match get_package_version(&context.current_dir, &config) {
+ Some(package_version) => {
module.set_style(config.style);
module.get_prefix().set_value("is ");
@@ -38,10 +38,11 @@ fn extract_cargo_version(file_contents: &str) -> Option<String> {
Some(formatted_version)
}
-fn extract_package_version(file_contents: &str) -> Option<String> {
+fn extract_package_version(file_contents: &str, display_private: bool) -> Option<String> {
let package_json: json::Value = json::from_str(file_contents).ok()?;
- if package_json.get("private").and_then(json::Value::as_bool) == Some(true) {
+ if !display_private && package_json.get("private").and_then(json::Value::as_bool) == Some(true)
+ {
return None;
}
@@ -101,11 +102,11 @@ fn extract_mix_version(file_contents: &str) -> Option<String> {
Some(formatted_version)
}
-fn get_package_version(base_dir: &PathBuf) -> Option<String> {
+fn get_package_version(base_dir: &PathBuf, config: &PackageConfig) -> Option<String> {
if let Ok(cargo_toml) = utils::read_file(base_dir.join("Cargo.toml")) {
extract_cargo_version(&cargo_toml)
} else if let Ok(package_json) = utils::read_file(base_dir.join("package.json")) {
- extract_package_version(&package_json)
+ extract_package_version(&package_json, config.display_private)
} else if let Ok(poetry_toml) = utils::read_file(base_dir.join("pyproject.toml")) {
extract_poetry_version(&poetry_toml)
} else if let Ok(composer_json) = utils::read_file(base_dir.join("composer.json")) {
@@ -133,6 +134,12 @@ fn format_version(version: &str) -> String {
#[cfg(test)]
mod tests {
use super::*;
+ use crate::modules::utils::test::render_module;
+ use ansi_term::Color;
+ use std::fs::File;
+ use std::io;
+ use std::io::Write;
+ use tempfile::TempDir;
#[test]
fn test_format_version() {
@@ -150,133 +157,151 @@ mod tests {
}
#[test]
- fn test_extract_cargo_version() {
- let cargo_with_version = toml::toml! {
+ fn test_extract_cargo_version() -> io::Result<()> {
+ let config_name = "Cargo.toml";
+ let config_content = toml::toml! {
[package]
name = "starship"
version = "0.1.0"
}
.to_string();
- let expected_version = Some("v0.1.0".to_string());
- assert_eq!(extract_cargo_version(&cargo_with_version), expected_version);
-
- let cargo_without_version = toml::toml! {
- [package]
- name = "starship"
- }
- .to_string();
-
- let expected_version = None;
- assert_eq!(
- extract_cargo_version(&cargo_without_version),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v0.1.0"), None)?;
+ project_dir.close()
}
#[test]
- fn test_extract_package_version() {
- let package_with_version = json::json!({
- "name": "spacefish",
+ fn test_extract_package_version() -> io::Result<()> {
+ let config_name = "package.json";
+ let config_content = json::json!({
+ "name": "starship",
"version": "0.1.0"
})
.to_string();
- let expected_version = Some("v0.1.0".to_string());
- assert_eq!(
- extract_package_version(&package_with_version),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v0.1.0"), None)?;
+ project_dir.close()
}
#[test]
- fn test_extract_package_version_without_version() {
- let package_without_version = json::json!({
- "name": "spacefish"
+ fn test_extract_package_version_without_version() -> io::Result<()> {
+ let config_name = "package.json";
+ let config_content = json::json!({
+ "name": "starship"
})
.to_string();
- let expected_version = None;
- assert_eq!(
- extract_package_version(&package_without_version),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, None, None)?;
+ project_dir.close()
}
#[test]
- fn test_extract_package_version_with_null_version() {
- let package_with_null_version = json::json!({
- "name": "spacefish",
+ fn test_extract_package_version_with_null_version() -> io::Result<()> {
+ let config_name = "package.json";
+ let config_content = json::json!({
+ "name": "starship",
"version": null
})
.to_string();
- let expected_version = None;
- assert_eq!(
- extract_package_version(&package_with_null_version),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, None, None)?;
+ project_dir.close()
}
#[test]
- fn test_extract_package_version_with_null_string_version() {
- let package_with_null_string_version = json::json!({
- "name": "spacefish",
+ fn test_extract_package_version_with_null_string_version() -> io::Result<()> {
+ let config_name = "package.json";
+ let config_content = json::json!({
+ "name": "starship",
"version": "null"
})
.to_string();
- let expected_version = None;
- assert_eq!(
- extract_package_version(&package_with_null_string_version),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, None, None)?;
+ project_dir.close()
}
#[test]
- fn test_extract_private_package_version() {
- let private_package = json::json!({
- "name": "spacefish",
+ fn test_extract_private_package_version_with_default_config() -> io::Result<()> {
+ let config_name = "package.json";
+ let config_content = json::json!({
+ "name": "starship",
"version": "0.1.0",
"private": true
})
.to_string();
- let expected_version = None;
- assert_eq!(extract_package_version(&private_package), expected_version);
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, None, None)?;
+ project_dir.close()
}
#[test]
- fn test_extract_poetry_version() {
- let poetry_with_version = toml::toml! {
+ fn test_extract_private_package_version_with_display_private() -> io::Result<()> {
+ let config_name = "package.json";
+ let config_content = json::json!({
+ "name": "starship",
+ "version": "0.1.0",
+ "private": true
+ })
+ .to_string();
+ let starship_config = toml::toml! {
+ [package]
+ display_private = true
+ };
+
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v0.1.0"), Some(starship_config))?;
+ project_dir.close()
+ }
+
+ #[test]
+ fn test_extract_poetry_version() -> io::Result<()> {
+ let config_name = "pyproject.toml";
+ let config_content = toml::toml! {
[tool.poetry]
name = "starship"
version = "0.1.0"
}
.to_string();
- let expected_version = Some("v0.1.0".to_string());
- assert_eq!(
- extract_poetry_version(&poetry_with_version),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v0.1.0"), None)?;
+ project_dir.close()
+ }
- let poetry_without_version = toml::toml! {
+ #[test]
+ fn test_extract_poetry_version_without_version() -> io::Result<()> {
+ let config_name = "pyproject.toml";
+ let config_content = toml::toml! {
[tool.poetry]
name = "starship"
}
.to_string();
- let expected_version = None;
- assert_eq!(
- extract_poetry_version(&poetry_without_version),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, None, None)?;
+ project_dir.close()
}
#[test]
- fn test_extract_gradle_version() {
- let gradle_single_quotes = "plugins {
+ fn test_extract_gradle_version_single_quote() -> io::Result<()> {
+ let config_name = "build.gradle";
+ let config_content = "plugins {
id 'java'
id 'test.plugin' version '0.2.0'
}
@@ -286,13 +311,16 @@ java {
targetCompatibility = JavaVersion.VERSION_1_8
}";
- let expected_version = Some("v0.1.0".to_string());
- assert_eq!(
- extract_gradle_version(&gradle_single_quotes),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v0.1.0"), None)?;
+ project_dir.close()
+ }
- let gradle_double_quotes = "plugins {
+ #[test]
+ fn test_extract_gradle_version_double_quote() -> io::Result<()> {
+ let config_name = "build.gradle";
+ let config_content = "plugins {
id 'java'
id 'test.plugin' version '0.2.0'
}
@@ -302,13 +330,16 @@ java {
targetCompatibility = JavaVersion.VERSION_1_8
}";
- let expected_version = Some("v0.1.0".to_string());
- assert_eq!(
- extract_gradle_version(&gradle_double_quotes),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v0.1.0"), None)?;
+ project_dir.close()
+ }
- let gradle_release_candidate = "plugins {
+ #[test]
+ fn test_extract_gradle_version_rc_version() -> io::Result<()> {
+ let config_name = "build.gradle";
+ let config_content = "plugins {
id 'java'
id 'test.plugin' version '0.2.0'
}
@@ -318,13 +349,16 @@ java {
targetCompatibility = JavaVersion.VERSION_1_8
}";
- let expected_version = Some("v0.1.0-rc1".to_string());
- assert_eq!(
- extract_gradle_version(&gradle_release_candidate),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v0.1.0-rc1"), None)?;
+ project_dir.close()
+ }
- let gradle_without_version = "plugins {
+ #[test]
+ fn test_extract_gradle_version_without_version() -> io::Result<()> {
+ let config_name = "build.gradle";
+ let config_content = "plugins {
id 'java'
id 'test.plugin' version '0.2.0'
}
@@ -333,16 +367,16 @@ java {
targetCompatibility = JavaVersion.VERSION_1_8
}";
- let expected_version = None;
- assert_eq!(
- extract_gradle_version(&gradle_without_version),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, None, None)?;
+ project_dir.close()
}
#[test]
- fn test_extract_mix_version() {
- let mix_complete = "defmodule MyApp.MixProject do
+ fn test_extract_mix_version() -> io::Result<()> {
+ let config_name = "mix.exs";
+ let config_content = "defmodule MyApp.MixProject do
use Mix.Project
def project do
@@ -366,91 +400,150 @@ java {
end
end";
- let expected_version = Some("v1.2.3".to_string());
- assert_eq!(extract_mix_version(&mix_complete), expected_version);
-
- let mix_partial_oneline = " def project, do: [app: :my_app,version: \"3.2.1\"]";
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v1.2.3"), None)?;
+ project_dir.close()
+ }
- let expected_version = Some("v3.2.1".to_string());
- assert_eq!(extract_mix_version(&mix_partial_oneline), expected_version);
+ #[test]
+ fn test_extract_mix_version_partial_online() -> io::Result<()> {
+ let config_name = "mix.exs";
+ let config_content = " def project, do: [app: :my_app,version: \"3.2.1\"]";
+
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v3.2.1"), None)?;
+ project_dir.close()
+ }
- let mix_partial_prerelease = " def project do
+ #[test]
+ fn test_extract_mix_version_rc_version() -> io::Result<()> {
+ let config_name = "mix.exs";
+ let config_content = " def project do
[
app: :my_app,
version: \"1.0.0-alpha.3\"
]
end";
- let expected_version = Some("v1.0.0-alpha.3".to_string());
- assert_eq!(
- extract_mix_version(&mix_partial_prerelease),
- expected_version
- );
+ let project_dir = create_project_dir()?;
+ fill_config(&project_dir, config_name, Some(&config_content))?;
+ expect_output(&project_dir, Some("v1.0.0-alpha.3"), None)?;
+ project_dir.close()
+ }
- let mix_partial_prerelease_and_build_info = " def project do
+ #[test]
+ fn test_extract_mix_version_rc_with_build_version() -> io::Result<()> {
+ let config_name =