46 |
46 |
47 fsnotify uses build tags to compile different code on Linux, BSD, macOS, and Windows. |
47 fsnotify uses build tags to compile different code on Linux, BSD, macOS, and Windows. |
48 |
48 |
49 Before doing a pull request, please do your best to test your changes on multiple platforms, and list which platforms you were able/unable to test on. |
49 Before doing a pull request, please do your best to test your changes on multiple platforms, and list which platforms you were able/unable to test on. |
50 |
50 |
51 To aid in cross-platform testing there is a Vagrantfile for Linux and BSD. |
|
52 |
|
53 * Install [Vagrant](http://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) |
|
54 * Setup [Vagrant Gopher](https://github.com/nathany/vagrant-gopher) in your `src` folder. |
|
55 * Run `vagrant up` from the project folder. You can also setup just one box with `vagrant up linux` or `vagrant up bsd` (note: the BSD box doesn't support Windows hosts at this time, and NFS may prompt for your host OS password) |
|
56 * Once setup, you can run the test suite on a given OS with a single command `vagrant ssh linux -c 'cd fsnotify/fsnotify; go test'`. |
|
57 * When you're done, you will want to halt or destroy the Vagrant boxes. |
|
58 |
|
59 Notice: fsnotify file system events won't trigger in shared folders. The tests get around this limitation by using the /tmp directory. |
|
60 |
|
61 Right now there is no equivalent solution for Windows and macOS, but there are Windows VMs [freely available from Microsoft](http://www.modern.ie/en-us/virtualization-tools#downloads). |
|
62 |
|
63 ### Maintainers |
51 ### Maintainers |
64 |
52 |
65 Help maintaining fsnotify is welcome. To be a maintainer: |
53 Help maintaining fsnotify is welcome. To be a maintainer: |
66 |
54 |
67 * Submit a pull request and sign the CLA as above. |
55 * Submit a pull request and sign the CLA as above. |
68 * You must be able to run the test suite on Mac, Windows, Linux and BSD. |
56 * You must be able to run the test suite on Mac, Windows, Linux and BSD. |
69 |
57 |
70 To keep master clean, the fsnotify project uses the "apply mail" workflow outlined in Nathaniel Talbott's post ["Merge pull request" Considered Harmful][am]. This requires installing [hub][]. |
|
71 |
|
72 All code changes should be internal pull requests. |
58 All code changes should be internal pull requests. |
73 |
59 |
74 Releases are tagged using [Semantic Versioning](http://semver.org/). |
60 Releases are tagged using [Semantic Versioning](http://semver.org/). |
75 |
|
76 [hub]: https://github.com/github/hub |
|
77 [am]: http://blog.spreedly.com/2014/06/24/merge-pull-request-considered-harmful/#.VGa5yZPF_Zs |
|