Twitter4J のパッチを作ってプルリク送るまでの流れメモ

↑の修正って所詮は「can_dm っていう値を取得できるようにするだけの対応」なので修正は たったこれだけ なんですが、Twitter4Jのソースをgithubでforkしてcloneしたり開発環境用意したりテストしたりするのが大変面倒だったので一連をメモとして書いておきます。*1

開発環境は Windows7/TortoiseGit/Eclipse 4.3 です。

  • EclipseMavenを扱う準備
    • Eclipse にm2eを導入する*2
    • Eclipse で新しいWorkspaceを開き、インポート → Maven|既存 Maven プロジェクト でプロジェクト作成
  • ソース修正
    • can_dm の対応をする。
    • 実装の RelationshipJSONImpl.java と インタフェースの Relationship.java を修正し、それを実装している appengine 用の LazyRelationship.java も直した。
  • テスト
    • なんとなく Eclipse上で twitter4j-core プロジェクトの 実行|Maven test を実行するもことごとく失敗w
    • どうやら Twitter4J のテストには test.properties が必要っぽい。参考:Twitter4jソースコードリーディング
    • test.properties-template をもとに test.properties を必死で作る。
      • oauth.consumerKey と oauth.consumerSecret は自分のアプリのものを設定する。
      • 必要なユーザーのaccessTokenとaccessTokenSecretを取得する。twitter4j-examples の getAccessToken.cmd を実行して認証し、修正された twitter4j.properties からtokenを読み取るみたいな流れを、必要なユーザー分だけ繰り返す。禿げるほどめんどいw
    • 修正前のテストを実行する
      • 今回は FriendsFollowersResourcesTest.java だったのでこれを普通に JUnit で実行してあげる感じ
    • テストを修正する
    • 修正後のテストを実行する
      • ソースの修正部分に対するテストケースが通ることを確認
      • それ以外のテストケースが一部通らなかったけどユーザーの用意が不完全だったっぽい。これらを全部通すためにはメアドの作成→Twitterユーザーの作成とかでさらに数時間かかりそうだったので諦める。。
  • Examplesの修正
    • ShowFriendship.java で can_dm が確認できるようにした
    • どうやら @yusuke さんのアカウントは DM 受信許可しているようなので、フォローされてないアカウントからも can_dm=true であることを確認できた。もちろん DM 受信許可してないアカウントには can_dm=false であることも確認したった。
  • gitでローカルにcommit
  • githubにpush
  • github上でプルリクエスト作成
    • すごく簡単にできて感動した!それっぽい英文を書くのが大変だったw
  • 無事マージされて完了!


とにかくテストが大変でした。今回修正した部分が「ユーザーを準備しないとテストにならない本丸部分」だったので特に苦労したのかも。

*1:あと今回 Twitter4J の JIRA がたまたま落ちていたので github だけでプルリク送りました

*2:当初は"mvn eclipse:eclipse"コマンドで変換したけど依存関係がおかしくなったのでm2eでやり直した