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
|
||||
---
|
||||
|
||||
## 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