Commit Graph

1815 Commits

Author SHA1 Message Date
bors 8387de64d3 Auto merge of #143 - cjpearce:fix-exercise-path-matching, r=komaeda
Canonicalize paths to fix path matching

This PR should fix #126. The main solution to the issue was using `canonicalize()` on the paths we create for the exercises from `info.toml` and any user-specified paths, so that path `ends_with` matching will work correctly.

As adding calls to the canonicalize function everywhere requires unwrapping, I also decided to extract a struct representing an exercise and use serde to deserialize the paths from the `info.toml` file up front. I also tried to move the path handling out into the `exercise.rs` file and down into `main.rs` so that it doesn't create as much clutter. There was already a lot of unwrapping and path handling in the other files and I felt like it was getting a bit too repetitive.

If the approach is going too far (too many changes etc.) I'm happy to try to produce a smaller PR that fixes the bug without any refactoring.
2019-04-13 16:32:02 +00:00
Chris Pearce 77de6e5d6a Clean up test includes for File and Path 2019-04-12 23:14:15 +01:00
Chris Pearce 8c867a001a Remove unwrap on canonicalize result 2019-04-12 22:24:13 +01:00
Chris Pearce d01a71f7de Extract exercise struct to encapsulate path logic 2019-04-12 08:58:25 +01:00
bors 04d1d4c00e Auto merge of #142 - diodfr:patch-1, r=komaeda
Fix links by deleting book version
2019-04-08 20:05:34 +00:00
Diod FR d7e58ee1af
Fix links by deleting book version 2019-04-08 22:02:04 +02:00
bors ffb165ce26 Auto merge of #140 - cjpearce:fix/test-race-condition, r=komaeda
Fix intermittent test failure caused by race condition

First public pull request 😬

There's an intermittent integration test failure when you use multiple test threads (at least for me on a mac). I narrowed it down to two tests each spawning a process using `Command` which then try to compile the same file at the same time. If the timing doesn't work out, they both try to compile, and then one process runs `clean` before the other can run the executable - causing a panic.

