2017-02-23 4 views
3

Ich habe ein Problem mit Serverspec. Ich versuche die installierte Paketversion auf Ubuntu zu überprüfen.Serverspec überprüft die Paketversion nicht korrekt

Ich benutze diesen Code:

describe 'java packages' do 
    it 'package openjdk-9-jre should be installed with the correct version' do 
    expect(package('openjdk-9-jre')).to be_installed.with_version('9~b114-0ubuntu1') 
    end 
end 

Serverspec run Kommando dpkg-Abfrage-Paket zu prüfen, aber entkommen tilda Charakter und es funktioniert nicht. serverspec läuft:

dpkg-query -f '${Status} ${Version}' -W openjdk-9-jre | grep -E '^(install|hold) ok installed 9\\~b114-0ubuntu1$' 

statt

dpkg-query -f '${Status} ${Version}' -W openjdk-9-jre | grep -E '^(install|hold) ok installed 9~b114-0ubuntu1$' 

Wie kann ich dieses Problem beheben?

Antwort

4

Das Problem ist hier: https://github.com/mizzy/specinfra/blob/92ccc19714ead956589127c40e3cd65faf38cb8b/lib/specinfra/command/debian/base/package.rb#L6.

Specinfra entkommt die Zeichen in der with_version Kette als #{Regexp.escape(escape(version))} anstelle von #{Regexp.escape(version)). Dies würde erfordern, dass ein PR zu Specinfra aufgrund der Specinfra/Serverspec-Beitragsrichtlinie repariert wird. Ich kann dies auf meine Aufgabenliste setzen und Sie benachrichtigen, wenn ich fertig bin, da ich ein aktuelles Specinfra-Fork beibehalte und zu beiden beitrage, damit ich die Codebasis kenne.

In der Zwischenzeit müssen Sie eine command Matcher-Problemumgehung durchführen.

describe 'java packages' do 
    it 'package openjdk-9-jre should be installed with the correct version' do 
    describe command("dpkg-query -f '${Status} ${Version}' -W openjdk-9-jre") do 
     its(:stdout) { is_expected.to match('^(install|hold) ok installed 9\~b114\-0ubuntu1$') } 
    end 
    end 
end 

Specinfra PR: https://github.com/mizzy/specinfra/pull/608

+0

Gut, Dank wird es sein, grat, wenn dieses Problem behoben wird. :) – esio

+0

Es sieht so aus, als wäre dies in https://github.com/mizzy/serverspec/pull/316/files in ServerSpec behoben worden und scheint für mich zu funktionieren. Nicht sicher, ob es möglich ist, ein '> =' zu tun oder ob es nur> oder dragon788

+0

@ dragon788 Bitte beachten Sie den Link in der Antwort auf die PR, wo ich es behoben habe. –

Verwandte Themen