Add contributing docs
Reviewed By: danielbuechele Differential Revision: D6976258 fbshipit-source-id: 71b3d0ab4a071ce0c4a9c1241cd6295aa6d52b8e
This commit is contained in:
committed by
Facebook Github Bot
parent
49f1d7b5f6
commit
cac77e5ffa
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
path: "contributing/adding-a-test"
|
|
||||||
title: "Adding a Test"
|
|
||||||
hasPlayground: false
|
|
||||||
---
|
|
||||||
|
|
||||||
## Adding a Test
|
|
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
path: "contributing/checking-out-the-code"
|
|
||||||
title: "Checking Out the Code"
|
|
||||||
hasPlayground: false
|
|
||||||
---
|
|
||||||
|
|
||||||
## Checking Out the Code
|
|
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
path: "contributing/making-a-change"
|
|
||||||
title: "Making a change"
|
|
||||||
hasPlayground: false
|
|
||||||
---
|
|
||||||
|
|
||||||
## Making a change
|
|
@@ -4,4 +4,52 @@ title: "Opening a Pull Request"
|
|||||||
hasPlayground: false
|
hasPlayground: false
|
||||||
---
|
---
|
||||||
|
|
||||||
## Opening a Pull Request
|
# Opening a Pull Request
|
||||||
|
|
||||||
|
Before opening your first pull request to Yoga you have to know how to get the code,
|
||||||
|
install build time dependencies, and test the code locally.
|
||||||
|
|
||||||
|
### Clone
|
||||||
|
|
||||||
|
```
|
||||||
|
$> git clone https://github.com/facebook/yoga.git
|
||||||
|
$> cd yoga
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install dependencies
|
||||||
|
|
||||||
|
```
|
||||||
|
$> git submodule init
|
||||||
|
$> git submodule update
|
||||||
|
$> brew install buck
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build and Test
|
||||||
|
|
||||||
|
```
|
||||||
|
$> buck build //:yoga
|
||||||
|
$> buck test //:yoga
|
||||||
|
```
|
||||||
|
|
||||||
|
## Making a Change
|
||||||
|
|
||||||
|
Now all you need to do is make your change and test it before submitting a pull request for review.
|
||||||
|
Below is the general structure of the repo and where you may want to make your change. One you have
|
||||||
|
made your change see the [testing documentation](/contributing/testing) for more on how to test your change.
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
/yoga
|
||||||
|
|-- yoga # Home to the main Yoga codebase written in C++. Any algorithmic changes should be made here
|
||||||
|
|-- lib # Yoga external dependencies. Be thoughtful adding any new ones
|
||||||
|
|-- tests # Yoga's C++ test suite. Both manaul and generated tests
|
||||||
|
|-- gentest
|
||||||
|
| |-- fixtures # html fixtures for generated tests
|
||||||
|
|-- java
|
||||||
|
| |-- com/facebook/yoga # Java binding code
|
||||||
|
| |-- jni # JNI binding code
|
||||||
|
|-- yogacore # Android bindings without View support
|
||||||
|
|-- android # Android View bindings
|
||||||
|
|-- YogaKit # iOS UIView bindings
|
||||||
|
|-- javascript # emscripten / javascript bindings
|
||||||
|
|-- csharp # .NET bindings in c#
|
||||||
|
```
|
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
path: "contributing/running-the-test-suite"
|
|
||||||
title: "Running the Test Suite"
|
|
||||||
hasPlayground: false
|
|
||||||
---
|
|
||||||
|
|
||||||
## Running the Test Suite
|
|
45
website/contents/contributing/testing.md
Normal file
45
website/contents/contributing/testing.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
path: "contributing/testing"
|
||||||
|
title: "Testing"
|
||||||
|
hasPlayground: false
|
||||||
|
---
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
|
||||||
|
Yoga tries to be as close as possible to chrome in its flexbox behaviour.
|
||||||
|
To ensure this most of Yoga's test suite is automatically generateded from
|
||||||
|
running the corresponding layout in chrome using a webdriver which then generates
|
||||||
|
C++ test which asserts that Yoga will produce matching outputs for that layout.
|
||||||
|
|
||||||
|
## Running the Test Suite
|
||||||
|
|
||||||
|
1. Yoga builds with [buck](https://buckbuild.com). Follow their documentation to get up and running.
|
||||||
|
2. For testing Yoga relies on [gtest](https://github.com/google/googletest) as a submodule. After cloning Yoga run `git submodule init` followed by `git submodule update`.
|
||||||
|
3. In a terminal from the root of your Yoga checkout run `buck test //:yoga`.
|
||||||
|
|
||||||
|
## Adding a Test
|
||||||
|
|
||||||
|
Instead of manually writing a test which ensures parity with web implementations
|
||||||
|
of Flexbox we make use of a generated test suite. We use `gentest/gentest.rb` to
|
||||||
|
generate this test suite. Write the html which you want to verify in Yoga and put
|
||||||
|
it in the `gentest/fixtures` folder, such as the following.
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div id="my_test" style="width: 100px; height: 100px; align-items: center;">
|
||||||
|
<div style="width: 50px; height: 50px;"></div>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
Run `gentest/gentest.rb` to generate test code and re-run `buck test //:yoga`
|
||||||
|
to validate the behavior. One test case will be generated for every root `div`
|
||||||
|
in the input html with the string in the `id` corresponding to the test name.
|
||||||
|
|
||||||
|
You may need to install the latest watir gem (`gem install watir`) and
|
||||||
|
[ChromeDriver](https://sites.google.com/a/chromium.org/chromedriver/) to
|
||||||
|
run `gentest/gentest.rb` Ruby script.
|
||||||
|
|
||||||
|
## Manual test
|
||||||
|
|
||||||
|
For some aspects of Yoga we cannot generate a test using the test generation
|
||||||
|
infrastructure described earlier. For these cases we manually write a test in
|
||||||
|
the `/tests` directory.
|
Reference in New Issue
Block a user