From 3f08e4b186bd02b37f34ccf1bc641a95f9d865ce Mon Sep 17 00:00:00 2001
From: Zeger-Jan van de Weg <zegerjan@localhost.localdomain>
Date: Thu, 1 Oct 2015 20:34:23 +0200
Subject: [PATCH] Add specs on #license

---
 CHANGELOG                      |  2 +-
 app/models/repository.rb       |  6 +++++-
 spec/models/repository_spec.rb | 11 +++++++++++
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 3d0beb0b7a..f274942f7b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -62,6 +62,7 @@ v 8.0.4
   - Fix "Assign All" button on Runner admin page
   - Fix search in Files
   - Add full project namespace to payload of system webhooks (Ricardo Band)
+  - Accept COPYING as licence file (Zeger-Jan van de Weg)
 
 v 8.0.3
   - Fix URL shown in Slack notifications
@@ -82,7 +83,6 @@ v 8.0.2
   - Fix Reply by email for non-UTF-8 messages.
   - Add option to use StartTLS with Reply by email IMAP server.
   - Allow AWS S3 Server-Side Encryption with Amazon S3-Managed Keys for backups (Paul Beattie)
-  - Accept COPYING as licence file (Zeger-Jan van de Weg)
 
 v 8.0.1
   - Remove git refs used internally by GitLab from network graph (Stan Hu)
diff --git a/app/models/repository.rb b/app/models/repository.rb
index dc7cd92674..8cd182e1b0 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -216,7 +216,11 @@ class Repository
 
       # If `licence`, `copying` and `copying.lesser` are found, return in the
       # following order: licence, copying, copying.lesser
-      licenses.find { |l| l =~ /\Alicence/i } || licenses.sort.first
+      regex = [/\Alicense(\..*)?\z/i, /\Acopying(\..{0,3})?\z/i, /\Acopying.lesser/i]
+
+      regex.map do |re|
+        licenses.find { |l| l.name =~ re }
+      end.compact.first
     end
   end
 
diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb
index 05e51532eb..60b9398847 100644
--- a/spec/models/repository_spec.rb
+++ b/spec/models/repository_spec.rb
@@ -91,4 +91,15 @@ describe Repository do
       it { expect(subject.data.lines[2]).to eq("  - Feature: Replace teams with group membership\n") }
     end
   end
+
+  describe "#license" do
+    it 'test selection preference' do
+      repository.send(:cache).expire(:license)
+      TestBlob = Struct.new(:name)
+      files = [TestBlob.new('file'), TestBlob.new('license'), TestBlob.new('copying')]
+      expect(repository.tree).to receive(:blobs).and_return(files)
+
+      expect(repository.license.name).to eq('license')
+    end
+  end
 end
-- 
2.30.9