Skip to content

Releases: GatorEducator/gatorgrader

v1.1.1

17 Oct 05:44
8858696
Compare
Choose a tag to compare

Get more info!

Although small, this patch release incorporates changes from three PRs that improve the visibility of information in both GatorGrader output and documentation, as well as formalize the PyPI packaging implementation. Especially important are the README.md updates to ensure correctness about the use of Poetry.

What's Changed

Full Changelog: v1.1.0...v1.1.1

v1.1.0-legacy

17 Oct 02:50
Compare
Choose a tag to compare

Describe your checks!

Now, the optional --description argument allows setting a custom description per check, to cut down on student confusion. In addition, this release includes changes to the release workflow and continuous integration setup.

Note: This release is the last one compatible with GatorGradle
Note: This release is compatible with Python 3.7+

What's Changed

  • Migration from Travis CI to GitHub Actions by @schultzh in #222
  • Document the New Features of GatorGrader in the README by @corlettim in #209
  • Add description argument to enable custom check descriptions by @Michionlion in #238

Full Changelog: v1.0.5...v1.1.0-legacy

v1.1.0

17 Oct 04:51
Compare
Choose a tag to compare

Note: This release should be viewed as newer than v1.1.0-legacy

This release refactors a significant amount of GatorGrader internals, and is the first release available on PyPI. The release was initially intended to be a stop-gap solution. In future versions, some changes may be made to the structure and distribution of the PyPI package. Additionally, the documentation available in this release may or may not be fully accurate. For users who just wish to use GatorGrader on the command line, all that is needed is to install this package and run gatorgrader. For help on syntax and available options, see gatorgrader --help.

For users who would like to interact with GatorGrader programmatically, refer to the docstrings available in gatorgrader.py and gator/__init__.py (or view them in your editor-of-choice with support for a Python Language Server). In summary, however, GatorGrader can be run by importing the gator package and calling gator.grader(["list", "--of", "command", "--line", "arguments"]), the syntax of which matches previous versions of GatorGrader. For additional help or guidance, see gatorgrader --help or reach out to any of the core maintainers.

v1.0.5

03 Mar 03:38
e299b93
Compare
Choose a tag to compare

Fix line endings and formatting and upgrade Travis CI

This PR is a bugfix that resolves issues with incorrect code formatting and the setup with AppVeyor and Travis CI.

@corlettim: This PR is to help with fixing the issued line ending error that we have come upon.

@gkapfham: This PR includes the following modifications:

  • Add a .gitattributes file that mandates that line endings follow the Unix standard
  • Upgrade the development dependencies listing in the Pipfile.lock
  • Fix line ending issues that were (likely) causing AppVeyor builds to fail
  • Fix AppVeyor configuration so that it uses the supported Python 3.7.5,
    which was causing coverage uploads to fail for Python 3.7.4
  • Upgrade Travis CI to use the Pro/Com version since Org is now deprecated
  • Fix small mistakes in the README file (e.g., trailing blank spaces)

Auto-generated by pr-tag-release

v1.0.4

09 Feb 22:06
e299b93
Compare
Choose a tag to compare

Fix line endings and formatting and upgrade Travis CI

This PR is a bugfix that resolves issues with incorrect code formatting and the setup with AppVeyor and Travis CI.

@corlettim: This PR is to help with fixing the issued line ending error that we have come upon.

@gkapfham: This PR includes the following modifications:

  • Add a .gitattributes file that mandates that line endings follow the Unix standard
  • Upgrade the development dependencies listing in the Pipfile.lock
  • Fix line ending issues that were (likely) causing AppVeyor builds to fail
  • Fix AppVeyor configuration so that it uses the supported Python 3.7.5,
    which was causing coverage uploads to fail for Python 3.7.4
  • Upgrade Travis CI to use the Pro/Com version since Org is now deprecated
  • Fix small mistakes in the README file (e.g., trailing blank spaces)

Auto-generated by pr-tag-release

v1.0.3

28 Jan 14:06
e299b93
Compare
Choose a tag to compare

Fix line endings and formatting and upgrade Travis CI

This PR is a bugfix that resolves issues with incorrect code formatting and the setup with AppVeyor and Travis CI.

@corlettim: This PR is to help with fixing the issued line ending error that we have come upon.

