51 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								# typed: false
							 | 
						||
| 
								 | 
							
								# frozen_string_literal: true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require "utils/ast"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe Utils::AST do
							 | 
						||
| 
								 | 
							
								  describe ".stanza_text" do
							 | 
						||
| 
								 | 
							
								    let(:compound_license) do
							 | 
						||
| 
								 | 
							
								      <<~RUBY.chomp
							 | 
						||
| 
								 | 
							
								        license all_of: [
							 | 
						||
| 
								 | 
							
								          :public_domain,
							 | 
						||
| 
								 | 
							
								          "MIT",
							 | 
						||
| 
								 | 
							
								          "GPL-3.0-or-later" => { with: "Autoconf-exception-3.0" },
							 | 
						||
| 
								 | 
							
								        ]
							 | 
						||
| 
								 | 
							
								      RUBY
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "accepts existing stanza text" do
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:revision, "revision 1")).to eq("revision 1")
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:license, "license :public_domain")).to eq("license :public_domain")
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:license, 'license "MIT"')).to eq('license "MIT"')
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:license, compound_license)).to eq(compound_license)
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "accepts a number as the stanza value" do
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:revision, 1)).to eq("revision 1")
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "accepts a symbol as the stanza value" do
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:license, :public_domain)).to eq("license :public_domain")
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "accepts a string as the stanza value" do
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:license, "MIT")).to eq('license "MIT"')
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "adds indent to stanza text if specified" do
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:revision, "revision 1", indent: 2)).to eq("  revision 1")
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:license, 'license "MIT"', indent: 2)).to eq('  license "MIT"')
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:license, compound_license, indent: 2)).to eq(compound_license.indent(2))
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it "does not add indent if already indented" do
							 | 
						||
| 
								 | 
							
								      expect(described_class.stanza_text(:revision, "  revision 1", indent: 2)).to eq("  revision 1")
							 | 
						||
| 
								 | 
							
								      expect(
							 | 
						||
| 
								 | 
							
								        described_class.stanza_text(:license, compound_license.indent(2), indent: 2),
							 | 
						||
| 
								 | 
							
								      ).to eq(compound_license.indent(2))
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |