buildasaurs / xcodeserversdk Goto Github PK
View Code? Open in Web Editor NEWAccess Xcode Server API with native Swift objects.
License: MIT License
Access Xcode Server API with native Swift objects.
License: MIT License
Right now the project only supports OS X
and iOS
.
If someone would like to use the framework on an ᴡᴀᴛᴄʜ application there would be no framework support for the ⌚ app.
To keep everything clean I suggest dividing all files to separate directories eg. Bot is a big object with smaller pieces like Trigger and so on.
It would be nice to have the grouped in the proper way. I think this can be achieved only by laborious JSON analysis but IMHO it'll pay off in future.
Blocked by buildasaurs/BuildaUtils#7
Happens on certain instances of Xcode Server
Application Specific Information:
fatal error: Couldn't find intended platform in list of platforms: []!: file /Users/honzadvorsky/Documents/Buildasaur/Pods/XcodeServerSDK/XcodeServerSDK/API Routes/XcodeServer+Bot.swift, line 172
Originally reported by @valeriomazzeo in buildasaurs/Buildasaur#143.
Solution:
@czechboy0 I cleary see that you're trying to do everything using built-in tools. Are there any specific arguments why?
I'm now struggling with Swift 2.0 conversion and the most problematic classes are eg. JSON
.
Why doing it manually while we have some great tools like Argo?
It looks like CP now supports native ᴡᴀᴛᴄʜ frameworks on the ß release (CocoaPods/CocoaPods#3681)
Should be change the icon to something more like «:warning: *Supported on CP on the --pre release ß»
Or something like that??
Also here's a link to an example library using this functionality: https://github.com/neonichu/native-watchOS-example
Responses from Xcode Server return in their headers the API version, so instead of having to initialize the Config
file with the API version, we should make one call in the beginning to find out which version we're talking to and save that in memory inside of XcodeServer
.
Actually, just the Email type -> email configuration -> scmOptions. Figure out what it's for and how to explain it in our enums.
They're sort of out. Review and adapt some of our API calls (we might not be doing certain things properly).
It would be nice to have a dependency management for this SDK and allow users to easily use it in they projects. I think that support for cocoapods and Carthage is required to create a whole new range of possibilities for developers.
Already proved that can work in buildasaurs/Buildasaur#135. Now implement it properly as an API call.
I've investigated some projects which follows the pattern of having .xcworkspace
in which they have Framework itself, sample project and also a Playground (using framework) and after digging I can confirm that we have everything to run this pattern!
Here's a proof:
As you can see I can import XcodeServerSDK
and use it in Playground with code completion etc.
Earlier the problem was with wrong configuration of Playground (was targeting iOS while framework support OS X only). I think we have solution to this issue in #24 and also this matter was explained in by @esttorhe in #25.
I'll check this PR tomorrow and if everything will work fine I will strongly suggest to merge it.
Let's modernize & simplify our tests with https://github.com/Quick/Nimble
I've pulled new things from repo and wanted to call pod install
and there's some kind of parsing error. I haven't investigated it yet but here's the output, so feel free to have a look:
[!] ERROR: Parsing unable to continue due to parsing error:
contained in the file located at /Users/cojoj/Developer/XcodeServerSDK/Podfile.lock
PODS:
- BuildaUtils (0.0.4)
- DVR (0.0.2-czechboy0)
DEPENDENCIES:
- BuildaUtils (= 0.0.4)
- DVR (from `https://github.com/czechboy0/DVR.git`, tag `v0.0.2-czechboy0`)
EXTERNAL SOURCES:
DVR:
:git: https://github.com/czechboy0/DVR.git
:tag: v0.0.2-czechboy0
CHECKOUT OPTIONS:
DVR:
:git: https://github.com/czechboy0/DVR.git
:tag: v0.0.2-czechboy0
SPEC CHECKSUMS:
BuildaUtils: 88917cac8b0248c792c8d0ff269b24870d36903f
DVR: c252cd3f4a88f6a3a49f0d66305335951a0aa133
COCOAPODS: 0.38.0.beta.2
Yeah. Should do that.
I'm working on another point from #40 and I want to consult some matters before implementing anything.
It's obvious that List the commits included in an integration will consist of Commit
model but... Response JSON is strange in some way and I'd like to clarify naming convention.
Basically integration/id/commits
response JSON looks like:
{
"count": 1,
"results": [{
"_id": "62395864c6d0b1fc6536c0ab3a0d2b2d",
"_rev": "3-ced1cebb3b420512ee66e7a1927e32f2",
"commits": {
[]
},
"integration": "62395864c6d0b1fc6536c0ab3a0d0733",
"botID": "38a6d8e59f34d59c810e98f5c6030e02",
"botTinyID": "23530A6",
"endedTimeDate": [2015, 7, 7, 14, 15, 20],
"doc_type": "commit",
"tinyID": "127FDC7"
}]
}
IMHO, main object should be called something like IntegrationCommits
because there's Commits
array inside of it but Commit
, itself, doesn't containt fields to be XcodeServerEntity
.
What's more, commits
array contains an array of repositories which holds actual commits - so another model?
Actual Commit
looks like:
{
"XCSCommitCommitChangeFilePaths": [{
"status": 4,
"filePath": "cells/NewProductCell.m"
}, {
"status": 4,
"filePath": "GreetingTextViewController.m"
}, {
"status": 4,
"filePath": "ViewControllers/NewChooseProductViewController.m"
}],
"XCSCommitMessage": "Fixed ios7 bug",
"XCSBlueprintRepositoryID": "715A78DA7313BF688CEE0585F44D4F0B2EAEE4B8",
"XCSCommitContributor": {
"XCSContributorEmails": ["[email protected]"],
"XCSContributorName": "Foo Bar",
"XCSContributorDisplayName": "Foo Bar"
},
"XCSCommitHash": "aeb85aed37e633b6c9776cb863a39f922cb464d9",
"XCSCommitTimestamp": "2015-07-07T14:14:29.000Z",
"XCSCommitTimestampDate": [2015, 7, 7, 14, 14, 29]
}
I have a feeling I'm complicating everything but what do you think - should those models be separated or treated like one big, nested model and inherit from XcodeServerEntity
?
Xcode 7 added new keys to the bot configuration json e.g. exportsProductFromArchive
, codeCoveragePreference
and more. Add them in the appropriate objects (both parsing and exporting)
A couple at random:
BotConfiguration
codeCoveragePreference
exportsProductFromArchive
deviceSpecification
(WIP: #21).SourceControlBlueprint
(WIP: #22)DVTSourceControlWorkspaceBlueprintRemoteRepositoryTrustSelfSignedCertKey
DVTSourceControlWorkspaceBlueprintRemoteRepositoryTrustedCertFingerprintKey
Hi guys, recently I was playing a little bit with Xcode Server and I would be glad to help you i.e. increasing test coverage.
After look at the project, I thought it would be good to test e.g. endpointURL
method in the XcodeServerEndpoints
class. But since it is a private method, I would suggest to move this method to a seperate class and make this method internal. What do you think?
In DeviceSpecification.swift
, so that we support tvOS targets. We'll need to put a beta Xcode on Xcode Server and then just GET https://SERVER:20343/api/platforms
and find out what the codes for those platforms are and add them in DeviceSpecification.swift
.
I created an organization Buildasaurs for all these little monsters. Maybe a more appropriate name for this project might be in order?
Vote with your comments.
routes_bot.js
- app.delete(k.XCSAPIBasePath + '/bots/:id/:rev?', prepareRequest, verifyIfServiceIsEnabledAllowCertificate, enforceBotCreatorRole, botClass.remove.bind(botClass));
rev
any more when deleting a bot. Try and remove the rev if it works.I assume that public
is in every XcodeServerSDK
class because of Swift 1.2 leftovers? I mean from testing point of view. But now, with Swift 2 we were blessed with this beautiful @testable
annotation, so why not Zoidberg?
IMHO, classes like JSON
, HTTPUtils
and some more are not meant to be used out of internal
scope, so we definitely can remove public
access. Why do you think?
While watching Platforms state of the union I've heard that from the new versions there'll be official JavaScript API for interacting with Xcode. I haven't watched new session about server (will do ASAP).
If this is true, how will it impact existing code? Maybe no more reverse engineering will be needed to develop this project? 😏
I'm more interested in adding missing functionalities and provide support for all endpoints included in Xcode.
At the moment, all API calls are stored in XcodeServer.swift
. It'd be advisable to move the to separate files and make extension
s from them as the number of API calls may increase in the future.
I suggest separating them by type eg. XcodeServer+Bots
will store all Bot related API calls, XcodeServer+Integrations
will handle Integration and so on...
I don't know what's the proper naming convention and used well know convention from Objective-C. We can stick to this or decide on different style.
This issue is blocked until #44 is completed as this one may introduce some merge conflicts.
As mentioned by @czechboy0 here - #32 (comment)
It would be great to have a convenience method where we can pass a throwing function, the expected ErrorType
and then printout if the thrown error matches the one passed or fail otherwise
As you know, Apple has presented new way of programming - which will make Crusty happy.
I know it's all about personal taste... But I really like the idea and I think it can release the great power of Swift.
This whole XcodeServerEntity
-subclass model in existing SDK is a great candidate to redesign it with Protocol Oriented Programming. This will allow to drop this big inheritance tree and implement only necessary stuff. What's more it can allow to replace class
es with struct
s which will also have a great impact on performance.
@czechboy0 what do you think?
@czechboy0 I can't find this anywhere in code so I'll simply ask.
In some responses we're getting date but in form of array of components. Didiyou write a method or extension for handling this?
I only found dateForKey()
and optionalDateForKey()
but they work with String
s.
We need something to get this array by calling arrayForKey()
and return NSDateComponents
or date formatted String
.
Got any hints how you want it to be implemented? Here are my ideas:
NSDate
extension
to NSArray
which will create NSDate
or NSDateComponents
or String
In any case we'll have to manually take fields fromArray
and put them in NSDateComponents
like:
let components = NSDateComponents()
components.year = array[0]
components.month = array[1]
components.day = array[2]
components.hour = array[3]
components.minute = array[4]
components.second = array[5]
Which kind of sucks...
What's more, Array
of components we get from XCS has 7 fields and I wonder what is the 7th one... It doesn't look like a timezone... Nanoseconds?
Right now the available API allow you to postIntegration
but it returns immediately. It'd be nice if callback could wait for integration to finish, but also a protocol
informing about this fact would be nice.
I know I've been fighting like a lot for changing class
es into struct
s but @czechboy0 persuaded me that there is sense in making XcodeServerEntity
as class
. My main argument was:
Let's make compiler happy...
So today, I've came with solution how to marry class
with my happy compiler thing - let's mark some methods, properties, classes as final
as they probably won't be inherited more times. Let me know if that make sense to you.
While writing tests for this class I've noticed that it may be struggling in some cases.
First of all, when you create object using public init(var host: String, user: String?, password: String?)
we're checking if host
has https scheme and so on but if we go through the second init?()
we can see that it won't check if scheme was provided - it only checks existence of host.
I think we should extract method for checking and creating host eg.
funct validateHost(var host: String) -> String{
if let url = NSURL(string: host) {
if url.scheme.isEmpty {
// exted host with https scheme
host = "https://" + host
} else if url.scheme != "https" {
Log.error("Xcode Server generally uses https, please double check your hostname")
}
}
return host
}
But I think in this case we can make some use of throws
and guard
...
The way we create bot testing devices has changed its format - adopt the one for Xcode 7.
We might need to drop support for old API versions in the future, so we need a way to verify that we're not attempting to talk to an incompatible version of the API.
Will be useful when user upgrades their XCS and we can throw and error telling them to upgrade their XcodeServerSDK version as well.
Right now most of our API endpoint methods (these located in XcodeServer
extension
s) are constructed in non-swifty way - they return optional NSError
pointers.
How about gradually changing them to throw
ing methods?
There are some benefits of doing this:
Optional
senum
sI know, I know, I may be overreacting... Maybe that's because I have too much free time? 😝
Currently some of them assert, some of them fail more gracefully. This needs to be unified with the new Swift 2 error handling system.
Apple has left as with a table of supported endpoint in Xcode 7. It shows up that they're only providing some basic stuff but it's necessary for us to cover them all!
We're on a good way and already cover most but some of them are missing - not because we don't have code to support them but because a nice, convenience method hasn't beed written yet (you can do it).
In README
you can see a table of features, so if you're planning to implement some of those missing methods, plase update README
as well
Here's the list of all official endpoints:
Should be an easy one for anyone with 20mins on their hands.
-- @czechboy0 in #39
If you're wondering how to determine what endpoint will be used in official API, here's the list:
Type | Path | Description |
---|---|---|
GET | /bots |
List bots on server |
POST | /bots |
Create a new bot |
GET | /bots/(id) |
Retrieve a bot by ID |
PATCH | /bots/(id) |
Update a bot’s configuration |
GET | /bots/(id)/integrations |
Get the most recent integrations for a bot |
POST | /bots/(id)/integrations |
Enqueue a new integration |
GET | /integrations |
List integrations on server |
GET | /integrations/(id) |
Retrieve an integration by ID |
GET | /integrations/(id)/commits |
List the commits included in an integration |
GET | /integrations/(id)/issues |
List the build issues produced by an integration |
GET | /devices |
List devices connected to server |
GET | /repositories |
List hosted repositories on server |
POST | /repositories |
Create a new hosted repository |
If you need some motivation to start doing this task, please refer to #2 😉
I noticed on the podspec
that there's support for iOS
(which makes sense because the files are architecture independent as far as I could see) but the project lacks an iOS
target which makes it impossible to use on an iOS
project using Carthage
because it will only build the OS X
framework.
Hopefully I'll be able to easily create an iOS
target and will issue a PR
with said fix later today but wanted to leave this issue to easily track it down.
🙇
$ cat Cartfile
github "czechboy0/XcodeServerSDK"
$ carthage update
*** Fetching XcodeServerSDK
*** Checking out XcodeServerSDK at "v0.1.8"
*** xcodebuild output can be found in /var/folders/vv/z02zhgz508g99fs34mhrkw6c0000gp/T/carthage-xcodebuild.giIC0L.log
*** Building scheme "XcodeServerSDK - iOS" in XcodeServerSDK.xcworkspace
2015-08-10 00:17:54.990 xcodebuild[13533:896741] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/SparkInspectorXcodePlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2015-08-10 00:17:54.991 xcodebuild[13533:896741] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin' not present in DVTPlugInCompatibilityUUIDs
** BUILD FAILED **
The following build commands failed:
PhaseScriptExecution Check\ Pods\ Manifest.lock /Users/drew/Library/Developer/Xcode/DerivedData/XcodeServerSDK-awbzscrzexqjxfdtrpkyknwtbkbp/Build/Intermediates/XcodeServerSDK.build/Release-iphoneos/XcodeServerSDK\ -\ iOS.build/Script-E4E84B0D84D059B3B424AD1F.sh
(1 failure)
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
A shell task failed with exit code 65:
2015-08-10 00:17:54.990 xcodebuild[13533:896741] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/SparkInspectorXcodePlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2015-08-10 00:17:54.991 xcodebuild[13533:896741] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin' not present in DVTPlugInCompatibilityUUIDs
** BUILD FAILED **
The following build commands failed:
PhaseScriptExecution Check\ Pods\ Manifest.lock /Users/drew/Library/Developer/Xcode/DerivedData/XcodeServerSDK-awbzscrzexqjxfdtrpkyknwtbkbp/Build/Intermediates/XcodeServerSDK.build/Release-iphoneos/XcodeServerSDK\ -\ iOS.build/Script-E4E84B0D84D059B3B424AD1F.sh
(1 failure)
DEVE
One can work around this issue with
$ cd Carthage/Checkouts/XcodeServerSDK/
$ pod install
However it then fails with a new error
carthage update
*** Fetching XcodeServerSDK
*** Checking out XcodeServerSDK at "v0.1.8"
*** xcodebuild output can be found in /var/folders/vv/z02zhgz508g99fs34mhrkw6c0000gp/T/carthage-xcodebuild.RVZz0S.log
*** Building scheme "XcodeServerSDK - iOS" in XcodeServerSDK.xcworkspace
2015-08-10 00:19:08.901 xcodebuild[13655:898925] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/SparkInspectorXcodePlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2015-08-10 00:19:08.902 xcodebuild[13655:898925] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2015-08-10 00:19:12.090 xcodebuild[13655:898960] DVTAssertions: Warning in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-7709/Xcode3Core/LegacyProjects/Frameworks/DevToolsCore/DevToolsCore/SpecificationTypes/BuiltInSpecifications/Compilers/XCGccMakefileDependencies.m:77
Details: Failed to load dependencies output contents from ``/Users/drew/Library/Developer/Xcode/DerivedData/XcodeServerSDK-awbzscrzexqjxfdtrpkyknwtbkbp/Build/Intermediates/Pods.build/Release-iphoneos/BuildaUtils.build/Objects-normal/arm64/TimeUtils.d''. Error: Error Domain=NSCocoaErrorDomain Code=260 "The file “TimeUtils.d” couldn’t be opened because there is no such file." UserInfo=0x7ffda053f280 {NSFilePath=/Users/drew/Library/Developer/Xcode/DerivedData/XcodeServerSDK-awbzscrzexqjxfdtrpkyknwtbkbp/Build/Intermediates/Pods.build/Release-iphoneos/BuildaUtils.build/Objects-normal/arm64/TimeUtils.d, NSUnderlyingError=0x7ffda06492d0 "The operation couldn’t be completed. No such file or directory"}. User info: {
NSFilePath = "/Users/drew/Library/Developer/Xcode/DerivedData/XcodeServerSDK-awbzscrzexqjxfdtrpkyknwtbkbp/Build/Intermediates/Pods.build/Release-iphoneos/BuildaUtils.build/Objects-normal/arm64/TimeUtils.d";
NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. No such file or directory\"";
}.
Function: void XCGccMakefileDependenciesParsePathsFromRuleFile(NSString *__strong, void (^__strong)(NSString *__strong))
Thread: <NSThread: 0x7ffda05648b0>{number = 9, name = (null)}
Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide.
** BUILD FAILED **
The following build commands failed:
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/ContainerExtensions.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Errors.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Extensions.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/HTTPUtils.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/JSON.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Logging.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Script.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Server.swift
CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler
(9 failures)
/Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/Target Support Files/BuildaUtils/BuildaUtils-umbrella.h:1:9: error: 'Cocoa/Cocoa.h' file not found
<unknown>:0: error: could not build Objective-C module 'BuildaUtils'
/Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/Target Support Files/BuildaUtils/BuildaUtils-umbrella.h:1:9: error: 'Cocoa/Cocoa.h' file not found
<unknown>:0: error: could not build Objective-C module 'BuildaUtils'
/Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/Target Support Files/BuildaUtils/BuildaUtils-umbrella.h:1:9: error: 'Cocoa/Cocoa.h' file not found
<unknown>:0: error: could not build Objective-C module 'BuildaUtils'
/Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/Target Support Files/BuildaUtils/BuildaUtils-umbrella.h:1:9: error: 'Cocoa/Cocoa.h' file not found
<unknown>:0: error: could not build Objective-C module 'BuildaUtils'
/Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/Target Support Files/BuildaUtils/BuildaUtils-umbrella.h:1:9: error: 'Cocoa/Cocoa.h' file not found
<unknown>:0: error: could not build Objective-C module 'BuildaUtils'
/Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/Target Support Files/BuildaUtils/BuildaUtils-umbrella.h:1:9: error: 'Cocoa/Cocoa.h' file not found
<unknown>:0: error: could not build Objective-C module 'BuildaUtils'
/Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/Target Support Files/BuildaUtils/BuildaUtils-umbrella.h:1:9: error: 'Cocoa/Cocoa.h' file not found
<unknown>:0: error: could not build Objective-C module 'BuildaUtils'
/Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/Target Support Files/BuildaUtils/BuildaUtils-umbrella.h:1:9: error: 'Cocoa/Cocoa.h' file not found
<unknown>:0: error: could not build Objective-C module 'BuildaUtils'
A shell task failed with exit code 65:
2015-08-10 00:19:08.901 xcodebuild[13655:898925] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/SparkInspectorXcodePlugin.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2015-08-10 00:19:08.902 xcodebuild[13655:898925] [MT] PluginLoading: Required plug-in compatibility UUID 7FDF5C7A-131F-4ABB-9EDC-8C5F8F0B8A90 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin' not present in DVTPlugInCompatibilityUUIDs
2015-08-10 00:19:12.090 xcodebuild[13655:898960] DVTAssertions: Warning in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-7709/Xcode3Core/LegacyProjects/Frameworks/DevToolsCore/DevToolsCore/SpecificationTypes/BuiltInSpecifications/Compilers/XCGccMakefileDependencies.m:77
Details: Failed to load dependencies output contents from ``/Users/drew/Library/Developer/Xcode/DerivedData/XcodeServerSDK-awbzscrzexqjxfdtrpkyknwtbkbp/Build/Intermediates/Pods.build/Release-iphoneos/BuildaUtils.build/Objects-normal/arm64/TimeUtils.d''. Error: Error Domain=NSCocoaErrorDomain Code=260 "The file “TimeUtils.d” couldn’t be opened because there is no such file." UserInfo=0x7ffda053f280 {NSFilePath=/Users/drew/Library/Developer/Xcode/DerivedData/XcodeServerSDK-awbzscrzexqjxfdtrpkyknwtbkbp/Build/Intermediates/Pods.build/Release-iphoneos/BuildaUtils.build/Objects-normal/arm64/TimeUtils.d, NSUnderlyingError=0x7ffda06492d0 "The operation couldn’t be completed. No such file or directory"}. User info: {
NSFilePath = "/Users/drew/Library/Developer/Xcode/DerivedData/XcodeServerSDK-awbzscrzexqjxfdtrpkyknwtbkbp/Build/Intermediates/Pods.build/Release-iphoneos/BuildaUtils.build/Objects-normal/arm64/TimeUtils.d";
NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. No such file or directory\"";
}.
Function: void XCGccMakefileDependenciesParsePathsFromRuleFile(NSString *__strong, void (^__strong)(NSString *__strong))
Thread: <NSThread: 0x7ffda05648b0>{number = 9, name = (null)}
Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide.
** BUILD FAILED **
The following build commands failed:
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/ContainerExtensions.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Errors.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Extensions.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/HTTPUtils.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/JSON.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Logging.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Script.swift
CompileSwift normal arm64 /Users/drew/Code/CaveJohnson2/Carthage/Checkouts/XcodeServerSDK/Pods/BuildaUtils/BuildaUtils/Server.swift
CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler
(9 failures)
To work around this, I had to remove iOS/watch targets as you can see in my fork. I don't need them, so that wasn't a big deal.
@esttorhe, while you were creating targets you told us that both OS X and iOS will use the same test target. Could you explain something to me? (I have no idea how it works)
Right now, when I run tests on iOS I get:
Which was fine until I switched to OS X and run tests again which produced something different:
I wonder if it's normal that different targets shows us different test coverage? If you'll tell me that this is totally normal I'm fine... I just have no experience in this matter and that made me thinking 😉
I'll start writing test suit but I think that it's a good idea to start this from swift-2
branch and take advantage of test coverage.
I think we can stick to XCTest
as it works pretty great right now.
One think I want to ask you @czechboy0. Do you think I should create PR after I finish everything/most of the work or create new PR at the beginning of the whole process and allow anyone (with focus on you) to track changes, comment them and suggest changes to keep people more involved into the process?
I hacked the cassettes to use API version 6, but I'm suspicious some details might have changed. Let's re-record all our test cassettes with the new Xcode Server.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.