Merge pull request #7852 from MikeMcQuaid/retry-ci
spec_helper: retry failing CI tests.
This commit is contained in:
commit
b23e0ce85c
@ -71,9 +71,82 @@ describe Cask::Cmd::Upgrade, :cask do
|
|||||||
expect(local_transmission_path).to be_a_directory
|
expect(local_transmission_path).to be_a_directory
|
||||||
expect(local_transmission.versions).to include("2.60")
|
expect(local_transmission.versions).to include("2.60")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'updates "auto_updates" and "latest" Casks when their tokens are provided in the command line' do
|
||||||
|
local_caffeine = Cask::CaskLoader.load("local-caffeine")
|
||||||
|
local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app")
|
||||||
|
auto_updates = Cask::CaskLoader.load("auto-updates")
|
||||||
|
auto_updates_path = Cask::Config.global.appdir.join("MyFancyApp.app")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
|
||||||
|
expect(auto_updates).to be_installed
|
||||||
|
expect(auto_updates_path).to be_a_directory
|
||||||
|
expect(auto_updates.versions).to include("2.57")
|
||||||
|
|
||||||
|
described_class.run("local-caffeine", "auto-updates")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.3")
|
||||||
|
|
||||||
|
expect(auto_updates).to be_installed
|
||||||
|
expect(auto_updates_path).to be_a_directory
|
||||||
|
expect(auto_updates.versions).to include("2.61")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "with --greedy it checks additional Casks" do
|
describe "with --greedy it checks additional Casks" do
|
||||||
|
it 'includes the Casks with "auto_updates true" or "version latest"' do
|
||||||
|
local_caffeine = Cask::CaskLoader.load("local-caffeine")
|
||||||
|
local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app")
|
||||||
|
auto_updates = Cask::CaskLoader.load("auto-updates")
|
||||||
|
auto_updates_path = Cask::Config.global.appdir.join("MyFancyApp.app")
|
||||||
|
local_transmission = Cask::CaskLoader.load("local-transmission")
|
||||||
|
local_transmission_path = Cask::Config.global.appdir.join("Transmission.app")
|
||||||
|
version_latest = Cask::CaskLoader.load("version-latest")
|
||||||
|
version_latest_path_1 = Cask::Config.global.appdir.join("Caffeine Mini.app")
|
||||||
|
version_latest_path_2 = Cask::Config.global.appdir.join("Caffeine Pro.app")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
|
||||||
|
expect(auto_updates).to be_installed
|
||||||
|
expect(auto_updates_path).to be_a_directory
|
||||||
|
expect(auto_updates.versions).to include("2.57")
|
||||||
|
|
||||||
|
expect(local_transmission).to be_installed
|
||||||
|
expect(local_transmission_path).to be_a_directory
|
||||||
|
expect(local_transmission.versions).to include("2.60")
|
||||||
|
|
||||||
|
expect(version_latest).to be_installed
|
||||||
|
expect(version_latest_path_1).to be_a_directory
|
||||||
|
expect(version_latest_path_2).to be_a_directory
|
||||||
|
expect(version_latest.versions).to include("latest")
|
||||||
|
|
||||||
|
described_class.run("--greedy")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.3")
|
||||||
|
|
||||||
|
expect(auto_updates).to be_installed
|
||||||
|
expect(auto_updates_path).to be_a_directory
|
||||||
|
expect(auto_updates.versions).to include("2.61")
|
||||||
|
|
||||||
|
expect(local_transmission).to be_installed
|
||||||
|
expect(local_transmission_path).to be_a_directory
|
||||||
|
expect(local_transmission.versions).to include("2.61")
|
||||||
|
|
||||||
|
expect(version_latest).to be_installed
|
||||||
|
expect(version_latest_path_1).to be_a_directory
|
||||||
|
expect(version_latest_path_2).to be_a_directory
|
||||||
|
expect(version_latest.versions).to include("latest")
|
||||||
|
end
|
||||||
|
|
||||||
it 'does not include the Casks with "auto_updates true" when the version did not change' do
|
it 'does not include the Casks with "auto_updates true" when the version did not change' do
|
||||||
cask = Cask::CaskLoader.load("auto-updates")
|
cask = Cask::CaskLoader.load("auto-updates")
|
||||||
cask_path = cask.config.appdir.join("MyFancyApp.app")
|
cask_path = cask.config.appdir.join("MyFancyApp.app")
|
||||||
@ -97,6 +170,179 @@ describe Cask::Cmd::Upgrade, :cask do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "dry run upgrade" do
|
||||||
|
let(:installed) {
|
||||||
|
[
|
||||||
|
"outdated/local-caffeine",
|
||||||
|
"outdated/local-transmission",
|
||||||
|
"outdated/auto-updates",
|
||||||
|
"outdated/version-latest",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
before do
|
||||||
|
installed.each { |cask| Cask::Cmd::Install.run(cask) }
|
||||||
|
|
||||||
|
allow_any_instance_of(described_class).to receive(:verbose?).and_return(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'without --greedy it ignores the Casks with "version latest" or "auto_updates true"' do
|
||||||
|
it "would update all the installed Casks when no token is provided" do
|
||||||
|
local_caffeine = Cask::CaskLoader.load("local-caffeine")
|
||||||
|
local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app")
|
||||||
|
local_transmission = Cask::CaskLoader.load("local-transmission")
|
||||||
|
local_transmission_path = Cask::Config.global.appdir.join("Transmission.app")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
|
||||||
|
expect(local_transmission).to be_installed
|
||||||
|
expect(local_transmission_path).to be_a_directory
|
||||||
|
expect(local_transmission.versions).to include("2.60")
|
||||||
|
|
||||||
|
described_class.run("--dry-run")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
expect(local_caffeine.versions).not_to include("1.2.3")
|
||||||
|
|
||||||
|
expect(local_transmission).to be_installed
|
||||||
|
expect(local_transmission_path).to be_a_directory
|
||||||
|
expect(local_transmission.versions).to include("2.60")
|
||||||
|
expect(local_transmission.versions).not_to include("2.61")
|
||||||
|
end
|
||||||
|
|
||||||
|
it "would update only the Casks specified in the command line" do
|
||||||
|
local_caffeine = Cask::CaskLoader.load("local-caffeine")
|
||||||
|
local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app")
|
||||||
|
local_transmission = Cask::CaskLoader.load("local-transmission")
|
||||||
|
local_transmission_path = Cask::Config.global.appdir.join("Transmission.app")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
|
||||||
|
expect(local_transmission).to be_installed
|
||||||
|
expect(local_transmission_path).to be_a_directory
|
||||||
|
expect(local_transmission.versions).to include("2.60")
|
||||||
|
|
||||||
|
described_class.run("--dry-run", "local-caffeine")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
expect(local_caffeine.versions).not_to include("1.2.3")
|
||||||
|
|
||||||
|
expect(local_transmission).to be_installed
|
||||||
|
expect(local_transmission_path).to be_a_directory
|
||||||
|
expect(local_transmission.versions).to include("2.60")
|
||||||
|
expect(local_transmission.versions).not_to include("2.61")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'would update "auto_updates" and "latest" Casks when their tokens are provided in the command line' do
|
||||||
|
local_caffeine = Cask::CaskLoader.load("local-caffeine")
|
||||||
|
local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app")
|
||||||
|
auto_updates = Cask::CaskLoader.load("auto-updates")
|
||||||
|
auto_updates_path = Cask::Config.global.appdir.join("MyFancyApp.app")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
|
||||||
|
expect(auto_updates).to be_installed
|
||||||
|
expect(auto_updates_path).to be_a_directory
|
||||||
|
expect(auto_updates.versions).to include("2.57")
|
||||||
|
|
||||||
|
described_class.run("--dry-run", "local-caffeine", "auto-updates")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
expect(local_caffeine.versions).not_to include("1.2.3")
|
||||||
|
|
||||||
|
expect(auto_updates).to be_installed
|
||||||
|
expect(auto_updates_path).to be_a_directory
|
||||||
|
expect(auto_updates.versions).to include("2.57")
|
||||||
|
expect(auto_updates.versions).not_to include("2.61")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "with --greedy it checks additional Casks" do
|
||||||
|
it 'would include the Casks with "auto_updates true" or "version latest"' do
|
||||||
|
local_caffeine = Cask::CaskLoader.load("local-caffeine")
|
||||||
|
local_caffeine_path = Cask::Config.global.appdir.join("Caffeine.app")
|
||||||
|
auto_updates = Cask::CaskLoader.load("auto-updates")
|
||||||
|
auto_updates_path = Cask::Config.global.appdir.join("MyFancyApp.app")
|
||||||
|
local_transmission = Cask::CaskLoader.load("local-transmission")
|
||||||
|
local_transmission_path = Cask::Config.global.appdir.join("Transmission.app")
|
||||||
|
version_latest = Cask::CaskLoader.load("version-latest")
|
||||||
|
version_latest_path_1 = Cask::Config.global.appdir.join("Caffeine Mini.app")
|
||||||
|
version_latest_path_2 = Cask::Config.global.appdir.join("Caffeine Pro.app")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
|
||||||
|
expect(auto_updates).to be_installed
|
||||||
|
expect(auto_updates_path).to be_a_directory
|
||||||
|
expect(auto_updates.versions).to include("2.57")
|
||||||
|
|
||||||
|
expect(local_transmission).to be_installed
|
||||||
|
expect(local_transmission_path).to be_a_directory
|
||||||
|
expect(local_transmission.versions).to include("2.60")
|
||||||
|
|
||||||
|
expect(version_latest).to be_installed
|
||||||
|
expect(version_latest_path_1).to be_a_directory
|
||||||
|
expect(version_latest.versions).to include("latest")
|
||||||
|
|
||||||
|
described_class.run("--greedy", "--dry-run")
|
||||||
|
|
||||||
|
expect(local_caffeine).to be_installed
|
||||||
|
expect(local_caffeine_path).to be_a_directory
|
||||||
|
expect(local_caffeine.versions).to include("1.2.2")
|
||||||
|
expect(local_caffeine.versions).not_to include("1.2.3")
|
||||||
|
|
||||||
|
expect(auto_updates).to be_installed
|
||||||
|
expect(auto_updates_path).to be_a_directory
|
||||||
|
expect(auto_updates.versions).to include("2.57")
|
||||||
|
expect(auto_updates.versions).not_to include("2.61")
|
||||||
|
|
||||||
|
expect(local_transmission).to be_installed
|
||||||
|
expect(local_transmission_path).to be_a_directory
|
||||||
|
expect(local_transmission.versions).to include("2.60")
|
||||||
|
expect(local_transmission.versions).not_to include("2.61")
|
||||||
|
|
||||||
|
expect(version_latest).to be_installed
|
||||||
|
expect(version_latest_path_2).to be_a_directory
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not include the Casks with "auto_updates true" when the version did not change' do
|
||||||
|
cask = Cask::CaskLoader.load("auto-updates")
|
||||||
|
cask_path = cask.config.appdir.join("MyFancyApp.app")
|
||||||
|
|
||||||
|
expect(cask).to be_installed
|
||||||
|
expect(cask_path).to be_a_directory
|
||||||
|
expect(cask.versions).to include("2.57")
|
||||||
|
|
||||||
|
described_class.run("--dry-run", "auto-updates", "--greedy")
|
||||||
|
|
||||||
|
expect(cask).to be_installed
|
||||||
|
expect(cask_path).to be_a_directory
|
||||||
|
expect(cask.versions).to include("2.57")
|
||||||
|
expect(cask.versions).not_to include("2.61")
|
||||||
|
|
||||||
|
described_class.run("--dry-run", "auto-updates", "--greedy")
|
||||||
|
|
||||||
|
expect(cask).to be_installed
|
||||||
|
expect(cask_path).to be_a_directory
|
||||||
|
expect(cask.versions).to include("2.57")
|
||||||
|
expect(cask.versions).not_to include("2.61")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "failed upgrade" do
|
context "failed upgrade" do
|
||||||
let(:installed) {
|
let(:installed) {
|
||||||
[
|
[
|
||||||
|
|||||||
@ -6,6 +6,34 @@ describe Cask::Pkg, :cask do
|
|||||||
let(:empty_response) { double(stdout: "", plist: { "volume" => "/", "install-location" => "", "paths" => {} }) }
|
let(:empty_response) { double(stdout: "", plist: { "volume" => "/", "install-location" => "", "paths" => {} }) }
|
||||||
let(:pkg) { described_class.new("my.fake.pkg", fake_system_command) }
|
let(:pkg) { described_class.new("my.fake.pkg", fake_system_command) }
|
||||||
|
|
||||||
|
it "removes files and dirs referenced by the pkg" do
|
||||||
|
some_files = Array.new(3) { Pathname.new(Tempfile.new("plain_file").path) }
|
||||||
|
allow(pkg).to receive(:pkgutil_bom_files).and_return(some_files)
|
||||||
|
|
||||||
|
some_specials = Array.new(3) { Pathname.new(Tempfile.new("special_file").path) }
|
||||||
|
allow(pkg).to receive(:pkgutil_bom_specials).and_return(some_specials)
|
||||||
|
|
||||||
|
some_dirs = Array.new(3) { mktmpdir }
|
||||||
|
allow(pkg).to receive(:pkgutil_bom_dirs).and_return(some_dirs)
|
||||||
|
|
||||||
|
root_dir = Pathname.new(mktmpdir)
|
||||||
|
allow(pkg).to receive(:root).and_return(root_dir)
|
||||||
|
|
||||||
|
allow(pkg).to receive(:forget)
|
||||||
|
|
||||||
|
pkg.uninstall
|
||||||
|
|
||||||
|
some_files.each do |file|
|
||||||
|
expect(file).not_to exist
|
||||||
|
end
|
||||||
|
|
||||||
|
some_dirs.each do |dir|
|
||||||
|
expect(dir).not_to exist
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(root_dir).not_to exist
|
||||||
|
end
|
||||||
|
|
||||||
context "pkgutil" do
|
context "pkgutil" do
|
||||||
it "forgets the pkg" do
|
it "forgets the pkg" do
|
||||||
allow(fake_system_command).to receive(:run!).with(
|
allow(fake_system_command).to receive(:run!).with(
|
||||||
|
|||||||
@ -78,6 +78,17 @@ RSpec.configure do |config|
|
|||||||
c.max_formatted_output_length = 200
|
c.max_formatted_output_length = 200
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Use rspec-retry in CI.
|
||||||
|
if ENV["CI"]
|
||||||
|
config.verbose_retry = true
|
||||||
|
config.display_try_failure_messages = true
|
||||||
|
config.default_retry_count = 2
|
||||||
|
|
||||||
|
config.around(:each, :needs_network) do |example|
|
||||||
|
example.run_with_retry retry: 3, retry_wait: 3
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Never truncate output objects.
|
# Never truncate output objects.
|
||||||
RSpec::Support::ObjectFormatter.default_instance.max_formatted_output_length = nil
|
RSpec::Support::ObjectFormatter.default_instance.max_formatted_output_length = nil
|
||||||
|
|
||||||
@ -124,10 +135,6 @@ RSpec.configure do |config|
|
|||||||
skip "Requires network connection." unless ENV["HOMEBREW_TEST_ONLINE"]
|
skip "Requires network connection." unless ENV["HOMEBREW_TEST_ONLINE"]
|
||||||
end
|
end
|
||||||
|
|
||||||
config.around(:each, :needs_network) do |example|
|
|
||||||
example.run_with_retry retry: 3, retry_wait: 1
|
|
||||||
end
|
|
||||||
|
|
||||||
config.before(:each, :needs_svn) do
|
config.before(:each, :needs_svn) do
|
||||||
skip "subversion not installed." unless quiet_system "#{HOMEBREW_SHIMS_PATH}/scm/svn", "--version"
|
skip "subversion not installed." unless quiet_system "#{HOMEBREW_SHIMS_PATH}/scm/svn", "--version"
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user