zerg_xcode 0.3.5 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. data/.document +5 -0
  2. data/.project +17 -0
  3. data/Gemfile +10 -0
  4. data/Gemfile.lock +30 -0
  5. data/Rakefile +50 -23
  6. data/VERSION +1 -0
  7. data/lib/zerg_xcode/file_format/archiver.rb +0 -24
  8. data/lib/zerg_xcode/file_format/id_generator.rb +30 -0
  9. data/lib/zerg_xcode/file_format/lexer.rb +113 -56
  10. data/lib/zerg_xcode/file_format/parser.rb +28 -34
  11. data/lib/zerg_xcode/file_format/scan_buffer.rb +46 -0
  12. data/lib/zerg_xcode/objects/pbx_project.rb +1 -1
  13. data/lib/zerg_xcode/objects/xcode_object.rb +2 -1
  14. data/lib/zerg_xcode/{file_format/paths.rb → paths.rb} +5 -6
  15. data/lib/zerg_xcode/shortcuts.rb +2 -2
  16. data/lib/zerg_xcode.rb +7 -1
  17. data/spec/archiver_spec.rb +83 -0
  18. data/spec/builder/runner_spec.rb +27 -0
  19. data/spec/builder/sdk_spec.rb +11 -0
  20. data/spec/encoder_spec.rb +17 -0
  21. data/{test → spec}/fixtures/ClosedLib/ClosedLib.xcodeproj/project.pbxproj +0 -0
  22. data/{test → spec}/fixtures/ClosedLib/ClosedLib_Prefix.pch +0 -0
  23. data/{test → spec}/fixtures/ClosedLib/ClosedNative.c +0 -0
  24. data/{test → spec}/fixtures/ClosedLib/ClosedNative.h +0 -0
  25. data/{test → spec}/fixtures/FlatTestApp/FlatTestApp.xcodeproj/project.pbxproj +0 -0
  26. data/{test → spec}/fixtures/TestApp/TestApp.xcodeproj/project.pbxproj +0 -0
  27. data/{test → spec}/fixtures/TestApp30.xcodeproj/project.pbxproj +0 -0
  28. data/{test → spec}/fixtures/TestLib30.xcodeproj/project.pbxproj +0 -0
  29. data/{test → spec}/fixtures/ZergSupport.xcodeproj/project.pbxproj +0 -0
  30. data/{test → spec}/fixtures/project.pbxproj +0 -0
  31. data/{test → spec}/fixtures/project.pbxproj.compat +0 -0
  32. data/spec/id_generator_spec.rb +38 -0
  33. data/spec/lexer_spec.rb +111 -0
  34. data/spec/parser_spec.rb +34 -0
  35. data/spec/paths_spec.rb +75 -0
  36. data/spec/shortcuts_spec.rb +24 -0
  37. data/test/objects/pbx_build_file_test.rb +3 -3
  38. data/test/objects/pbx_build_phase_test.rb +1 -1
  39. data/test/objects/pbx_container_item_proxy_test.rb +1 -1
  40. data/test/objects/pbx_group_test.rb +1 -1
  41. data/test/objects/pbx_native_target_test.rb +2 -2
  42. data/test/objects/pbx_project_test.rb +9 -9
  43. data/test/objects/pbx_target_dependency_test.rb +1 -1
  44. data/test/objects/xc_configuration_list_test.rb +1 -1
  45. data/test/plugins/addlibrary_test.rb +2 -2
  46. data/test/plugins/core/core_test.rb +1 -1
  47. data/test/plugins/import_test.rb +71 -71
  48. data/test/plugins/irb_test.rb +3 -3
  49. data/test/plugins/ls_test.rb +3 -3
  50. data/test/plugins/lstargets_test.rb +3 -3
  51. data/test/plugins/retarget_test.rb +2 -2
  52. data/zerg_xcode.gemspec +112 -17
  53. metadata +115 -113
  54. data/test/builder/runner_test.rb +0 -35
  55. data/test/builder/sdk_test.rb +0 -17
  56. data/test/file_format/archiver_test.rb +0 -74
  57. data/test/file_format/encoder_test.rb +0 -15
  58. data/test/file_format/lexer_test.rb +0 -60
  59. data/test/file_format/parser_test.rb +0 -49
  60. data/test/file_format/path_test.rb +0 -47
  61. data/test/shortcuts_test.rb +0 -22
@@ -0,0 +1,83 @@
1
+ require 'zerg_xcode'
2
+
3
+ describe ZergXcode::Archiver do
4
+ Parser = ZergXcode::Parser
5
+ Archiver = ZergXcode::Archiver
6
+ XcodeObject = ZergXcode::XcodeObject
7
+
8
+ let(:archived_hash) do
9
+ { "archiveVersion" => '1',
10
+ "rootObject" => '49',
11
+ "classes" => {},
12
+ "objectVersion" => '45',
13
+ "objects" => {
14
+ "49" => { :sub1 => "39", :sub2 => "42" },
15
+ "39" => { :array => ["a", "b", "c"], :string => "s" },
16
+ "42" => { :hash => { :k => "v", :k2 => "v2" }, :sub1 => "39" }
17
+ }
18
+ }
19
+ end
20
+
21
+ let(:sub1) do
22
+ sub1 = XcodeObject.new :array => ['a', 'b', 'c'], :string => 's'
23
+ sub1.archive_id = '39'
24
+ sub1
25
+ end
26
+
27
+ let(:sub2) do
28
+ sub2 = XcodeObject.new :hash => { :k => 'v', :k2 => 'v2' }, :sub1 => sub1
29
+ sub2.archive_id = '42'
30
+ sub2
31
+ end
32
+
33
+ let(:root) do
34
+ root = XcodeObject.new :sub1 => sub1, :sub2 => sub2
35
+ root.archive_id = '49'
36
+ root.version = 45
37
+ root
38
+ end
39
+
40
+ context 'when archiving' do
41
+ it 'produces the expected hash for a sample object graph' do
42
+ Archiver.archive_to_hash(root).should == archived_hash
43
+ end
44
+ end
45
+
46
+ context 'when unarchiving' do
47
+ let(:pbxdata) {File.read 'spec/fixtures/project.pbxproj'}
48
+
49
+ context 'from a hash' do
50
+ it 'produces the expected object graph' do
51
+ unarchived_root = Archiver.unarchive_hash archived_hash
52
+ unarchived_root[:sub1][:s].should == sub1[:s]
53
+ unarchived_root[:sub1][:array].should == sub1[:array]
54
+ unarchived_root[:sub2][:hash].should == sub2[:hash]
55
+ unarchived_root[:sub2][:sub1].should == unarchived_root[:sub1]
56
+ end
57
+ end
58
+
59
+ context 'from our fixture' do
60
+ it 'does not raise an error' do
61
+ lambda {Archiver.unarchive pbxdata}.should_not raise_error
62
+ end
63
+
64
+ it 'produces a project with a valid product path' do
65
+ project = Archiver.unarchive pbxdata
66
+ project['targets'][0]['productReference']['path'].should == 'TestApp.app'
67
+ end
68
+ end
69
+
70
+ end
71
+
72
+ describe 'archiving then unarchiving our fixture' do
73
+ let(:pbxdata) {File.read 'spec/fixtures/project.pbxproj'}
74
+
75
+ it "should produce the same hash" do
76
+ golden_hash = Parser.parse pbxdata
77
+ project = Archiver.unarchive pbxdata
78
+ dupdata = Archiver.archive project
79
+ Parser.parse(dupdata).should == golden_hash
80
+ end
81
+ end
82
+
83
+ end
@@ -0,0 +1,27 @@
1
+ require 'zerg_xcode'
2
+
3
+ describe ZergXcode::Builder::Runner do
4
+ before do
5
+ @project = ZergXcode.load 'spec/fixtures/ClosedLib'
6
+ @configuration = 'Release'
7
+ @sdk = ZergXcode::Builder::Sdk.all.
8
+ detect { |s| /i(?:OS|Phone) .*$/ =~ s[:name] }
9
+ @golden_build_path = 'spec/fixtures/ClosedLib/build/Release-iphoneos'
10
+ @product = @golden_build_path + '/libClosedLib.a'
11
+ ZergXcode::Builder::Runner.clean(@project, @sdk, @configuration)
12
+ end
13
+
14
+ after do
15
+ ZergXcode::Builder::Runner.clean @project, @sdk, @configuration
16
+ end
17
+
18
+ it "builds and cleans the project" do
19
+ build_path = ZergXcode::Builder::Runner.build @project, @sdk, @configuration
20
+ build_path.should be_true
21
+ build_path.should == @golden_build_path
22
+ File.exist?(@product).should be_true
23
+
24
+ ZergXcode::Builder::Runner.clean(@project, @sdk, @configuration).should be_true
25
+ File.exist?(@product).should be_false
26
+ end
27
+ end
@@ -0,0 +1,11 @@
1
+ require 'zerg_xcode'
2
+
3
+ describe ZergXcode::Builder::Sdk do
4
+ describe '::all' do
5
+ it "should find a Mac OS SDK" do
6
+ all_sdks = ZergXcode::Builder::Sdk.all
7
+ macsdk = all_sdks.detect{|sdk| sdk[:arg] =~ /^macosx[0-9\.]+$/}
8
+ macsdk.should_not be_nil
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ require 'zerg_xcode'
2
+
3
+ describe ZergXcode::Encoder do
4
+
5
+ describe 'encoded and reparsed project' do
6
+
7
+ let(:fixture_contents) {File.read 'spec/fixtures/project.pbxproj'}
8
+ let(:original_parsed_project) {ZergXcode::Parser.parse(fixture_contents)}
9
+ let(:reencoded_project) {ZergXcode::Encoder.encode(original_parsed_project)}
10
+ subject {ZergXcode::Parser.parse(reencoded_project)}
11
+
12
+ it 'should be identical to the originally parsed project' do
13
+ should == original_parsed_project
14
+ end
15
+ end
16
+
17
+ end
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,38 @@
1
+ require 'zerg_xcode'
2
+
3
+ describe ZergXcode::IdGenerator do
4
+
5
+ let(:object_a) do
6
+ o = ZergXcode::XcodeObject.new :foo => 'bar'
7
+ o.archive_id = '49'
8
+ o
9
+ end
10
+
11
+ let(:object_b) do
12
+ o = ZergXcode::XcodeObject.new :foo => 'bar'
13
+ o.archive_id = '49'
14
+ o
15
+ end
16
+
17
+ context "when given an object with id '49'" do
18
+
19
+ it "should return '49'" do
20
+ subject.id_for(object_a).should == '49'
21
+ end
22
+
23
+ end
24
+
25
+ # This seems a little odd, but is how I found it. If given the
26
+ # same object twice, it will generate a new ID the second time.
27
+ context "when given a second object with id '49'" do
28
+ before do
29
+ subject.id_for(object_a)
30
+ end
31
+
32
+ it "should not return '49'" do
33
+ subject.id_for(object_b).should_not == '49'
34
+ end
35
+ end
36
+
37
+ end
38
+
@@ -0,0 +1,111 @@
1
+ require 'zerg_xcode'
2
+
3
+ RSpec::Matchers.define :produce_token do |expected|
4
+ match do |actual|
5
+ actual.send(:scan_token) == expected
6
+ end
7
+ failure_message_for_should do |actual|
8
+ "expected Lexer to leave #{expected.dump} unconsumed instead of #{unconsumed(actual).dump}"
9
+ end
10
+ end
11
+
12
+ RSpec::Matchers.define :leave_unconsumed do |expected|
13
+ def unconsumed(actual)
14
+ actual.instance_variable_get(:@scan_buffer).unconsumed
15
+ end
16
+ match do |actual|
17
+ actual.send(:scan_token)
18
+ unconsumed(actual) == expected
19
+ end
20
+ failure_message_for_should do |actual|
21
+ "expected Lexer to leave #{expected.dump} unconsumed instead of #{unconsumed(actual).dump}"
22
+ end
23
+ end
24
+
25
+ describe ZergXcode::Lexer do
26
+
27
+ context "when scanning '// !$*UTF8*$!\\n{'" do
28
+ subject {ZergXcode::Lexer.new("// !$*UTF8*$!\n{")}
29
+ it {should produce_token('{')}
30
+ it {should leave_unconsumed("")}
31
+ end
32
+
33
+ context "when scanning '\"hello \\\"\\r\\n\\t\\\\\\'$(SRCROOT)\\\"\"'" do
34
+ subject {ZergXcode::Lexer.new("\"hello \\\"\\r\\n\\t\\\\\\'$(SRCROOT)\\\"\" {")}
35
+ it {should produce_token(["hello \"\r\n\t\\'$(SRCROOT)\""])}
36
+ it {should leave_unconsumed(" {")}
37
+ end
38
+
39
+ context "when scanning ' /* comment 1 */\\t\\n/* comment 2 */ ={'" do
40
+ subject {ZergXcode::Lexer.new(" /* comment 1 */\t\n/* comment 2 */ ={")}
41
+ it {should produce_token('=')}
42
+ it {should leave_unconsumed("{")}
43
+ end
44
+
45
+ context "when scanning ' \\t/* hello */\\n\\t'" do
46
+ subject {ZergXcode::Lexer.new(" \t/* hello */\n\t")}
47
+ it {should produce_token(nil)}
48
+ it {should leave_unconsumed("")}
49
+ end
50
+
51
+ context "when scanning '(x'" do
52
+ subject {ZergXcode::Lexer.new("(x")}
53
+ it {should produce_token('(')}
54
+ it {should leave_unconsumed("x")}
55
+ end
56
+
57
+ context "when scanning ')x'" do
58
+ subject {ZergXcode::Lexer.new(")x")}
59
+ it {should produce_token(')')}
60
+ it {should leave_unconsumed("x")}
61
+ end
62
+
63
+ context "when scanning '{x'" do
64
+ subject {ZergXcode::Lexer.new("{x")}
65
+ it {should produce_token('{')}
66
+ it {should leave_unconsumed("x")}
67
+ end
68
+
69
+ context "when scanning '}x'" do
70
+ subject {ZergXcode::Lexer.new("}x")}
71
+ it {should produce_token('}')}
72
+ it {should leave_unconsumed("x")}
73
+ end
74
+
75
+ context "when scanning '=x'" do
76
+ subject {ZergXcode::Lexer.new("=x")}
77
+ it {should produce_token('=')}
78
+ it {should leave_unconsumed("x")}
79
+ end
80
+
81
+ context "when scanning ';x'" do
82
+ subject {ZergXcode::Lexer.new(";x")}
83
+ it {should produce_token(';')}
84
+ it {should leave_unconsumed("x")}
85
+ end
86
+
87
+ context "when scanning ',x'" do
88
+ subject {ZergXcode::Lexer.new(",x")}
89
+ it {should produce_token(',')}
90
+ it {should leave_unconsumed("x")}
91
+ end
92
+
93
+ context "when scanning 'archiveVersion ='" do
94
+ subject {ZergXcode::Lexer.new("archiveVersion =")}
95
+ it {should produce_token(["archiveVersion"])}
96
+ it {should leave_unconsumed(" =")}
97
+ end
98
+
99
+ context "when scanning '{ foo = \"hello\", bar };'" do
100
+ subject {ZergXcode::Lexer.tokenize("{ foo = \"hello\", bar };")}
101
+ it {should == ['{',
102
+ ["foo"],
103
+ '=',
104
+ ["hello"],
105
+ ',',
106
+ ["bar"],
107
+ '}',
108
+ ';']}
109
+ end
110
+
111
+ end
@@ -0,0 +1,34 @@
1
+ require 'zerg_xcode'
2
+
3
+ describe ZergXcode::Parser do
4
+ context "when parsing '{ archiveVersion = 1 /* foo */; objectVersion = 45; }'" do
5
+ subject {ZergXcode::Parser.parse("{ archiveVersion = 1 /* foo */; objectVersion = 45; }")}
6
+ it {should be_a(Hash)}
7
+ it {should == {'archiveVersion' => '1', 'objectVersion' => '45'}}
8
+ end
9
+
10
+ context "when parsing '( 2342 /* foo */, 789 /* bar */, )'" do
11
+ subject {ZergXcode::Parser.parse("( 2342 /* foo */, 789 /* bar */, )")}
12
+ it {should be_an(Array)}
13
+ it {should == ["2342", "789"]}
14
+ end
15
+
16
+ context "when parsing '{ foo = ( 42, \"seven and nine\" ); }'" do
17
+ subject {ZergXcode::Parser.parse("{ foo = ( 42, \"seven and nine\" ); }")}
18
+ it {should be_a(Hash)}
19
+ it {should == {'foo' => ['42', 'seven and nine']}}
20
+ end
21
+
22
+ context "when parsing '( { foo = 42; bar = 79; }, 42, )'" do
23
+ subject {ZergXcode::Parser.parse("( { foo = 42; bar = 79; }, 42, )")}
24
+ it {should be_an(Array)}
25
+ it {should == [{'foo' => '42', 'bar' => '79'}, '42']}
26
+ end
27
+
28
+ it "should parse our sample fixture" do
29
+ pbxdata = File.read 'spec/fixtures/project.pbxproj'
30
+ proj = ZergXcode::Parser.parse pbxdata
31
+ proj['rootObject'].should == '29B97313FDCFA39411CA2CEA'
32
+ end
33
+
34
+ end
@@ -0,0 +1,75 @@
1
+ # Author:: Victor Costan
2
+ # Copyright:: Copyright (C) 2009 Zergling.Net
3
+ # License:: MIT
4
+
5
+ require 'zerg_xcode'
6
+
7
+ describe ZergXcode::Paths do
8
+
9
+ include ZergXcode::Paths
10
+
11
+ describe '#project_file_at' do
12
+ context "when given 'spec/fixtures/ZergSupport'" do
13
+ subject {project_file_at('spec/fixtures/ZergSupport')}
14
+ it {should == 'spec/fixtures/ZergSupport.xcodeproj/project.pbxproj'}
15
+ end
16
+
17
+ context "when given 'spec/fixtures/ZergSupport.xcodeproj'" do
18
+ subject {project_file_at('spec/fixtures/ZergSupport.xcodeproj')}
19
+ it {should == 'spec/fixtures/ZergSupport.xcodeproj/project.pbxproj'}
20
+ end
21
+
22
+ context "when given 'spec/fixtures'" do
23
+ subject {project_file_at('spec/fixtures')}
24
+ it {should == 'spec/fixtures/project.pbxproj'}
25
+ end
26
+
27
+ context "when given 'spec'" do
28
+ subject {project_file_at('spec')}
29
+ it {should == 'spec/fixtures/project.pbxproj'}
30
+ end
31
+
32
+ context "when given 'spec/fixtures/TestApp'" do
33
+ subject {project_file_at('spec/fixtures/TestApp')}
34
+ it {should == 'spec/fixtures/TestApp/TestApp.xcodeproj/project.pbxproj'}
35
+ end
36
+
37
+ context "when given 'spec/fixtures/TestApp/TestApp.xcodeproj'" do
38
+ subject {project_file_at('spec/fixtures/TestApp/TestApp.xcodeproj')}
39
+ it {should == 'spec/fixtures/TestApp/TestApp.xcodeproj/project.pbxproj'}
40
+ end
41
+ end
42
+
43
+ describe '#project_root_at' do
44
+ context "when given 'spec/fixtures/ZergSupport'" do
45
+ subject {project_root_at('spec/fixtures/ZergSupport')}
46
+ it {should == 'spec/fixtures'}
47
+ end
48
+
49
+ context "when given 'spec/fixtures/ZergSupport.xcodeproj'" do
50
+ subject {project_root_at('spec/fixtures/ZergSupport.xcodeproj')}
51
+ it {should == 'spec/fixtures'}
52
+ end
53
+
54
+ context "when given 'spec/fixtures'" do
55
+ subject {project_root_at('spec/fixtures')}
56
+ it {should == 'spec'}
57
+ end
58
+
59
+ context "when given 'spec'" do
60
+ subject {project_root_at('spec')}
61
+ it {should == 'spec'}
62
+ end
63
+
64
+ context "when given 'spec/fixtures/TestApp'" do
65
+ subject {project_root_at('spec/fixtures/TestApp')}
66
+ it {should == 'spec/fixtures/TestApp'}
67
+ end
68
+
69
+ context "when given 'spec/fixtures/TestApp/TestApp.xcodeproj'" do
70
+ subject {project_root_at('spec/fixtures/TestApp/TestApp.xcodeproj')}
71
+ it {should == 'spec/fixtures/TestApp'}
72
+ end
73
+ end
74
+
75
+ end
@@ -0,0 +1,24 @@
1
+ require 'zerg_xcode'
2
+
3
+ describe ZergXcode do
4
+
5
+ context "when loading a file" do
6
+ subject {ZergXcode.load 'spec/fixtures/ZergSupport'}
7
+
8
+ it "should find the targets" do
9
+ targets = subject['targets'].map{ |target| target['name'] }.sort
10
+ targets.should == ['ZergSupport', 'ZergTestSupport', 'ZergSupportTests'].sort
11
+ end
12
+
13
+ it "should set the project's source filename" do
14
+ subject.source_filename.should == 'spec/fixtures/ZergSupport.xcodeproj/project.pbxproj'
15
+ end
16
+ end
17
+
18
+ context "when finding plugins" do
19
+ it "should return the correct class" do
20
+ ZergXcode.plugin('ls').should be_a(ZergXcode::Plugins::Ls)
21
+ end
22
+ end
23
+
24
+ end
@@ -9,7 +9,7 @@ class PBXBuildFileTest < Test::Unit::TestCase
9
9
  PBXBuildFile = ZergXcode::Objects::PBXBuildFile
10
10
 
11
11
  def setup
12
- @target = ZergXcode.load('test/fixtures/project.pbxproj')['targets'].first
12
+ @target = ZergXcode.load('spec/fixtures/project.pbxproj')['targets'].first
13
13
  @sources_phase = @target['buildPhases'][1]
14
14
  @build_file = @sources_phase['files'].first
15
15
  end
@@ -19,7 +19,7 @@ class PBXBuildFileTest < Test::Unit::TestCase
19
19
  assert_equal 'main.m', @build_file.filename
20
20
  assert_equal 'sourcecode.c.objc', @build_file.file_type
21
21
 
22
- big_project = ZergXcode.load('test/fixtures/ZergSupport')
22
+ big_project = ZergXcode.load('spec/fixtures/ZergSupport')
23
23
  big_project['targets'].map { |t| t.all_files }.flatten.each do |file|
24
24
  assert_not_nil file[:build_object].file_type,
25
25
  "No file type for #{file[:build_object].inspect}"
@@ -27,7 +27,7 @@ class PBXBuildFileTest < Test::Unit::TestCase
27
27
  end
28
28
 
29
29
  def test_guessed_build_phase_type
30
- big_project = ZergXcode.load('test/fixtures/ZergSupport')
30
+ big_project = ZergXcode.load('spec/fixtures/ZergSupport')
31
31
 
