2014-11-28 4 views
2

요리 책에서 나는 bash/실행 리소스와 가드를위한 유닉스 명령어를 빌드하는 방법을 공유하는 Rds :: Checks 클래스를 정의했다. LWPR 제공 업체, 조리법 및 chefspec 테스트 파일에주방 서버 테스트에서 요리 책 라이브러리를 요구하는 법

module Rds 
class Checks 
    class << self 

    def ssh_config_entry_present host, config_file, key_name 
     "cat #{config_file} | grep #{key_name}" 
    end 

    def redmine_migrated user, pass, name 
     "if [ `mysql -u#{user} -p#{pass} -e 'select count(id) FROM #{name}.users;' | sed -n '2 p'` -gt 0 ]; then echo '0'; else echo '1'; fi" 
    end 

    end 
end 
end 

가 문제없이로드,하지만 난 kitchen verify 통해 serverspec 내에서 사용할 때 오류가 제기 : 파일 라이브러리/checks.rb의 샘플입니다.

[email protected]:~/cookbooks/rds$ cat test/integration/install/serverspec/localhost/install_spec.rb 
... 
    it 'do migrations' do 
     cmd = Rds::Checks.redmine_migrated 
     expect(command(cmd).stdout).to eq 0 
    end 
... 


[email protected]:~/cookbooks/rds$ kitchen verify 

... 

    NameError: 
     uninitialized constant Rds 

내가 따로 테스트 할 수 단위 및 통합 테스트에 그들에 대해 걱정하지 않도록 공통 레이어에 bash는/쉬 명령을 구축 방법을 계속 정말 좋아하는 것 당신은해야 할 것입니다

답변

2

매우 수동으로로드하십시오, 아마로드 경로에 요리 책 데이터를 보유하고 임시 폴더를 추가, 나는 그것이 /tmp/kitchen/cookbooks 아래라고 생각합니다. 올바른 libraries/ 폴더를 추가 한 다음 평소대로 필요합니다. 전반적으로 수렴과 검증 단계는 테스트 키친이 요리사가 아닌 다른 것들과 함께 사용될 수 있으므로 서로 관련이 없습니다.

Chef 수렴 컨텍스트에서 테스트를 실행하는 minitest handler 또는 유사한 작업을 수행하는 audit mode proposal과 같은 것을 볼 수 있습니다.

그 중 하나와 같은 것을 사용하면 요리 책 자체에 테스트를 작성하므로 실제로 컨버전스가 노드를 수렴하여 테스트를 실행하고, 검증이 필요하지 않거나 추가로 실행될 수 있습니다. 외부 테스트.

+0

이 라이브러리를 보석으로 공유하고이를 Gemfile에 추가하는 해결책 일 수 있습니까? – sekipaolo

+0

물론 더 많은 작업이 필요합니다. 당신은 busser-serverspec이 그렇게 맞춤 보석을 설치하도록 강요 할 수 있지만, 그렇게 쉬운 것은 아닙니다. – coderanger

+0

busser-rspec 및 busser-serverspec은 Gemfile을 허용하므로 사용자 지정 gem을 설치하도록 강요하는 것은 그리 좋지 않을 것입니다. – Martin