Use swift package manager

This commit is contained in:
Victor Bodinaud
2020-03-01 02:07:13 +01:00
parent 963a9b074a
commit 5c83114197
9 changed files with 94 additions and 6 deletions

5
Blockchain/.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.DS_Store
/.build
/Packages
/*.xcodeproj
xcuserdata/

22
Blockchain/Package.swift Normal file
View File

@@ -0,0 +1,22 @@
// swift-tools-version:5.1
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: "Blockchain",
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "Blockchain",
dependencies: []),
.testTarget(
name: "BlockchainTests",
dependencies: ["Blockchain"]),
]
)

3
Blockchain/README.md Normal file
View File

@@ -0,0 +1,3 @@
# Blockchain
A description of this package.

View File

@@ -7,7 +7,6 @@
// //
import Foundation import Foundation
import CryptoKit
class Block { class Block {
var hash: String! var hash: String!
@@ -16,10 +15,6 @@ class Block {
var index: Int! var index: Int!
func generateHash() -> String { func generateHash() -> String {
if let hashData = data.data(using: .utf8) {
_ = SHA256.hash(data: hashData)
}
return NSUUID().uuidString.replacingOccurrences(of: "-", with: "") return NSUUID().uuidString.replacingOccurrences(of: "-", with: "")
} }
} }

View File

@@ -24,7 +24,7 @@ repeat {
} }
if command == "spam" { if command == "spam" {
for _ in 1...1000000 { for _ in 1...1000 {
blockchain.createBlock(data: "\((blockchain.chain.last?.index ?? 0)+1)") blockchain.createBlock(data: "\((blockchain.chain.last?.index ?? 0)+1)")
} }
} }

View File

@@ -0,0 +1,47 @@
import XCTest
import class Foundation.Bundle
final class BlockchainTests: XCTestCase {
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct
// results.
// Some of the APIs that we use below are available in macOS 10.13 and above.
guard #available(macOS 10.13, *) else {
return
}
let fooBinary = productsDirectory.appendingPathComponent("Blockchain")
let process = Process()
process.executableURL = fooBinary
let pipe = Pipe()
process.standardOutput = pipe
try process.run()
process.waitUntilExit()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = String(data: data, encoding: .utf8)
XCTAssertEqual(output, "Hello, world!\n")
}
/// Returns path to the built products directory.
var productsDirectory: URL {
#if os(macOS)
for bundle in Bundle.allBundles where bundle.bundlePath.hasSuffix(".xctest") {
return bundle.bundleURL.deletingLastPathComponent()
}
fatalError("couldn't find the products directory")
#else
return Bundle.main.bundleURL
#endif
}
static var allTests = [
("testExample", testExample),
]
}

View File

@@ -0,0 +1,9 @@
import XCTest
#if !canImport(ObjectiveC)
public func allTests() -> [XCTestCaseEntry] {
return [
testCase(BlockchainTests.allTests),
]
}
#endif

View File

@@ -0,0 +1,7 @@
import XCTest
import BlockchainTests
var tests = [XCTestCaseEntry]()
tests += BlockchainTests.allTests()
XCTMain(tests)