48 lines
1.4 KiB
Ruby
48 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Gitlab::ManifestImport::Manifest do
|
|
let(:file) { File.open(Rails.root.join('spec/fixtures/aosp_manifest.xml')) }
|
|
let(:manifest) { described_class.new(file) }
|
|
|
|
describe '#valid?' do
|
|
context 'valid file' do
|
|
it { expect(manifest.valid?).to be true }
|
|
end
|
|
|
|
context 'missing or invalid attributes' do
|
|
let(:file) { Tempfile.new('foo') }
|
|
|
|
before do
|
|
content = <<~EOS
|
|
<manifest>
|
|
<remote review="invalid-url" />
|
|
<project name="platform/build"/>
|
|
</manifest>
|
|
EOS
|
|
|
|
file.write(content)
|
|
file.rewind
|
|
end
|
|
|
|
it { expect(manifest.valid?).to be false }
|
|
|
|
describe 'errors' do
|
|
before do
|
|
manifest.valid?
|
|
end
|
|
|
|
it { expect(manifest.errors).to include('Make sure a <remote> tag is present and is valid.') }
|
|
it { expect(manifest.errors).to include('Make sure every <project> tag has name and path attributes.') }
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#projects' do
|
|
it { expect(manifest.projects.size).to eq(660) }
|
|
it { expect(manifest.projects[0][:name]).to eq('platform/build') }
|
|
it { expect(manifest.projects[0][:path]).to eq('build/make') }
|
|
it { expect(manifest.projects[0][:url]).to eq('https://android-review.googlesource.com/platform/build') }
|
|
end
|
|
end
|