테스트 실행 시 DiscourseRedis::Connector 실패 관련 도움 요청

지난 며칠 동안 로컬에서 테스트를 실행하려고 하면 다음과 같은 오류가 발생합니다:

$ bundle exec rake autospec

...

An error occurred while loading ./spec/components/discourse_redis_spec.rb.
Failure/Error:
    describe DiscourseRedis::Connector do
      let(:connector) { DiscourseRedis::Connector.new(config) }
  
      after do
        fallback_handler.master = true
      end
  
      it 'should return the master config when master is up' do
        expect(connector.resolve).to eq(config)
      end

NameError:
  uninitialized constant DiscourseRedis::Connector
  Did you mean?  ConnectionPool

테스트를 실행할 수 없게 된 원인이 될 수 있는 실수로 변경한 사항이 무엇인지 잘 모르겠습니다. Redis는 확실히 실행 중이므로, Redis가 실행되지 않아서 발생하는 부수적인 문제가 아닙니다.

tests-passed의 깨끗한 체크아웃에서 테스트를 실행해도 이 오류가 발생하므로, 제 환경 설정과 관련된 문제인 것 같습니다. 하지만 어디부터 확인해야 할지 모르겠습니다.

제안이 있으신가요?

깨진 스펙이 커밋된 것으로 보입니다. 이 커밋에서 깨진 스펙을 비활성화했습니다:

하지만 후속 조치로 두 가지가 필요합니다:

  1. 깨진 스펙 수정
  2. 향후 다시 이러한 스펙이 커밋되지 않도록 방지

확인해 주셔서 감사합니다! 간헐적인 문제 때문에 깨진 스펙이 tests-passed에 머무르게 된 건가요?

코드 풀을 받아서 ac9577bcc7b69593bcdd204368d35492fc0cee15 커밋에서 로컬 환경에 동일한 에러가 그대로 발생하고 있습니다. 그래서 문제점이 하나 이상인 것 같습니다. :confused:

죄송합니다, 제 실수였습니다. :facepalm: 푸시하는 걸 깜빡했네요. 이전 게시글에 올바른 커밋으로 업데이트해 두었습니다.

그리고 네, 깨진 테스트가 tests-passed에 들어간 건 맞습니다. 다행히 Discourse 자체에는 문제가 없습니다 — 애플리케이션의 버그가 아니라 테스트를 업데이트해야 하는 상황이었습니다. 그래도 앞으로 이런 일이 다시 일어나지 않도록 막을 계획입니다.

그렇게 해결했습니다! 이제 테스트가 잘 실행되고 있습니다.

처음부터 물어보지 않은 것 죄송합니다. 저는 Ubuntu가 아니라 Fedora에서 작업하고 있어서, 주류 Discourse 개발자들과는 환경이 다를 수 있다는 편견이 있었습니다. 제 머신에는 뭔가 환경적인 차이가 있어서 그런 거라고 생각했거든요. 테스트를 실행할 수 있게 해 주셔서 감사합니다!

커밋 25db91e35180b2707ca4a9f7ffd173823f86f18d에서 해당 테스트를 비활성화하는 것에 대해 의견이 갈리고 있는 것 같습니다.

그러나 문제가 해결된 후속 작업이 있기 때문은 아닙니다. master에 해당하는 d775338d637d9ef3843acf227a138e8f11352151을 테스트했을 때, 제가 코드를 가져온 시점에는 테스트가 통과했지만 문제가 다시 발생했기 때문입니다.

적어도 저는 로컬에서 테스트를 통과시켰고, migrate 스크립트에 추가한 새로운 안전 메커니즘을 처리하기 위해 어떤 부분을 다르게 해야 하는지 파악했습니다.

@tgxworld 충돌을 해결할 계획은 무엇인가요? 그 사이에 테스트가 필요할 때, 제 브랜치의 베이스에 b1114b9a20343525c805d7339bd64954965a12f9를 임시로 cherry-pick하는 것으로 충분할까요?

테스트는 제거되어야 할 것이었는데, CI에 오류를 만나면 실패하지 않는 버그가 있어서 제가 그 사실을 놓쳤습니다. 이 문제는 다음 커밋에서 수정되었습니다.