From 28d4a17e7c424b47d9c6649c05cdd127c1a2ef59 Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Sun, 5 Nov 2017 14:33:38 +0100 Subject: [PATCH 1/9] Add CI test to ensure that README.md files are present and correct Checking readmes takes up non-trivial maintainer time, and is prone to error. This script adds a check to the CI which ensures that PRs are only accepted if their README.md files are present and correct. It begins by isolating the exercises already impacted by the PR, so that upstream changes to unrelated exercises don't cause undue difficulty. It then simply ensures that the README.md within the PR is identical to the one generated by `configlet generate`. Outputs lists of exercises with missing or incorrect READMEs, so people for whom CI fails due to this test not passing should have an easy time understanding what went wrong and how to fix it. --- .travis.yml | 1 + _test/ensure-readmes-are-updated.sh | 36 +++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 _test/ensure-readmes-are-updated.sh diff --git a/.travis.yml b/.travis.yml index c15462c68..7de79519d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ script: - "sh ./_test/ensure-stubs-compile.sh" - "sh ./_test/count-ignores.sh" - "./bin/fetch-configlet" +- "sh ./_test/ensure-readmes-are-updated.sh" - "./bin/configlet lint ." sudo: false rust: diff --git a/_test/ensure-readmes-are-updated.sh b/_test/ensure-readmes-are-updated.sh new file mode 100644 index 000000000..5b09bc741 --- /dev/null +++ b/_test/ensure-readmes-are-updated.sh @@ -0,0 +1,36 @@ +if [ ! -x bin/configlet ]; then + echo "Improper configuration; configlet should exist in bin/ when this script is run" + echo "Ping a Rust track maintainer to fix this" + exit 1 +fi + +newline=$'\n ' + +missing_readmes="" +wrong_readmes="" +for exercise in $(git diff --name-only master..$(git rev-parse --abbrev-ref HEAD) | grep exercises/ | cut -d'/' -f2 -s | sort -fu); do + echo "Checking readme for $exercise" + readme_path="exercises/${exercise}/README.md" + if [ ! -f $readme_path ]; then + missing_readmes="$missing_readmes$newline$exercise" + else + existing_readme_checksum=$(md5sum $readme_path | cut -d' ' -f1) + # generate the new README + bin/configlet generate . --only "$exercise" + generated_readme_checksum=$(md5sum $readme_path | cut -d' ' -f1) + + if [ $existing_readme_checksum != $generated_readme_checksum ]; then + wrong_readmes="$wrong_readmes$newline$exercise" + fi + fi +done + +if [ -n "$missing_readmes" ]; then + echo "Exercises missing README.md:$missing_readmes" +fi +if [ -n "$wrong_readmes" ]; then + echo "Exercises with out-of-date README.md:$wrong_readmes" +fi +if [ -n "$missing_readmes" -o -n "$wrong_readmes" ]; then + exit 1 +fi From 99242c6e4dbf9e6f4ab9a622cf5ec5d44b8c6f8a Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Sun, 5 Nov 2017 14:33:38 +0100 Subject: [PATCH 2/9] Add CI test to ensure that README.md files are present and correct Checking readmes takes up non-trivial maintainer time, and is prone to error. This script adds a check to the CI which ensures that PRs are only accepted if their README.md files are present and correct. It begins by isolating the exercises already impacted by the PR, so that upstream changes to unrelated exercises don't cause undue difficulty. It then simply ensures that the README.md within the PR is identical to the one generated by `configlet generate`. Outputs lists of exercises with missing or incorrect READMEs, so people for whom CI fails due to this test not passing should have an easy time understanding what went wrong and how to fix it. --- .travis.yml | 1 + _test/ensure-readmes-are-updated.sh | 36 +++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 _test/ensure-readmes-are-updated.sh diff --git a/.travis.yml b/.travis.yml index c15462c68..7de79519d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ script: - "sh ./_test/ensure-stubs-compile.sh" - "sh ./_test/count-ignores.sh" - "./bin/fetch-configlet" +- "sh ./_test/ensure-readmes-are-updated.sh" - "./bin/configlet lint ." sudo: false rust: diff --git a/_test/ensure-readmes-are-updated.sh b/_test/ensure-readmes-are-updated.sh new file mode 100644 index 000000000..5b09bc741 --- /dev/null +++ b/_test/ensure-readmes-are-updated.sh @@ -0,0 +1,36 @@ +if [ ! -x bin/configlet ]; then + echo "Improper configuration; configlet should exist in bin/ when this script is run" + echo "Ping a Rust track maintainer to fix this" + exit 1 +fi + +newline=$'\n ' + +missing_readmes="" +wrong_readmes="" +for exercise in $(git diff --name-only master..$(git rev-parse --abbrev-ref HEAD) | grep exercises/ | cut -d'/' -f2 -s | sort -fu); do + echo "Checking readme for $exercise" + readme_path="exercises/${exercise}/README.md" + if [ ! -f $readme_path ]; then + missing_readmes="$missing_readmes$newline$exercise" + else + existing_readme_checksum=$(md5sum $readme_path | cut -d' ' -f1) + # generate the new README + bin/configlet generate . --only "$exercise" + generated_readme_checksum=$(md5sum $readme_path | cut -d' ' -f1) + + if [ $existing_readme_checksum != $generated_readme_checksum ]; then + wrong_readmes="$wrong_readmes$newline$exercise" + fi + fi +done + +if [ -n "$missing_readmes" ]; then + echo "Exercises missing README.md:$missing_readmes" +fi +if [ -n "$wrong_readmes" ]; then + echo "Exercises with out-of-date README.md:$wrong_readmes" +fi +if [ -n "$missing_readmes" -o -n "$wrong_readmes" ]; then + exit 1 +fi From e1a1083757cbb9cffd2419190582fe699443c1cd Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Sun, 5 Nov 2017 22:27:42 +0100 Subject: [PATCH 3/9] DO NOT MERGE: Examples for #386 This commit is designed to cause Travis to fail, if #386 is merged and implemented correctly. It should check the following exercises, modified by this PR: all-your-base crypto-square decimal hello-world rectangles two-bucket The following two exercises should be reported as missing README.md: all-your-base decimal The followign two exercises should be reported as having out of date READMEs.md: crypto-square hello-world The following two exercises should be checked, but pass without further output: rectangles two-bucket Note that if Travis runs on these without including the `_test/ensure-readmes-are-updated.sh` test, it will likely pass without comment. --- exercises/all-your-base/README.md | 68 ------------------------ exercises/crypto-square/README.md | 1 + exercises/decimal/README.md | 60 --------------------- exercises/hello-world/README.md | 1 + exercises/rectangles/tests/more_tests.rs | 0 exercises/two-bucket/tests/more_tests.rs | 0 6 files changed, 2 insertions(+), 128 deletions(-) delete mode 100644 exercises/all-your-base/README.md delete mode 100644 exercises/decimal/README.md create mode 100644 exercises/rectangles/tests/more_tests.rs create mode 100644 exercises/two-bucket/tests/more_tests.rs diff --git a/exercises/all-your-base/README.md b/exercises/all-your-base/README.md deleted file mode 100644 index dad233b61..000000000 --- a/exercises/all-your-base/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# All Your Base - -Convert a number, represented as a sequence of digits in one base, to any other base. - -Implement general base conversion. Given a number in base **a**, -represented as a sequence of digits, convert it to base **b**. - -## Note - -- Try to implement the conversion yourself. - Do not use something else to perform the conversion for you. - -## About [Positional Notation](https://en.wikipedia.org/wiki/Positional_notation) - -In positional notation, a number in base **b** can be understood as a linear -combination of powers of **b**. - -The number 42, *in base 10*, means: - -(4 * 10^1) + (2 * 10^0) - -The number 101010, *in base 2*, means: - -(1 * 2^5) + (0 * 2^4) + (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0) - -The number 1120, *in base 3*, means: - -(1 * 3^3) + (1 * 3^2) + (2 * 3^1) + (0 * 3^0) - -I think you got the idea! - -*Yes. Those three numbers above are exactly the same. Congratulations!* - -## Rust Installation - -Refer to the [exercism help page][help-page] for Rust installation and learning -resources. - -## Writing the Code - -Execute the tests with: - -```bash -$ cargo test -``` - -All but the first test have been ignored. After you get the first test to -pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests -to pass again. The test file is located in the `tests` directory. You can -also remove the ignore flag from all the tests to get them to run all at once -if you wish. - -Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you -haven't already, it will help you with organizing your files. - -## Feedback, Issues, Pull Requests - -The [exercism/rust](https://github.com/exercism/rust) repository on GitHub is the home for all of the Rust exercises. If you have feedback about an exercise, or want to help implement new exercises, head over there and create an issue. Members of the [rust track team](https://github.com/orgs/exercism/teams/rust) are happy to help! - -If you want to know more about Exercism, take a look at the [contribution guide](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/README.md). - -[help-page]: http://exercism.io/languages/rust -[modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html -[cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html - - -## Submitting Incomplete Solutions -It's possible to submit an incomplete solution so you can see how others have completed the exercise. diff --git a/exercises/crypto-square/README.md b/exercises/crypto-square/README.md index c1c6dba93..e02febfdc 100644 --- a/exercises/crypto-square/README.md +++ b/exercises/crypto-square/README.md @@ -107,3 +107,4 @@ J Dalbey's Programming Practice problems [http://users.csc.calpoly.edu/~jdalbey/ ## Submitting Incomplete Solutions It's possible to submit an incomplete solution so you can see how others have completed the exercise. +bogus line diff --git a/exercises/decimal/README.md b/exercises/decimal/README.md deleted file mode 100644 index af8848509..000000000 --- a/exercises/decimal/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# Decimal - -Implement an arbitrary-precision `Decimal` class. - -Floating point numbers are the most common representation of non-integer real numbers in computing, and they're a common standard defined by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754). They're very flexible and versatile, but they do have some limitations. Famously, in floating point arithmetic, [`0.1 + 0.2 != 0.3`](http://0.30000000000000004.com/). - -The solution to this issue is to find another, lossless way to model arbitrary-precision non-integer reals. This may be less efficient in terms of memory or processing speed than floating point numbers; the goal is to provide exact results. - -Despite `Decimal` being a custom type, we should still be able to treat them as numbers: the `==`, `<`, `>`, `+`, `-`, and `*` operators should all work as expected on Decimals. For expediency, you are not required to implement division, as arbitrary-precision division can very quickly get out of hand. (How do you represent arbitrary-precision `1/3`?) - -In Rust, the way to get these operations on custom types is to implement the relevant traits for your custom object. In particular, you'll need to implement at least `PartialEq`, `PartialOrd`, `Add`, `Sub`, and `Mul`. Strictly speaking, given that the decimal numbers form a total ordering, you should also implement `Eq` and `Ord`, though those traits are not checked for by these tests. - -# Note - -It would be very easy to implement this exercise by using the [bigdecimal](https://crates.io/crates/bigdecimal) crate. Don't do that; implement this yourself. - -# Hints - -- Instead of implementing arbitrary-precision arithmetic from scratch, consider building your type on top of the [num_bigint](https://crates.io/crates/num-bigint) crate. -- You might be able to [derive](https://doc.rust-lang.org/book/first-edition/traits.html#deriving) some of the required traits. -- `Decimal` is assumed to be a signed type. You do not have to create a separate unsigned type, though you may do so as an implementation detail if you so choose. - -## Rust Installation - -Refer to the [exercism help page][help-page] for Rust installation and learning -resources. - -## Writing the Code - -Execute the tests with: - -```bash -$ cargo test -``` - -All but the first test have been ignored. After you get the first test to -pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests -to pass again. The test file is located in the `tests` directory. You can -also remove the ignore flag from all the tests to get them to run all at once -if you wish. - -Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you -haven't already, it will help you with organizing your files. - -## Feedback, Issues, Pull Requests - -The [exercism/rust](https://github.com/exercism/rust) repository on GitHub is the home for all of the Rust exercises. If you have feedback about an exercise, or want to help implement new exercises, head over there and create an issue. Members of the [rust track team](https://github.com/orgs/exercism/teams/rust) are happy to help! - -If you want to know more about Exercism, take a look at the [contribution guide](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/README.md). - -[help-page]: http://exercism.io/languages/rust -[modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html -[cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html - -## Source - -Peter Goodspeed-Niklaus - -## Submitting Incomplete Solutions -It's possible to submit an incomplete solution so you can see how others have completed the exercise. diff --git a/exercises/hello-world/README.md b/exercises/hello-world/README.md index 19605ab85..bc1ec4949 100644 --- a/exercises/hello-world/README.md +++ b/exercises/hello-world/README.md @@ -52,3 +52,4 @@ This is an exercise to introduce users to using Exercism [http://en.wikipedia.or ## Submitting Incomplete Solutions It's possible to submit an incomplete solution so you can see how others have completed the exercise. +another bogus line diff --git a/exercises/rectangles/tests/more_tests.rs b/exercises/rectangles/tests/more_tests.rs new file mode 100644 index 000000000..e69de29bb diff --git a/exercises/two-bucket/tests/more_tests.rs b/exercises/two-bucket/tests/more_tests.rs new file mode 100644 index 000000000..e69de29bb From 7aae5512837b4727d57f789ce20d848d453275ee Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Sun, 5 Nov 2017 23:33:11 +0100 Subject: [PATCH 4/9] Clone the problem specifications into a subdirectory if it doesn't already exist This enables us to point configlet at a known location where it should exist, which in turn should make Travis happier with this. --- _test/ensure-readmes-are-updated.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/_test/ensure-readmes-are-updated.sh b/_test/ensure-readmes-are-updated.sh index 5b09bc741..a341d4cb9 100644 --- a/_test/ensure-readmes-are-updated.sh +++ b/_test/ensure-readmes-are-updated.sh @@ -4,6 +4,10 @@ if [ ! -x bin/configlet ]; then exit 1 fi +if [ ! -d "problem-specifications" ]; then + git clone git@github.com:exercism/problem-specifications.git problem-specifications +fi + newline=$'\n ' missing_readmes="" @@ -16,7 +20,7 @@ for exercise in $(git diff --name-only master..$(git rev-parse --abbrev-ref HEAD else existing_readme_checksum=$(md5sum $readme_path | cut -d' ' -f1) # generate the new README - bin/configlet generate . --only "$exercise" + bin/configlet generate . --only "$exercise" --spec-path "problem-specifications" generated_readme_checksum=$(md5sum $readme_path | cut -d' ' -f1) if [ $existing_readme_checksum != $generated_readme_checksum ]; then From 426da3c0d9ad0eb5cdcf0b0cabad18fa8233206b Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Sun, 5 Nov 2017 22:27:42 +0100 Subject: [PATCH 5/9] DO NOT MERGE: Examples for #386 This commit is designed to cause Travis to fail, if #386 is merged and implemented correctly. It should check the following exercises, modified by this PR: all-your-base crypto-square decimal hello-world rectangles two-bucket The following two exercises should be reported as missing README.md: all-your-base decimal The followign two exercises should be reported as having out of date READMEs.md: crypto-square hello-world The following two exercises should be checked, but pass without further output: rectangles two-bucket Note that if Travis runs on these without including the `_test/ensure-readmes-are-updated.sh` test, it will likely pass without comment. --- exercises/all-your-base/README.md | 68 ------------------------------- exercises/crypto-square/README.md | 1 + exercises/decimal/README.md | 60 --------------------------- exercises/hello-world/README.md | 1 + exercises/rectangles/hints.md | 0 exercises/two-bucket/hints.md | 0 6 files changed, 2 insertions(+), 128 deletions(-) delete mode 100644 exercises/all-your-base/README.md delete mode 100644 exercises/decimal/README.md create mode 100644 exercises/rectangles/hints.md create mode 100644 exercises/two-bucket/hints.md diff --git a/exercises/all-your-base/README.md b/exercises/all-your-base/README.md deleted file mode 100644 index dad233b61..000000000 --- a/exercises/all-your-base/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# All Your Base - -Convert a number, represented as a sequence of digits in one base, to any other base. - -Implement general base conversion. Given a number in base **a**, -represented as a sequence of digits, convert it to base **b**. - -## Note - -- Try to implement the conversion yourself. - Do not use something else to perform the conversion for you. - -## About [Positional Notation](https://en.wikipedia.org/wiki/Positional_notation) - -In positional notation, a number in base **b** can be understood as a linear -combination of powers of **b**. - -The number 42, *in base 10*, means: - -(4 * 10^1) + (2 * 10^0) - -The number 101010, *in base 2*, means: - -(1 * 2^5) + (0 * 2^4) + (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (0 * 2^0) - -The number 1120, *in base 3*, means: - -(1 * 3^3) + (1 * 3^2) + (2 * 3^1) + (0 * 3^0) - -I think you got the idea! - -*Yes. Those three numbers above are exactly the same. Congratulations!* - -## Rust Installation - -Refer to the [exercism help page][help-page] for Rust installation and learning -resources. - -## Writing the Code - -Execute the tests with: - -```bash -$ cargo test -``` - -All but the first test have been ignored. After you get the first test to -pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests -to pass again. The test file is located in the `tests` directory. You can -also remove the ignore flag from all the tests to get them to run all at once -if you wish. - -Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you -haven't already, it will help you with organizing your files. - -## Feedback, Issues, Pull Requests - -The [exercism/rust](https://github.com/exercism/rust) repository on GitHub is the home for all of the Rust exercises. If you have feedback about an exercise, or want to help implement new exercises, head over there and create an issue. Members of the [rust track team](https://github.com/orgs/exercism/teams/rust) are happy to help! - -If you want to know more about Exercism, take a look at the [contribution guide](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/README.md). - -[help-page]: http://exercism.io/languages/rust -[modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html -[cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html - - -## Submitting Incomplete Solutions -It's possible to submit an incomplete solution so you can see how others have completed the exercise. diff --git a/exercises/crypto-square/README.md b/exercises/crypto-square/README.md index c1c6dba93..e02febfdc 100644 --- a/exercises/crypto-square/README.md +++ b/exercises/crypto-square/README.md @@ -107,3 +107,4 @@ J Dalbey's Programming Practice problems [http://users.csc.calpoly.edu/~jdalbey/ ## Submitting Incomplete Solutions It's possible to submit an incomplete solution so you can see how others have completed the exercise. +bogus line diff --git a/exercises/decimal/README.md b/exercises/decimal/README.md deleted file mode 100644 index af8848509..000000000 --- a/exercises/decimal/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# Decimal - -Implement an arbitrary-precision `Decimal` class. - -Floating point numbers are the most common representation of non-integer real numbers in computing, and they're a common standard defined by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754). They're very flexible and versatile, but they do have some limitations. Famously, in floating point arithmetic, [`0.1 + 0.2 != 0.3`](http://0.30000000000000004.com/). - -The solution to this issue is to find another, lossless way to model arbitrary-precision non-integer reals. This may be less efficient in terms of memory or processing speed than floating point numbers; the goal is to provide exact results. - -Despite `Decimal` being a custom type, we should still be able to treat them as numbers: the `==`, `<`, `>`, `+`, `-`, and `*` operators should all work as expected on Decimals. For expediency, you are not required to implement division, as arbitrary-precision division can very quickly get out of hand. (How do you represent arbitrary-precision `1/3`?) - -In Rust, the way to get these operations on custom types is to implement the relevant traits for your custom object. In particular, you'll need to implement at least `PartialEq`, `PartialOrd`, `Add`, `Sub`, and `Mul`. Strictly speaking, given that the decimal numbers form a total ordering, you should also implement `Eq` and `Ord`, though those traits are not checked for by these tests. - -# Note - -It would be very easy to implement this exercise by using the [bigdecimal](https://crates.io/crates/bigdecimal) crate. Don't do that; implement this yourself. - -# Hints - -- Instead of implementing arbitrary-precision arithmetic from scratch, consider building your type on top of the [num_bigint](https://crates.io/crates/num-bigint) crate. -- You might be able to [derive](https://doc.rust-lang.org/book/first-edition/traits.html#deriving) some of the required traits. -- `Decimal` is assumed to be a signed type. You do not have to create a separate unsigned type, though you may do so as an implementation detail if you so choose. - -## Rust Installation - -Refer to the [exercism help page][help-page] for Rust installation and learning -resources. - -## Writing the Code - -Execute the tests with: - -```bash -$ cargo test -``` - -All but the first test have been ignored. After you get the first test to -pass, remove the ignore flag (`#[ignore]`) from the next test and get the tests -to pass again. The test file is located in the `tests` directory. You can -also remove the ignore flag from all the tests to get them to run all at once -if you wish. - -Make sure to read the [Modules](https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html) chapter if you -haven't already, it will help you with organizing your files. - -## Feedback, Issues, Pull Requests - -The [exercism/rust](https://github.com/exercism/rust) repository on GitHub is the home for all of the Rust exercises. If you have feedback about an exercise, or want to help implement new exercises, head over there and create an issue. Members of the [rust track team](https://github.com/orgs/exercism/teams/rust) are happy to help! - -If you want to know more about Exercism, take a look at the [contribution guide](https://github.com/exercism/docs/blob/master/contributing-to-language-tracks/README.md). - -[help-page]: http://exercism.io/languages/rust -[modules]: https://doc.rust-lang.org/book/second-edition/ch07-00-modules.html -[cargo]: https://doc.rust-lang.org/book/second-edition/ch14-00-more-about-cargo.html - -## Source - -Peter Goodspeed-Niklaus - -## Submitting Incomplete Solutions -It's possible to submit an incomplete solution so you can see how others have completed the exercise. diff --git a/exercises/hello-world/README.md b/exercises/hello-world/README.md index 19605ab85..bc1ec4949 100644 --- a/exercises/hello-world/README.md +++ b/exercises/hello-world/README.md @@ -52,3 +52,4 @@ This is an exercise to introduce users to using Exercism [http://en.wikipedia.or ## Submitting Incomplete Solutions It's possible to submit an incomplete solution so you can see how others have completed the exercise. +another bogus line diff --git a/exercises/rectangles/hints.md b/exercises/rectangles/hints.md new file mode 100644 index 000000000..e69de29bb diff --git a/exercises/two-bucket/hints.md b/exercises/two-bucket/hints.md new file mode 100644 index 000000000..e69de29bb From 7c0fcee53403310daeb90bcfca9d03b3857ee57a Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Sun, 5 Nov 2017 23:37:33 +0100 Subject: [PATCH 6/9] Eliminate files which caused CI to fail from other checks --- exercises/rectangles/tests/more_tests.rs | 0 exercises/two-bucket/tests/more_tests.rs | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 exercises/rectangles/tests/more_tests.rs delete mode 100644 exercises/two-bucket/tests/more_tests.rs diff --git a/exercises/rectangles/tests/more_tests.rs b/exercises/rectangles/tests/more_tests.rs deleted file mode 100644 index e69de29bb..000000000 diff --git a/exercises/two-bucket/tests/more_tests.rs b/exercises/two-bucket/tests/more_tests.rs deleted file mode 100644 index e69de29bb..000000000 From 0519779e0a3326229f77ca2c1f2dee2356eacd38 Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Sun, 5 Nov 2017 23:38:28 +0100 Subject: [PATCH 7/9] Use updated ensure-readmes-are-updated.sh --- _test/ensure-readmes-are-updated.sh | 7 ------- 1 file changed, 7 deletions(-) diff --git a/_test/ensure-readmes-are-updated.sh b/_test/ensure-readmes-are-updated.sh index 07c778dfd..a341d4cb9 100644 --- a/_test/ensure-readmes-are-updated.sh +++ b/_test/ensure-readmes-are-updated.sh @@ -4,13 +4,10 @@ if [ ! -x bin/configlet ]; then exit 1 fi -<<<<<<< HEAD if [ ! -d "problem-specifications" ]; then git clone git@github.com:exercism/problem-specifications.git problem-specifications fi -======= ->>>>>>> 28d4a17e7c424b47d9c6649c05cdd127c1a2ef59 newline=$'\n ' missing_readmes="" @@ -23,11 +20,7 @@ for exercise in $(git diff --name-only master..$(git rev-parse --abbrev-ref HEAD else existing_readme_checksum=$(md5sum $readme_path | cut -d' ' -f1) # generate the new README -<<<<<<< HEAD bin/configlet generate . --only "$exercise" --spec-path "problem-specifications" -======= - bin/configlet generate . --only "$exercise" ->>>>>>> 28d4a17e7c424b47d9c6649c05cdd127c1a2ef59 generated_readme_checksum=$(md5sum $readme_path | cut -d' ' -f1) if [ $existing_readme_checksum != $generated_readme_checksum ]; then From e5ddefe9b3b9feae79878a63bd0a1bea8255a79a Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Mon, 6 Nov 2017 00:08:12 +0100 Subject: [PATCH 8/9] Use https instead of ssh git path for problem-specifications --- _test/ensure-readmes-are-updated.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_test/ensure-readmes-are-updated.sh b/_test/ensure-readmes-are-updated.sh index a341d4cb9..2ef2cce3a 100644 --- a/_test/ensure-readmes-are-updated.sh +++ b/_test/ensure-readmes-are-updated.sh @@ -5,7 +5,7 @@ if [ ! -x bin/configlet ]; then fi if [ ! -d "problem-specifications" ]; then - git clone git@github.com:exercism/problem-specifications.git problem-specifications + git clone https://github.com/exercism/problem-specifications.git problem-specifications fi newline=$'\n ' From c34f09af78de9cad1ecef87397bb2b93cbc2363c Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Mon, 6 Nov 2017 23:44:16 +0100 Subject: [PATCH 9/9] Update example so it should come out propery --- exercises/rectangles/README.md | 18 +++++++++--------- exercises/rectangles/{hints.md => src/mod.rs} | 0 exercises/two-bucket/README.md | 14 +++++++------- exercises/two-bucket/{hints.md => src/mod.rs} | 0 4 files changed, 16 insertions(+), 16 deletions(-) rename exercises/rectangles/{hints.md => src/mod.rs} (100%) rename exercises/two-bucket/{hints.md => src/mod.rs} (100%) diff --git a/exercises/rectangles/README.md b/exercises/rectangles/README.md index 16d4d07ae..71cc5c4eb 100644 --- a/exercises/rectangles/README.md +++ b/exercises/rectangles/README.md @@ -37,27 +37,27 @@ The above diagram contains 6 rectangles: ``` ```text - - + + +--+ | | +--+ ``` ```text - - + + +--+ | | +--+ ``` ```text - - ++ - ++ - - + + ++ + ++ + + ``` You may assume that the input is always a proper rectangle (i.e. the length of diff --git a/exercises/rectangles/hints.md b/exercises/rectangles/src/mod.rs similarity index 100% rename from exercises/rectangles/hints.md rename to exercises/rectangles/src/mod.rs diff --git a/exercises/two-bucket/README.md b/exercises/two-bucket/README.md index 31638f8bf..f6620a78a 100644 --- a/exercises/two-bucket/README.md +++ b/exercises/two-bucket/README.md @@ -7,15 +7,15 @@ Since this mathematical problem is fairly subject to interpretation / individual To help, the tests provide you with which bucket to fill first. That means, when starting with the larger bucket full, you are NOT allowed at any point to have the smaller bucket full and the larger bucket empty (aka, the opposite starting point); that would defeat the purpose of comparing both approaches! Your program will take as input: -- the size of bucket one, passed as a numeric value -- the size of bucket two, passed as a numeric value -- the desired number of liters to reach, passed as a numeric value -- which bucket to fill first, passed as a Bucket (either Bucket::One or Bucket::Two) +- the size of bucket one +- the size of bucket two +- the desired number of liters to reach +- which bucket to fill first, either bucket one or bucket two Your program should determine: -- the total number of "moves" it should take to reach the desired number of liters, including the first fill - expects a numeric value -- which bucket should end up with the desired number of liters (let's say this is bucket A) - expects a Bucket (either Bucket::One or Bucket::Two) -- how many liters are left in the other bucket (bucket B) - expects a numeric value +- the total number of "moves" it should take to reach the desired number of liters, including the first fill +- which bucket should end up with the desired number of liters (let's say this is bucket A) - either bucket one or bucket two +- how many liters are left in the other bucket (bucket B) Note: any time a change is made to either or both buckets counts as one (1) move. diff --git a/exercises/two-bucket/hints.md b/exercises/two-bucket/src/mod.rs similarity index 100% rename from exercises/two-bucket/hints.md rename to exercises/two-bucket/src/mod.rs