-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Increase test coverage #45
Comments
Well, that's not good but I there are some methods in which I see no sense of covering them with unit tests. What's more, some methods are't totally clear for me because of their dependencie, so I skip them as I cn't write propert tests for them 😭 I was thinking this morning about integrating Travis-CI. What'd you say @czechboy0? Also, found this cool thing called coveralls 😃 |
They still don't have Xcode 7 support. |
Their sluggish new Xcode version support is the whole reason Buildasaur exists 😆 |
But yeah once Travis has Xcode 7 support, I'd be up for using it for testing and coverage. No idea how long that will take however. |
In the meantime we have Xcode 7's code coverage metric, so run it locally and report it in each PR, so that we know what we're at. |
There's no school like the oldschool... 😆 |
I've seen test coverage for |
Yes, the DEV_ prefix is there on purpose. Those are live tests that actually affect and call the real server and I use it during development. So they need to be disabled most of the time unless you're testing live API calls. And yes, DVR is ready. Just run carthage update --no-build and you're all set. I also added a folder just for Cassettes in the test target/folder. |
Hmm, any possibility you write steps needed to use DVR? I how now idea where to put my hands on 😞 |
Look at test DEV_testLive_FetchAndRecordBot() in XcodeServerTests. Create a test like that for whatever you want to test. Then you run it once and it records and crashes, printing out where it has saved the cassette. You copy that file into the test target in the Cassettes folder, add it to the project to both test targets only and then run it again. This time it will run fine, using the loaded cassette. |
Great, but it's easy for |
With #48 we get 25% of test coverage for |
Have we checked asking for |
Isn't CirlceCI paid? |
Yeah I tried them all yesterday. They don't yet support Xcode 7 :( Classic. |
Travis today has confirmed official support from 6.4... |
Link? But that doesn't help anyway. We need Xcode 7. Hopefully I'll be able to release an experimental build of Buildasaur soon locally on my Mac to get PR testing again. |
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
|
CircleCI is free if we use it only for 1 job at a time (which i think would be fine) except there's no how about |
I guess we'll have to wait for anything to support |
We can use They have a free plan for individual accounts with 2 jobs or something along those lines; might be worth looking at it |
👌 |
Just FYI, I do have an Xcode Bot running locally which tests the Unfortunately, we need Pull Request testing, which Buildasaur has (I'm working on Xcode 7 support there) and CI services like Travis do as well, but they don't yet support Xcode 7. It's exactly what happened last year. Ship.io doesn't give us any benefit over a local Xcode Bot. Plus, their Scheme detection is broken, I tried it yesterday. So once Buildasaur has an Xcode 7 version ready I'll turn it on for this repo so that all PRs will get tested. |
👏 that sounds great then 🎉 TBH i didn't like Ship.io when I tried it. If I can help with bringing Xcode 7 support to Buildasaur just let me know |
That's really strange... Was it covering the failable path yesterday? Looks fine to me... Nothing has changed in those files AFAIK. |
It wasn't covered and that's why I went and wrote a test for it but didn't check. now I came to check and is still uncovered. No matter if I run only that test or all the tests on iOS or OSX that path keeps being marked as not checked. Perhaps the |
Disregard my last comment… this invalidates my theory guard let url = NSURL(string: host) else {
/*******************************************************************
** Had to be added to silence the compiler ¯\_(ツ)_/¯
** Radar: http://openradar.me/21514477
** Reply: https://twitter.com/jckarter/status/613491369311535104
******************************************************************/
self.host = ""; self.user = nil; self.password = nil
throw ConfigurationErrors.InvalidHostProvided(host)
} This is passing and marked as checked |
That's weird; if you check at the tests and the coverage |
It might also have bugs. We'll see throughout the summer. We know we're still not testing most of the parsing/dictionarifying logic anyway :) I guess once we're confident about that we can tackle these weirdnesses. |
Hmmm this whole test coverage works fine for me everytime but bugs are possible... |
@czechboy0, @esttorhe I wonder... |
And here is how you can reuse a recorded |
Did you just point at me? 😜 |
👈 👉 👈 👉 👇 ☝️ 👇 ☝️ Not pointing at anyone, just 💃 |
On thing I've noticed, you use: let config = try! XcodeServerConfig(
host: "https://127.0.0.1",
user: "ICanCreateBots",
password: "superSecr3t") For sake of consistency, should we use default |
Depends how your XCS is setup, but I have that anyone can view bots and only logged in users can create bots. Which means that any user, including the non-existent ICanCreateBots will return all read-only requests. So you don't need to create this user at all to test most get requests. When it comes to post requests, I haven't decided yet how we're going to test that since in post requests it's what we're sending is what we want to test, whereas with get requests it's what you're receiving that you want to test. TL;DR - enable any user to read bots on your XCS and let's write tests for all the get requests first. I'll think of a good way to test posts later. Aight? |
I can't agree with you... While testing |
@czechboy0 strange thing happened... I've written test for func testGetRepositories() {
let expectation = self.expectationWithDescription("Get Repositories")
let server = self.getRecordingXcodeServer("get_repositories")
server.getRepositories() { (repositories, error) in
XCTAssertNil(error, "Error should be nil")
XCTAssertNotNil(repositories, "Repositories shouldn't be nil")
if let repos = repositories {
XCTAssertEqual(repos.count, 2, "There should be two repositories available")
for (index, repo) in repos.enumerate() {
XCTAssertEqual(repo.name, "Test\(index + 1)")
}
}
expectation.fulfill()
}
self.waitForExpectationsWithTimeout(10) { error in
if let error = error {
print("Timeout error: \(error.localizedDescription)")
}
}
} So at first I had to move I can agree that the fragment where I set a breakpoint where the code isn't covered and it executes so this is being called but marked differently 😓 |
@esttorhe seems like I've been having similiar kind of issue with |
Yeah; I saw your tweet to Joe; seems like radar time!! 👯 |
🎆 |
Getting around 50% now. Not great but getting much better, especially thanks to @cojoj! |
This is nice, we had fun with it, but it's not really actionable. Closing. |
Right now our code coverage is somewhere around 15%. ⚡
The text was updated successfully, but these errors were encountered: