# encoding: utf-8 require 'spec_helper' describe Git do let(:git_repo) { 'git_repo' } context '#init' do it 'creates a new repository' do switch_to_working_directory do Git.init(git_repo) end expect(path_exists?(git_repo)).to be_true end end context '#ls_tree' do it 'list files in repo' do git_init(git_repo) create_file(File.join(git_repo, 'file.txt')) git_add(git_repo, 'file.txt') git_commit(git_repo) Dir.chdir(::File.join(working_directory, git_repo)) do expect(Git.ls_tree.first).to include('file.txt') end end end context '#ls_files' do it 'list files in repo' do git_init(git_repo) create_file(File.join(git_repo, 'file.txt')) git_add(git_repo, 'file.txt') git_commit(git_repo) Dir.chdir(::File.join(working_directory, git_repo)) do expect(Git.ls_files).to include('file.txt') end end it 'list files in repo and filter' do git_init(git_repo) create_file(File.join(git_repo, 'file1.txt')) git_add(git_repo, 'file1.txt') create_file(File.join(git_repo, 'file2.txt')) git_add(git_repo, 'file2.txt') git_commit(git_repo) Dir.chdir(::File.join(working_directory, git_repo)) do expect(Git.ls_files('file1.txt')).to eq(['file1.txt']) end end end context '#add' do it 'add dir/file to repository' do git_init(git_repo) create_file(File.join(git_repo, 'file.txt')) Dir.chdir(::File.join(working_directory, git_repo)) do Git.add('file.txt') end expect(git_status(git_repo)).to include("\tnew file: file.txt") end end context '#commit' do it 'commit dir/file to repository' do git_init(git_repo) create_file(File.join(git_repo, 'file.txt')) git_add(git_repo, 'file.txt') Dir.chdir(::File.join(working_directory, git_repo)) do Git.commit('file.txt') end expect(git_status(git_repo)).to include('nothing to commit, working directory clean') end end context '#show' do it 'show ref/sha in repository' do git_init(git_repo) create_file(File.join(git_repo, 'file.txt')) git_add(git_repo, 'file.txt') git_commit(git_repo) Dir.chdir(::File.join(working_directory, git_repo)) do expect(Git.show.first).to include('commit') end end end end