@gkapfham: This PR includes the following modifications:

  • Add a .gitattributes file that mandates that line endings follow the Unix standard
  • Upgrade the development dependencies listing in the Pipfile.lock
  • Fix line ending issues that were (likely) causing AppVeyor builds to fail
  • Fix AppVeyor configuration so that it uses the supported Python 3.7.5,
    which was causing coverage uploads to fail for Python 3.7.4
  • Upgrade Travis CI to use the Pro/Com version since Org is now deprecated
  • Fix small mistakes in the README file (e.g., trailing blank spaces)

Auto-generated by pr-tag-release

v1.0.2

23 Oct 21:43
5e4dfed
Compare
Choose a tag to compare

Fix wording issue for CountCommits check

Updated to say "The repository has..." rather than "Repository has..." to match other content.

What is the current behavior?

Check displays text "Repository has" which does not match current format (i.e. it is missing a preceding "the" to start the statement). This PR is associated with the below issue:

#194

What is the new behavior if this PR is merged?

Updated to say "The repository has..." to match current format

Other information

This PR has:
  • Commit messages that are correctly formatted
  • Tests for newly introduced code
  • Docstrings for newly introduced code

This PR is a small change that fixes #195

Developers

@ajciancimino

Auto-generated by pr-tag-release

v1.0.1

09 Oct 16:11
5e4dfed
Compare
Choose a tag to compare

Fix wording issue for CountCommits check

Updated to say "The repository has..." rather than "Repository has..." to match other content.

What is the current behavior?

Check displays text "Repository has" which does not match current format (i.e. it is missing a preceding "the" to start the statement). This PR is associated with the below issue:

#194

What is the new behavior if this PR is merged?

Updated to say "The repository has..." to match current format

Other information

This PR has:
  • Commit messages that are correctly formatted
  • Tests for newly introduced code
  • Docstrings for newly introduced code

This PR is a small change that fixes #195

Developers

@ajciancimino

Auto-generated by pr-tag-release

v1.0.0

06 Sep 19:49
0170ad1
Compare
Choose a tag to compare

Use a Plugin-Based Approach to Provide a Linter-Inspired Interface

This PR adopts a plugin-based approach to provide a linter-inspired interface.

This means:

-- A person using GatorGrader will be able to introduce their own checks dynamically
-- The command-line interface will feature positional required arguments for all checks

This PR also introduces a significant number of bug fixes and improvements to the tool. For instance, there were a number of problems in the way that GatorGrader previously handled the combination of wildcards with the use of --exact. These issues have been resolved, at the expense of making the code more complex. I suggest that we still merge this PR and then revisit this complexity in a future PR. For instance, the invoke_all_comment_checks function in the invoke module is now more complex that is appropriate, in part because it now correctly makes diagnostics for a wide variety of edge cases.

What is the current behavior?

GatorGrader currently does not:

-- Allow a person to specify their own checks. As such, the tool is currently not extensible.
-- Allow the specification of checks in an easy-to-document and easy-to-use fashion.

What is the new behavior if this PR is merged?

GatorGrader will now support a plugin-based and linter-inspired interface. It does so by using the PluginBase package described at: https://github.com/mitsuhiko/pluginbase

@jjumadinova and @amohangit and @dluman and @obonhamcarter please note that once this PR is merged, the way in which you will write checks in a gatorgrader.yml file will change. If you want to continue to use the old approach, you can use a version: tag in the YAML header of your gatorgrader.yml file, using a method that @Michionlion will finish implementing before the Fall 2019 semester starts. With that said, @Michionlion and all of the other core maintainers of GatorGrader suggest that you adopt this new approach instead as it will be easier to specify your own checks and add checks that are not currently provided by GatorGrader.

If @jjumadinova or @amohangit or @dluman or @obonhamcarter have questions about the implications of merging this PR to GatorGrader, they should communicate with @gkapfham.

Unit Testing Details

There are currently a few branches and lines of code that are not covered by the unit test test suite. With that said, this PR has 99% coverage of the statements and the branches and I think that this is high enough to support the merge of the PR.

Here are the details from the coverage report:

