use insta_cmd::{assert_cmd_snapshot, get_cargo_bin};
use std::{collections::HashMap, process::Command};
mod common;
use common::subcommands::*;
fn cli() -> Command {
Command::new(get_cargo_bin("sem-tool"))
}
#[test]
fn cli_insta() {
let mut insta_targets = HashMap::new();
insta_targets.insert(
"filter.invalid-semver.1",
vec![COMMAND_FILTER_TEST, ">a.b.c"],
);
insta_targets.insert(
"filter.invalid-semver.2",
vec![COMMAND_FILTER_TEST, ">1", "x.y.z"],
);
insta_targets.insert(
"filter.invalid-order.1",
vec![COMMAND_FILTER_TEST, "2.0.0", ">1"],
);
insta_targets.insert("filter.plain.1", vec![COMMAND_FILTER_TEST, ">1", "2.0.0"]);
insta_targets.insert(
"filter.plain.2",
vec![COMMAND_FILTER_TEST, ">1", "0.0.1-rc1.br.0+abc"],
);
insta_targets.insert("sort.unary.1", vec![COMMAND_SORT, "0.1.2-rc0"]);
insta_targets.insert(
"sort.complex.1",
vec![
COMMAND_SORT,
"--lexical-sorting",
"--fail-if-potentially-ambiguous",
"0.1.2+bm0",
"0.1.2+bm1",
],
);
insta_targets.insert(
"sort.complex.2",
vec![
COMMAND_SORT,
"--lexical-sorting",
"--flatten",
"0.1.2-rc0",
"0.1.2-rc1",
],
);
insta_targets.insert(
"sort.reverse.1",
vec![COMMAND_SORT, "-r", "0.1.2-rc0", "0.1.2-rc1"],
);
insta_targets.insert(
"sort.flatten.1",
vec![COMMAND_SORT, "--flatten", "0.1.2-rc0", "0.1.2-rc1"],
);
insta_targets.insert(
"sort.lexical.1",
vec![COMMAND_SORT, "--lexical-sorting", "0.1.2+bm0", "0.1.2+bm1"],
);
insta_targets.insert(
"sort.lexical.2",
vec![COMMAND_SORT, "--lexical-sorting", "0.1.2-rc0", "0.1.2-rc1"],
);
insta_targets.insert(
"sort.filter.1",
vec![COMMAND_SORT, "-f", ">1", "0.1.2-rc0", "0.1.2-rc1"],
);
insta_targets.insert(
"sort.filter.2",
vec![COMMAND_SORT, "-f", ">0", "0.1.2-rc0", "0.1.2-rc1"],
);
insta_targets.insert(
"sort.filter.3",
vec![COMMAND_SORT, "-f", ">a", "0.1.2-rc0", "0.1.2-rc1"],
);
insta_targets.insert("validate.invalid-semver.1", vec![COMMAND_VALIDATE, "a.b.c"]);
insta_targets.insert(
"validate.valid-semver.1",
vec![COMMAND_VALIDATE, "0.1.2-rc.0.a.1.b+a.0.b.1"],
);
insta_targets.insert(
"validate.short.1",
vec![COMMAND_VALIDATE, "-s", "18446744073709551616.0.0"],
);
insta_targets.insert(
"validate.short.2",
vec![COMMAND_VALIDATE, "18446744073709551616.0.0"],
);
insta_targets.insert(
"validate.regression-of-bad-regex.1",
vec![COMMAND_VALIDATE, "-s", "0.0.0a"],
);
insta_targets.insert(
"validate.regression-of-bad-regex.2",
vec![COMMAND_VALIDATE, "0.0.0a"],
);
insta_targets.insert("explain.invalid-semver.1", vec![COMMAND_EXPLAIN, "a.b.c"]);
insta_targets.insert(
"explain.valid-semver.1",
vec![COMMAND_EXPLAIN, "0.1.2-rc.0.a.1.b+a.0.b.1"],
);
insta_targets.insert("explain.valid-semver.2", vec![COMMAND_EXPLAIN, "0.1.2"]);
insta_targets.insert(
"explain.valid-semver.3",
vec![COMMAND_EXPLAIN, "0.1.2-rc.0.a.1.b"],
);
insta_targets.insert(
"explain.valid-semver.4",
vec![COMMAND_EXPLAIN, "0.1.2+a.0.b.1"],
);
insta_targets.insert(
"compare.valid-semver.1",
vec![COMMAND_COMPARE, "1.2.3", "4.5.6"],
);
insta_targets.insert(
"compare.exit-status.1",
vec![COMMAND_COMPARE, "-e", "1.2.3", "1.2.3"],
);
insta_targets.insert(
"compare.exit-status.2",
vec![COMMAND_COMPARE, "-e", "1.2.3", "4.5.6"],
);
insta_targets.insert(
"compare.exit-status.3",
vec![COMMAND_COMPARE, "-e", "4.5.6", "1.2.3"],
);
insta_targets.insert(
"compare.exit-status.4",
vec![COMMAND_COMPARE, "-e", "1.2.3+1", "1.2.3+0"],
);
insta_targets.insert(
"compare.exit-status.5",
vec![COMMAND_COMPARE, "-e", "1.2.3+0", "1.2.3+1"],
);
insta_targets.insert(
"compare.exit-status.6",
vec![COMMAND_COMPARE, "-e", "-s", "1.2.3+0", "1.2.3+1"],
);
insta_targets.insert(
"compare.complex.1",
vec![COMMAND_COMPARE, "-e", "-s", "1.2.2", "1.2.3+1"],
);
insta_targets.insert(
"compare.semantic-exit-status.1",
vec![COMMAND_COMPARE, "-s", "1.2.4+0", "1.2.3+1"],
);
insta_targets.insert(
"bump.simple.1",
vec!["-o", "text", COMMAND_BUMP, "1.1.1", "--bump-major=1"],
);
insta_targets.insert(
"bump.simple.2",
vec![COMMAND_BUMP, "1.1.1", "--bump-major=1"],
);
insta_targets.insert(
"set.simple.1",
vec!["-o", "text", COMMAND_SET, "1.1.1", "--set-major=20"],
);
insta_targets.insert("set.simple.2", vec![COMMAND_SET, "1.1.1", "--set-major=20"]);
insta_targets.insert("select.major.1", vec![COMMAND_SELECT, "major", "1.2.3"]);
insta_targets.insert(
"select.pre-release.present",
vec![COMMAND_SELECT, "pre-release", "1.0.0-rc.1"],
);
insta_targets.insert(
"select.pre-release.missing",
vec![COMMAND_SELECT, "pre-release", "1.0.0"],
);
insta_targets.insert(
"select.pre-release.fail-if-not-found",
vec![
COMMAND_SELECT,
"pre-release",
"1.0.0",
"--fail-if-not-found",
],
);
insta_targets.insert(
"select.build-metadata.1",
vec![COMMAND_SELECT, "build-metadata", "1.0.0+abc.1"],
);
insta_targets.insert(
"select.text.1",
vec!["-o", "text", COMMAND_SELECT, "patch", "2.0.4"],
);
insta_targets.insert(
"select.small.1",
vec![COMMAND_SELECT, "-s", "minor", "10.20.30"],
);
insta_targets.insert(
"bump-reset.simple.1",
vec!["-o", "text", COMMAND_BUMP_RESET, "1.2.3"],
);
insta_targets.insert(
"bump-reset.major.1",
vec!["-o", "text", COMMAND_BUMP_RESET, "1.2.3", "--major"],
);
insta_targets.insert(
"bump-reset.clear.1",
vec![
"-o",
"text",
COMMAND_BUMP_RESET,
"1.2.3-rc.1+ci",
"--normal-version-only",
],
);
insta_targets.insert(
"sort.stable.1",
vec![
COMMAND_SORT,
"--stable",
"--flatten",
"1.0.0-alpha",
"1.0.0",
"2.0.0",
],
);
insta_targets.insert(
"max.simple.1",
vec!["-o", "text", COMMAND_MAX, "1.0.0", "2.0.0", "1.5.0"],
);
insta_targets.insert(
"min.simple.1",
vec!["-o", "text", COMMAND_MIN, "1.0.0", "2.0.0", "1.5.0"],
);
insta_targets.insert(
"latest.alias.1",
vec!["-o", "text", COMMAND_LATEST, "1.0.0", "2.0.0"],
);
insta_targets.insert(
"max.stable.1",
vec![
"-o",
"text",
COMMAND_MAX,
"--stable",
"1.0.0-alpha",
"1.0.0",
"2.0.0",
],
);
for (key, args) in insta_targets.iter() {
assert_cmd_snapshot!(*key, cli().args(args));
}
}