From 0508546fd2753ca761ed03645cf0ca6798b234b8 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 4 Jun 2019 10:28:36 +0100 Subject: [PATCH] FIX: Accept github theme urls with a trailing slash --- lib/theme_store/git_importer.rb | 1 + spec/components/theme_store/git_importer_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/lib/theme_store/git_importer.rb b/lib/theme_store/git_importer.rb index 6d8cee3c87d..673e9a45945 100644 --- a/lib/theme_store/git_importer.rb +++ b/lib/theme_store/git_importer.rb @@ -11,6 +11,7 @@ class ThemeStore::GitImporter def initialize(url, private_key: nil, branch: nil) @url = url if @url.start_with?("https://github.com") && !@url.end_with?(".git") + @url = @url.gsub(/\/$/, '') @url += ".git" end @temp_folder = "#{Pathname.new(Dir.tmpdir).realpath}/discourse_theme_#{SecureRandom.hex}" diff --git a/spec/components/theme_store/git_importer_spec.rb b/spec/components/theme_store/git_importer_spec.rb index 0df9836f908..46783d5c38f 100644 --- a/spec/components/theme_store/git_importer_spec.rb +++ b/spec/components/theme_store/git_importer_spec.rb @@ -10,6 +10,7 @@ describe ThemeStore::GitImporter do context "#import" do let(:url) { "https://github.com/example/example.git" } + let(:trailing_slash_url) { "https://github.com/example/example/" } let(:ssh_url) { "git@github.com:example/example.git" } let(:branch) { "dev" } @@ -27,6 +28,13 @@ describe ThemeStore::GitImporter do importer.import! end + it "should work with trailing slash url" do + Discourse::Utils.expects(:execute_command).with("git", "clone", url, @temp_folder) + + importer = ThemeStore::GitImporter.new(trailing_slash_url) + importer.import! + end + it "should import from ssh url" do Discourse::Utils.expects(:execute_command).with({ 'GIT_SSH_COMMAND' => "ssh -i #{@ssh_folder}/id_rsa -o StrictHostKeyChecking=no"