Test session starts (platform: linux, Python 3.7.3, pytest 5.0.1, pytest-sugar 0.9.2)
rootdir: /home/gkapfham/working/source/gatorgrader, inifile: pytest.ini
plugins: sugar-0.9.2, cov-2.7.1
collecting ...
 tests/test_arguments.py ✓✓✓✓✓✓✓✓✓✓                                                                                                               1% ▎
 tests/test_checkers.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                                 4% ▍
 tests/test_comments.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓ 17% █▊
                        ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                         20% ██
 tests/test_constants.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                   24% ██▌
 tests/test_display.py ✓✓✓✓✓✓                                                                                                                    25% ██▌
 tests/test_files.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                                        27% ██▊
 tests/test_fragments.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓ 40% ████
                         ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                 46% ████▋
 tests/test_invoke.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                       50% █████
 tests/test_leave.py ✓✓✓✓✓✓✓✓✓✓                                                                                                                  51% █████▏
 tests/test_markdown.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                                      53% █████▍
 tests/test_orchestrate.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                                 55% █████▌
 tests/test_report.py ✓✓✓✓✓✓                                                                                                                     56% █████▋
 tests/test_repository.py ✓✓✓✓✓✓✓✓✓✓✓                                                                                                            57% █████▊
 tests/test_run.py ✓✓✓✓✓✓                                                                                                                        58% █████▊
 tests/test_util.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                63% ██████▍
 tests/checks/test_check_ConfirmFileExists.py ✓✓✓✓✓✓✓✓✓✓✓                                                                                        64% ██████▍
 tests/checks/test_check_CountCommandOutput.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                             66% ██████▋
 tests/checks/test_check_CountCommits.py ✓✓✓✓✓✓✓✓✓✓✓                                                                                             67% ██████▊
 tests/checks/test_check_CountFileLines.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                  70% ██████▉
 tests/checks/test_check_CountFileParagraphs.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                             72% ███████▎
 tests/checks/test_check_CountFileWords.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                  74% ███████▍
 tests/checks/test_check_CountMarkdownTags.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                         77% ███████▋
 tests/checks/test_check_CountMultipleLineComments.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                          80% ████████
 tests/checks/test_check_CountParagraphWords.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                             82% ████████▎
 tests/checks/test_check_CountSingleLineComments.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                            86% ████████▋
 tests/checks/test_check_ExecuteCommand.py ✓✓✓✓✓✓✓✓✓✓                                                                                            87% ████████▊
 tests/checks/test_check_ListChecks.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                                      89% ████████▉
 tests/checks/test_check_MatchCommandFragment.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                          92% █████████▎
 tests/checks/test_check_MatchCommandRegex.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                   95% █████████▌
 tests/checks/test_check_MatchFileFragment.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                             98% █████████▊
 tests/checks/test_check_MatchFileRegex.py ✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓                                                                              100% ██████████

----------- coverage: platform linux, python 3.7.3-final-0 -----------
Name                                              Stmts   Miss Branch BrPart  Cover   Missing
---------------------------------------------------------------------------------------------
gator/__init__.py                                     0      0      0      0   100%
gator/arguments.py                                   31      0      4      0   100%
gator/checkers.py                                    84      0     36      0   100%
gator/checks/__init__.py                              0      0      0      0   100%
gator/checks/check_ConfirmFileExists.py              16      0      0      0   100%
gator/checks/check_CountCommandOutput.py             19      0      0      0   100%
gator/checks/check_CountCommits.py                   18      0      0      0   100%
gator/checks/check_CountFileLines.py                 22      0      0      0   100%
gator/checks/check_CountFileParagraphs.py            21      0      0      0   100%
gator/checks/check_CountFileWords.py                 23      0      0      0   100%
gator/checks/check_CountMarkdownTags.py              24      0      0      0   100%
gator/checks/check_CountMultipleLineComments.py      24      0      0      0   100%
gator/checks/check_CountParagraphWords.py            23      0      0      0   100%
gator/checks/check_CountSingleLineComments.py        24      0      0      0   100%
gator/checks/check_ExecuteCommand.py                 14      0      0      0   100%
gator/checks/check_ListChecks.py                     28      0      4      0   100%
gator/checks/check_MatchCommandFragment.py           21      0      0      0   100%
gator/checks/check_MatchCommandRegex.py              21      0      0      0   100%
gator/checks/check_MatchFileFragment.py              24      0      0      0   100%
gator/checks/check_MatchFileRegex.py                 24      0      0      0   100%
gator/comments.py        ...
Read more

v0.3.2

02 Aug 14:56
e275281
Compare
Choose a tag to compare

Delete mutmut from Pipfile and Pipfile.lock.

This pull request deletes mutmut from the Pipfile and Pipfile.lock since we are not doing mutation testing on the test suite.

What is the current behavior?

Currently, mutmut is a dependency.

See issue #183 for more details.

What is the new behavior if this PR is merged?

This PR will delete the mutmut dependency

Other information

This PR has:
  • Commit messages that are correctly formatted

This PR is a small change that fixes #183

Developers

@MaddyKapfhammer

Auto-generated by pr-tag-release