spec/git_gsub_spec.rb in git-gsub-0.0.8 vs spec/git_gsub_spec.rb in git-gsub-0.0.9

- old
+ new

@@ -7,99 +7,126 @@ config.filter_run :focus => true config.run_all_when_everything_filtered = true end describe 'git-gsub' do - def run_in_directory_with_a_file(filename, content) + def run_in_tmp_repo Dir.mktmpdir do |dir| Dir.chdir dir do - dirname = File.dirname(filename) - FileUtils.mkdir_p(dirname) unless File.exists?(dirname) - File.open(filename, 'w') { |f| f << content } `git init` `git config --local user.email "you@example.com"` `git config --local user.name "Your Name"` `git add .` `git commit -m init` yield end end end - it 'should substitute files' do - run_in_directory_with_a_file 'README.md', 'Git Subversion Bzr' do - Git::Gsub.run %w[Bzr Mercurial] - expect(File.read('README.md')).to eq 'Git Subversion Mercurial' + def commit_file(name, content) + FileUtils.mkdir_p(File.dirname(name)) + File.write(name, content) + `git add .` + `git commit -m 'Add #{name}'` + end + + around do |example| + run_in_tmp_repo do + example.run end end + it 'should substitute files' do + commit_file 'README.md', 'Git Subversion Bzr' + Git::Gsub.run %w[Bzr Mercurial] + + expect(File.read('README.md')).to eq 'Git Subversion Mercurial' + end + it 'should substitute files with case conversion' do - run_in_directory_with_a_file 'README.md', 'GitGsub git_gsub git-gsub' do - Git::Gsub.run %w[GitGsub SvnGsub --camel --kebab --snake] - expect(File.read('README.md')).to eq 'SvnGsub svn_gsub svn-gsub' - end + commit_file 'README.md', 'GitGsub git_gsub git-gsub' + Git::Gsub.run %w[GitGsub SvnGsub --camel --kebab --snake] + + expect(File.read('README.md')).to eq 'SvnGsub svn_gsub svn-gsub' end it 'should escape well' do - run_in_directory_with_a_file 'README.md', %(<h1 class="foo">) do - Git::Gsub.run [%(<h1 class="foo">), %(<h1 class="bar">)] - expect(File.read('README.md')).to eq %(<h1 class="bar">) - end + commit_file 'README.md', %(<h1 class="foo">) + Git::Gsub.run [%(<h1 class="foo">), %(<h1 class="bar">)] + + expect(File.read('README.md')).to eq %(<h1 class="bar">) end - it do - run_in_directory_with_a_file 'README.md', %(Hello this is @git) do - Git::Gsub.run [%(@git), %(@@svn)] - expect(File.read('README.md')).to eq %(Hello this is @@svn) - end + it 'should substutute @' do + commit_file 'README.md', %(foo@example.com) + Git::Gsub.run [%(@example), %(bar@example)] + + expect(File.read('README.md')).to eq %(foobar@example.com) end - it do - run_in_directory_with_a_file 'README.md', %(Hello this is "git") do - Git::Gsub.run [%("git"), %('svn')] - expect(File.read('README.md')).to eq %(Hello this is 'svn') - end + it 'should substitute consequenting @' do + commit_file 'README.md', %(Hello this is @git) + Git::Gsub.run [%(@git), %(@@svn)] + + expect(File.read('README.md')).to eq %(Hello this is @@svn) end - it do - run_in_directory_with_a_file 'README.md', %({git{svn}) do - Git::Gsub.run [%({git{svn}), %({hg{svn})] - expect(File.read('README.md')).to eq %({hg{svn}) - end + it %(should substitute " to ') do + commit_file 'README.md', %(Hello this is "git") + Git::Gsub.run [%("git"), %('svn')] + + expect(File.read('README.md')).to eq %(Hello this is 'svn') end - it do - run_in_directory_with_a_file 'README.md', %(foo@example.com) do - Git::Gsub.run [%(@example), %(bar@example)] - expect(File.read('README.md')).to eq %(foobar@example.com) - end + it %(should substitute ' to ") do + commit_file 'README.md', %(Hello this is 'git') + Git::Gsub.run [%('git'), %("svn")] + + expect(File.read('README.md')).to eq %(Hello this is "svn") end + it 'should substitute text including { and }'do + commit_file 'README.md', %({git{svn}) + Git::Gsub.run [%({git{svn}), %({hg{svn})] + + expect(File.read('README.md')).to eq %({hg{svn}) + end + it 'should not create backup file' do - run_in_directory_with_a_file 'README.md', 'Git Subversion Bzr' do - Git::Gsub.run %w[Bzr Darcs] - expect(`ls`).to eql "README.md\n" - end + commit_file 'README.md', 'Git Subversion Bzr' + Git::Gsub.run %w[Bzr Darcs] + + expect(`ls`).to eql "README.md\n" end it 'should rename with --rename' do - run_in_directory_with_a_file 'README-git_gsub.md', 'GitGsub git_gsub git-gsub' do - Git::Gsub.run %w[GitGsub SvnGsub --snake --rename] - expect(`ls`).to eql "README-svn_gsub.md\n" - expect(File.read('README-svn_gsub.md')).to eq 'SvnGsub svn_gsub git-gsub' - end + commit_file 'README-git_gsub.md', 'GitGsub git_gsub git-gsub' + Git::Gsub.run %w[GitGsub SvnGsub --snake --rename] - run_in_directory_with_a_file 'lib/git.rb', 'puts "Git"' do - Git::Gsub.run %w[git svn --camel --rename] - expect(`ls lib`).to eql "svn.rb\n" - expect(File.read('lib/svn.rb')).to eq 'puts "Svn"' - end + expect(`ls`).to eql "README-svn_gsub.md\n" + expect(File.read('README-svn_gsub.md')).to eq 'SvnGsub svn_gsub git-gsub' end + it 'should rename with --rename' do + commit_file 'lib/git.rb', 'puts "Git"' + Git::Gsub.run %w[git svn --camel --rename] + + expect(`ls lib`).to eql "svn.rb\n" + expect(File.read('lib/svn.rb')).to eq 'puts "Svn"' + end + it 'should do nothing if no file found' do - run_in_directory_with_a_file 'README-git_gsub.md', 'GitGsub git_gsub git-gsub' do - expect { - Git::Gsub.run %w[Atlanta Chicago --snake --rename] - }.not_to raise_error - end + commit_file 'README-git_gsub.md', 'GitGsub git_gsub git-gsub' + + expect { + Git::Gsub.run %w[Atlanta Chicago --snake --rename] + }.not_to raise_error + end + + it 'should output command with dry-run' do + commit_file 'README-git_gsub.md', 'GitGsub git_gsub git-gsub' + + expect { + Git::Gsub.run %w[GitGsub SvnGsub --snake --rename --dry-run] + }.to output(/Svn/).to_stdout end end