These are also inherited so once set by a single versioned release section, fully generated sections will inherit their prefix from that one.
Unified · Split
| @@ -24,12 +24,16 @@ impl ChangeLog { · 23 unmodified lines | ||
| 24 | 24 | |
| 25 | 25 | merge_generated_verbatim_section_if_there_is_only_releases_on_lhs(&mut sections_to_merge, sections); |
| 26 | 26 | |
| 27 | − let (first_release_pos, first_release_indentation) = | |
| 27 | + let (first_release_pos, first_release_indentation, first_version_prefix) = | |
| 28 | 28 | match sections.iter().enumerate().find_map(|(idx, s)| match s { |
| 29 | − Section::Release { heading_level, .. } => Some((idx, heading_level)), | |
| 29 | + Section::Release { | |
| 30 | + heading_level, | |
| 31 | + version_prefix, | |
| 32 | + .. | |
| 33 | + } => Some((idx, heading_level, version_prefix)), | |
| 30 | 34 | _ => None, |
| 31 | 35 | }) { |
| 32 | − Some((idx, level)) => (idx, *level), | |
| 36 | + Some((idx, level, prefix)) => (idx, *level, prefix.to_owned()), | |
| 33 | 37 | None => { |
| 34 | 38 | sections.extend(sections_to_merge); |
| 35 | 39 | return self; |
| @@ -44,8 +48,14 @@ impl ChangeLog { · 8 unmodified lines | ||
| 44 | 48 | Section::Release { ref name, .. } => match find_target_section(name, sections, first_release_pos) { |
| 45 | 49 | Insertion::MergeWith(pos) => sections[pos].merge(section_to_merge), |
| 46 | 50 | Insertion::At(pos) => { |
| 47 | − if let Section::Release { heading_level, .. } = &mut section_to_merge { | |
| 51 | + if let Section::Release { | |
| 52 | + heading_level, | |
| 53 | + version_prefix, | |
| 54 | + .. | |
| 55 | + } = &mut section_to_merge | |
| 56 | + { | |
| 48 | 57 | *heading_level = first_release_indentation; |
| 58 | + *version_prefix = first_version_prefix.clone(); | |
| 49 | 59 | } |
| 50 | 60 | sections.insert(pos, section_to_merge); |
| 51 | 61 | } |
| @@ -66,26 +76,26 @@ impl Section { · 14 unmodified lines | ||
| 66 | 76 | } |
| 67 | 77 | ( |
| 68 | 78 | Section::Release { |
| 69 | − date: lhs_date, | |
| 70 | − segments: lhs_segments, | |
| 79 | + date: dest_date, | |
| 80 | + segments: dest_segments, | |
| 71 | 81 | removed_messages, |
| 72 | 82 | .. |
| 73 | 83 | }, |
| 74 | 84 | Section::Release { |
| 75 | − date: rhs_date, | |
| 76 | − segments: rhs_segments, | |
| 77 | − unknown: rhs_unknown, | |
| 85 | + date: src_date, | |
| 86 | + segments: src_segments, | |
| 87 | + unknown: src_unknown, | |
| 78 | 88 | .. |
| 79 | 89 | }, |
| 80 | 90 | ) => { |
| 81 | − assert!(rhs_unknown.is_empty(), "shouldn't ever generate 'unknown' portions"); | |
| 82 | − let has_no_read_only_segments = !lhs_segments.iter().any(|s| s.is_read_only()); | |
| 91 | + assert!(src_unknown.is_empty(), "shouldn't ever generate 'unknown' portions"); | |
| 92 | + let has_no_read_only_segments = !dest_segments.iter().any(|s| s.is_read_only()); | |
| 83 | 93 | let mode = if has_no_read_only_segments { |
| 84 | 94 | ReplaceMode::ReplaceAllOrAppend |
| 85 | 95 | } else { |
| 86 | 96 | ReplaceMode::ReplaceAllOrAppendIfPresentInLhs |
| 87 | 97 | }; |
| 88 | − for rhs_segment in rhs_segments { | |
| 98 | + for rhs_segment in src_segments { | |
| 89 | 99 | match rhs_segment { |
| 90 | 100 | Segment::User { .. } => unreachable!("BUG: User segments are never auto-generated"), |
| 91 | 101 | Segment::Details(section::Data::Parsed) |
| @@ -94,20 +104,20 @@ impl Section { · 2 unmodified lines | ||
| 94 | 104 | unreachable!("BUG: Clippy, statistics, and details are set if generated, or not present") |
| 95 | 105 | } |
| 96 | 106 | Segment::Conventional(conventional) => { |
| 97 | − merge_conventional(removed_messages, lhs_segments, conventional) | |
| 107 | + merge_conventional(removed_messages, dest_segments, conventional) | |
| 98 | 108 | } |
| 99 | 109 | clippy @ Segment::Clippy(_) => { |
| 100 | − merge_read_only_segment(lhs_segments, |s| matches!(s, Segment::Clippy(_)), clippy, mode) | |
| 110 | + merge_read_only_segment(dest_segments, |s| matches!(s, Segment::Clippy(_)), clippy, mode) | |
| 101 | 111 | } |
| 102 | 112 | stats @ Segment::Statistics(_) => { |
| 103 | − merge_read_only_segment(lhs_segments, |s| matches!(s, Segment::Statistics(_)), stats, mode) | |
| 113 | + merge_read_only_segment(dest_segments, |s| matches!(s, Segment::Statistics(_)), stats, mode) | |
| 104 | 114 | } |
| 105 | 115 | details @ Segment::Details(_) => { |
| 106 | − merge_read_only_segment(lhs_segments, |s| matches!(s, Segment::Details(_)), details, mode) | |
| 116 | + merge_read_only_segment(dest_segments, |s| matches!(s, Segment::Details(_)), details, mode) | |
| 107 | 117 | } |
| 108 | 118 | } |
| 109 | 119 | } |
| 110 | − *lhs_date = rhs_date; | |
| 120 | + *dest_date = src_date; | |
| 111 | 121 | } |
| 112 | 122 | } |
| 113 | 123 | } |
| @@ -27,6 +27,8 @@ pub enum Section { · 26 unmodified lines | ||
| 27 | 27 | date: Option<time::OffsetDateTime>, |
| 28 | 28 | /// the amount of # in front of the heading denoting the release name |
| 29 | 29 | heading_level: usize, |
| 30 | + /// What came right before the version | |
| 31 | + version_prefix: String, | |
| 30 | 32 | /// text of events of everything we couldn't parse |
| 31 | 33 | unknown: String, |
| 32 | 34 | /// Removed git conventional messages parsed back from html tags. These may live without a headline, to delete the headline. |
| @@ -106,7 +106,15 @@ impl ChangeLog { · 105 unmodified lines | ||
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | impl Section { |
| 109 | − fn from_headline_and_body(Headline { level, version, date }: Headline, body: String) -> Self { | |
| 109 | + fn from_headline_and_body( | |
| 110 | + Headline { | |
| 111 | + level, | |
| 112 | + version_prefix, | |
| 113 | + version, | |
| 114 | + date, | |
| 115 | + }: Headline, | |
| 116 | + body: String, | |
| 117 | + ) -> Self { | |
| 110 | 118 | let mut events = pulldown_cmark::Parser::new_ext(&body, pulldown_cmark::Options::all()) |
| 111 | 119 | .into_offset_iter() |
| 112 | 120 | .peekable(); |
| @@ -215,6 +223,7 @@ impl Section { · 102 unmodified lines | ||
| 215 | 223 | Some(version) => changelog::Version::Semantic(version), |
| 216 | 224 | None => changelog::Version::Unreleased, |
| 217 | 225 | }, |
| 226 | + version_prefix, | |
| 218 | 227 | date, |
| 219 | 228 | removed_messages, |
| 220 | 229 | heading_level: level, |
| @@ -443,6 +452,7 @@ fn skip_to_next_section_title(events: &mut Peekable<OffsetIter<'_>>, level: u32) · 222 unmodified lines | ||
| 443 | 452 | |
| 444 | 453 | struct Headline { |
| 445 | 454 | level: usize, |
| 455 | + version_prefix: String, | |
| 446 | 456 | version: Option<semver::Version>, |
| 447 | 457 | date: Option<time::OffsetDateTime>, |
| 448 | 458 | } |
| @@ -470,13 +480,13 @@ fn headline<'a, E: ParseError<&'a str> + FromExternalError<&'a str, ()>>(i: &'a · 21 unmodified lines | ||
| 470 | 480 | hashes, |
| 471 | 481 | greedy_whitespace, |
| 472 | 482 | alt(( |
| 473 | − preceded( | |
| 474 | − tag("v"), | |
| 483 | + tuple(( | |
| 484 | + opt(tag("v")), | |
| 475 | 485 | map_res(take_till(|c: char| c.is_whitespace()), |v| { |
| 476 | 486 | semver::Version::parse(v).map_err(|_| ()).map(Some) |
| 477 | 487 | }), |
| 478 | − ), | |
| 479 | − map(tag_no_case("unreleased"), |_| None), | |
| 488 | + )), | |
| 489 | + map(tag_no_case("unreleased"), |_| (None, None)), | |
| 480 | 490 | )), |
| 481 | 491 | ), |
| 482 | 492 | opt(preceded( |
| @@ -499,8 +509,9 @@ fn headline<'a, E: ParseError<&'a str> + FromExternalError<&'a str, ()>>(i: &'a · 16 unmodified lines | ||
| 499 | 509 | )), |
| 500 | 510 | greedy_whitespace, |
| 501 | 511 | ), |
| 502 | − |((hashes, version), date)| Headline { | |
| 512 | + |((hashes, (prefix, version)), date)| Headline { | |
| 503 | 513 | level: hashes.len(), |
| 514 | + version_prefix: prefix.map(ToOwned::to_owned).unwrap_or_else(String::new), | |
| 504 | 515 | version, |
| 505 | 516 | date, |
| 506 | 517 | }, |
| @@ -16,6 +16,8 @@ use crate::{ · 15 unmodified lines | ||
| 16 | 16 | }; |
| 17 | 17 | |
| 18 | 18 | impl Section { |
| 19 | + pub const DEFAULT_PREFIX: &'static str = "v"; | |
| 20 | + | |
| 19 | 21 | pub fn from_history_segment( |
| 20 | 22 | package: &Package, |
| 21 | 23 | segment: &commit::history::Segment<'_>, |
| @@ -153,6 +155,7 @@ impl Section { · 131 unmodified lines | ||
| 153 | 155 | name: version, |
| 154 | 156 | date, |
| 155 | 157 | heading_level: changelog::DEFAULT_HEADING_LEVEL, |
| 158 | + version_prefix: Self::DEFAULT_PREFIX.to_owned(), | |
| 156 | 159 | segments, |
| 157 | 160 | removed_messages: Default::default(), |
| 158 | 161 | unknown: Default::default(), |
| @@ -11,11 +11,16 @@ use crate::{ · 10 unmodified lines | ||
| 11 | 11 | ChangeLog, |
| 12 | 12 | }; |
| 13 | 13 | |
| 14 | −impl std::fmt::Display for changelog::Version { | |
| 14 | +struct PrefixedVersion<'a> { | |
| 15 | + version_prefix: &'a str, | |
| 16 | + name: &'a changelog::Version, | |
| 17 | +} | |
| 18 | + | |
| 19 | +impl<'a> std::fmt::Display for PrefixedVersion<'a> { | |
| 15 | 20 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
| 16 | − match self { | |
| 21 | + match self.name { | |
| 17 | 22 | changelog::Version::Unreleased => f.write_str("Unreleased"), |
| 18 | − changelog::Version::Semantic(v) => write!(f, "v{}", v), | |
| 23 | + changelog::Version::Semantic(v) => write!(f, "{}{}", self.version_prefix, v), | |
| 19 | 24 | } |
| 20 | 25 | } |
| 21 | 26 | } |
| @@ -105,12 +110,18 @@ impl Section { · 83 unmodified lines | ||
| 105 | 110 | name, |
| 106 | 111 | date, |
| 107 | 112 | heading_level, |
| 113 | + version_prefix, | |
| 108 | 114 | segments, |
| 109 | 115 | removed_messages, |
| 110 | 116 | unknown, |
| 111 | 117 | } => { |
| 112 | 118 | if components.contains(Components::SECTION_TITLE) { |
| 113 | − write!(out, "{} {}", heading(*heading_level), name)?; | |
| 119 | + write!( | |
| 120 | + out, | |
| 121 | + "{} {}", | |
| 122 | + heading(*heading_level), | |
| 123 | + PrefixedVersion { version_prefix, name } | |
| 124 | + )?; | |
| 114 | 125 | match date { |
| 115 | 126 | None => out.write_str("\n\n"), |
| 116 | 127 | Some(date) => writeln!( |
| @@ -136,7 +147,7 @@ impl Section { · 19 unmodified lines | ||
| 136 | 147 | if !unknown.is_empty() && components.contains(Components::HTML_TAGS) { |
| 137 | 148 | writeln!(out, "{}", Section::UNKNOWN_TAG_START)?; |
| 138 | 149 | out.write_str(unknown)?; |
| 139 | − writeln!(out, "{}", Section::UNKNOWN_TAG_END)?; | |
| 150 | + writeln!(out, "{}\n", Section::UNKNOWN_TAG_END)?; | |
| 140 | 151 | } |
| 141 | 152 | Ok(()) |
| 142 | 153 | } |
| @@ -16,6 +16,7 @@ fn sections() { · 15 unmodified lines | ||
| 16 | 16 | }, |
| 17 | 17 | Section::Release { |
| 18 | 18 | heading_level: 3, |
| 19 | + version_prefix: "".into(), | |
| 19 | 20 | removed_messages: vec![], |
| 20 | 21 | date: Some( |
| 21 | 22 | time::Date::from_calendar_date(2021, time::Month::September, 14) |
| @@ -33,6 +34,7 @@ fn sections() { · 11 unmodified lines | ||
| 33 | 34 | }, |
| 34 | 35 | Section::Release { |
| 35 | 36 | heading_level: 3, |
| 37 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 36 | 38 | removed_messages: vec![], |
| 37 | 39 | date: None, |
| 38 | 40 | name: changelog::Version::Semantic("0.9.0".parse().unwrap()), |
| @@ -51,6 +53,7 @@ fn sections() { · 12 unmodified lines | ||
| 51 | 53 | date: None, |
| 52 | 54 | removed_messages: vec![], |
| 53 | 55 | name: changelog::Version::Unreleased, |
| 56 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 54 | 57 | heading_level: 2, |
| 55 | 58 | segments: vec![section::Segment::Clippy(section::Data::Generated( |
| 56 | 59 | section::segment::ThanksClippy { count: 4 }, |
| @@ -62,6 +65,7 @@ fn sections() { · 5 unmodified lines | ||
| 62 | 65 | name: changelog::Version::Semantic("1.0.0".parse().unwrap()), |
| 63 | 66 | removed_messages: vec![], |
| 64 | 67 | heading_level: 2, |
| 68 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 65 | 69 | segments: vec![section::Segment::Clippy(section::Data::Generated( |
| 66 | 70 | section::segment::ThanksClippy { count: 3 }, |
| 67 | 71 | ))], |
| @@ -73,6 +77,7 @@ fn sections() { · 5 unmodified lines | ||
| 73 | 77 | unknown: String::new(), |
| 74 | 78 | removed_messages: vec![], |
| 75 | 79 | heading_level: 2, |
| 80 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 76 | 81 | segments: vec![section::Segment::Clippy(section::Data::Generated( |
| 77 | 82 | section::segment::ThanksClippy { count: 2 }, |
| 78 | 83 | ))], |
| @@ -83,6 +88,7 @@ fn sections() { · 4 unmodified lines | ||
| 83 | 88 | unknown: "undocumented".into(), |
| 84 | 89 | removed_messages: vec![], |
| 85 | 90 | heading_level: 2, |
| 91 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 86 | 92 | segments: Vec::new(), |
| 87 | 93 | }, |
| 88 | 94 | ], |
| @@ -101,6 +107,7 @@ fn sections() { · 12 unmodified lines | ||
| 101 | 107 | date: None, |
| 102 | 108 | name: changelog::Version::Unreleased, |
| 103 | 109 | heading_level: 3, |
| 110 | + version_prefix: "".into(), | |
| 104 | 111 | removed_messages: vec![], |
| 105 | 112 | segments: vec![section::Segment::Clippy(section::Data::Generated( |
| 106 | 113 | section::segment::ThanksClippy { count: 4 } |
| @@ -110,6 +117,7 @@ fn sections() { · 3 unmodified lines | ||
| 110 | 117 | Section::Release { |
| 111 | 118 | heading_level: 3, |
| 112 | 119 | removed_messages: vec![], |
| 120 | + version_prefix: "".into(), | |
| 113 | 121 | date: Some( |
| 114 | 122 | time::Date::from_calendar_date(2021, time::Month::September, 15) |
| 115 | 123 | .unwrap() |
| @@ -131,6 +139,7 @@ fn sections() { · 15 unmodified lines | ||
| 131 | 139 | name: changelog::Version::Semantic("0.9.0".parse().unwrap()), |
| 132 | 140 | unknown: String::new(), |
| 133 | 141 | heading_level: 3, |
| 142 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 134 | 143 | removed_messages: vec![], |
| 135 | 144 | segments: vec![section::Segment::Clippy(section::Data::Generated( |
| 136 | 145 | section::segment::ThanksClippy { count: 2 } |
| @@ -141,6 +150,7 @@ fn sections() { · 4 unmodified lines | ||
| 141 | 150 | name: changelog::Version::Semantic("0.8.0".parse().unwrap()), |
| 142 | 151 | unknown: "undocumented".into(), |
| 143 | 152 | heading_level: 3, |
| 153 | + version_prefix: "".into(), | |
| 144 | 154 | removed_messages: vec![], |
| 145 | 155 | segments: Vec::new(), |
| 146 | 156 | }, |
| @@ -165,6 +175,7 @@ fn segments() { · 18 unmodified lines | ||
| 165 | 175 | name: changelog::Version::Semantic("0.7.0".parse().unwrap()), |
| 166 | 176 | unknown: "".into(), |
| 167 | 177 | heading_level: 3, |
| 178 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 168 | 179 | removed_messages: vec![], |
| 169 | 180 | segments: vec![ |
| 170 | 181 | section::Segment::Conventional(section::segment::Conventional { |
| @@ -189,12 +200,14 @@ fn segments() { · 18 unmodified lines | ||
| 189 | 200 | date: None, |
| 190 | 201 | name: changelog::Version::Unreleased, |
| 191 | 202 | heading_level: 3, |
| 203 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 192 | 204 | removed_messages: vec![], |
| 193 | 205 | segments: vec![section::Segment::Clippy(section::Data::Parsed)], // only clippy still available |
| 194 | 206 | unknown: Default::default(), |
| 195 | 207 | }, |
| 196 | 208 | Section::Release { |
| 197 | 209 | heading_level: 3, |
| 210 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 198 | 211 | removed_messages: vec![], |
| 199 | 212 | date: Some( |
| 200 | 213 | time::Date::from_calendar_date(2021, time::Month::September, 15) |
| @@ -213,6 +226,7 @@ fn segments() { · 12 unmodified lines | ||
| 213 | 226 | name: changelog::Version::Semantic("0.8.0".parse().unwrap()), |
| 214 | 227 | unknown: "".into(), |
| 215 | 228 | heading_level: 3, |
| 229 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 216 | 230 | removed_messages: vec![], |
| 217 | 231 | segments: vec![ |
| 218 | 232 | section::Segment::Details(section::Data::Parsed), |
| @@ -265,12 +279,14 @@ fn segments() { · 46 unmodified lines | ||
| 265 | 279 | date: None, |
| 266 | 280 | name: changelog::Version::Unreleased, |
| 267 | 281 | heading_level: 3, |
| 282 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 268 | 283 | removed_messages: vec![], |
| 269 | 284 | segments: segments.clone(), |
| 270 | 285 | unknown: Default::default(), |
| 271 | 286 | }, |
| 272 | 287 | Section::Release { |
| 273 | 288 | heading_level: 3, |
| 289 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 274 | 290 | removed_messages: vec![], |
| 275 | 291 | date: Some( |
| 276 | 292 | time::Date::from_calendar_date(2021, time::Month::September, 15) |
| @@ -287,6 +303,7 @@ fn segments() { · 10 unmodified lines | ||
| 287 | 303 | name: changelog::Version::Semantic("0.8.0".parse().unwrap()), |
| 288 | 304 | unknown: "".into(), |
| 289 | 305 | heading_level: 3, |
| 306 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 290 | 307 | removed_messages: vec![], |
| 291 | 308 | segments: segments.clone(), |
| 292 | 309 | }, |
| @@ -295,6 +312,7 @@ fn segments() { · 2 unmodified lines | ||
| 295 | 312 | name: changelog::Version::Semantic("0.7.0".parse().unwrap()), |
| 296 | 313 | unknown: "".into(), |
| 297 | 314 | heading_level: 3, |
| 315 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 298 | 316 | removed_messages: vec![], |
| 299 | 317 | segments: { |
| 300 | 318 | let mut v = segments.clone(); |
| @@ -318,6 +336,7 @@ fn segments() { · 17 unmodified lines | ||
| 318 | 336 | name: changelog::Version::Semantic("0.7.0".parse().unwrap()), |
| 319 | 337 | unknown: "".into(), |
| 320 | 338 | heading_level: 3, |
| 339 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 321 | 340 | removed_messages: vec![], |
| 322 | 341 | segments: vec![ |
| 323 | 342 | section::Segment::Conventional(section::segment::Conventional { |
| @@ -347,12 +366,14 @@ fn segments() { · 23 unmodified lines | ||
| 347 | 366 | date: None, |
| 348 | 367 | name: changelog::Version::Unreleased, |
| 349 | 368 | heading_level: 3, |
| 369 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 350 | 370 | removed_messages: vec![], |
| 351 | 371 | segments: vec![clippy], |
| 352 | 372 | unknown: Default::default(), |
| 353 | 373 | }, |
| 354 | 374 | Section::Release { |
| 355 | 375 | heading_level: 3, |
| 376 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 356 | 377 | removed_messages: vec![], |
| 357 | 378 | date: Some( |
| 358 | 379 | time::Date::from_calendar_date(2021, time::Month::September, 15) |
| @@ -378,6 +399,7 @@ fn segments() { · 19 unmodified lines | ||
| 378 | 399 | name: changelog::Version::Semantic("0.8.0".parse().unwrap()), |
| 379 | 400 | unknown: "".into(), |
| 380 | 401 | heading_level: 3, |
| 402 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 381 | 403 | removed_messages: vec![], |
| 382 | 404 | segments: vec![details, statistics], |
| 383 | 405 | }, |
| @@ -36,6 +36,7 @@ fn all_unknown_in_section() { · 35 unmodified lines | ||
| 36 | 36 | removed_messages: vec![], |
| 37 | 37 | date: None, |
| 38 | 38 | heading_level: 3, |
| 39 | + version_prefix: "".into(), | |
| 39 | 40 | segments: vec![Segment::User { |
| 40 | 41 | markdown: "- hello ~~this is not understood~~\n* this isn't either\n\n".into() |
| 41 | 42 | }], |
| @@ -46,6 +47,7 @@ fn all_unknown_in_section() { · 4 unmodified lines | ||
| 46 | 47 | removed_messages: vec![], |
| 47 | 48 | date: None, |
| 48 | 49 | heading_level: 4, |
| 50 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 49 | 51 | segments: vec![Segment::User { |
| 50 | 52 | markdown: "Some free text in a paragraph\nthat won't parse.\n".into() |
| 51 | 53 | }], |
| @@ -66,6 +68,7 @@ fn unknown_link_and_headling() { · 14 unmodified lines | ||
| 66 | 68 | removed_messages: vec![], |
| 67 | 69 | date: None, |
| 68 | 70 | heading_level: 4, |
| 71 | + version_prefix: "".into(), | |
| 69 | 72 | segments: vec![Segment::User { |
| 70 | 73 | markdown: "##### Special\n\nHello [there][194] period.\n".into() |
| 71 | 74 | }], |
| @@ -90,6 +93,7 @@ fn known_and_unknown_sections_are_sorted() { · 18 unmodified lines | ||
| 90 | 93 | removed_messages: vec![], |
| 91 | 94 | date: None, |
| 92 | 95 | heading_level: 3, |
| 96 | + version_prefix: "".into(), | |
| 93 | 97 | unknown: "".into(), |
| 94 | 98 | segments: vec![Segment::User { |
| 95 | 99 | markdown: "TBD\n".into() |
| @@ -100,6 +104,7 @@ fn known_and_unknown_sections_are_sorted() { · 4 unmodified lines | ||
| 100 | 104 | removed_messages: vec![], |
| 101 | 105 | date: None, |
| 102 | 106 | heading_level: 3, |
| 107 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 103 | 108 | unknown: "".into(), |
| 104 | 109 | segments: vec![ |
| 105 | 110 | Segment::User { |
| @@ -18,6 +18,7 @@ fn conventional_write_empty_messages() -> Result { · 17 unmodified lines | ||
| 18 | 18 | let log = ChangeLog { |
| 19 | 19 | sections: vec![Section::Release { |
| 20 | 20 | heading_level: 4, |
| 21 | + version_prefix: Section::DEFAULT_PREFIX.into(), | |
| 21 | 22 | date: Some(time::OffsetDateTime::from_unix_timestamp(0)?), |
| 22 | 23 | name: changelog::Version::Semantic("1.0.2-beta.2".parse()?), |
| 23 | 24 | removed_messages: vec![second_message], |
| @@ -92,11 +93,13 @@ fn all_section_types_round_trips_lossy() -> Result { · 68 unmodified lines | ||
| 92 | 93 | removed_messages: vec![], |
| 93 | 94 | date: None, |
| 94 | 95 | name: changelog::Version::Unreleased, |
| 96 | + version_prefix: "".into(), | |
| 95 | 97 | segments: Vec::new(), |
| 96 | 98 | unknown: "hello\nworld\n".into(), |
| 97 | 99 | }, |
| 98 | 100 | Section::Release { |
| 99 | 101 | heading_level: 4, |
| 102 | + version_prefix: "".into(), | |
| 100 | 103 | removed_messages: vec![], |
| 101 | 104 | date: Some(time::OffsetDateTime::from_unix_timestamp(0)?), |
| 102 | 105 | name: changelog::Version::Semantic("1.0.2-beta.2".parse()?), |
| @@ -13,7 +13,8 @@ my very own header · 12 unmodified lines | ||
| 13 | 13 | hello |
| 14 | 14 | world |
| 15 | 15 | <csr-unknown/> |
| 16 | −#### v1.0.2-beta.2 (1970-01-01) | |
| 16 | + | |
| 17 | +#### 1.0.2-beta.2 (1970-01-01) | |
| 17 | 18 | |
| 18 | 19 | * hello world |
| 19 | 20 | this |
| @@ -3,7 +3,7 @@ source: cargo-smart-release/tests/changelog/write_and_parse/mod.rs · 2 unmodified lines | ||
| 3 | 3 | expression: buf |
| 4 | 4 | |
| 5 | 5 | --- |
| 6 | −#### v1.0.2-beta.2 (1970-01-01) | |
| 6 | +#### 1.0.2-beta.2 (1970-01-01) | |
| 7 | 7 | |
| 8 | 8 | * hello world |
| 9 | 9 | this |
| @@ -13,7 +13,8 @@ my very own header · 12 unmodified lines | ||
| 13 | 13 | hello |
| 14 | 14 | world |
| 15 | 15 | <csr-unknown/> |
| 16 | −#### v1.0.2-beta.2 (1970-01-01) | |
| 16 | + | |
| 17 | +#### 1.0.2-beta.2 (1970-01-01) | |
| 17 | 18 | |
| 18 | 19 | * hello world |
| 19 | 20 | this |