Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

meetup: test_nonexistent_fifth_monday_of_february_2015 passes when MeetupDayException doesn't exist #1344

Closed
sep1318 opened this issue Feb 21, 2018 · 2 comments

Comments

@sep1318
Copy link

sep1318 commented Feb 21, 2018

I've been running the tests trying to complete this problem, and have noticed that the test_nonexistent_fifth_monday_of_february_2015 test passes when I don't think it should. I have not yet implemented the MeetupDayException, which is what it is supposed to be testing for. But since I have not yet implemented it, the try block around its import fails, and the test is then only looking for any Exception to be thrown.

I feel like this results in false positives for this test.

$ pytest -v
============================================================================================================ test session starts ============================================================================================================
platform linux -- Python 3.6.4, pytest-3.4.0, py-1.5.2, pluggy-0.6.0 -- /usr/bin/python
cachedir: .pytest_cache
rootdir: [...]/exercism/python/meetup, inifile:
collected 97 items
[...]
meetup_test.py::MeetupTest::test_nonexistent_fifth_monday_of_february_2015 PASSED                                                                                                                                                     [ 55%]
$ python
Python 3.6.4 (default, Jan  5 2018, 02:35:40)
[GCC 7.2.1 20171224] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import meetup
>>> meetup.meetup_day(2015, 2, "Monday", "5th")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/[...]/exercism/python/meetup/meetup.py", line 12, in meetup_day
    if calendar.weekday(year, month, candidate) == day_list.index(day_of_the_week):
  File "/usr/lib/python3.6/calendar.py", line 116, in weekday
    return datetime.date(year, month, day).weekday()
ValueError: day is out of range for month

If you need me to provide more/other information, please let me know.

@cmccandless
Copy link
Contributor

@sep1318 thank you for bringing this to our attention. #1345 has been created to address this.

@stale
Copy link

stale bot commented Mar 14, 2018

This issue has been automatically marked as abandoned because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the abandoned label Mar 14, 2018
cmccandless added a commit that referenced this issue Apr 3, 2018
* meetup: remove fail-safe for undefined MeetupDayException

Fixes #1344

* meetup: define MeetupDayException in example solution

* meetup: fix example solution to raise correct exception

* meetup: fix flake8 violations

