test(golang): refactor golang tests to use mocked command (#925)
Refactor the golang module tests to use a mocked command and no longer depend on having a particular version of Go installed.
This commit is contained in:
parent
f8615f9a36
commit
67397d9096
|
@ -116,11 +116,6 @@ jobs:
|
||||||
toolchain: stable
|
toolchain: stable
|
||||||
override: true
|
override: true
|
||||||
|
|
||||||
# Install Golang at a fixed version
|
|
||||||
- uses: actions/setup-go@v1
|
|
||||||
with:
|
|
||||||
go-version: "1.12.1"
|
|
||||||
|
|
||||||
# Install Ruby at a fixed version
|
# Install Ruby at a fixed version
|
||||||
- uses: eregon/use-ruby-action@v1
|
- uses: eregon/use-ruby-action@v1
|
||||||
with:
|
with:
|
||||||
|
|
|
@ -58,6 +58,105 @@ fn format_go_version(go_stdout: &str) -> Option<String> {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use crate::modules::utils::test::render_module;
|
||||||
|
use ansi_term::Color;
|
||||||
|
use std::fs::{self, File};
|
||||||
|
use std::io;
|
||||||
|
use tempfile;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn folder_without_go_files() -> io::Result<()> {
|
||||||
|
let dir = tempfile::tempdir()?;
|
||||||
|
|
||||||
|
let actual = render_module("golang", dir.path());
|
||||||
|
|
||||||
|
let expected = None;
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn folder_with_go_file() -> io::Result<()> {
|
||||||
|
let dir = tempfile::tempdir()?;
|
||||||
|
File::create(dir.path().join("main.go"))?.sync_all()?;
|
||||||
|
|
||||||
|
let actual = render_module("golang", dir.path());
|
||||||
|
|
||||||
|
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn folder_with_go_mod() -> io::Result<()> {
|
||||||
|
let dir = tempfile::tempdir()?;
|
||||||
|
File::create(dir.path().join("go.mod"))?.sync_all()?;
|
||||||
|
|
||||||
|
let actual = render_module("golang", dir.path());
|
||||||
|
|
||||||
|
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn folder_with_go_sum() -> io::Result<()> {
|
||||||
|
let dir = tempfile::tempdir()?;
|
||||||
|
File::create(dir.path().join("go.sum"))?.sync_all()?;
|
||||||
|
|
||||||
|
let actual = render_module("golang", dir.path());
|
||||||
|
|
||||||
|
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn folder_with_godeps() -> io::Result<()> {
|
||||||
|
let dir = tempfile::tempdir()?;
|
||||||
|
let godeps = dir.path().join("Godeps");
|
||||||
|
fs::create_dir_all(&godeps)?;
|
||||||
|
|
||||||
|
let actual = render_module("golang", dir.path());
|
||||||
|
|
||||||
|
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn folder_with_glide_yaml() -> io::Result<()> {
|
||||||
|
let dir = tempfile::tempdir()?;
|
||||||
|
File::create(dir.path().join("glide.yaml"))?.sync_all()?;
|
||||||
|
|
||||||
|
let actual = render_module("golang", dir.path());
|
||||||
|
|
||||||
|
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn folder_with_gopkg_yml() -> io::Result<()> {
|
||||||
|
let dir = tempfile::tempdir()?;
|
||||||
|
File::create(dir.path().join("Gopkg.yml"))?.sync_all()?;
|
||||||
|
|
||||||
|
let actual = render_module("golang", dir.path());
|
||||||
|
|
||||||
|
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
#[test]
|
||||||
|
fn folder_with_gopkg_lock() -> io::Result<()> {
|
||||||
|
let dir = tempfile::tempdir()?;
|
||||||
|
File::create(dir.path().join("Gopkg.lock"))?.sync_all()?;
|
||||||
|
|
||||||
|
let actual = render_module("golang", dir.path());
|
||||||
|
let expected = Some(format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1")));
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_format_go_version() {
|
fn test_format_go_version() {
|
||||||
|
|
28
src/utils.rs
28
src/utils.rs
|
@ -39,18 +39,6 @@ pub fn exec_cmd(cmd: &str, args: &[&str]) -> Option<CommandOutput> {
|
||||||
_ => format!("{} {}", cmd, args.join(" ")),
|
_ => format!("{} {}", cmd, args.join(" ")),
|
||||||
};
|
};
|
||||||
match command.as_str() {
|
match command.as_str() {
|
||||||
"elm --version" => Some(CommandOutput {
|
|
||||||
stdout: String::from("0.19.1"),
|
|
||||||
stderr: String::default(),
|
|
||||||
}),
|
|
||||||
"stack ghc -- --numeric-version --no-install-ghc" => Some(CommandOutput {
|
|
||||||
stdout: String::from("8.6.5"),
|
|
||||||
stderr: String::default(),
|
|
||||||
}),
|
|
||||||
"node --version" => Some(CommandOutput {
|
|
||||||
stdout: String::from("v12.0.0"),
|
|
||||||
stderr: String::default(),
|
|
||||||
}),
|
|
||||||
"crystal --version" => Some(CommandOutput {
|
"crystal --version" => Some(CommandOutput {
|
||||||
stdout: String::from("Crystal 0.32.1 (2019-12-18)"),
|
stdout: String::from("Crystal 0.32.1 (2019-12-18)"),
|
||||||
stderr: String::default(),
|
stderr: String::default(),
|
||||||
|
@ -59,6 +47,22 @@ pub fn exec_cmd(cmd: &str, args: &[&str]) -> Option<CommandOutput> {
|
||||||
stdout: String::from("stdout ok!"),
|
stdout: String::from("stdout ok!"),
|
||||||
stderr: String::from("stderr ok!"),
|
stderr: String::from("stderr ok!"),
|
||||||
}),
|
}),
|
||||||
|
"elm --version" => Some(CommandOutput {
|
||||||
|
stdout: String::from("0.19.1"),
|
||||||
|
stderr: String::default(),
|
||||||
|
}),
|
||||||
|
"go version" => Some(CommandOutput {
|
||||||
|
stdout: String::from("go version go1.12.1 linux/amd64"),
|
||||||
|
stderr: String::default(),
|
||||||
|
}),
|
||||||
|
"node --version" => Some(CommandOutput {
|
||||||
|
stdout: String::from("v12.0.0"),
|
||||||
|
stderr: String::default(),
|
||||||
|
}),
|
||||||
|
"stack ghc -- --numeric-version --no-install-ghc" => Some(CommandOutput {
|
||||||
|
stdout: String::from("8.6.5"),
|
||||||
|
stderr: String::default(),
|
||||||
|
}),
|
||||||
// If we don't have a mocked command fall back to executing the command
|
// If we don't have a mocked command fall back to executing the command
|
||||||
_ => internal_exec_cmd(&cmd, &args),
|
_ => internal_exec_cmd(&cmd, &args),
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,141 +0,0 @@
|
||||||
use ansi_term::Color;
|
|
||||||
use std::fs::{self, File};
|
|
||||||
use std::io;
|
|
||||||
use tempfile;
|
|
||||||
|
|
||||||
use crate::common;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn folder_without_go_files() -> io::Result<()> {
|
|
||||||
let dir = tempfile::tempdir()?;
|
|
||||||
|
|
||||||
let output = common::render_module("golang")
|
|
||||||
.arg("--path")
|
|
||||||
.arg(dir.path())
|
|
||||||
.output()?;
|
|
||||||
let actual = String::from_utf8(output.stdout).unwrap();
|
|
||||||
|
|
||||||
let expected = "";
|
|
||||||
assert_eq!(expected, actual);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[ignore]
|
|
||||||
fn folder_with_go_file() -> io::Result<()> {
|
|
||||||
let dir = tempfile::tempdir()?;
|
|
||||||
File::create(dir.path().join("main.go"))?.sync_all()?;
|
|
||||||
|
|
||||||
let output = common::render_module("golang")
|
|
||||||
.arg("--path")
|
|
||||||
.arg(dir.path())
|
|
||||||
.output()?;
|
|
||||||
let actual = String::from_utf8(output.stdout).unwrap();
|
|
||||||
|
|
||||||
let expected = format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1"));
|
|
||||||
assert_eq!(expected, actual);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[ignore]
|
|
||||||
fn folder_with_go_mod() -> io::Result<()> {
|
|
||||||
let dir = tempfile::tempdir()?;
|
|
||||||
File::create(dir.path().join("go.mod"))?.sync_all()?;
|
|
||||||
|
|
||||||
let output = common::render_module("golang")
|
|
||||||
.arg("--path")
|
|
||||||
.arg(dir.path())
|
|
||||||
.output()?;
|
|
||||||
let actual = String::from_utf8(output.stdout).unwrap();
|
|
||||||
|
|
||||||
let expected = format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1"));
|
|
||||||
assert_eq!(expected, actual);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[ignore]
|
|
||||||
fn folder_with_go_sum() -> io::Result<()> {
|
|
||||||
let dir = tempfile::tempdir()?;
|
|
||||||
File::create(dir.path().join("go.sum"))?.sync_all()?;
|
|
||||||
|
|
||||||
let output = common::render_module("golang")
|
|
||||||
.arg("--path")
|
|
||||||
.arg(dir.path())
|
|
||||||
.output()?;
|
|
||||||
let actual = String::from_utf8(output.stdout).unwrap();
|
|
||||||
|
|
||||||
let expected = format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1"));
|
|
||||||
assert_eq!(expected, actual);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[ignore]
|
|
||||||
fn folder_with_godeps() -> io::Result<()> {
|
|
||||||
let dir = tempfile::tempdir()?;
|
|
||||||
let godeps = dir.path().join("Godeps");
|
|
||||||
fs::create_dir_all(&godeps)?;
|
|
||||||
|
|
||||||
let output = common::render_module("golang")
|
|
||||||
.arg("--path")
|
|
||||||
.arg(dir.path())
|
|
||||||
.output()?;
|
|
||||||
let actual = String::from_utf8(output.stdout).unwrap();
|
|
||||||
|
|
||||||
let expected = format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1"));
|
|
||||||
assert_eq!(expected, actual);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[ignore]
|
|
||||||
fn folder_with_glide_yaml() -> io::Result<()> {
|
|
||||||
let dir = tempfile::tempdir()?;
|
|
||||||
File::create(dir.path().join("glide.yaml"))?.sync_all()?;
|
|
||||||
|
|
||||||
let output = common::render_module("golang")
|
|
||||||
.arg("--path")
|
|
||||||
.arg(dir.path())
|
|
||||||
.output()?;
|
|
||||||
let actual = String::from_utf8(output.stdout).unwrap();
|
|
||||||
|
|
||||||
let expected = format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1"));
|
|
||||||
assert_eq!(expected, actual);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[ignore]
|
|
||||||
fn folder_with_gopkg_yml() -> io::Result<()> {
|
|
||||||
let dir = tempfile::tempdir()?;
|
|
||||||
File::create(dir.path().join("Gopkg.yml"))?.sync_all()?;
|
|
||||||
|
|
||||||
let output = common::render_module("golang")
|
|
||||||
.arg("--path")
|
|
||||||
.arg(dir.path())
|
|
||||||
.output()?;
|
|
||||||
let actual = String::from_utf8(output.stdout).unwrap();
|
|
||||||
|
|
||||||
let expected = format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1"));
|
|
||||||
assert_eq!(expected, actual);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
#[ignore]
|
|
||||||
fn folder_with_gopkg_lock() -> io::Result<()> {
|
|
||||||
let dir = tempfile::tempdir()?;
|
|
||||||
File::create(dir.path().join("Gopkg.lock"))?.sync_all()?;
|
|
||||||
|
|
||||||
let output = common::render_module("golang")
|
|
||||||
.arg("--path")
|
|
||||||
.arg(dir.path())
|
|
||||||
.output()?;
|
|
||||||
let actual = String::from_utf8(output.stdout).unwrap();
|
|
||||||
|
|
||||||
let expected = format!("via {} ", Color::Cyan.bold().paint("🐹 v1.12.1"));
|
|
||||||
assert_eq!(expected, actual);
|
|
||||||
Ok(())
|
|
||||||
}
|
|
|
@ -11,7 +11,6 @@ mod git_branch;
|
||||||
mod git_commit;
|
mod git_commit;
|
||||||
mod git_state;
|
mod git_state;
|
||||||
mod git_status;
|
mod git_status;
|
||||||
mod golang;
|
|
||||||
mod hg_branch;
|
mod hg_branch;
|
||||||
mod hostname;
|
mod hostname;
|
||||||
mod jobs;
|
mod jobs;
|
||||||
|
|
Loading…
Reference in New Issue