Skip to content

Contribute

Nico Küchler edited this page Sep 3, 2016 · 26 revisions

Contribution is always welcome!

Wiki Contribution

  • [Template Element Page](Template Element Page)

Code contribution

Test before you push

Always write some tests to prove the functionality and stability for new elements and tools. Run basic tests to have a high chance that automatic build and test will not fail.

./test-roject.sh

Workflow with submodule

Intended for collaborators which has write permission but does also work if you use a fork.

Submodule gives the possibility to always change/extend this library without waiting for new releases. Alternative you can create snapshots for your own, but this would mean always to change and build your snapshot before you can use the changes in your current project.

Setup

On command line switch into your project folder and add your specific espresso-macchiato team branch as submodule

git submodule add -b collaborator/my-team git://github.com/nenick/espresso-macchiato.git

Include espresso-macchiato modules in your settings.gradle

include ':espresso-macchiato'
project(':espresso-macchiato').projectDir = new File(rootDir, "espresso-macchiato/espresso-macchiato")
include ':uiautomator-noop'
project(':uiautomator-noop').projectDir = new File(rootDir, "espresso-macchiato/uiautomator-noop")

In your modules change espresso-macchiato dependency to new submodule

androidTestCompile project(':espresso-macchiato')

Now the espresso-machiato is ready to enjoy.

Known setup issues

Dependency issues with com.android.test modules

For test module the dependency resolution is different than for application and library modules and a confusing error may popup. The solution is to exclude conflicting dependencies.

compile(project(':espresso-macchiato')) { exclude module: 'design' }

Error message

Error:(73) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Display1'.
Error:(76) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Caption'.
Error:(77) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Caption'.
Error:(80) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Caption'.
Error:(83) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Caption'.
Error:(90) Error retrieving parent for item: No resource found that matches the given name 'TextAppearance.AppCompat.Button'.

Error:(97, 5) No resource found that matches the given name: attr 'textAllCaps'.
Error:(102, 5) No resource found that matches the given name: attr 'elevation'.
Error:(113, 5) No resource found that matches the given name: attr 'backgroundTint'.
Error:(113, 5) No resource found that matches the given name: attr 'elevation'.
Error:(122, 5) No resource found that matches the given name: attr 'elevation'.
Error:(131, 5) No resource found that matches the given name: attr 'elevation'.

Register VCS root in Android Studio

To see changes for espresso-macchiato and committing them its necessary go to Settings > Version Control and add the espresso-macchiato VCS root. The espresso-macchiato VCS root should already be listed but must be selected and then press +.

Init/Update submodule

git submodule update --init --recursive

Push your changes to github

One drawback of submodules is you must push espresso-macchiato changes separately within your project. Select espresso-macchiato folder or change on command line into it and then commit/push your changes.

Sync master and collaborator branches

New clone from espresso-macchiato repository.

 git clone https://github.com/nenick/espresso-macchiato.git

Checkout collaborator branch so it can be merged.

cd espresso-macchiato
git checkout collaborator/..

You can first try out and inspect all changes with git merge --squash branchName

Merge master into collaborator branch.

git merge --no-ff master

Merge collaborator into master branch.

git checkout master
git merge --no-ff collaborator/ateam

The --no-ff option keeps the history for commits from where and when they was merged. So they can easly be analyzed and reverted if necessary.

Create release

Finish RELEASE_NOTES.md and run following command from your PC (change version!):

./gradlew :espresso-macchiato:release -Prelease.version=1.2.0

This command will do and trigger:

  1. do: check current git status for not synchronized changes
  2. do: create new release tag with given release.version
  3. do: push release tag to github
  4. trigger: circle ci to build and test the release tag
  5. trigger: circle ci to push the release artifacts to github
  6. trigger: circle ci to push the release artifacts to bintray

When last trigger was successful the release is ready to use.

As last step update the version number at: