guard-xcode 1.0.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.
- data/.gitignore +6 -0
- data/Gemfile +9 -0
- data/LICENSE.md +22 -0
- data/README.md +65 -0
- data/Rakefile +15 -0
- data/guard-xcode.gemspec +28 -0
- data/lib/.rspec +1 -0
- data/lib/guard/xcode/templates/Guardfile +7 -0
- data/lib/guard/xcode/version.rb +5 -0
- data/lib/guard/xcode.rb +150 -0
- data/lib/guard-xcode.rb +1 -0
- data/test/GuardXcodeTest/GuardXcodeTest/GuardXcodeTest-Prefix.pch +7 -0
- data/test/GuardXcodeTest/GuardXcodeTest/GuardXcodeTest.1 +79 -0
- data/test/GuardXcodeTest/GuardXcodeTest/main.m +21 -0
- data/test/GuardXcodeTest/GuardXcodeTest.xcodeproj/project.pbxproj +238 -0
- data/test/GuardXcodeTest/GuardXcodeTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/test/GuardXcodeTest/GuardXcodeTest.xcodeproj/project.xcworkspace/xcuserdata/kyle.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/test/GuardXcodeTest/GuardXcodeTest.xcodeproj/xcuserdata/kyle.xcuserdatad/xcschemes/GuardXcodeTest.xcscheme +85 -0
- data/test/GuardXcodeTest/GuardXcodeTest.xcodeproj/xcuserdata/kyle.xcuserdatad/xcschemes/xcschememanagement.plist +22 -0
- data/test/data/main.m +21 -0
- data/test/data/main_error.m +22 -0
- data/test/data/main_good.m +21 -0
- data/test/data/main_warnings.m +22 -0
- data/test/data/main_warnings_error.m +23 -0
- data/test/test_build.rb +44 -0
- data/test/test_build_lines.rb +34 -0
- metadata +86 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.md
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The ISC license:
|
2
|
+
Copyright (c) 2012 Kyle Isom <coder@kyleisom.net>
|
3
|
+
|
4
|
+
Permission to use, copy, modify, and distribute this software for any
|
5
|
+
purpose with or without fee is hereby granted, provided that the above
|
6
|
+
copyright notice and this permission notice appear in all copies.
|
7
|
+
|
8
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
9
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
10
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
11
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
12
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
13
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
14
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
15
|
+
|
16
|
+
--------------------------------------------------------------------------------
|
17
|
+
|
18
|
+
You may choose to follow this license or public domain. The intent with
|
19
|
+
dual-licensing this code is to afford you, the end user, maximum freedom
|
20
|
+
with the software. If public domain affords you more freedom, use it.
|
21
|
+
|
22
|
+
|
data/README.md
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# guard-xcode
|
2
|
+
|
3
|
+
Continuous integration for your Xcode project. Run guard in your Xcode
|
4
|
+
directory, one of two things will happen: all your dreams will come true
|
5
|
+
OR any time a source file is changed, guard will kick off a build.
|
6
|
+
Guaranteed or your money back.
|
7
|
+
|
8
|
+
## Prerequisites
|
9
|
+
You need `bundler`. If you've never used `Bundler` before, you'll need to
|
10
|
+
install the `bundler` gem:
|
11
|
+
|
12
|
+
```bash
|
13
|
+
gem install Bundler
|
14
|
+
```
|
15
|
+
|
16
|
+
(You may need to run this as `sudo`.)
|
17
|
+
|
18
|
+
|
19
|
+
## Getting started
|
20
|
+
Create a Gemfile in your project root:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
source :rubygems
|
24
|
+
|
25
|
+
gem "guard-xcode"
|
26
|
+
gem "growl"
|
27
|
+
```
|
28
|
+
|
29
|
+
Run `bundle install` and run `guard xcode` in your project root. You may wish
|
30
|
+
to review the generate Guardfile.
|
31
|
+
|
32
|
+
If you want growl support, you'll need to install [GrowlNotify](http://growl.info/downloads#generaldownloads).
|
33
|
+
See also the [Growl notes](#growl-notes) in this document.
|
34
|
+
|
35
|
+
## Options
|
36
|
+
|
37
|
+
The Xcode Guard supports the following options:
|
38
|
+
|
39
|
+
* `:target` - string defining the target to build (i.e. MyClassTests or MyClass)
|
40
|
+
* `:configuration` - string defining the build configuration to use
|
41
|
+
* `:scheme` - string defining the build scheme to use
|
42
|
+
* `:arch` - string defining the arch to build for
|
43
|
+
* `:all` - boolean indicated whether to build all targets. If true, overrides :target.
|
44
|
+
* `:quiet` - only notify on errors / warnings
|
45
|
+
|
46
|
+
<a name="growl-notes">
|
47
|
+
## Growl Notes
|
48
|
+
</a>
|
49
|
+
There are two options for Growl support:
|
50
|
+
|
51
|
+
* the `growl` gem
|
52
|
+
* the 'growl_notify' gem
|
53
|
+
|
54
|
+
### `growl`
|
55
|
+
This is a safe default, but requires you to download [GrowlNotify](http://growl.info/downloads#generaldownloads).
|
56
|
+
This is enabled by default. If you are using the stock version of Ruby shipped
|
57
|
+
with OS X, this is what you'll want to use. (Also, if you're using JRuby,
|
58
|
+
you'll need to use this.)
|
59
|
+
|
60
|
+
### `growl_notify`
|
61
|
+
If you're using a version of Growl from the App Store, i.e. a version >= 1.3,
|
62
|
+
and you're not using JRuby or MacRuby (the default shipped with OS X), you
|
63
|
+
can use this. Instead of `gem "growl"` in your `Gemfile`, you'll want to
|
64
|
+
use `gem "growl_notify"`. Then, in your Guardfile, you'll need to change the
|
65
|
+
`notification :growl` line to `notification :growl_notify`.
|
data/Rakefile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rdoc/task'
|
4
|
+
|
5
|
+
Rake::TestTask.new do |t|
|
6
|
+
t.libs << 'test'
|
7
|
+
end
|
8
|
+
|
9
|
+
RDoc::Task.new do |rdoc|
|
10
|
+
rdoc.main = "README.rdoc"
|
11
|
+
rdoc.rdoc_files.include("lib/*.rb")
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Run tests"
|
15
|
+
task :default => :test
|
data/guard-xcode.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "guard-xcode"
|
6
|
+
s.version = "1.0.0"
|
7
|
+
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
+
|
10
|
+
s.authors = ["Kyle Isom"]
|
11
|
+
s.email = ["coder@kyleisom.net"]
|
12
|
+
s.homepage = "https://github.com/kisom/guard-xcode"
|
13
|
+
s.summary = "Run Xcode builds when source files change."
|
14
|
+
s.licenses = ["ISC", "public domain"]
|
15
|
+
s.description = "Build an Xcode project when source files change."
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
s.extra_rdoc_files = [
|
22
|
+
"LICENSE.md",
|
23
|
+
"README.md"
|
24
|
+
]
|
25
|
+
|
26
|
+
s.add_runtime_dependency "guard"
|
27
|
+
#s.add_development_dependency "rspec"
|
28
|
+
end
|
data/lib/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/lib/guard/xcode.rb
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
require 'guard'
|
2
|
+
require 'guard/guard'
|
3
|
+
|
4
|
+
module Guard
|
5
|
+
class Xcode < ::Guard::Guard
|
6
|
+
# Build an Xcode project on file change
|
7
|
+
#
|
8
|
+
# Should be initialised with 'guard xcode' in the target project's
|
9
|
+
# directory
|
10
|
+
|
11
|
+
attr_reader :options
|
12
|
+
|
13
|
+
# Initialize a Guard.
|
14
|
+
# @param [Array<Guard::Watcher>] watchers the Guard file watchers
|
15
|
+
# @param [Hash] options the custom Guard options
|
16
|
+
def initialize(watchers = [], options = {})
|
17
|
+
super
|
18
|
+
@target = options[:target]
|
19
|
+
@config = options[:configuration]
|
20
|
+
@scheme = options[:scheme]
|
21
|
+
@arch = options[:arch]
|
22
|
+
|
23
|
+
if true == options[:all]
|
24
|
+
@all = true
|
25
|
+
@target = nil
|
26
|
+
else
|
27
|
+
@all = false
|
28
|
+
end
|
29
|
+
|
30
|
+
if true == options[:quiet]
|
31
|
+
@quiet = true
|
32
|
+
else
|
33
|
+
@quiet = false
|
34
|
+
end
|
35
|
+
|
36
|
+
if true == options[:clean]
|
37
|
+
@clean = true
|
38
|
+
else
|
39
|
+
@clean = false
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_build_line
|
44
|
+
# generate the build line from the initialised options
|
45
|
+
build_line = 'xcodebuild '
|
46
|
+
|
47
|
+
## configure build options
|
48
|
+
unless nil == @config
|
49
|
+
build_line += "-configuration #{@config} "
|
50
|
+
end
|
51
|
+
|
52
|
+
unless nil == @target
|
53
|
+
build_line += "-target #{@target} "
|
54
|
+
end
|
55
|
+
|
56
|
+
if @all
|
57
|
+
build_line += "-alltargets "
|
58
|
+
end
|
59
|
+
|
60
|
+
unless nil == @scheme
|
61
|
+
build_line += "-scheme #{@scheme} "
|
62
|
+
end
|
63
|
+
|
64
|
+
unless nil == @arch
|
65
|
+
build_line += "-arch #{@arch} "
|
66
|
+
end
|
67
|
+
|
68
|
+
unless false == @clean
|
69
|
+
build_line += "clean "
|
70
|
+
end
|
71
|
+
|
72
|
+
build_line += "build"
|
73
|
+
end
|
74
|
+
|
75
|
+
def run_build(build_line)
|
76
|
+
# run the build, returning a list of alerts
|
77
|
+
#
|
78
|
+
# returns:
|
79
|
+
# a list of symbols; possible values include :errors and :warnings which
|
80
|
+
# indicate the build included warnings or errors. Returning an empty list
|
81
|
+
# means no errors were detected.
|
82
|
+
alerts = []
|
83
|
+
|
84
|
+
unless @quiet
|
85
|
+
Notifier.notify("kicking off build with:\n#{build_line}")
|
86
|
+
end
|
87
|
+
|
88
|
+
output = `#{build_line}`
|
89
|
+
res = $?
|
90
|
+
|
91
|
+
unless @quiet
|
92
|
+
Notifier.notify("build finished.")
|
93
|
+
end
|
94
|
+
|
95
|
+
unless @quiet
|
96
|
+
puts output
|
97
|
+
end
|
98
|
+
|
99
|
+
if not 0 == res or output =~ /errors? generated/
|
100
|
+
Notifier.notify("xcode: errors in build!")
|
101
|
+
alerts.push :errors
|
102
|
+
end
|
103
|
+
|
104
|
+
if output =~ /warning/
|
105
|
+
Notifier.notify("xcode: warnings in build!")
|
106
|
+
alerts.push :warnings
|
107
|
+
end
|
108
|
+
|
109
|
+
alerts
|
110
|
+
end
|
111
|
+
|
112
|
+
# Call once when Guard starts. Please override initialize method to init stuff.
|
113
|
+
# @raise [:task_has_failed] when start has failed
|
114
|
+
def start
|
115
|
+
end
|
116
|
+
|
117
|
+
# Called when `stop|quit|exit|s|q|e + enter` is pressed (when Guard quits).
|
118
|
+
# @raise [:task_has_failed] when stop has failed
|
119
|
+
def stop
|
120
|
+
end
|
121
|
+
|
122
|
+
# Called when `reload|r|z + enter` is pressed.
|
123
|
+
# This method should be mainly used for "reload" (really!) actions like reloading passenger/spork/bundler/...
|
124
|
+
# @raise [:task_has_failed] when reload has failed
|
125
|
+
def reload
|
126
|
+
end
|
127
|
+
|
128
|
+
# Called when just `enter` is pressed
|
129
|
+
# This method should be principally used for long action like running all specs/tests/...
|
130
|
+
# @raise [:task_has_failed] when run_all has failed
|
131
|
+
def run_all
|
132
|
+
run_build(get_build_line)
|
133
|
+
end
|
134
|
+
|
135
|
+
# Called on file(s) modifications that the Guard watches.
|
136
|
+
# @param [Array<String>] paths the changes files or paths
|
137
|
+
# @raise [:task_has_failed] when run_on_change has failed
|
138
|
+
def run_on_change(paths)
|
139
|
+
run_build(get_build_line)
|
140
|
+
end
|
141
|
+
|
142
|
+
# Called on file(s) deletions that the Guard watches.
|
143
|
+
# @param [Array<String>] paths the deleted files or paths
|
144
|
+
# @raise [:task_has_failed] when run_on_change has failed
|
145
|
+
def run_on_deletion(paths)
|
146
|
+
run_build(get_build_line)
|
147
|
+
end
|
148
|
+
|
149
|
+
end
|
150
|
+
end
|
data/lib/guard-xcode.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "guard/xcode"
|
@@ -0,0 +1,79 @@
|
|
1
|
+
.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples.
|
2
|
+
.\"See Also:
|
3
|
+
.\"man mdoc.samples for a complete listing of options
|
4
|
+
.\"man mdoc for the short list of editing options
|
5
|
+
.\"/usr/share/misc/mdoc.template
|
6
|
+
.Dd 16/03/2012 \" DATE
|
7
|
+
.Dt GuardXcodeTest 1 \" Program name and manual section number
|
8
|
+
.Os Darwin
|
9
|
+
.Sh NAME \" Section Header - required - don't modify
|
10
|
+
.Nm GuardXcodeTest,
|
11
|
+
.\" The following lines are read in generating the apropos(man -k) database. Use only key
|
12
|
+
.\" words here as the database is built based on the words here and in the .ND line.
|
13
|
+
.Nm Other_name_for_same_program(),
|
14
|
+
.Nm Yet another name for the same program.
|
15
|
+
.\" Use .Nm macro to designate other names for the documented program.
|
16
|
+
.Nd This line parsed for whatis database.
|
17
|
+
.Sh SYNOPSIS \" Section Header - required - don't modify
|
18
|
+
.Nm
|
19
|
+
.Op Fl abcd \" [-abcd]
|
20
|
+
.Op Fl a Ar path \" [-a path]
|
21
|
+
.Op Ar file \" [file]
|
22
|
+
.Op Ar \" [file ...]
|
23
|
+
.Ar arg0 \" Underlined argument - use .Ar anywhere to underline
|
24
|
+
arg2 ... \" Arguments
|
25
|
+
.Sh DESCRIPTION \" Section Header - required - don't modify
|
26
|
+
Use the .Nm macro to refer to your program throughout the man page like such:
|
27
|
+
.Nm
|
28
|
+
Underlining is accomplished with the .Ar macro like this:
|
29
|
+
.Ar underlined text .
|
30
|
+
.Pp \" Inserts a space
|
31
|
+
A list of items with descriptions:
|
32
|
+
.Bl -tag -width -indent \" Begins a tagged list
|
33
|
+
.It item a \" Each item preceded by .It macro
|
34
|
+
Description of item a
|
35
|
+
.It item b
|
36
|
+
Description of item b
|
37
|
+
.El \" Ends the list
|
38
|
+
.Pp
|
39
|
+
A list of flags and their descriptions:
|
40
|
+
.Bl -tag -width -indent \" Differs from above in tag removed
|
41
|
+
.It Fl a \"-a flag as a list item
|
42
|
+
Description of -a flag
|
43
|
+
.It Fl b
|
44
|
+
Description of -b flag
|
45
|
+
.El \" Ends the list
|
46
|
+
.Pp
|
47
|
+
.\" .Sh ENVIRONMENT \" May not be needed
|
48
|
+
.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1
|
49
|
+
.\" .It Ev ENV_VAR_1
|
50
|
+
.\" Description of ENV_VAR_1
|
51
|
+
.\" .It Ev ENV_VAR_2
|
52
|
+
.\" Description of ENV_VAR_2
|
53
|
+
.\" .El
|
54
|
+
.Sh FILES \" File used or created by the topic of the man page
|
55
|
+
.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
|
56
|
+
.It Pa /usr/share/file_name
|
57
|
+
FILE_1 description
|
58
|
+
.It Pa /Users/joeuser/Library/really_long_file_name
|
59
|
+
FILE_2 description
|
60
|
+
.El \" Ends the list
|
61
|
+
.\" .Sh DIAGNOSTICS \" May not be needed
|
62
|
+
.\" .Bl -diag
|
63
|
+
.\" .It Diagnostic Tag
|
64
|
+
.\" Diagnostic informtion here.
|
65
|
+
.\" .It Diagnostic Tag
|
66
|
+
.\" Diagnostic informtion here.
|
67
|
+
.\" .El
|
68
|
+
.Sh SEE ALSO
|
69
|
+
.\" List links in ascending order by section, alphabetically within a section.
|
70
|
+
.\" Please do not reference files that do not exist without filing a bug report
|
71
|
+
.Xr a 1 ,
|
72
|
+
.Xr b 1 ,
|
73
|
+
.Xr c 1 ,
|
74
|
+
.Xr a 2 ,
|
75
|
+
.Xr b 2 ,
|
76
|
+
.Xr a 3 ,
|
77
|
+
.Xr b 3
|
78
|
+
.\" .Sh BUGS \" Document known, unremedied bugs
|
79
|
+
.\" .Sh HISTORY \" Document history if command behaves in a unique manner
|
@@ -0,0 +1,21 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// GuardXcodeTest
|
4
|
+
//
|
5
|
+
// Created by Kyle Isom on 16/03/2012.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import <Foundation/Foundation.h>
|
9
|
+
|
10
|
+
int main(int argc, const char * argv[])
|
11
|
+
{
|
12
|
+
|
13
|
+
@autoreleasepool {
|
14
|
+
|
15
|
+
// insert code here...
|
16
|
+
NSLog(@"Hello, World!");
|
17
|
+
|
18
|
+
}
|
19
|
+
return 0;
|
20
|
+
}
|
21
|
+
|
@@ -0,0 +1,238 @@
|
|
1
|
+
// !$*UTF8*$!
|
2
|
+
{
|
3
|
+
archiveVersion = 1;
|
4
|
+
classes = {
|
5
|
+
};
|
6
|
+
objectVersion = 46;
|
7
|
+
objects = {
|
8
|
+
|
9
|
+
/* Begin PBXBuildFile section */
|
10
|
+
27C9929D1513CD0A00134440 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27C9929C1513CD0A00134440 /* Foundation.framework */; };
|
11
|
+
27C992A01513CD0A00134440 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 27C9929F1513CD0A00134440 /* main.m */; };
|
12
|
+
27C992A41513CD0A00134440 /* GuardXcodeTest.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = 27C992A31513CD0A00134440 /* GuardXcodeTest.1 */; };
|
13
|
+
/* End PBXBuildFile section */
|
14
|
+
|
15
|
+
/* Begin PBXCopyFilesBuildPhase section */
|
16
|
+
27C992961513CD0A00134440 /* CopyFiles */ = {
|
17
|
+
isa = PBXCopyFilesBuildPhase;
|
18
|
+
buildActionMask = 2147483647;
|
19
|
+
dstPath = /usr/share/man/man1/;
|
20
|
+
dstSubfolderSpec = 0;
|
21
|
+
files = (
|
22
|
+
27C992A41513CD0A00134440 /* GuardXcodeTest.1 in CopyFiles */,
|
23
|
+
);
|
24
|
+
runOnlyForDeploymentPostprocessing = 1;
|
25
|
+
};
|
26
|
+
/* End PBXCopyFilesBuildPhase section */
|
27
|
+
|
28
|
+
/* Begin PBXFileReference section */
|
29
|
+
27C992981513CD0A00134440 /* GuardXcodeTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = GuardXcodeTest; sourceTree = BUILT_PRODUCTS_DIR; };
|
30
|
+
27C9929C1513CD0A00134440 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
31
|
+
27C9929F1513CD0A00134440 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
32
|
+
27C992A21513CD0A00134440 /* GuardXcodeTest-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "GuardXcodeTest-Prefix.pch"; sourceTree = "<group>"; };
|
33
|
+
27C992A31513CD0A00134440 /* GuardXcodeTest.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = GuardXcodeTest.1; sourceTree = "<group>"; };
|
34
|
+
/* End PBXFileReference section */
|
35
|
+
|
36
|
+
/* Begin PBXFrameworksBuildPhase section */
|
37
|
+
27C992951513CD0A00134440 /* Frameworks */ = {
|
38
|
+
isa = PBXFrameworksBuildPhase;
|
39
|
+
buildActionMask = 2147483647;
|
40
|
+
files = (
|
41
|
+
27C9929D1513CD0A00134440 /* Foundation.framework in Frameworks */,
|
42
|
+
);
|
43
|
+
runOnlyForDeploymentPostprocessing = 0;
|
44
|
+
};
|
45
|
+
/* End PBXFrameworksBuildPhase section */
|
46
|
+
|
47
|
+
/* Begin PBXGroup section */
|
48
|
+
27C9928D1513CD0A00134440 = {
|
49
|
+
isa = PBXGroup;
|
50
|
+
children = (
|
51
|
+
27C9929E1513CD0A00134440 /* GuardXcodeTest */,
|
52
|
+
27C9929B1513CD0A00134440 /* Frameworks */,
|
53
|
+
27C992991513CD0A00134440 /* Products */,
|
54
|
+
);
|
55
|
+
sourceTree = "<group>";
|
56
|
+
};
|
57
|
+
27C992991513CD0A00134440 /* Products */ = {
|
58
|
+
isa = PBXGroup;
|
59
|
+
children = (
|
60
|
+
27C992981513CD0A00134440 /* GuardXcodeTest */,
|
61
|
+
);
|
62
|
+
name = Products;
|
63
|
+
sourceTree = "<group>";
|
64
|
+
};
|
65
|
+
27C9929B1513CD0A00134440 /* Frameworks */ = {
|
66
|
+
isa = PBXGroup;
|
67
|
+
children = (
|
68
|
+
27C9929C1513CD0A00134440 /* Foundation.framework */,
|
69
|
+
);
|
70
|
+
name = Frameworks;
|
71
|
+
sourceTree = "<group>";
|
72
|
+
};
|
73
|
+
27C9929E1513CD0A00134440 /* GuardXcodeTest */ = {
|
74
|
+
isa = PBXGroup;
|
75
|
+
children = (
|
76
|
+
27C9929F1513CD0A00134440 /* main.m */,
|
77
|
+
27C992A31513CD0A00134440 /* GuardXcodeTest.1 */,
|
78
|
+
27C992A11513CD0A00134440 /* Supporting Files */,
|
79
|
+
);
|
80
|
+
path = GuardXcodeTest;
|
81
|
+
sourceTree = "<group>";
|
82
|
+
};
|
83
|
+
27C992A11513CD0A00134440 /* Supporting Files */ = {
|
84
|
+
isa = PBXGroup;
|
85
|
+
children = (
|
86
|
+
27C992A21513CD0A00134440 /* GuardXcodeTest-Prefix.pch */,
|
87
|
+
);
|
88
|
+
name = "Supporting Files";
|
89
|
+
sourceTree = "<group>";
|
90
|
+
};
|
91
|
+
/* End PBXGroup section */
|
92
|
+
|
93
|
+
/* Begin PBXNativeTarget section */
|
94
|
+
27C992971513CD0A00134440 /* GuardXcodeTest */ = {
|
95
|
+
isa = PBXNativeTarget;
|
96
|
+
buildConfigurationList = 27C992A71513CD0A00134440 /* Build configuration list for PBXNativeTarget "GuardXcodeTest" */;
|
97
|
+
buildPhases = (
|
98
|
+
27C992941513CD0A00134440 /* Sources */,
|
99
|
+
27C992951513CD0A00134440 /* Frameworks */,
|
100
|
+
27C992961513CD0A00134440 /* CopyFiles */,
|
101
|
+
);
|
102
|
+
buildRules = (
|
103
|
+
);
|
104
|
+
dependencies = (
|
105
|
+
);
|
106
|
+
name = GuardXcodeTest;
|
107
|
+
productName = GuardXcodeTest;
|
108
|
+
productReference = 27C992981513CD0A00134440 /* GuardXcodeTest */;
|
109
|
+
productType = "com.apple.product-type.tool";
|
110
|
+
};
|
111
|
+
/* End PBXNativeTarget section */
|
112
|
+
|
113
|
+
/* Begin PBXProject section */
|
114
|
+
27C9928F1513CD0A00134440 /* Project object */ = {
|
115
|
+
isa = PBXProject;
|
116
|
+
attributes = {
|
117
|
+
LastUpgradeCheck = 0440;
|
118
|
+
};
|
119
|
+
buildConfigurationList = 27C992921513CD0A00134440 /* Build configuration list for PBXProject "GuardXcodeTest" */;
|
120
|
+
compatibilityVersion = "Xcode 3.2";
|
121
|
+
developmentRegion = English;
|
122
|
+
hasScannedForEncodings = 0;
|
123
|
+
knownRegions = (
|
124
|
+
en,
|
125
|
+
);
|
126
|
+
mainGroup = 27C9928D1513CD0A00134440;
|
127
|
+
productRefGroup = 27C992991513CD0A00134440 /* Products */;
|
128
|
+
projectDirPath = "";
|
129
|
+
projectRoot = "";
|
130
|
+
targets = (
|
131
|
+
27C992971513CD0A00134440 /* GuardXcodeTest */,
|
132
|
+
);
|
133
|
+
};
|
134
|
+
/* End PBXProject section */
|
135
|
+
|
136
|
+
/* Begin PBXSourcesBuildPhase section */
|
137
|
+
27C992941513CD0A00134440 /* Sources */ = {
|
138
|
+
isa = PBXSourcesBuildPhase;
|
139
|
+
buildActionMask = 2147483647;
|
140
|
+
files = (
|
141
|
+
27C992A01513CD0A00134440 /* main.m in Sources */,
|
142
|
+
);
|
143
|
+
runOnlyForDeploymentPostprocessing = 0;
|
144
|
+
};
|
145
|
+
/* End PBXSourcesBuildPhase section */
|
146
|
+
|
147
|
+
/* Begin XCBuildConfiguration section */
|
148
|
+
27C992A51513CD0A00134440 /* Debug */ = {
|
149
|
+
isa = XCBuildConfiguration;
|
150
|
+
buildSettings = {
|
151
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
152
|
+
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
153
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
154
|
+
COPY_PHASE_STRIP = NO;
|
155
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
156
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
157
|
+
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
158
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
159
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
160
|
+
"DEBUG=1",
|
161
|
+
"$(inherited)",
|
162
|
+
);
|
163
|
+
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
164
|
+
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
165
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
166
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
167
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
168
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
169
|
+
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
170
|
+
ONLY_ACTIVE_ARCH = YES;
|
171
|
+
SDKROOT = macosx;
|
172
|
+
};
|
173
|
+
name = Debug;
|
174
|
+
};
|
175
|
+
27C992A61513CD0A00134440 /* Release */ = {
|
176
|
+
isa = XCBuildConfiguration;
|
177
|
+
buildSettings = {
|
178
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
179
|
+
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
180
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
181
|
+
COPY_PHASE_STRIP = YES;
|
182
|
+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
183
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
184
|
+
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
185
|
+
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
186
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
187
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
188
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
189
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
190
|
+
MACOSX_DEPLOYMENT_TARGET = 10.8;
|
191
|
+
SDKROOT = macosx;
|
192
|
+
};
|
193
|
+
name = Release;
|
194
|
+
};
|
195
|
+
27C992A81513CD0A00134440 /* Debug */ = {
|
196
|
+
isa = XCBuildConfiguration;
|
197
|
+
buildSettings = {
|
198
|
+
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
199
|
+
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
200
|
+
GCC_PREFIX_HEADER = "GuardXcodeTest/GuardXcodeTest-Prefix.pch";
|
201
|
+
PRODUCT_NAME = "$(TARGET_NAME)";
|
202
|
+
};
|
203
|
+
name = Debug;
|
204
|
+
};
|
205
|
+
27C992A91513CD0A00134440 /* Release */ = {
|
206
|
+
isa = XCBuildConfiguration;
|
207
|
+
buildSettings = {
|
208
|
+
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
209
|
+
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
210
|
+
GCC_PREFIX_HEADER = "GuardXcodeTest/GuardXcodeTest-Prefix.pch";
|
211
|
+
PRODUCT_NAME = "$(TARGET_NAME)";
|
212
|
+
};
|
213
|
+
name = Release;
|
214
|
+
};
|
215
|
+
/* End XCBuildConfiguration section */
|
216
|
+
|
217
|
+
/* Begin XCConfigurationList section */
|
218
|
+
27C992921513CD0A00134440 /* Build configuration list for PBXProject "GuardXcodeTest" */ = {
|
219
|
+
isa = XCConfigurationList;
|
220
|
+
buildConfigurations = (
|
221
|
+
27C992A51513CD0A00134440 /* Debug */,
|
222
|
+
27C992A61513CD0A00134440 /* Release */,
|
223
|
+
);
|
224
|
+
defaultConfigurationIsVisible = 0;
|
225
|
+
defaultConfigurationName = Release;
|
226
|
+
};
|
227
|
+
27C992A71513CD0A00134440 /* Build configuration list for PBXNativeTarget "GuardXcodeTest" */ = {
|
228
|
+
isa = XCConfigurationList;
|
229
|
+
buildConfigurations = (
|
230
|
+
27C992A81513CD0A00134440 /* Debug */,
|
231
|
+
27C992A91513CD0A00134440 /* Release */,
|
232
|
+
);
|
233
|
+
defaultConfigurationIsVisible = 0;
|
234
|
+
};
|
235
|
+
/* End XCConfigurationList section */
|
236
|
+
};
|
237
|
+
rootObject = 27C9928F1513CD0A00134440 /* Project object */;
|
238
|
+
}
|
Binary file
|
@@ -0,0 +1,85 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Scheme
|
3
|
+
version = "1.3">
|
4
|
+
<BuildAction
|
5
|
+
parallelizeBuildables = "YES"
|
6
|
+
buildImplicitDependencies = "YES">
|
7
|
+
<BuildActionEntries>
|
8
|
+
<BuildActionEntry
|
9
|
+
buildForTesting = "YES"
|
10
|
+
buildForRunning = "YES"
|
11
|
+
buildForProfiling = "YES"
|
12
|
+
buildForArchiving = "YES"
|
13
|
+
buildForAnalyzing = "YES">
|
14
|
+
<BuildableReference
|
15
|
+
BuildableIdentifier = "primary"
|
16
|
+
BlueprintIdentifier = "27C992971513CD0A00134440"
|
17
|
+
BuildableName = "GuardXcodeTest"
|
18
|
+
BlueprintName = "GuardXcodeTest"
|
19
|
+
ReferencedContainer = "container:GuardXcodeTest.xcodeproj">
|
20
|
+
</BuildableReference>
|
21
|
+
</BuildActionEntry>
|
22
|
+
</BuildActionEntries>
|
23
|
+
</BuildAction>
|
24
|
+
<TestAction
|
25
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
26
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
27
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
28
|
+
buildConfiguration = "Debug">
|
29
|
+
<Testables>
|
30
|
+
</Testables>
|
31
|
+
<MacroExpansion>
|
32
|
+
<BuildableReference
|
33
|
+
BuildableIdentifier = "primary"
|
34
|
+
BlueprintIdentifier = "27C992971513CD0A00134440"
|
35
|
+
BuildableName = "GuardXcodeTest"
|
36
|
+
BlueprintName = "GuardXcodeTest"
|
37
|
+
ReferencedContainer = "container:GuardXcodeTest.xcodeproj">
|
38
|
+
</BuildableReference>
|
39
|
+
</MacroExpansion>
|
40
|
+
</TestAction>
|
41
|
+
<LaunchAction
|
42
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
43
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
44
|
+
launchStyle = "0"
|
45
|
+
useCustomWorkingDirectory = "NO"
|
46
|
+
buildConfiguration = "Debug"
|
47
|
+
ignoresPersistentStateOnLaunch = "NO"
|
48
|
+
debugDocumentVersioning = "YES"
|
49
|
+
allowLocationSimulation = "YES">
|
50
|
+
<BuildableProductRunnable>
|
51
|
+
<BuildableReference
|
52
|
+
BuildableIdentifier = "primary"
|
53
|
+
BlueprintIdentifier = "27C992971513CD0A00134440"
|
54
|
+
BuildableName = "GuardXcodeTest"
|
55
|
+
BlueprintName = "GuardXcodeTest"
|
56
|
+
ReferencedContainer = "container:GuardXcodeTest.xcodeproj">
|
57
|
+
</BuildableReference>
|
58
|
+
</BuildableProductRunnable>
|
59
|
+
<AdditionalOptions>
|
60
|
+
</AdditionalOptions>
|
61
|
+
</LaunchAction>
|
62
|
+
<ProfileAction
|
63
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
64
|
+
savedToolIdentifier = ""
|
65
|
+
useCustomWorkingDirectory = "NO"
|
66
|
+
buildConfiguration = "Release"
|
67
|
+
debugDocumentVersioning = "YES">
|
68
|
+
<BuildableProductRunnable>
|
69
|
+
<BuildableReference
|
70
|
+
BuildableIdentifier = "primary"
|
71
|
+
BlueprintIdentifier = "27C992971513CD0A00134440"
|
72
|
+
BuildableName = "GuardXcodeTest"
|
73
|
+
BlueprintName = "GuardXcodeTest"
|
74
|
+
ReferencedContainer = "container:GuardXcodeTest.xcodeproj">
|
75
|
+
</BuildableReference>
|
76
|
+
</BuildableProductRunnable>
|
77
|
+
</ProfileAction>
|
78
|
+
<AnalyzeAction
|
79
|
+
buildConfiguration = "Debug">
|
80
|
+
</AnalyzeAction>
|
81
|
+
<ArchiveAction
|
82
|
+
buildConfiguration = "Release"
|
83
|
+
revealArchiveInOrganizer = "YES">
|
84
|
+
</ArchiveAction>
|
85
|
+
</Scheme>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>SchemeUserState</key>
|
6
|
+
<dict>
|
7
|
+
<key>GuardXcodeTest.xcscheme</key>
|
8
|
+
<dict>
|
9
|
+
<key>orderHint</key>
|
10
|
+
<integer>0</integer>
|
11
|
+
</dict>
|
12
|
+
</dict>
|
13
|
+
<key>SuppressBuildableAutocreation</key>
|
14
|
+
<dict>
|
15
|
+
<key>27C992971513CD0A00134440</key>
|
16
|
+
<dict>
|
17
|
+
<key>primary</key>
|
18
|
+
<true/>
|
19
|
+
</dict>
|
20
|
+
</dict>
|
21
|
+
</dict>
|
22
|
+
</plist>
|
data/test/data/main.m
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// GuardXcodeTest
|
4
|
+
//
|
5
|
+
// Created by Kyle Isom on 16/03/2012.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import <Foundation/Foundation.h>
|
9
|
+
|
10
|
+
int main(int argc, const char * argv[])
|
11
|
+
{
|
12
|
+
|
13
|
+
@autoreleasepool {
|
14
|
+
|
15
|
+
// insert code here...
|
16
|
+
NSLog(@"Hello, World!");
|
17
|
+
|
18
|
+
}
|
19
|
+
return 0;
|
20
|
+
}
|
21
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// GuardXcodeTest
|
4
|
+
//
|
5
|
+
// Created by Kyle Isom on 16/03/2012.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import <Foundation/Foundation.h>
|
9
|
+
|
10
|
+
int main(int argc, const char * argv[])
|
11
|
+
{
|
12
|
+
|
13
|
+
@autoreleasepool {
|
14
|
+
|
15
|
+
// insert code here...
|
16
|
+
NSLog(@"Hello, World!");
|
17
|
+
foo
|
18
|
+
|
19
|
+
}
|
20
|
+
return 0;
|
21
|
+
}
|
22
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// GuardXcodeTest
|
4
|
+
//
|
5
|
+
// Created by Kyle Isom on 16/03/2012.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import <Foundation/Foundation.h>
|
9
|
+
|
10
|
+
int main(int argc, const char * argv[])
|
11
|
+
{
|
12
|
+
|
13
|
+
@autoreleasepool {
|
14
|
+
|
15
|
+
// insert code here...
|
16
|
+
NSLog(@"Hello, World!");
|
17
|
+
|
18
|
+
}
|
19
|
+
return 0;
|
20
|
+
}
|
21
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// GuardXcodeTest
|
4
|
+
//
|
5
|
+
// Created by Kyle Isom on 16/03/2012.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import <Foundation/Foundation.h>
|
9
|
+
|
10
|
+
int main(int argc, const char * argv[])
|
11
|
+
{
|
12
|
+
|
13
|
+
@autoreleasepool {
|
14
|
+
|
15
|
+
// insert code here...
|
16
|
+
NSLog(@"Hello, World!");
|
17
|
+
int foo;
|
18
|
+
|
19
|
+
}
|
20
|
+
return 0;
|
21
|
+
}
|
22
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
//
|
2
|
+
// main.m
|
3
|
+
// GuardXcodeTest
|
4
|
+
//
|
5
|
+
// Created by Kyle Isom on 16/03/2012.
|
6
|
+
//
|
7
|
+
|
8
|
+
#import <Foundation/Foundation.h>
|
9
|
+
|
10
|
+
int main(int argc, const char * argv[])
|
11
|
+
{
|
12
|
+
|
13
|
+
@autoreleasepool {
|
14
|
+
|
15
|
+
// insert code here...
|
16
|
+
NSLog(@"Hello, World!");
|
17
|
+
int foo;
|
18
|
+
foo
|
19
|
+
|
20
|
+
}
|
21
|
+
return 0;
|
22
|
+
}
|
23
|
+
|
data/test/test_build.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'guard/xcode'
|
3
|
+
|
4
|
+
class TestBuild < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@xcode_test_path = 'test/GuardXcodeTest'
|
7
|
+
@toplevel = Dir.pwd
|
8
|
+
@builder = Guard::Xcode.new [], :quiet => true, :clean => true, :all => true
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
@res = nil
|
13
|
+
@builder = nil
|
14
|
+
Dir.chdir @toplevel
|
15
|
+
`cp test/data/main.m "#{@xcode_test_path}/GuardXcodeTest/main.m"`
|
16
|
+
end
|
17
|
+
|
18
|
+
def run_with_new_main(mainfile)
|
19
|
+
`cp "#{mainfile}" "#{@xcode_test_path}/GuardXcodeTest/main.m"`
|
20
|
+
assert $? == 0, "copy of #{mainfile} failed: returned #{$?}, expected 0"
|
21
|
+
Dir.chdir(@xcode_test_path)
|
22
|
+
return @builder.run_build(@builder.get_build_line)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_good
|
26
|
+
res = run_with_new_main 'test/data/main_good.m'
|
27
|
+
assert res.empty?
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_warnings
|
31
|
+
res = run_with_new_main 'test/data/main_warnings.m'
|
32
|
+
assert res == [:warnings], "expected: #{[:warnings]}, got #{res}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_errors
|
36
|
+
res = run_with_new_main 'test/data/main_error.m'
|
37
|
+
assert res == [:errors], "expected: #{[:warnings]}, got #{res}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_warnings_and_errors
|
41
|
+
res = run_with_new_main 'test/data/main_warnings_error.m'
|
42
|
+
assert res == [:errors, :warnings], "expected: #{[:errors, :warnings]}, got #{res}"
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'guard/xcode'
|
3
|
+
|
4
|
+
class XcodeTestBuildLines < Test::Unit::TestCase
|
5
|
+
def test_target_build_line
|
6
|
+
target = 'xcodebuild -target MyApp build'
|
7
|
+
targetGuard = Guard::Xcode.new [], :target =>'MyApp'
|
8
|
+
assert target == targetGuard.get_build_line
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_config_build_line
|
12
|
+
config = 'xcodebuild -configuration MyConfig build'
|
13
|
+
configGuard = Guard::Xcode.new [], :configuration => 'MyConfig'
|
14
|
+
assert config == configGuard.get_build_line, "expected #{config} but got #{configGuard.get_build_line}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_scheme_build_line
|
18
|
+
scheme = 'xcodebuild -scheme MyScheme build'
|
19
|
+
schemeGuard = Guard::Xcode.new [], :scheme => 'MyScheme'
|
20
|
+
assert scheme == schemeGuard.get_build_line
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_arch_build_line
|
24
|
+
arch = 'xcodebuild -arch x86_64 build'
|
25
|
+
archGuard = Guard::Xcode.new [], :arch => 'x86_64'
|
26
|
+
assert arch == archGuard.get_build_line
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_all_build_line
|
30
|
+
all = 'xcodebuild -alltargets build'
|
31
|
+
allGuard = Guard::Xcode.new [], :all => true
|
32
|
+
assert all == allGuard.get_build_line
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: guard-xcode
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kyle Isom
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: guard
|
16
|
+
requirement: &70171788474760 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70171788474760
|
25
|
+
description: Build an Xcode project when source files change.
|
26
|
+
email:
|
27
|
+
- coder@kyleisom.net
|
28
|
+
executables: []
|
29
|
+
extensions: []
|
30
|
+
extra_rdoc_files:
|
31
|
+
- LICENSE.md
|
32
|
+
- README.md
|
33
|
+
files:
|
34
|
+
- .gitignore
|
35
|
+
- Gemfile
|
36
|
+
- LICENSE.md
|
37
|
+
- README.md
|
38
|
+
- Rakefile
|
39
|
+
- guard-xcode.gemspec
|
40
|
+
- lib/.rspec
|
41
|
+
- lib/guard-xcode.rb
|
42
|
+
- lib/guard/xcode.rb
|
43
|
+
- lib/guard/xcode/templates/Guardfile
|
44
|
+
- lib/guard/xcode/version.rb
|
45
|
+
- test/GuardXcodeTest/GuardXcodeTest.xcodeproj/project.pbxproj
|
46
|
+
- test/GuardXcodeTest/GuardXcodeTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata
|
47
|
+
- test/GuardXcodeTest/GuardXcodeTest.xcodeproj/project.xcworkspace/xcuserdata/kyle.xcuserdatad/UserInterfaceState.xcuserstate
|
48
|
+
- test/GuardXcodeTest/GuardXcodeTest.xcodeproj/xcuserdata/kyle.xcuserdatad/xcschemes/GuardXcodeTest.xcscheme
|
49
|
+
- test/GuardXcodeTest/GuardXcodeTest.xcodeproj/xcuserdata/kyle.xcuserdatad/xcschemes/xcschememanagement.plist
|
50
|
+
- test/GuardXcodeTest/GuardXcodeTest/GuardXcodeTest-Prefix.pch
|
51
|
+
- test/GuardXcodeTest/GuardXcodeTest/GuardXcodeTest.1
|
52
|
+
- test/GuardXcodeTest/GuardXcodeTest/main.m
|
53
|
+
- test/data/main.m
|
54
|
+
- test/data/main_error.m
|
55
|
+
- test/data/main_good.m
|
56
|
+
- test/data/main_warnings.m
|
57
|
+
- test/data/main_warnings_error.m
|
58
|
+
- test/test_build.rb
|
59
|
+
- test/test_build_lines.rb
|
60
|
+
homepage: https://github.com/kisom/guard-xcode
|
61
|
+
licenses:
|
62
|
+
- ISC
|
63
|
+
- public domain
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options: []
|
66
|
+
require_paths:
|
67
|
+
- lib
|
68
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
requirements: []
|
81
|
+
rubyforge_project:
|
82
|
+
rubygems_version: 1.8.15
|
83
|
+
signing_key:
|
84
|
+
specification_version: 3
|
85
|
+
summary: Run Xcode builds when source files change.
|
86
|
+
test_files: []
|