Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

APIとテストに変更がなければ、常に同じドキュメントを生成できるようにしたい #20

Conversation

meru-akimbo
Copy link
Contributor

jenkinsでのテストの成功時に自動でドキュメントを生成し、差分があればcommitするということをやりたいと考えているのですが、
apiの側でjsonのソートを事前に行わない限り、テストを実行するたびにjsonの要素の順番が違うだけの意味のない差分が生まれてしまい困っています。

Test::JsonApi::Autodocの側で考慮して欲しいと感じたので、
Test::JsonAPI::Autodoc::Request#parseでのto_jsonの呼び出しの際に、canonicalを指定し、apiが同じ意味のjsonを返すのならば、
常に同じドキュメントが作成できるようにしました。

@coveralls
Copy link

Coverage Status

Coverage remained the same at 96.76% when pulling 16afcfa on meru-akimbo:feature/can_generate_same_document into d2ad84d on moznion:master.

@moznion
Copy link
Owner

moznion commented Feb 18, 2015

アレ,これって
https://github.com/moznion/Test-JsonAPI-Autodoc/blob/master/lib/Test/JsonAPI/Autodoc/Request.pm#L73
とかで対応してると思ったんですがどうでしょうか.

Request Parameters が順不同に出力されるというのが手元で再現しないので,サンプルコードとかあると嬉しいです.

@meru-akimbo
Copy link
Contributor Author

いろいろ調べたところ、結論としてこのpull requestでは間違った部分を修正したcommitを送ってしまっていたようでした、すみません...
検証、修正後にpull request用のcommitを作り直した際にミスをして、違う箇所を修正したcommitを作成していたようでした。
作業環境の都合もあり、少し横着なやり肩をしてしまっていたので、送信前に気付くことができず、失礼いたしました。

本来修正すべき箇所は
https://github.com/moznion/Test-JsonAPI-Autodoc/blob/master/lib/Test/JsonAPI/Autodoc/Response.pm#L20
の部分で、ここにcanonicalを指定する必要がありました。
こちらはsortされていないようで、生成されたドキュメントのResponseのjsonの部分が実行の度に差分が出てしまうようです。

雑ですが、Test::JsonAPI::Autodocのテストを流用して再現できるコードを書いてみました。
https://gist.github.com/meru-akimbo/8b2b8ed5ff7c0c419fac

このテストを実行すると、Responseのjsonのhogeの2つの要素がランダムな順番でドキュメントに出力されるので、
1/2の確率で通らないと思います。

このpull request自体はいったんcloseして、
またResponseの部分を修正したものをまた別途pull requestさせていただこうかと思います。
ご迷惑おかけいたしました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants