Sha256: 219bb75d3d2c8bfcc19de98f0c64fbcbbcb65de3600a549c18c110df9a502e8e

Contents?: true

Size: 1.67 KB

Versions: 13

Compression:

Stored size: 1.67 KB

Contents

require 'spec_helper'
require 'cxxproject'
require 'cxxproject/utils/cleanup'

RSPECDIR = File.dirname(__FILE__)

describe CxxProject2Rake do

  def execute_all_tasks(tasks)
    tasks.each do |t|
      t.invoke
    end
  end

  def fresh_cxx(outputdir,base)
    Cxxproject::Utils.cleanup_rake
    project_configs = nil
    cd base do # have to be relative to base
      project_configs = Dir.glob('**/project.rb')
    end
    CxxProject2Rake.new(project_configs, outputdir, 'gcc', base)
  end


#  def is_older? fileA, fileB
#    File.mtime(fileA) < File.mtime(fileB)
#  end

#  def is_newer? fileA, fileB
#    File.mtime(fileA) > File.mtime(fileB)
#  end

  def test_on_level(base, outputdir)
    libOne = "#{outputdir}/libs/lib1.a"
    libTwo = "#{outputdir}/libs/lib2.a"
    exe = "#{outputdir}/basic.exe"
    exe2 = "#{outputdir}/debug.exe"
    files = [libOne,libTwo,exe,exe2]
    rm_r outputdir if File.directory?(outputdir)
    tasks = fresh_cxx(outputdir, base).all_tasks
    CLOBBER.each { |fn| rm_r fn rescue nil }

    files.all? {|f| File.exists?(f).should be_false }

    execute_all_tasks(tasks)

    files.all? {|f| File.exists?(f).should be_true }

    # cleanup
    rm_r outputdir if File.directory?(outputdir)
    Cxxproject::Utils.cleanup_rake
  end

  it 'should resolve paths on different levels' do
    outputdir = 'output'

    cd("#{RSPECDIR}/testdata/multiple_levels", :verbose => false) do
      test_on_level(".", outputdir)
    end

    cd("#{RSPECDIR}/testdata/multiple_levels/mainproject", :verbose => false) do
      test_on_level("..", outputdir)
    end

    cd("#{RSPECDIR}/testdata", :verbose => false) do
      test_on_level("multiple_levels/", outputdir)
    end
  end

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
cxxproject-0.6.25 spec/project_path_spec.rb
cxxproject-0.6.24 spec/project_path_spec.rb
cxxproject-0.6.23 spec/project_path_spec.rb
cxxproject-0.6.21 spec/project_path_spec.rb
cxxproject-0.6.18 spec/project_path_spec.rb
cxxproject-0.6.17 spec/project_path_spec.rb
cxxproject-0.6.14 spec/project_path_spec.rb
cxxproject-0.6.12 spec/project_path_spec.rb
cxxproject-0.6.13 spec/project_path_spec.rb
cxxproject-0.6.11 spec/project_path_spec.rb
cxxproject-0.6.10 spec/project_path_spec.rb
cxxproject-0.6.9 spec/project_path_spec.rb
cxxproject-0.6.6 spec/project_path_spec.rb