32
32
  phases = @target['buildPhases'] +
33
33
  big_project['targets'].map { |t| t['buildPhases'] }.flatten
@@ -9,7 +9,7 @@ class PBXBuildPhaseTest < Test::Unit::TestCase
9
9
  PBXBuildPhase = ZergXcode::Objects::PBXBuildPhase
10
10
 
11
11
  def setup
12
- @target = ZergXcode.load('test/fixtures/project.pbxproj')['targets'].first
12
+ @target = ZergXcode.load('spec/fixtures/project.pbxproj')['targets'].first
13
13
  @sources_phase = @target['buildPhases'][1]
14
14
  end
15
15
 
@@ -10,7 +10,7 @@ class PBXContainerItemProxyTest < Test::Unit::TestCase
10
10
 
11
11
  def setup
12
12
  @project = ZergXcode.load(
13
- 'test/fixtures/ZergSupport.xcodeproj/project.pbxproj')
13
+ 'spec/fixtures/ZergSupport.xcodeproj/project.pbxproj')
14
14
  @proxy = @project['targets'][2]['dependencies'].first['targetProxy']
15
15
  @target = @project['targets'][1]
16
16
  end
@@ -9,7 +9,7 @@ class PBXGroupTest < Test::Unit::TestCase
9
9
  PBXGroup = ZergXcode::Objects::PBXGroup
10
10
 
11
11
  def setup
12
- @proj = ZergXcode.load 'test/fixtures/project.pbxproj'
12
+ @proj = ZergXcode.load 'spec/fixtures/project.pbxproj'
13
13
  @main_group = @proj['mainGroup']
14
14
  end
15
15
 
@@ -23,7 +23,7 @@ class PBXNativeTargetTest < Test::Unit::TestCase
23
23
  "System/Library/Frameworks/CoreGraphics.framework"],
24
24
  ]
25
25
 
26
- project = ZergXcode.load('test/fixtures/project.pbxproj')
26
+ project = ZergXcode.load('spec/fixtures/project.pbxproj')
27
27
  assert_equal PBXNativeTarget, project['targets'].first.class
28
28
  files = project['targets'].first.all_files
29
29
  file_list = files.map do |file|
@@ -31,4 +31,4 @@ class PBXNativeTargetTest < Test::Unit::TestCase
31
31
  end
32
32
  assert_equal golden_list.sort, file_list.sort
33
33
  end
34
- end
34
+ end
@@ -32,7 +32,7 @@ class PBXProjectTest < Test::Unit::TestCase
32
32
  ["BUILT_PRODUCTS_DIR/TestApp.app", nil],
33
33
  ]
34
34
 
35
- project = ZergXcode.load('test/fixtures/project.pbxproj')
35
+ project = ZergXcode.load('spec/fixtures/project.pbxproj')
36
36
  assert_equal PBXProject, project.class
37
37
  files = project.all_files
38
38
  file_list = files.map { |f| [f[:path], f[:object]['lastKnownFileType']] }
@@ -49,7 +49,7 @@ class PBXProjectTest < Test::Unit::TestCase
49
49
  ["./ZergSupport/TestSupport/GTM/GTMDefines.h", "sourcecode.c.h"],
50
50
  ["./ZergSupport/WebSupport/ZNHttpRequest.m", "sourcecode.c.objc"],
51
51
  ]
52
- files = ZergXcode.load('test/fixtures/ZergSupport').all_files
52
+ files = ZergXcode.load('spec/fixtures/ZergSupport').all_files
53
53
  file_list = files.map { |f| [f[:path], f[:object]['lastKnownFileType']] }
54
54
  golden_entries.each do |entry|
55
55
  assert file_list.include?(entry), "Missing #{entry.inspect}"
@@ -57,32 +57,32 @@ class PBXProjectTest < Test::Unit::TestCase
57
57
  end
58
58
 
59
59
  def test_save
60
- project = ZergXcode.load('test/fixtures')
60
+ project = ZergXcode.load('spec/fixtures')
61
61
  flexmock(ZergXcode).should_receive(:dump).
62
- with(project, 'test/fixtures/project.pbxproj').
62
+ with(project, 'spec/fixtures/project.pbxproj').
63
63
  and_return(nil)