* meetup: add exception message
mrcfps added a commit to mrcfps/python that referenced this issue Apr 20, 2018
pig-latin: improve documentation (exercism#1352)

add "Running the tests" section to README template (exercism#1271)

* add "Running the tests" section to README template

* regenerate README files with new template

* rewrite Running the tests section for clarity

* -switch to a plaintext-readable format
-add link explaining py.test vs pytest

queen-attack: re-implement according to canonical data 2.1.0 (exercism#1351)

* queen-attack: re-implement according to canonical data 2.1.0

* queen-attack: rewrite to pass tests v2.1.0

* queen-attack: remove redundant tests

Rm `test_invalid_position_can_attack` since `Queen()`

grains: update tests to v1.1.0 (exercism#1357)

Fix typo and minor style issues in all READMEs (exercism#1356)

* Fix typo and style in README template

* Fix `shold` to `should`
* Fix minor style issues in `### Common pytest options`
* Add blank line after all headers

* Regenerate all READMEs

* Remove redundant periods in READMEs

add `awaiting review` exempt label to stale.yml (exercism#1364)

go-counting: adapt tests to canonical data v1.0.0 (exercism#1360)

* set correct canonical data version

* adapt tests and example solution to canonical data 1.0.0

* use assertSetEqual() consistently

sgf-parsing: implement exercise (exercism#1359)

* implement sgf-parsing

* fix import statement

* create entry in config.json

* fix __eq__ for Python2

lens-person: forego exercise (exercism#1299)

* lens-person: forego exercise

`lens-person` is specific to languages with immutable data (i.e. Haskell). This concept does not exist in Python, so the exercise should be foregone.

* remove bad comma

Implement exercise bank-account (exercism#1260)

* Implement exercise bank-account

* bank-account: generate README using configlet

* bank-account: fix typo and comments

pascals-triangle: update tests to canonical-date v1.2.0 (exercism#1164)

house: return singleton list for single verse (exercism#1354)

* house: return singleton list for single verse

RE exercism#1347 ([comment](exercism#1347 (comment)))

* house: fix example solution to pass changed tests

meetup: remove fail-safe for undefined MeetupDayException (exercism#1345)

* meetup: remove fail-safe for undefined MeetupDayException

Fixes exercism#1344

* meetup: define MeetupDayException in example solution

* meetup: fix example solution to raise correct exception

* meetup: fix flake8 violations

* meetup: add exception message

Curriculum (exercism#1355)

* select core exercises and set exercise ordering

* add missing obvious topics

* make list-ops a core exercise

* rational-numbers: increase difficulty

* unlocked_by core exercises only (exercism/configlet#61)
Ref: exercism/DEPRECATED.v2-feedback#61 (comment)

alphametics: mark computationally intensive test as extra-credit (exercism#1358)

* alphametics: mark computationally intensive test as extra-credit

While this test is canonical, it does not technically add additional coverage. This test serves as a test for efficiency (exercism/problem-specifications#1024 (comment)) of a solution, not completeness.

Furthermore, here are the run-times for this exercise from the [latest Travis build]() (at the time of this writing):
| Python Version | Run-time (seconds) |
| --- | --- |
| 2.7 | 3.155 |
| 3.3 | 2.461 |
| 3.4 | 3.567 |
| 3.5 | 7.270 |
| 3.6 | 0.774 |

Notice that the optimized example solution is only "fast" in 3.6.

* alphametics: add to list of exercises allowed to skip tests in CI

bank-account: update README using configlet (exercism#1366)

go-counting: update README to latest description (exercism#1367)

bracket-push: update tests to v1.3.0 (exercism#1369)

isbn-verifier: update tests to v2.4.0 (exercism#1373)

* Replace test case - "invalid character in isbn"
* Add test case with only 9 digits

Python "bowling" test issue. (exercism#1372)

Fixes /exercism/python/exercism#1371.

yacht: implement exercise (exercism#1368)

* yacht: implement exercise

* yacht: use enumeration of score categories

* Use enumeration instead of plain strings to represent categories
* Improve func `ns` in example solution

crypto-square: Clarify rectangular output requirement in README (exercism#1375)

scale-generator: clarify docs. (exercism#1374)

* Removed most mentions of terms that were irrelevant ("diminished interval") or undefined ("accidentals").
* Removed irrelevant table
* Some light reformatting
cmccandless pushed a commit that referenced this issue Apr 20, 2018
* react: re-implement according to canonical data

* react: update tests to v1.2.0

* react: correct test method name

* react: fix example solution py2-compatibility

* `copy()` method to `[:]`
* `clear()` method to reassigning an empty list

* react: refactor callbacks into pure functions

* Merge upstream/master into react-1257

pig-latin: improve documentation (#1352)

add "Running the tests" section to README template (#1271)

* add "Running the tests" section to README template

* regenerate README files with new template

* rewrite Running the tests section for clarity

* -switch to a plaintext-readable format
-add link explaining py.test vs pytest

queen-attack: re-implement according to canonical data 2.1.0 (#1351)

* queen-attack: re-implement according to canonical data 2.1.0

* queen-attack: rewrite to pass tests v2.1.0

* queen-attack: remove redundant tests

Rm `test_invalid_position_can_attack` since `Queen()`

grains: update tests to v1.1.0 (#1357)

Fix typo and minor style issues in all READMEs (#1356)

* Fix typo and style in README template

* Fix `shold` to `should`
* Fix minor style issues in `### Common pytest options`
* Add blank line after all headers

* Regenerate all READMEs

* Remove redundant periods in READMEs

add `awaiting review` exempt label to stale.yml (#1364)

go-counting: adapt tests to canonical data v1.0.0 (#1360)

* set correct canonical data version

* adapt tests and example solution to canonical data 1.0.0

* use assertSetEqual() consistently

sgf-parsing: implement exercise (#1359)

* implement sgf-parsing

* fix import statement

* create entry in config.json

* fix __eq__ for Python2

lens-person: forego exercise (#1299)

* lens-person: forego exercise

`lens-person` is specific to languages with immutable data (i.e. Haskell). This concept does not exist in Python, so the exercise should be foregone.

* remove bad comma

Implement exercise bank-account (#1260)

* Implement exercise bank-account

* bank-account: generate README using configlet

* bank-account: fix typo and comments

pascals-triangle: update tests to canonical-date v1.2.0 (#1164)

house: return singleton list for single verse (#1354)

* house: return singleton list for single verse

RE #1347 ([comment](#1347 (comment)))

* house: fix example solution to pass changed tests

meetup: remove fail-safe for undefined MeetupDayException (#1345)

* meetup: remove fail-safe for undefined MeetupDayException

Fixes #1344

* meetup: define MeetupDayException in example solution

* meetup: fix example solution to raise correct exception

* meetup: fix flake8 violations

* meetup: add exception message

Curriculum (#1355)

* select core exercises and set exercise ordering

* add missing obvious topics

* make list-ops a core exercise

* rational-numbers: increase difficulty

* unlocked_by core exercises only (exercism/configlet#61)
Ref: exercism/DEPRECATED.v2-feedback#61 (comment)

alphametics: mark computationally intensive test as extra-credit (#1358)

* alphametics: mark computationally intensive test as extra-credit

While this test is canonical, it does not technically add additional coverage. This test serves as a test for efficiency (exercism/problem-specifications#1024 (comment)) of a solution, not completeness.

Furthermore, here are the run-times for this exercise from the [latest Travis build]() (at the time of this writing):
| Python Version | Run-time (seconds) |
| --- | --- |
| 2.7 | 3.155 |
| 3.3 | 2.461 |
| 3.4 | 3.567 |
| 3.5 | 7.270 |
| 3.6 | 0.774 |

Notice that the optimized example solution is only "fast" in 3.6.

* alphametics: add to list of exercises allowed to skip tests in CI

bank-account: update README using configlet (#1366)

go-counting: update README to latest description (#1367)

bracket-push: update tests to v1.3.0 (#1369)

isbn-verifier: update tests to v2.4.0 (#1373)

* Replace test case - "invalid character in isbn"
* Add test case with only 9 digits

Python "bowling" test issue. (#1372)

Fixes /exercism/python/#1371.

yacht: implement exercise (#1368)

* yacht: implement exercise

* yacht: use enumeration of score categories

* Use enumeration instead of plain strings to represent categories
* Improve func `ns` in example solution

crypto-square: Clarify rectangular output requirement in README (#1375)

scale-generator: clarify docs. (#1374)

* Removed most mentions of terms that were irrelevant ("diminished interval") or undefined ("accidentals").
* Removed irrelevant table
* Some light reformatting

* react: update tests to v2.0.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants