Simplecov for Ruby 1.9 테스트 범위
6695 단어 jeweler
묘사
여기에는 더 크지만 매우 필요한 변화가 있다.Jeweler는 현재 상태에서 기본적으로 rcov gem을 추가합니다.문제는 rcov가 Ruby 1.9에서 일할 수 없다는 것이다.일반적으로 Ruby 1.9에서 테스트 커버를 위해 단순cov를 사용하는 것이 공통된 인식입니다.Rcov gem 자체도 단순cov를 확대합니다. 예를 들어.
$ruby-v
ruby 1.9.3p0 (2011-10-30 수정판 33570) [x86 64-darwin 11.2.0]
$jeweler-v
버전: 1.8.3
$gem list rcov
***로컬 보물***
rcov(0.9.11,0.9.10,0.9.8)
$jeweler--rspec--cucumber--yard jtest
창조gitignore
써레 생성하기
파일 만들기
라이센스를 작성합니다.txt
읽어보기 파일을 만듭니다.rdoc
창조서류
라이브러리 작성
lib/jtest를 만듭니다.rb
사양 작성
클래스 라이브러리/클래스 라이브러리 보조 객체를 작성합니다.rb
spec/jtest spec.rb 만들기
창조rspec
생성 기능
생성 기능/jtest.특징.
생성 기능/지원
기능/지원/환경을 만듭니다.rb
기능/단계 정의 만들기
생성 기능/단계 정의/테스트 단계.rb
보석상이 당신을 위해 보석을 준비했습니다/jtest
$cd jtest
jtest(master)$bundle 설치
가져오는 원본 인덱스http://rubygems.org/
써레 사용(0.9.2.2)
builder(3.0.0) 사용
번들 사용(1.0.21)
차이점 사용lcs(1.1.3)
json 사용(1.6.5)
오이 사용(2.7.6)
ansicolor 용어 사용(1.0.7)
오이 사용(1.1.4)
git(1.2.5) 사용
rdoc(3.12) 사용
보석상 사용(1.8.3)
로컬 확장이 있는 rcov(1.0.0) 설치
Gem::Installer::ExtensionBuildError:오류:Gem 네이티브 확장자를 생성하지 못했습니다.
/사용자/artem/.rvm/rubies/ruby-1.9.3-p0/bin/ruby-extconf.rb
****Ruby 1.9는 지원되지 않습니다.단순cov***로 전환하십시오.
Gem 파일은/Users/artem/에 계속 설치됩니다.rvm/gems/ruby-1.9.3-p0/gems/rcov-1.00 검사.
결과는/Users/artem/에 기록됩니다.rvm/gems/ruby-1.9.3-p0/gems/rcov-1.0.0/ext/rcovrt/gem_-make.바깥의
rcov(1.0.0.0)를 설치하는 중 오류가 발생하여 번들 프로그램을 계속할 수 없습니다.
바인딩하기 전에'gem install rcov-v'1.0.0'이 성공했는지 확인합니다.
다음은 단순cov입니다.
및 나열된 업데이트입니다.
$jeweler--rspec--cucumber--yard jtest
창조gitignore
써레 생성하기
파일 만들기
라이센스를 작성합니다.txt
읽어보기 파일을 만듭니다.rdoc
창조서류
라이브러리 작성
lib/jtest를 만듭니다.rb
사양 작성
클래스 라이브러리/클래스 라이브러리 보조 객체를 작성합니다.rb
spec/jtest spec.rb 만들기
창조rspec
생성 기능
생성 기능/jtest.특징.
생성 기능/지원
기능/지원/환경을 만듭니다.rb
기능/단계 정의 만들기
생성 기능/단계 정의/테스트 단계.rb
보석상이 당신을 위해 보석을 준비했습니다/jtest
cd jtest/
jtest(master)$bundle 설치
가져오는 원본 인덱스http://rubygems.org/
써레 사용(0.9.2.2)
builder(3.0.0) 사용
번들 사용(1.0.21)
차이점 사용lcs(1.1.3)
json 사용(1.6.5)
오이 사용(2.7.6)
ansicolor 용어 사용(1.0.7)
오이 사용(1.1.4)
git(1.2.5) 사용
rdoc(3.12) 사용
보석상 사용(1.8.3)
multi json(1.0.4) 사용
rspec 코어 사용(2.8.0)
rspec 기대치 사용하기 (2.8.0)
rspec 에뮬레이션 사용(2.8.0)
rspec(2.8.0) 사용
단순cov html(0.5.3) 사용
단순cov 사용(0.5.4)
사용 장소(0.7.4)
당신의 소포가 완성되었습니다!"bundle show [gemname]"을 사용하여 번들gem의 설치 위치를 확인합니다.
토론 #1
헤이, 아담, 이거 같이 놓아줘서 고마워!그래서 내가 관심 있는 것은
gem (RUBY_VERSION =~ /^1\.9/ ? "simplecov" : "rcov")
Gemfile에서 (Jeweler와 새로 생성된 프로젝트 포함) 이다. 일부 문제는 이 조건이 실행될 때 계산된 것이기 때문에 1.8로 실행하면 rcov를 얻을 수 있다. 또 다른 문제는 rcov로 gmpec에 오래 지속된다는 것이다. 만약 내가 1.8로 그것을 발표하고 1.9로 실행하는 사람이 있다면 gem install jeweler --development
이것이 문제다.이게 의미가 있나요?만약 다른 사람들이 이 점을 실현하고 있다면, 나는 아직 그들이 어떻게 했는지 확실하지 않다.
다시 말하면gem규범 자체는 모든 루비 버전(ruby 1.8 vs 1.9)의 의존 관계를 지원하지 않는다.만약 이 점이 없다면'정확'을 하기는 좀 어려울 것이다.
이게 의미가 있나요?나에게 알려주든지, 아니면 네가 이것에 대해 다른 생각을 가지고 있다면.
이런 것들을 제외하고, 비교적 작은 평론은
lib/jeweler/templates/other_tasks.erb
임무를 축소하기 위해 약간의 변화가 있는 것처럼 보인다는 것이다.eb 블록에 있기 때문에, 추가 공간이 없는 상황에서 렌더링할 수 있도록 왼쪽 열과 정렬하려고 합니다.어이, 조시,우리의 생각은 rcov와simplecov를 시종일관 함께 포함하고 실행할 때 무엇을 실행하는지 확인하는 것이다.
예를 들어 나는 실제로 루비 1.8로 쥬얼러를 구축했고 루비 1.9로 그것을 설치했다.실행할 때 평가가 정확한 경로를 선택했기 때문에 나는 어떤 문제도 겪지 않았다.
rcov에 대한 참조는 Gemfile 및 Rakefile에 나타납니다.Gemfile은 종속 항목을 설치하기 위해 bundler에서 평가합니다.일반적으로 루비 1.8과 루비 1.9를 위해 독립된gem 저장소를 유지합니다.루비 1.8이 설치된 쥬얼러는 루비 1.8과 함께 사용하고, 루비 1.9가 설치된 쥬얼러는 루비 1.9와 함께 사용한다.
현재, rcov가 Rakefile에 나타납니다.라이브러리/보석상/템플릿/기타 퀘스트.erb 들여쓰기는 Rcov가 현재 else 자문에 나타나기 때문에 다음과 같습니다.
RUBY VERSION=~/^1\.9/
코드 덮어쓰기 세부 정보 설명
작업
ENV['COVERAGE']=“true”
Rake::Task['spec'].실행
끝맺다
기타
RSpec::Core::RakeTask.신규(:rcov)do | 사양 |
spec.pattern='spec/***_spec.rb'
spec.rcov=true
끝맺다
끝맺다
런타임 시 Ruby 버전 평가는 다른 프로젝트에서 1.8 및 1.9 지원을 활성화하는 방법입니다.나는 어떤 더 깨끗한 해결 방안이 있는지 모르겠지만, 운행 시 평가는 나에게 매우 효과가 좋다.RVM을 사용하면 Ruby 버전으로 전환하여 테스트를 쉽게 수행할 수 있습니다.
이리 와봐.나는 네가 좋아할 것이라고 생각한다.이렇게 보면 코드는 아주 특정한 코드 경로를 추가했을 뿐이고 Ruby 1.9와 rcov 부분에만 사용됩니다.코드는 다른 변수에 영향을 주지 않으며 Ruby 1.9+rcov 코드 경로가 기존 조건에서는 작동하지 않습니다.
토론 #2
해명해 주셔서 감사합니다.그러나 나는 내가 잘 설명했는지 아닌지 확실하지 않다.여기에는 두 가지 질문이 있습니다.
- 1.8 또는 1.9에서 작동하는 써레
- 의존 관계를 꼼꼼히 관리하고 구축할 때 실행 중인 내용에 따라 1.8 또는 1.9 특정한 의존 관계를gems에 도입하지 마십시오
너는 적어도 첫 번째 문제를 이야기했지만, 이것은 내가 진정으로 걱정하는 두 번째 문제이다.나는 내가 어떤 것들을 조합해서 나의 뜻을 보여줄 수 있는지를 볼 것이다.
내가 이렇게 하기 전에, 나는 이 문제를 돌릴 수 있는 생각이 하나 있다.가장 중요한 것은 개발 의존 관계에 존재한다는 것이다.실제로 rcov/simplecov는 정말 개발 의존의 일종입니까?테스트 세트를 실행할 필요가 없습니다. 이것은 개발 의존 항목의 용도입니다.아마도 우리는 라크를 실행할 때만 라크가 필요하다는 것을 반영하기 위해 다른 그룹을 만들 수 있을 것이다. 예를 들어 '라크' 이다.
토론 #셋
두 번째 문제.Ruby의 발전 방식에 따라 우리는 일정 기간 동안 1.8과 1.9의 특정한 의존 관계와 공존해야 할 것이다.Jeweler는 1.8/1.9 의존 관계를 처리하는 코드인 루비 디버깅 지원을 가지고 있습니다.Rcov/Simplecov는 기본적으로 동일하게 처리됩니다.
Rcov/Simplecov의 경우 1.8/1.9 의존항은 외부gem입니다.Gemfile와 bundler가 외부gem 의존 관계를 해결합니다.이 파일만 잘 처리하면 버블러는 외부 의존 관계를 찾아낼 것이다.Rcov/Simplecov는 커버율을 테스트하는 도구이기 때문에 Rcov/Simplecov를 요청하는 GEM을 의존 요소로 간주할 수는 없습니다.rcov/simplecov에 의존하는gems의gems는 나의 상상을 초월한다.우리는 gms가 gms에 의존하고 루비 디버깅에 의존하는 것을 볼 수 있다.
Rcov/Simplecov도 개발 의존 관계에 속하는지 생각하고 있습니다.나는 Rcov/Simplecov 지원은 Jeweler가 테스트 프레임워크를 처리하는 방식과 같아야 한다고 생각한다. - Rcov--Simplecov.그러나 이것은 더 큰 토론과 더 큰 개작이다.이런 상황에서 기존 프로젝트에서 보석상 업그레이드 인원에 대한 영향을 고려해야 한다.
이렇게 말하면 Rcov/Simplecov의 존재는 개발자가 어떤 코드 부분이 테스트되지 않았는지 확인하는 데 도움을 주기 위해서이기 때문에 개발팀에 속해야 한다.
나는 Jeweler에서 Simplecov이 지지를 받기를 절대로 바란다.Simplecov은 내가 자주 사용하는 물건이다.그것을 어떻게 운행하고 Rspec과 통합하는지에 대한 세부 사항은 당신이 몇 시간 동안 알아볼 필요가 있다.여러분과 나눌 수 있을 것 같습니다.
토론 #4
bundler가 플랫폼에 특정한gems를 지원하는 것을 재발견했다.이것은 적어도 Gemfile 파일에 유용합니다!- http://gembundler.com/man/gemfile.5.html#PLATFORMS- 플랫폼 -
그러나 루비게이지 자체에는 이러한 지원이 없습니다:/개발 의존항으로 배제하는 것은 의미가 있다고 생각합니다. 따라서 rcov/simplercov는 잘못된 위치에 설치하려고 하지 마십시오.
토론 #5
물론, 당신은 이렇게 할 수 있습니다.gem'simplecov',:platforms=>:mri_19
gem'rcov',:platforms=>:mri_18
및
gem'ruby-debug19',:platforms=>:mri_19
gem'ruby debug',:platforms=>:mri_18
RUBY/helper와 RUBY/raku의 버전은 개념적으로 여전히 같다.rb.#235가 들어오면 수정
토론 #6
해야 합니다.토론 #7
cchttps://github.com/technicalpickles/jeweler/pull/255토론 #8
jeweler 2.0.0과 on은 1.9+이기 때문에 루비 버전을 삭제하고 단순cov를 사용하면 됩니다Reference
이 문제에 관하여(Simplecov for Ruby 1.9 테스트 범위), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/technicalpickles/jeweler/issues/225텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)