-
Notifications
You must be signed in to change notification settings - Fork 749
Expand file tree
/
Copy pathCodegenTestHelper.swift
More file actions
109 lines (94 loc) · 3.36 KB
/
CodegenTestHelper.swift
File metadata and controls
109 lines (94 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//
// CodegenTestHelper.swift
// ApolloCodegenTests
//
// Created by Ellen Shapiro on 10/7/19.
// Copyright © 2019 Apollo GraphQL. All rights reserved.
//
import XCTest
@testable import ApolloCodegenLib
struct CodegenTestHelper {
// Centralized timeout for adjustment when working on terrible wifi
static var timeout: Double = 90.0
static func sourceRootURL() -> URL {
FileFinder.findParentFolder()
.deletingLastPathComponent() // Tests
.deletingLastPathComponent() // apollo-ios
}
static func cliFolderURL() -> URL {
self.sourceRootURL()
.appendingPathComponent("Tests")
.appendingPathComponent("ApolloCodegenTests")
.appendingPathComponent("scripts")
}
static func apolloFolderURL() -> URL {
let scripts = self.cliFolderURL()
return ApolloFilePathHelper.apolloFolderURL(fromCLIFolder: scripts)
}
static func binaryFolderURL() -> URL {
let apollo = self.apolloFolderURL()
return ApolloFilePathHelper.binaryFolderURL(fromApollo: apollo)
}
static func shasumFileURL() -> URL {
let apollo = self.apolloFolderURL()
return ApolloFilePathHelper.shasumFileURL(fromApollo: apollo)
}
static func starWarsFolderURL() -> URL {
let source = self.sourceRootURL()
return source
.appendingPathComponent("Sources")
.appendingPathComponent("StarWarsAPI")
}
static func starWarsSchemaFileURL() -> URL {
let starWars = self.starWarsFolderURL()
return starWars.appendingPathComponent("schema.json")
}
static func outputFolderURL() -> URL {
let sourceRoot = self.sourceRootURL()
return sourceRoot
.appendingPathComponent("Tests")
.appendingPathComponent("ApolloCodegenTests")
.appendingPathComponent("Output")
}
static func deleteExistingOutputFolder(file: StaticString = #file,
line: UInt = #line) {
do {
let outputFolderURL = self.outputFolderURL()
try FileManager.default.apollo_deleteFolder(at: outputFolderURL)
} catch {
XCTFail("Error deleting output folder!",
file: file,
line: line)
}
}
static func downloadCLIIfNeeded(file: StaticString = #file,
line: UInt = #line) {
do {
let cliFolderURL = self.cliFolderURL()
try CLIDownloader.downloadIfNeeded(cliFolderURL: cliFolderURL, timeout: CodegenTestHelper.timeout)
} catch {
XCTFail("Error downloading CLI if needed: \(error)",
file: file,
line: line)
}
}
static func deleteExistingApolloFolder(file: StaticString = #file,
line: UInt = #line) {
do {
let apolloFolderURL = self.apolloFolderURL()
try FileManager.default.apollo_deleteFolder(at: apolloFolderURL)
} catch {
XCTFail("Error deleting Apollo folder: \(error)",
file: file,
line: line)
}
}
static func writeSHASUMOnly(_ shasum: String) throws {
let shasumFileURL = self.shasumFileURL()
let shasumParent = shasumFileURL.deletingLastPathComponent()
try FileManager.default.createDirectory(at: shasumParent,
withIntermediateDirectories: true)
FileManager.default.createFile(atPath: shasumFileURL.path,
contents: shasum.data(using: .utf8))
}
}