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

all exercises: declare compliance with x-common, where applicable #524

Merged
merged 39 commits into from
May 8, 2017
Merged

all exercises: declare compliance with x-common, where applicable #524

merged 39 commits into from
May 8, 2017

Conversation

petertseng
Copy link
Member

@petertseng petertseng commented May 8, 2017

The metholodogy was as such:

For all 0.9.0 exercises, check all x-common changes made since the date declared. If the only x-common changes were to convert the JSON file to the schema, declare compliance with 1.0.0. Otherwise (there were other changes before converting the JSON file to the schema), leave version at 0.9.0.

If a 1.0.x change was made that xhaskell has already complied with or does not need to, declare compliance with that too.

In no case has compliance been declared with a version > 1.0.x.

This trusts that:

  • all dates were transferred correctly in all-exercises: Add/move versioning to package.yaml #523.
  • if in the past we declared x-common compliance at a certain date, that compliance was an accurate declaration
  • I did not make any errors in judgment in whether there was a substantial change (yes, it was a human process)

Exercises already up to date (3):

              bracket-push: 1.1.0.1 == 1.1.0
                   pangram: 1.0.0.1 == 1.0.0
                   acronym: 1.0.0.1 == 1.0.0

Exercises updated in this PR now up to date (36):

                 pig-latin: 1.0.0.2 == 1.0.0
                    meetup: 1.0.0.2 == 1.0.0
          pascals-triangle: 1.0.0.2 == 1.0.0
                   hamming: 1.0.0.2 == 1.0.0
             all-your-base: 1.0.0.2 == 1.0.0
                     wordy: 1.0.0.2 == 1.0.0
               minesweeper: 1.0.0.2 == 1.0.0
            scrabble-score: 1.0.0.2 == 1.0.0
                     forth: 1.0.0.2 == 1.0.0
                  dominoes: 1.0.0.2 == 1.0.0
                 raindrops: 1.0.0.2 == 1.0.0
                     clock: 1.0.1.2 == 1.0.1
                custom-set: 1.0.1.2 == 1.0.1
                 space-age: 1.0.0.2 == 1.0.0
                       say: 1.0.0.2 == 1.0.0
           robot-simulator: 1.0.0.2 == 1.0.0
              queen-attack: 1.0.0.2 == 1.0.0
                   connect: 1.0.0.2 == 1.0.0
               ocr-numbers: 1.0.0.2 == 1.0.0
             prime-factors: 1.0.0.2 == 1.0.0
                 allergies: 1.0.0.2 == 1.0.0
          secret-handshake: 1.0.0.2 == 1.0.0
          sum-of-multiples: 1.0.0.2 == 1.0.0
             atbash-cipher: 1.0.0.2 == 1.0.0
                 nth-prime: 1.0.0.2 == 1.0.0
                    grains: 1.0.0.2 == 1.0.0
                word-count: 1.0.0.2 == 1.0.0
          nucleotide-count: 1.0.0.2 == 1.0.0
                     sieve: 1.0.0.2 == 1.0.0
     difference-of-squares: 1.0.0.2 == 1.0.0
         rna-transcription: 1.0.0.2 == 1.0.0
                       bob: 1.0.0.2 == 1.0.0
               hello-world: 1.0.0.2 == 1.0.0
                       etl: 1.0.0.2 == 1.0.0
               alphametics: 1.0.0.2 == 1.0.0
                   sublist: 1.0.0.2 == 1.0.0

Exercises updated in this PR not up to date (3):

              phone-number: 1.0.0.2 -> 1.2.0
                   anagram: 1.0.0.2 -> 1.0.1
                       pov: 1.0.0.2 -> 1.1.1

0.9 exercises that remain out of date (7):

                    change: 0.9.0.1 # 2016-09-17 -> 1.0.0
       run-length-encoding: 0.9.0.1 # 2016-12-26 -> 1.0.0
                      luhn: 0.9.0.1 # 2016-08-04 -> 1.0.0
    largest-series-product: 0.9.0.1 # 2016-07-27 -> 1.0.0
            roman-numerals: 0.9.0.1 # 2016-07-26 -> 1.0.0
                      leap: 0.9.0.1 # 2016-07-27 -> 1.0.0
                   bowling: 0.9.0.1 # 2016-11-20 -> 1.0.0

