Truncate filenames created by bin/changelog to 140 characters
This commit is contained in:
		
							parent
							
								
									c6b670216c
								
							
						
					
					
						commit
						df54458a93
					
				| 
						 | 
				
			
			@ -23,6 +23,8 @@ module ChangelogHelpers
 | 
			
		|||
  Abort = Class.new(StandardError)
 | 
			
		||||
  Done = Class.new(StandardError)
 | 
			
		||||
 | 
			
		||||
  MAX_FILENAME_LENGTH = 140 # ecryptfs has a limit of 140 characters
 | 
			
		||||
 | 
			
		||||
  def capture_stdout(cmd)
 | 
			
		||||
    output = IO.popen(cmd, &:read)
 | 
			
		||||
    fail_with "command failed: #{cmd.join(' ')}" unless $?.success?
 | 
			
		||||
| 
						 | 
				
			
			@ -142,7 +144,9 @@ class ChangelogEntry
 | 
			
		|||
 | 
			
		||||
  def initialize(options)
 | 
			
		||||
    @options = options
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def execute
 | 
			
		||||
    assert_feature_branch!
 | 
			
		||||
    assert_title!
 | 
			
		||||
    assert_new_file!
 | 
			
		||||
| 
						 | 
				
			
			@ -221,10 +225,12 @@ class ChangelogEntry
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def file_path
 | 
			
		||||
    File.join(
 | 
			
		||||
    base_path = File.join(
 | 
			
		||||
      unreleased_path,
 | 
			
		||||
      branch_name.gsub(/[^\w-]/, '-') << '.yml'
 | 
			
		||||
    )
 | 
			
		||||
      branch_name.gsub(/[^\w-]/, '-'))
 | 
			
		||||
 | 
			
		||||
    # Add padding for .yml extension
 | 
			
		||||
    base_path[0..MAX_FILENAME_LENGTH - 5] + '.yml'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def unreleased_path
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +256,7 @@ end
 | 
			
		|||
if $0 == __FILE__
 | 
			
		||||
  begin
 | 
			
		||||
    options = ChangelogOptionParser.parse(ARGV)
 | 
			
		||||
    ChangelogEntry.new(options)
 | 
			
		||||
    ChangelogEntry.new(options).execute
 | 
			
		||||
  rescue ChangelogHelpers::Abort => ex
 | 
			
		||||
    $stderr.puts ex.message
 | 
			
		||||
    exit 1
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,20 @@ require 'spec_helper'
 | 
			
		|||
load File.expand_path('../../bin/changelog', __dir__)
 | 
			
		||||
 | 
			
		||||
describe 'bin/changelog' do
 | 
			
		||||
  let(:options) { OpenStruct.new(title: 'Test title', type: 'fixed', dry_run: true) }
 | 
			
		||||
 | 
			
		||||
  describe ChangelogEntry do
 | 
			
		||||
    it 'truncates the file path' do
 | 
			
		||||
      entry = described_class.new(options)
 | 
			
		||||
 | 
			
		||||
      allow(entry).to receive(:ee?).and_return(false)
 | 
			
		||||
      allow(entry).to receive(:branch_name).and_return('long-branch-' * 100)
 | 
			
		||||
 | 
			
		||||
      file_path = entry.send(:file_path)
 | 
			
		||||
      expect(file_path.length).to eq(140)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  describe ChangelogOptionParser do
 | 
			
		||||
    describe '.parse' do
 | 
			
		||||
      it 'parses --amend' do
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue