guardian-angel 0.0.4 → 0.0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aa1d8955513a660d1b1d388fd12325528fa3f392
4
- data.tar.gz: a4cf0ea6e13f48e6bdc59dd79d6146cbca6447c5
3
+ metadata.gz: 4c3d7a4126ea074120b6b45eefd6e1318a88c441
4
+ data.tar.gz: 3ccfdf46e4bd7310da9a2c4d83d0cf55d84425a5
5
5
  SHA512:
6
- metadata.gz: 5a091afeeb1b9a16f63df72fe85a19ed1f119371dfef0a48ecc500da3cf59db2d7565bcd7d1d89591ce97f69a90fa03aab44c08d6b1cab6d78efcdebf2517203
7
- data.tar.gz: 0e6e83763a3f99afb4a1d64b75faea84661d35a6724b28d9b2c78f1892956fb5979b5ad891156f2db846540ff012210db381c4cbb821aded36521235a8685f7d
6
+ metadata.gz: ed8f3b0d935e3e7f974a5e2e0a2f282ab2c1afe8b71cc4149784c36c81b3689bd2e4494a47f443abb9f3bd4b252a8d0fc682c5de0ad1d24497c570070ff7ddcd
7
+ data.tar.gz: 3393584c81d0e82d6448febe7b9d8117aaf8aecc16a5d58a1174d95022cebd4ac944e45f20bcadac7f5f6824e428ed0d6a7524cd49d8c37e0cc087712aee4795
@@ -1,6 +1,7 @@
1
1
  require 'ga_logger'
2
2
  require 'guardian_angel'
3
3
  require 'xctool_runner'
4
+ require 'xcodebuild_runner'
4
5
 
5
6
  # @author Vittorio Monaco
6
7
  class GARunner
@@ -12,7 +13,7 @@ class GARunner
12
13
  def initialize(configuration, filename)
13
14
  @configuration=configuration
14
15
  @filename=filename
15
- @runner=XctoolRunner.new(configuration)
16
+ @runner=XcodebuildRunner.new(configuration)
16
17
  end
17
18
 
18
19
  # Runs unit tests for the given filename, if a tests file exists
@@ -34,11 +35,9 @@ class GARunner
34
35
 
35
36
  # Tries to run unit tests for the filename setup during initialization
36
37
  #
37
- # @note if the filename is a tests file, this method strips the tests suffix and runs the tests for the right file instead, after having built the tests project first
38
- # (see #buildIfNeeded)
39
38
  # (see #testIfAvailable)
40
39
  def test()
41
- buildIfNeeded()
40
+ @runner.prepareForFile(@filename)
42
41
  testIfAvailable(codeFilename())
43
42
  end
44
43
 
@@ -57,14 +56,4 @@ class GARunner
57
56
 
58
57
  return stripped
59
58
  end
60
-
61
- # This method builds the tests project if the filename setup during initialization is a tests file
62
- # (see #isTest)
63
- def buildIfNeeded()
64
- if isTest()
65
- GALogger.log(@filename + ' is a test, building all the tests...')
66
- end
67
-
68
- GuardianAngel.buildWithConfiguration(@configuration)
69
- end
70
59
  end
@@ -1,5 +1,6 @@
1
1
  require 'ga_logger'
2
2
  require 'xctool_runner'
3
+ require 'xcodebuild_runner'
3
4
 
4
5
  # @author Vittorio Monaco
5
6
  class GuardianAngel
@@ -8,7 +9,7 @@ class GuardianAngel
8
9
  # @param configuration [GAConfiguration] the configuration you want to use to run the tests (see #GAConfiguration)
9
10
  def initialize(configuration)
10
11
  @configuration=configuration
11
- @runner=XctoolRunner.new(configuration)
12
+ @runner=XcodebuildRunner.new(configuration)
12
13
  end
13
14
 
14
15
  # Convenience method to build tests in a stand-alone fashion
@@ -0,0 +1,89 @@
1
+ require 'ga_logger'
2
+
3
+ # @author Vittorio Monaco
4
+ class XcodebuildRunner
5
+ # Creates a new instance given a GAConfiguration object
6
+ #
7
+ # @param configuration [GAConfiguration] the configuration you want to use to build and run the tests (see #GAConfiguration)
8
+ def initialize(configuration)
9
+ @configuration=configuration
10
+ end
11
+
12
+ # Tells the runner to prepare the environment for a subsequent test run
13
+ #
14
+ # @param filename [String] the name of the file the caller wishes to test
15
+ #
16
+ # @note since xcodebuild doesn't offer a way to test single files, this method doesn't do anything
17
+ # (see #build)
18
+ def prepareForFile(filename)
19
+ end
20
+
21
+ # Builds (and runs) the tests target through xcodebuild
22
+ #
23
+ # @note This method supports both workspace- and project-based environments
24
+ def build()
25
+ workspace = @configuration.workspace
26
+ scheme = @configuration.scheme
27
+ target = @configuration.target
28
+ project = @configuration.project
29
+ xctool = @configuration.xctool_path
30
+
31
+ building = workspace
32
+ building = project if workspace.nil?
33
+
34
+ GALogger.log("Building " + building + " with scheme " + scheme + "...")
35
+
36
+ toBuild = buildArgument()
37
+ buildSucceeded = system("xcodebuild" + toBuild +
38
+ ' -scheme ' + scheme +
39
+ ' -sdk iphonesimulator' +
40
+ ' test | xcpretty -tc', out: $stdout, err: :out)
41
+
42
+ if buildSucceeded
43
+ GALogger.log('Tests are fine. Start coding :)', :Success)
44
+ else
45
+ GALogger.log('Tests failed. Fix them before you start iterating.', :Error)
46
+ end
47
+ end
48
+
49
+ # Returns the main argument for xctool to build the project/workspace
50
+ #
51
+ # Example:
52
+ # -workspace 'MyWorkspace.xcworkspace'
53
+ # or
54
+ # -project 'MyProject.xcodeproj'
55
+ def buildArgument()
56
+ workspace = @configuration.workspace
57
+ scheme = @configuration.scheme
58
+ project = @configuration.project
59
+
60
+ toBuild = ''
61
+ if workspace.nil?
62
+ toBuild = " -project '" + project + ".xcodeproj'"
63
+ else
64
+ toBuild = " -workspace '" + workspace + ".xcworkspace'"
65
+ end
66
+
67
+ return toBuild
68
+ end
69
+
70
+ # Runs tests for the specified file
71
+ #
72
+ # @param filename [String] the file you wish to run the tests for
73
+ # @note This method supports both workspace- and project-based environments
74
+ def test(filename)
75
+ scheme = @configuration.scheme
76
+ target = @configuration.target
77
+ xctool = @configuration.xctool_path
78
+ reporter = @configuration.reporter
79
+ suffix = @configuration.suffix
80
+
81
+ GALogger.log("Running tests for file " + filename + '...')
82
+
83
+ toBuild = buildArgument()
84
+ system("xcodebuild" + toBuild +
85
+ ' -scheme ' + scheme +
86
+ ' -sdk iphonesimulator' +
87
+ ' test | xcpretty -tc', out: $stdout, err: :out)
88
+ end
89
+ end
@@ -8,6 +8,16 @@ class XctoolRunner
8
8
  def initialize(configuration)
9
9
  @configuration=configuration
10
10
  end
11
+
12
+ # Tells the runner to prepare the environment for a subsequent test run
13
+ #
14
+ # @param filename [String] the name of the file the caller wishes to test
15
+ #
16
+ # @note since xctool needs to build the tests every time, this method just calls build
17
+ # (see #build)
18
+ def prepareForFile(filename)
19
+ build()
20
+ end
11
21
 
12
22
  # Builds the tests target through xctool
13
23
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guardian-angel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vittorio Monaco
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-01 00:00:00.000000000 Z
11
+ date: 2014-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: filewatcher
@@ -38,7 +38,22 @@ dependencies:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.8'
41
- description: A file watcher for iOS developers that runs tests for the modified files
41
+ - !ruby/object:Gem::Dependency
42
+ name: xcpretty
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.1'
55
+ description: A file watcher for iOS developers that makes it quicker to iterate through
56
+ TDD
42
57
  email: vittorio.monaco1@gmail.com
43
58
  executables:
44
59
  - guardian-angel
@@ -53,8 +68,9 @@ files:
53
68
  - lib/ga_logger.rb
54
69
  - lib/ga_runner.rb
55
70
  - lib/guardian_angel.rb
71
+ - lib/xcodebuild_runner.rb
56
72
  - lib/xctool_runner.rb
57
- homepage: http://vittoriomonaco.it/guardian-angel
73
+ homepage: https://github.com/vittoriom/GuardianAngel
58
74
  licenses:
59
75
  - MIT
60
76
  metadata: {}