88 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			88 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | # frozen_string_literal: true | ||
|  | 
 | ||
|  | RSpec.describe OS::Linux::Elf do | ||
|  |   describe "::expand_elf_dst" do | ||
|  |     it "expands tokens that are not wrapped in curly braces" do | ||
|  |       str = "$ORIGIN/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "/opt/homebrew/bin/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  |     end | ||
|  | 
 | ||
|  |     it "expands tokens that are wrapped in curly braces" do | ||
|  |       str = "${ORIGIN}/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "/opt/homebrew/bin/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  | 
 | ||
|  |       str = "${ORIGIN}new/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "/opt/homebrew/binnew/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  |     end | ||
|  | 
 | ||
|  |     it "expands multiple occurrences of token" do | ||
|  |       str = "${ORIGIN}/../..$ORIGIN/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "/opt/homebrew/bin/../../opt/homebrew/bin/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  |     end | ||
|  | 
 | ||
|  |     it "rejects and passes through tokens containing additional characters" do | ||
|  |       str = "$ORIGINAL/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "$ORIGINAL/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  | 
 | ||
|  |       str = "$ORIGIN_/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "$ORIGIN_/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  | 
 | ||
|  |       str = "$ORIGIN_STORY/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "$ORIGIN_STORY/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  | 
 | ||
|  |       str = "${ORIGINAL}/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "${ORIGINAL}/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  | 
 | ||
|  |       str = "${ORIGIN_}/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "${ORIGIN_}/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  | 
 | ||
|  |       str = "${ORIGIN_STORY}/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "${ORIGIN_STORY}/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  |     end | ||
|  | 
 | ||
|  |     it "rejects and passes through tokens with mismatched curly braces" do | ||
|  |       str = "${ORIGIN/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "${ORIGIN/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  | 
 | ||
|  |       str = "$ORIGIN}/../lib" | ||
|  |       ref = "ORIGIN" | ||
|  |       repl = "/opt/homebrew/bin" | ||
|  |       expected = "$ORIGIN}/../lib" | ||
|  |       expect(described_class.expand_elf_dst(str, ref, repl)).to eq(expected) | ||
|  |     end | ||
|  |   end | ||
|  | end |