![Screenshot 2019-04-07 at 19 54 55](https://user-images.githubusercontent.com/3453268/55688324-20520980-596f-11e9-8474-5215d61a4387.png)

You can prevent it from happening by running with a single thread (`cargo test -- --test-threads=1`), because the `Command` blocks. That's not a particularly good solution though because it's not something you can configure in `Cargo.toml`.

I considered making the affected tests just run serially, but it occurred to me that this could also happen if someone accidentally runs rustlings in watch mode in two terminals without realising it. I wound't consider this that unlikely given it's a tool for learning.

I fixed it by ensuring that the executables made from separate processes don't conflict by appending a process id to the output executable name. I also extracted the commands into a single file next to `clean` so that we don't have to repeat the generated file name everywhere and risk missing something.
2019-04-07 22:37:34 +00:00
Chris Pearce 65cb09eb2e Update ci test command to allow multithreaded tests 2019-04-07 21:23:02 +01:00
bors 78552ebd7a Auto merge of #141 - cjpearce:fix/run-panics-on-compile-fail, r=komaeda
Stop run from panicking when compile fails

Currently if you use the `rustlings run` command and your program fails to compile, rustlings will panic while trying to exit.

First I've added a couple of integration tests to cover this case, which also meant moving a few tests so that the new fixtures didn't cause `verify_all_success` to fail.

Then I noticed that the existing integration tests that test for failure pass even when rustlings panics, preventing the new tests from failing. I've updated the integration tests to distinguish between when rustlings has failed in the way that we want (exit code 1) rather than a panic (exit code 101).

Finally I fixed the actual panic, which was just caused by unwrapping when rustlings should probably be exiting cleanly.
2019-04-07 20:11:22 +00:00
Chris Pearce 0c7bd12372 Fix test failing due to panic 2019-04-07 20:13:04 +01:00
Chris Pearce 3d11d7685b Modify integration tests to fail on panic 2019-04-07 20:13:04 +01:00
Chris Pearce 592ae6b4d2 Add process id to temp file name 2019-04-07 17:28:51 +01:00
Chris Pearce 4fa79ee02f Extract command builders into util 2019-04-07 17:26:01 +01:00
bors fbd0ccbd5b Auto merge of #134 - rust-lang:fix/windows-paths, r=komaeda
fix watch command path execution

@hades32 @guttume could you test whether this works on windows by checking out the branch locally and running `cargo run watch`?
2019-04-03 09:37:37 +00:00
komaeda 8c008a0e7d
Merge pull request #137 from mgeier/patch-1
Fix order of true/false in tests for executables
2019-03-28 12:11:35 +01:00
Matthias Geier 11fe19d08a
Fix order of true/false in tests for executables
1b3469f236 has fixed the tests themselves, but now the original error shows itself.
2019-03-28 11:53:29 +01:00
liv 1b3469f236 make installation command checks more thorough 2019-03-28 10:51:54 +01:00
liv 022921168d fix watch command path execution 2019-03-27 10:58:56 +01:00
komaeda c6765eb3eb
Merge pull request #133 from zacanger/bug/permissions
Fix permissions on exercise files
2019-03-24 15:44:34 +01:00
zacanger c5a374fbf2
Fix permissions on source files 2019-03-23 14:19:42 -06:00
lyn f3ee70489f 1.1.0 2019-03-20 21:27:27 +01:00
lyn 6a27ba735c cargo fmt 2019-03-20 21:25:45 +01:00
komaeda 91dce31265
Merge pull request #131 from ColinPitrat/master
Verify that rust version is recent enough to install rustlings.
2019-03-20 21:22:04 +01:00
lyn 040ca18a64 add travis config 2019-03-20 21:08:08 +01:00
lyn f43cb124f6 add tests 2019-03-20 21:05:45 +01:00
komaeda 11875aed6e
adjust author name 2019-03-20 14:51:28 +01:00
Colin Pitrat f07703eb7a
Fix comment position 2019-03-20 11:21:15 +00:00
Colin Pitrat fd4eda8bda Verify that rust version is recent enough to install rustlings.
I would have liked to write some tests for the vercomp function I
introduce, but there doesn't seem to be any CI setup yet?
2019-03-20 11:18:39 +00:00
komaeda bf8d927ab2
Merge pull request #123 from kisom/master
Be nicer when rustlings isn't run from the right directory.
2019-03-17 22:28:03 +01:00
Kyle Isom 9fc4a83987 Be nicer when rustlings isn't run from the right directory.
Before, rustlings would panic if it wasn't in the right directory. It
took me a minute to figure out why, and this wasn't my first intro to
Rust. It would probably help new users if they saw a helpful message
instead of a stack trace.
2019-03-17 11:43:47 -07:00
komaeda 63280ed9e4
Merge pull request #119 from LesnyRumcajs/patch-1
Add standard library types to exercises suite
2019-03-17 13:27:48 +01:00
komaeda 25f9d61410
Merge pull request #124 from kisom/update-link
errors2.rs: update link to Rust book.
2019-03-17 13:19:57 +01:00
Kyle Isom c1f4257a91 errors2.rs: update link to Rust book. 2019-03-16 19:22:06 -07:00
komaeda 8f9d7ce3d8
Merge pull request #120 from abagshaw/master
Start verification at most recently modified file
2019-03-16 12:54:09 +01:00
Andrew Bagshaw 3b5dfac44e Remove unnessecary whitespace 2019-03-15 16:01:45 -07:00
Andrew Bagshaw a6a8b61b12
Change to \n 2019-03-15 12:47:06 -07:00
Andrew Bagshaw 6cd42bb821 Add clear break between verify executions 2019-03-13 14:08:28 -07:00
Andrew Bagshaw 4d7ce6e571 deduplicate 2019-03-13 13:53:24 -07:00
Andrew Bagshaw 3f114cc069 Start verification at most recently modified file 2019-03-13 13:50:54 -07:00
LesnyRumcajs 58ccd72aff
Add standard library types to exercises suite 2019-03-13 15:29:02 +01:00
lyn abf175111d clippy-ify 2019-03-11 15:09:20 +01:00
lyn 9144c816bf remove obsolete paragraph on `--test` flag 2019-03-06 22:01:45 +01:00
lyn 999601d828 1.0.1 2019-03-06 21:58:10 +01:00
lyn 10d4d61d19 rework contribution guide for the new toml file 2019-03-06 21:55:48 +01:00
lyn 70e59cca3c standardize exercise running via an external toml file 2019-03-06 21:47:33 +01:00
komaeda 7d6e2812fb
Merge pull request #117 from shaunbennett/master
Watch for file creation events in watch mode
2019-03-06 20:28:29 +01:00
lyn 05e8f02d0a edit readme to use the install script 2019-03-06 20:25:27 +01:00
lyn 9a14d72f08 add a basic install script 2019-03-06 20:16:31 +01:00
lyn 244a0816ac 1.0.0 2019-03-06 19:50:24 +01:00
Shaun Bennett 04d0f78a2c Fix file watching for vim swap files 2019-03-06 18:38:55 +00:00