use std::fs;
use standard_version::update_version_files;
#[test]
fn bump_cargo_and_package_json() {
let dir = tempfile::tempdir().unwrap();
fs::write(
dir.path().join("Cargo.toml"),
r#"[package]
name = "my-app"
version = "1.0.0"
edition = "2021"
"#,
)
.unwrap();
fs::write(
dir.path().join("package.json"),
r#"{
"name": "my-app",
"version": "1.0.0",
"main": "index.js"
}"#,
)
.unwrap();
let results = update_version_files(dir.path(), "2.0.0", &[]).unwrap();
assert_eq!(results.len(), 2);
let cargo = results.iter().find(|r| r.name == "Cargo.toml").unwrap();
assert_eq!(cargo.old_version, "1.0.0");
assert_eq!(cargo.new_version, "2.0.0");
let pkg = results.iter().find(|r| r.name == "package.json").unwrap();
assert_eq!(pkg.old_version, "1.0.0");
assert_eq!(pkg.new_version, "2.0.0");
let cargo_disk = fs::read_to_string(dir.path().join("Cargo.toml")).unwrap();
assert!(cargo_disk.contains(r#"version = "2.0.0""#));
let pkg_disk = fs::read_to_string(dir.path().join("package.json")).unwrap();
assert!(pkg_disk.contains(r#""version": "2.0.0""#));
}
#[test]
fn bump_deno_json() {
let dir = tempfile::tempdir().unwrap();
let deno = dir.path().join("deno.json");
fs::write(
&deno,
r#"{
"version": "1.0.0",
"tasks": {
"dev": "deno run --watch main.ts"
}
}"#,
)
.unwrap();
let results = update_version_files(dir.path(), "1.1.0", &[]).unwrap();
assert_eq!(results.len(), 1);
assert_eq!(results[0].name, "deno.json");
assert_eq!(results[0].old_version, "1.0.0");
assert_eq!(results[0].new_version, "1.1.0");
let on_disk = fs::read_to_string(&deno).unwrap();
assert!(on_disk.contains(r#""version": "1.1.0""#));
}
#[test]
fn bump_deno_jsonc_preserves_comments() {
let dir = tempfile::tempdir().unwrap();
let deno = dir.path().join("deno.jsonc");
fs::write(
&deno,
r#"{
// The current release version.
"version": "1.0.0",
"tasks": {
"dev": "deno run --watch main.ts"
}
}"#,
)
.unwrap();
let results = update_version_files(dir.path(), "2.0.0", &[]).unwrap();
assert_eq!(results.len(), 1);
assert_eq!(results[0].name, "deno.json");
assert_eq!(results[0].old_version, "1.0.0");
assert_eq!(results[0].new_version, "2.0.0");
let on_disk = fs::read_to_string(&deno).unwrap();
assert!(on_disk.contains(r#""version": "2.0.0""#));
assert!(
on_disk.contains("// The current release version."),
"JSONC comments should be preserved"
);
}