64
64
  project.save!
65
65
  end
66
66
 
67
67
  def test_root_path
68
- project = ZergXcode.load('test/fixtures/ZergSupport.xcodeproj')
69
- assert_equal 'test/fixtures', project.root_path
68
+ project = ZergXcode.load('spec/fixtures/ZergSupport.xcodeproj')
69
+ assert_equal 'spec/fixtures', project.root_path
70
70
  end
71
71
 
72
72
  def test_copy_metadata
73
- project = ZergXcode.load('test/fixtures/ZergSupport.xcodeproj')
73
+ project = ZergXcode.load('spec/fixtures/ZergSupport.xcodeproj')
74
74
  clone = ZergXcode::XcodeObject.from project
75
75
 
76
76
  assert_equal project.source_filename, clone.source_filename
77
77
  end
78
78
 
79
79
  def test_xref_name
80
- project = ZergXcode.load('test/fixtures/project.pbxproj')
80
+ project = ZergXcode.load('spec/fixtures/project.pbxproj')
81
81
  assert_equal 'PBXProject', project.xref_name
82
82
  end
83
83
 
84
84
  def test_find_group_named
85
- project = ZergXcode.load('test/fixtures/project.pbxproj')
85
+ project = ZergXcode.load('spec/fixtures/project.pbxproj')
86
86
  found_group = project.find_group_named("Classes")
87
87
  assert_not_nil found_group
88
88
  assert_equal PBXGroup, found_group.class
@@ -10,7 +10,7 @@ class PBXTargetDependencyTest < Test::Unit::TestCase
10
10
 
11
11
  def setup
12
12
  @project = ZergXcode.load(
13
- 'test/fixtures/ZergSupport.xcodeproj/project.pbxproj')
13
+ 'spec/fixtures/ZergSupport.xcodeproj/project.pbxproj')
14
14
  @dependency = @project['targets'][2]['dependencies'].first
15
15
  @target = @project['targets'][1]
16
16
  end
@@ -9,7 +9,7 @@ class XCConfigurationListTest < Test::Unit::TestCase
9
9
  XCConfigurationList = ZergXcode::Objects::XCConfigurationList
10
10
 
11
11
  def test_xref_name
12
- proj = ZergXcode.load 'test/fixtures/project.pbxproj'
12
+ proj = ZergXcode.load 'spec/fixtures/project.pbxproj'
13
13
  list = proj['buildConfigurationList']
14
14
  assert_equal XCConfigurationList, list.class
15
15
  assert_equal 'XCConfigurationList', list.xref_name
@@ -4,7 +4,7 @@
4
4
 
5
5
  require 'zerg_xcode'
6
6
  require 'test/unit'
7
- require 'test/plugins/helper.rb'
7
+ require 'plugins/helper.rb'
8
8
 
9
9
  module Plugins; end
10
10
 
@@ -14,7 +14,7 @@ class Plugins::AddlibraryTest < Test::Unit::TestCase
14
14
  def setup
15
15
  super
16
16
  @plugin = ZergXcode.plugin 'addlibrary'
17
- @project = ZergXcode.load 'test/fixtures/ZergSupport'
17
+ @project = ZergXcode.load 'spec/fixtures/ZergSupport'
18
18
 
19
19
  @lib, @test_lib, @test_app = *@project['targets']
20
20
  end
@@ -5,7 +5,7 @@
5
5
  require 'zerg_xcode'
6
6
  require 'stringio'
7
7
  require 'test/unit'
8
- require 'test/plugins/helper.rb'
8
+ require 'plugins/helper.rb'
9
9
 
10
10
  class Plugins::CoreTest < Test::Unit::TestCase
11
11
  include Plugins::TestHelper