0.1 exercises not touched by this PR (4):

             saddle-points: 0.1.0.1 -> 1.0.0
                  list-ops: 0.1.0.1 -> 1.0.0
                  triangle: 0.1.0.1 -> 1.0.0
             crypto-square: 0.1.0.1 -> 2.0.0

Ignored (8):

                food-chain: IGNORED: refactoring exercise in Haskell, tests entire song only
                 beer-song: IGNORED: refactoring exercise in Haskell, tests entire song only
                     house: IGNORED: refactoring exercise in Haskell, tests entire song only
                    binary: DEPRECATED
                gigasecond: DEPRECATED
                   trinary: DEPRECATED
               hexadecimal: DEPRECATED
                     octal: DEPRECATED

Exercises without JSON file in x-common (20)

       pythagorean-triplet: 0.1.0.1 -> still no JSON file
               linked-list: 0.1.0.1 -> still no JSON file
       palindrome-products: 0.1.0.1 -> still no JSON file
 parallel-letter-frequency: 0.1.0.1 -> still no JSON file
              zebra-puzzle: 0.1.0.1 -> still no JSON file
                    zipper: 0.1.0.1 -> still no JSON file
              grade-school: 0.1.0.1 -> still no JSON file
               sgf-parsing: 0.1.0.1 -> still no JSON file
                    strain: 0.1.0.1 -> still no JSON file
                    matrix: 0.1.0.1 -> still no JSON file
        binary-search-tree: 0.1.0.1 -> still no JSON file
       kindergarten-garden: 0.1.0.1 -> still no JSON file
               lens-person: 0.1.0.1 -> still no JSON file
             simple-cipher: 0.1.0.1 -> still no JSON file
              bank-account: 0.1.0.1 -> still no JSON file
                accumulate: 0.1.0.1 -> still no JSON file
               go-counting: 0.1.0.1 -> still no JSON file
        simple-linked-list: 0.1.0.1 -> still no JSON file
                    series: 0.1.0.1 -> still no JSON file
                robot-name: 0.1.0.1 -> still no JSON file

Output generated by https://github.com/petertseng/x-common/blob/up-to-date/up-to-date/haskell.rb

petertseng added 30 commits May 7, 2017 20:58
Note that we don't provide the inputs explicitly, but generate them from
the outputs.
Note that we expect empty list for a negative argument, and we have no
representation for a null argument, so that case is dropped.
Note that we are compliant with 1.0.0, but x-common has since moved to
1.1.0, so this is currently out of date.
Note that descriptions were added since 2016-09-19, but our tests have
no descriptions and they don't seem necessary.
Note that 1.0.0 -> 1.0.1 moves the add/subtract case to separate groups
in the JSON. If the Haskell track would like to stay with that, then we
should only declare compliance with 1.0.0 now.
@petertseng
Copy link
Member Author

As you may have figured out from reading the methodology: It is not necessarily the case that I always compared every single case between the JSON and our tests. There is a chance of a past error continuing to propagate, or an error in judgment today. Hard to check these things automatically.

Yes, I did most of it by hand but it was not really bad because it was done while watching a show.

@petertseng
Copy link
Member Author

Make commit:

VERSION=1.0.0; sed -i -e "s/version.*/version: $VERSION.2/" package.yaml ; git commit -a -m "$(basename $(pwd)): declare compliance with x-common $VERSION"

@petertseng
Copy link
Member Author

As an exception to the rule of only checking 0.9.0 exercises, hello-world was also updated in this PR.

Copy link
Contributor

@rbasso rbasso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems great! Thanks!

@petertseng petertseng merged commit 152be15 into exercism:master May 8, 2017
@petertseng petertseng deleted the ver branch May 8, 2017 06:07
@petertseng
Copy link
Member Author

notes:

I should move triangle and crypto-square to the ignored section since we are currently diverging from x-common on those too.

kindergarten-garden now has a canonical-data file and we are mostly compliant, just have extra cases.

we might already be compliant on bowling, haven't checked since the way we test is different.

we already have all the same cases of roman, but to be compliant we just need to add description, should be easy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants