상세 컨텐츠

본문 제목

오픈소스 기여의 첫 걸음. Polymer : paper-countries의 버그 수정 및 pull request

IT/프로그래밍

by James Lee. 2017. 4. 12. 23:23

본문

현상 : 거주 국가를 선택해주는 오픈소스가 크롬 브라우저에서 비정상적으로 동작한다.
몇 가지 국가(ex : China, Taiwan ..)에 마우스오버시 클릭하지 않았는데 저절로 선택이 되고, 값이 정상적으로 바인딩되지 않는다.

파이어폭스 브라우저에서는 정상적으로 동작하는 것을 확인하였다.

해당 오픈소스의 데모 사이트(https://www.webcomponents.org/element/bluewatertracks/paper-countries/demo/demo/index.html)에서도 동일한 현상이 발생하는 것으로 보아 라이브러리 내의 자체 오류라고 판단된다.

정상 동작 (파이어폭스)



비정상 (크롬)





원인이 되는 상황을 재현해보니 검색어와 매칭되는 국가의 이름이 완전히 같은 경우 정상적으로 동작하지 않는 것이다.
  • 국가 china, 검색어 chin -> 정상 동작
  • 국가 china, 검색어 china -> 완전 일치, 비정상 동작

이를 처리해주는 코드를 찾아보니 아래와 같았는데 잘못된 로직으로 처리되고 있었다.



비정상적으로 동작하는 경우 country의 값
Object {code: "CN", name: "China"}



국가 이름이 일치해서 객체에 정상적으로 값을 넣었으면 종료하면 되는데 이후에도 로직을 계속 돌려서 country에 빈 객체를 대입하고 있다.

정상적으로 동작하는 경우 country의 값
Object {code: "cn", name: "China"}







해당 로직을 수정해서 pull request 요청을 하였고. 성공적으로 merge되었다.

대단한 일은 아니었지만 오픈소스 기여의 첫 걸음이라 괜히 기분이 좋았다.
그나저나 코드를 열어보니 기본적인 안티 패턴이 생각보다 많이 보여서 (ex : 값의 비교를 '==='가 아닌 '=='로 한다던지..) 한편으로는 오픈소스의 품질에 대해서 다시 생각해보는 계기가 되었다.

관련글 더보기

댓글 영역