Commit Graph

46 Commits

Author SHA1 Message Date
Olle Jonsson
941a92e96d RuboCop linting 2017-12-29 16:17:02 +01:00
Eric Putnam
587557e1ac
Refactor generation code and allow custom sections
There's a lot in this PR.
- Added a Section class to more easily make the other changes and
  hopefully add flexibility for the future
- Added an option called `configure_sections` that allows you create
  your own custom sections. It blows away all other sections and uses
only the ones you give it.
- Added an option called `add_sections` that allows you to add_sections
  to the default section set
- Added an option called `include_merged` that can be used when
  configure_sections is defined. Configure sections blows away any and
all default sections so to get this one back, you have to set this
option.
- Added tests for this stuff

@HAIL9000 was a co-author. Because of a little git snafu, I accidentally
squashed all of our work into one so it looks like it was just me.

---

Refactor details:

Before this change, the code in generator.rb and generator_generation.rb was conflated and
method call flow went back and forth between the two files seemingly
randomly. They also both defined the exact same class, which is
un-ruby-ish. I tried to separate methods used for the whole changelog
generation from methods used for specific parts of the changelog and
move them into specific classes.

I reasoned that a changelog is a series of "entries" of all tagged
releases plus an extra entry for the unreleased entry. Each entry is
comprised of a header and a series of "sections" for that entry. Each
section is comprized of a list of issues and/or pull requests for that
entry. So the log contains entries, entries contain sections, and
sections contain issues & prs. I have structured the classes around this idea.

- lib/github_changelog_generator/generator/generator.rb is for code
related to generating the entire changelog.
- lib/github_changelog_generator/generator/entry.rb is for code related
to generating entries.
- lib/github_changelog_generator/generator/section.rb is for code
relating to geneating entry sections.

Issues and PRs are already special objects, so it doesn't make sense to
break those out into their own class.
2017-12-14 16:13:41 -08:00
Tim Meusel
21ec2db39b Add breaking-changes section to changelog (#530)
* add breaking-changes section to changelog

* Clean up parse_by_sections

* Thank you bastelfreak and ekohl!
2017-10-10 20:27:23 +02:00
Florian Thomas
64f4cd07c9 filter tags correctly when since_tag is set to most recent tag (#566)
* filter tags correctly when `since_tag` is set to most recent tag
Before this fix [`filtered_tags`](https://github.com/skywinder/github-changelog-generator/blob/master/lib/github_changelog_generator/generator/generator_generation.rb#L132)
was empty which caused a fallback to the last tag in the sorted_tags array (which is the oldest tag).
There for no issues and PRs were filtered in that case.

fixes #555
fixes #304
2017-10-05 23:15:06 +02:00
Hunter Haugen
a287bd872b
Rebase, pass rubocop, remove between-tags references
This is a rebase and resubmission of #453
2017-07-27 15:51:49 -07:00
Tom Duffield
0ca7371306
Add tests for label filtering
Signed-off-by: Tom Duffield <tom@chef.io>
2017-07-27 10:41:52 -07:00
Tom Duffield
ce63f648ac
include default options in tags tests
Signed-off-by: Tom Duffield <tom@chef.io>
2017-07-27 10:39:38 -07:00
Tom Duffield
f57b4c283d
Rename tag section mapping test
Signed-off-by: Tom Duffield <tom@chef.io>
2017-07-27 10:37:44 -07:00
Tom Duffield
ee5a507f76
Filter excluded tags within the section map builder
Because we need might need excluded tags to build compare links, the
section map generator needs to have access to those tags. But, we don't
want excluded tags to have section headers. So instead, we'll create
another copy of the list that doesn't have tags excluded.

Signed-off-by: Tom Duffield <tom@chef.io>
2017-07-27 10:37:38 -07:00
Tom Duffield
66177c58e3
DRY up the tests and address Rubocop feedback
Signed-off-by: Tom Duffield <tom@chef.io>
2017-07-27 10:37:32 -07:00
Tom Duffield
d6c26ef4a9
Generate mapping that will match expectations
This change neccesitated changing the behavior or the
`filter_since_tag`. Since we want our compare links to include the since
tag, we need to keep that tag in the filtered list. Instead, we detect
that the tag is the since tag and filter it out. This will prevent the
since_tag header from being duplicated when pulling from a base.

The same goes for the first tag listed in between_tags. We don't want an
empty section header for this.

Signed-off-by: Tom Duffield <tom@chef.io>
2017-07-27 10:37:26 -07:00
Tom Duffield
c718930fb1
Add initial tests for tag_section_mapping
Before we do anything, let's get a solid expectation of what we want our
section headers to look like.

Signed-off-by: Tom Duffield <tom@chef.io>
2017-07-27 10:36:11 -07:00
Olle Jonsson
6ad5aa106d Bug: require ActiveSupport core_ext blank (#520) 2017-05-25 14:07:34 +02:00
Lucas Huang
e9ee9556ce remove --between_tags option (#501) 2017-05-25 00:29:31 +02:00
Olle Jonsson
874c23c64f Chore: Rubocop 0.49.0 (#516)
* Rubocoping
2017-05-25 00:11:02 +02:00
Olle Jonsson
d8b34169a3 Linting 2016-09-29 23:09:04 +02:00
Olle Jonsson
da0024cbdf GeneratorTagsSpec: change name of a test 2016-09-29 23:09:04 +02:00
Olle Jonsson
1177f09ca5 Drop Hashie dependency 2016-09-29 23:09:04 +02:00
Andrew Waage
ef9867c122 fixing rubocop and removing original fetcher 2016-09-29 23:09:04 +02:00
Andrew Waage
2347cc4220 added specs for the new octo_fetcher. Also had to refactor a bit to deal with hashes and arrays instead of objects 2016-09-29 23:09:04 +02:00
Olle Jonsson
5c21fc980f Rubocop setting: avoid copping the universe 2016-09-22 19:04:35 +02:00
Olle Jonsson
cc653b6b21 linting 2016-04-18 16:53:45 +02:00
Olle Jonsson
9ce5c76d4a Linting 2016-04-18 16:53:25 +02:00
Olle Jonsson
86ca388ecf Spec: Smaller help functions 2016-04-18 16:53:25 +02:00
Olle Jonsson
9c6068f026 Avoid nil bug in detect_since_tag 2016-04-18 16:53:25 +02:00
Petr Korolev
519ca91cd7 Merge pull request #320 from ITV/filter-tags
Added tag exclusion with a filter (string or regex)
2016-03-28 13:04:06 +03:00
Adam
507ffdb910 put filter_excluded_tags_regex after filter_excluded_tags tests 2016-03-24 13:00:53 +00:00
Adam
21d41756b8 regex test include regex identifier 2016-03-24 13:00:02 +00:00
Adam
17ceccdd70 clean up test description 2016-03-24 12:54:19 +00:00
Adam
e5a619b167 add test for #filter_excluded_tags_regex with non-matching regex in exclude_tags 2016-03-24 12:06:39 +00:00
Adam
dd149d7ad9 implement #filter_excluded_tags_regex with regex exclude_tags 2016-03-24 11:59:20 +00:00
Petr Korolev
9a217e3468 rubocop correction 2016-02-24 16:31:18 +02:00
Olle Jonsson
89d1b5393d Generator#exclude_issues_by_labels spec clearer 2016-02-23 23:23:54 +01:00
Olle Jonsson
87b9962a8d Refactoring: introduce local, return early
- use #reject
  - add basic spec around it
2016-02-23 23:17:37 +01:00
Olle Jonsson
ef97e7f950 Feature: exclude_tags using regular expression 2015-09-15 21:34:54 +02:00
Petr Korolev
4261c3494e Add due-tag option and tests 2015-08-24 17:29:07 +03:00
Raphaël Pinson
32f4df5742 Add --since-tag option
Fix #254
2015-08-04 16:15:33 +02:00
Petr Korolev
19eb03c54e Add tests to verify sorting algorithm #244 2015-06-11 15:57:32 +03:00
Petr Korolev
9f1537ab34 add test case 2015-06-11 13:09:04 +03:00
Petr Korolev
9b46d56a9e fix #245 2015-06-10 13:23:46 +03:00
Petr Korolev
c3867a89f1 update test, between tags. 2015-06-10 10:24:39 +03:00
Petr Korolev
783d8f306e Resolved #214. Added tests for this case. small refacroting 2015-05-26 16:06:37 +03:00
Petr Korolev
957fa0d3a3 refuct 2015-05-26 16:06:37 +03:00
Petr Korolev
f498e673d1 cleanup 2015-05-26 16:06:37 +03:00
Petr Korolev
7e941990c4 fix tests 2015-05-26 16:06:37 +03:00
Petr Korolev
6f82741154 add tests 2015-05-26 16:06:37 +03:00