diff --git a/.gitignore b/.gitignore index 7f6bc69..7b26a34 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,9 @@ Pods # Carthage Carthage/Build +# Swift Package Manager +.build/ + # AppCode specific files .idea/ *.iml diff --git a/.travis.yml b/.travis.yml index c788e37..ee1c90b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,20 @@ -language: objective-c # lol -osx_image: xcode9.2 +language: objective-c +osx_image: xcode9.4 xcode_project: DVR.xcodeproj -script: xcodebuild -scheme "$TRAVIS_XCODE_SCHEME" -sdk "$TRAVIS_XCODE_SDK" -destination "$DESTINATION" test - matrix: include: - xcode_scheme: DVR-iOS xcode_sdk: iphonesimulator env: - - DESTINATION="OS=10.1,name=iPhone 7 Plus" + - PLATFORM="iOS Simulator,OS=10.1,name=iPhone 7 Plus" - xcode_scheme: DVR-macOS xcode_sdk: macosx env: - - DESTINATION="arch=x86_64" + - PLATFORM="OS X" + - env: + - SWIFT_BUILD=true + +script: + - ./Scripts/travis-build-test.sh + diff --git a/DVR.podspec b/DVR.podspec index 771c603..52a2d22 100644 --- a/DVR.podspec +++ b/DVR.podspec @@ -19,5 +19,5 @@ DVR.Session is a subclass of NSURLSession so you can use it as a drop in replace s.ios.deployment_target = '8.0' s.osx.deployment_target = '10.10' - s.source_files = 'DVR/*.{swift}' + s.source_files = 'Sources/DVR/*.{swift}' end diff --git a/DVR.xcodeproj/project.pbxproj b/DVR.xcodeproj/project.pbxproj index bc2efea..b53ae62 100644 --- a/DVR.xcodeproj/project.pbxproj +++ b/DVR.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 2104F5371DC658590039CA14 /* DVR.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2104F52E1DC658580039CA14 /* DVR.framework */; }; 2104F5451DC658A20039CA14 /* DVR.h in Headers */ = {isa = PBXBuildFile; fileRef = 3647AF9E1B335D5500EF10D4 /* DVR.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2104F5461DC658A60039CA14 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB81B335E4A00EF10D4 /* Session.swift */; }; 2104F5471DC658A60039CA14 /* SessionDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB91B335E4A00EF10D4 /* SessionDataTask.swift */; }; @@ -18,26 +17,10 @@ 2104F54C1DC658A60039CA14 /* URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB71B335E4A00EF10D4 /* URLRequest.swift */; }; 2104F54D1DC658A60039CA14 /* URLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFBF1B33602A00EF10D4 /* URLResponse.swift */; }; 2104F54E1DC658A60039CA14 /* HTTPURLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFC11B3363C400EF10D4 /* HTTPURLResponse.swift */; }; - 2104F54F1DC658A90039CA14 /* SessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFCB1B33689000EF10D4 /* SessionTests.swift */; }; - 2104F5501DC658A90039CA14 /* SessionUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19D626D1CB1A0DD00E16D11 /* SessionUploadTests.swift */; }; - 2104F5511DC658AC0039CA14 /* json-example.json in Resources */ = {isa = PBXBuildFile; fileRef = 36BDDB881B6716AB00878665 /* json-example.json */; }; - 2104F5521DC658AC0039CA14 /* example.json in Resources */ = {isa = PBXBuildFile; fileRef = 215F927C1B33D46C00EDC60F /* example.json */; }; - 2104F5531DC658AC0039CA14 /* text.json in Resources */ = {isa = PBXBuildFile; fileRef = 21E548F11BF69E29004855AE /* text.json */; }; - 2104F5541DC658AC0039CA14 /* multiple.json in Resources */ = {isa = PBXBuildFile; fileRef = 2119D37E1BF6BB2300E91D6F /* multiple.json */; }; - 2104F5551DC658AC0039CA14 /* upload-data.json in Resources */ = {isa = PBXBuildFile; fileRef = B19D62701CB1A27700E16D11 /* upload-data.json */; }; - 2104F5561DC658AC0039CA14 /* upload-file.json in Resources */ = {isa = PBXBuildFile; fileRef = B19D62761CB1A42600E16D11 /* upload-file.json */; }; - 2104F5571DC658AC0039CA14 /* testfile.txt in Resources */ = {isa = PBXBuildFile; fileRef = B19D62661CB18EDB00E16D11 /* testfile.txt */; }; - 2119D3801BF6BB2700E91D6F /* multiple.json in Resources */ = {isa = PBXBuildFile; fileRef = 2119D37E1BF6BB2300E91D6F /* multiple.json */; }; - 2119D3811BF6BB2700E91D6F /* multiple.json in Resources */ = {isa = PBXBuildFile; fileRef = 2119D37E1BF6BB2300E91D6F /* multiple.json */; }; - 215F927D1B33D46C00EDC60F /* example.json in Resources */ = {isa = PBXBuildFile; fileRef = 215F927C1B33D46C00EDC60F /* example.json */; }; - 215F927E1B33D46C00EDC60F /* example.json in Resources */ = {isa = PBXBuildFile; fileRef = 215F927C1B33D46C00EDC60F /* example.json */; }; - 21E548F31BF69E30004855AE /* text.json in Resources */ = {isa = PBXBuildFile; fileRef = 21E548F11BF69E29004855AE /* text.json */; }; - 21E548F41BF69E30004855AE /* text.json in Resources */ = {isa = PBXBuildFile; fileRef = 21E548F11BF69E29004855AE /* text.json */; }; 26D1E4181D1C30D500A20B76 /* SessionUploadTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19D62641CB1860400E16D11 /* SessionUploadTask.swift */; }; 360F5F731B5C907A001AADD1 /* SessionDownloadTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 360F5F721B5C907A001AADD1 /* SessionDownloadTask.swift */; }; 360F5F751B5C907A001AADD1 /* SessionDownloadTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 360F5F721B5C907A001AADD1 /* SessionDownloadTask.swift */; }; 3647AF9F1B335D5500EF10D4 /* DVR.h in Headers */ = {isa = PBXBuildFile; fileRef = 3647AF9E1B335D5500EF10D4 /* DVR.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3647AFA61B335D5500EF10D4 /* DVR.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3647AF9B1B335D5500EF10D4 /* DVR.framework */; }; 3647AFBA1B335E4A00EF10D4 /* Cassette.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB51B335E4A00EF10D4 /* Cassette.swift */; }; 3647AFBB1B335E4A00EF10D4 /* Interaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB61B335E4A00EF10D4 /* Interaction.swift */; }; 3647AFBC1B335E4A00EF10D4 /* URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB71B335E4A00EF10D4 /* URLRequest.swift */; }; @@ -45,8 +28,6 @@ 3647AFBE1B335E4A00EF10D4 /* SessionDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB91B335E4A00EF10D4 /* SessionDataTask.swift */; }; 3647AFC01B33602A00EF10D4 /* URLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFBF1B33602A00EF10D4 /* URLResponse.swift */; }; 3647AFC21B3363C400EF10D4 /* HTTPURLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFC11B3363C400EF10D4 /* HTTPURLResponse.swift */; }; - 3647AFCD1B33689000EF10D4 /* SessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFCB1B33689000EF10D4 /* SessionTests.swift */; }; - 3690A0851B33AA3C00731222 /* DVR.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3690A07B1B33AA3B00731222 /* DVR.framework */; }; 3690A0921B33AA9400731222 /* DVR.h in Headers */ = {isa = PBXBuildFile; fileRef = 3647AF9E1B335D5500EF10D4 /* DVR.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3690A0931B33AA9400731222 /* Session.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB81B335E4A00EF10D4 /* Session.swift */; }; 3690A0941B33AA9400731222 /* SessionDataTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB91B335E4A00EF10D4 /* SessionDataTask.swift */; }; @@ -55,18 +36,35 @@ 3690A0971B33AA9400731222 /* URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFB71B335E4A00EF10D4 /* URLRequest.swift */; }; 3690A0981B33AA9400731222 /* URLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFBF1B33602A00EF10D4 /* URLResponse.swift */; }; 3690A0991B33AA9400731222 /* HTTPURLResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFC11B3363C400EF10D4 /* HTTPURLResponse.swift */; }; - 3690A0A21B33AA9E00731222 /* SessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3647AFCB1B33689000EF10D4 /* SessionTests.swift */; }; - 36BDDB891B6716AB00878665 /* json-example.json in Resources */ = {isa = PBXBuildFile; fileRef = 36BDDB881B6716AB00878665 /* json-example.json */; }; - 36BDDB8A1B6716AB00878665 /* json-example.json in Resources */ = {isa = PBXBuildFile; fileRef = 36BDDB881B6716AB00878665 /* json-example.json */; }; B19D62651CB1860400E16D11 /* SessionUploadTask.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19D62641CB1860400E16D11 /* SessionUploadTask.swift */; }; - B19D62681CB19AA000E16D11 /* testfile.txt in Resources */ = {isa = PBXBuildFile; fileRef = B19D62661CB18EDB00E16D11 /* testfile.txt */; }; - B19D62691CB19AA200E16D11 /* testfile.txt in Resources */ = {isa = PBXBuildFile; fileRef = B19D62661CB18EDB00E16D11 /* testfile.txt */; }; - B19D626E1CB1A0DD00E16D11 /* SessionUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19D626D1CB1A0DD00E16D11 /* SessionUploadTests.swift */; }; - B19D626F1CB1A0DD00E16D11 /* SessionUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19D626D1CB1A0DD00E16D11 /* SessionUploadTests.swift */; }; - B19D62711CB1A27700E16D11 /* upload-data.json in Resources */ = {isa = PBXBuildFile; fileRef = B19D62701CB1A27700E16D11 /* upload-data.json */; }; - B19D62721CB1A27700E16D11 /* upload-data.json in Resources */ = {isa = PBXBuildFile; fileRef = B19D62701CB1A27700E16D11 /* upload-data.json */; }; - B19D62771CB1A42600E16D11 /* upload-file.json in Resources */ = {isa = PBXBuildFile; fileRef = B19D62761CB1A42600E16D11 /* upload-file.json */; }; - B19D62781CB1A42600E16D11 /* upload-file.json in Resources */ = {isa = PBXBuildFile; fileRef = B19D62761CB1A42600E16D11 /* upload-file.json */; }; + ED7862851F7D42B800CB2625 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = ED7862811F7D42B800CB2625 /* Info.plist */; }; + ED7862871F7D42C200CB2625 /* SessionUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7862821F7D42B800CB2625 /* SessionUploadTests.swift */; }; + ED7862881F7D42C200CB2625 /* SessionUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7862821F7D42B800CB2625 /* SessionUploadTests.swift */; }; + ED7862891F7D42C300CB2625 /* SessionUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED7862821F7D42B800CB2625 /* SessionUploadTests.swift */; }; + ED78628A1F7D42C700CB2625 /* SessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED78627F1F7D42B700CB2625 /* SessionTests.swift */; }; + ED78628B1F7D42C700CB2625 /* SessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED78627F1F7D42B700CB2625 /* SessionTests.swift */; }; + ED78628C1F7D42C800CB2625 /* SessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED78627F1F7D42B700CB2625 /* SessionTests.swift */; }; + ED78629F1F7D44EA00CB2625 /* example.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862911F7D44E200CB2625 /* example.json */; }; + ED7862A01F7D44EA00CB2625 /* json-example.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862971F7D44E200CB2625 /* json-example.json */; }; + ED7862A11F7D44EA00CB2625 /* multiple.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862951F7D44E200CB2625 /* multiple.json */; }; + ED7862A21F7D44EA00CB2625 /* testfile.txt in Resources */ = {isa = PBXBuildFile; fileRef = ED7862921F7D44E200CB2625 /* testfile.txt */; }; + ED7862A31F7D44EA00CB2625 /* text.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862961F7D44E200CB2625 /* text.json */; }; + ED7862A41F7D44EA00CB2625 /* upload-data.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862941F7D44E200CB2625 /* upload-data.json */; }; + ED7862A51F7D44EA00CB2625 /* upload-file.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862931F7D44E200CB2625 /* upload-file.json */; }; + ED7862A61F7D44EB00CB2625 /* example.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862911F7D44E200CB2625 /* example.json */; }; + ED7862A71F7D44EB00CB2625 /* json-example.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862971F7D44E200CB2625 /* json-example.json */; }; + ED7862A81F7D44EB00CB2625 /* multiple.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862951F7D44E200CB2625 /* multiple.json */; }; + ED7862A91F7D44EB00CB2625 /* testfile.txt in Resources */ = {isa = PBXBuildFile; fileRef = ED7862921F7D44E200CB2625 /* testfile.txt */; }; + ED7862AA1F7D44EB00CB2625 /* text.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862961F7D44E200CB2625 /* text.json */; }; + ED7862AB1F7D44EB00CB2625 /* upload-data.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862941F7D44E200CB2625 /* upload-data.json */; }; + ED7862AC1F7D44EB00CB2625 /* upload-file.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862931F7D44E200CB2625 /* upload-file.json */; }; + ED7862AD1F7D44EB00CB2625 /* example.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862911F7D44E200CB2625 /* example.json */; }; + ED7862AE1F7D44EB00CB2625 /* json-example.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862971F7D44E200CB2625 /* json-example.json */; }; + ED7862AF1F7D44EB00CB2625 /* multiple.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862951F7D44E200CB2625 /* multiple.json */; }; + ED7862B01F7D44EB00CB2625 /* testfile.txt in Resources */ = {isa = PBXBuildFile; fileRef = ED7862921F7D44E200CB2625 /* testfile.txt */; }; + ED7862B11F7D44EB00CB2625 /* text.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862961F7D44E200CB2625 /* text.json */; }; + ED7862B21F7D44EB00CB2625 /* upload-data.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862941F7D44E200CB2625 /* upload-data.json */; }; + ED7862B31F7D44EB00CB2625 /* upload-file.json in Resources */ = {isa = PBXBuildFile; fileRef = ED7862931F7D44E200CB2625 /* upload-file.json */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -96,9 +94,6 @@ /* Begin PBXFileReference section */ 2104F52E1DC658580039CA14 /* DVR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DVR.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 2104F5361DC658590039CA14 /* DVRTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DVRTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 2119D37E1BF6BB2300E91D6F /* multiple.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = multiple.json; sourceTree = ""; }; - 215F927C1B33D46C00EDC60F /* example.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = example.json; sourceTree = ""; }; - 21E548F11BF69E29004855AE /* text.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = text.json; sourceTree = ""; }; 360F5F721B5C907A001AADD1 /* SessionDownloadTask.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionDownloadTask.swift; sourceTree = ""; }; 3647AF9B1B335D5500EF10D4 /* DVR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DVR.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3647AF9E1B335D5500EF10D4 /* DVR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DVR.h; sourceTree = ""; }; @@ -111,16 +106,20 @@ 3647AFBF1B33602A00EF10D4 /* URLResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLResponse.swift; sourceTree = ""; }; 3647AFC11B3363C400EF10D4 /* HTTPURLResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPURLResponse.swift; sourceTree = ""; }; 3647AFC81B33688A00EF10D4 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 3647AFCB1B33689000EF10D4 /* SessionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionTests.swift; sourceTree = ""; }; - 3647AFCC1B33689000EF10D4 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 3690A07B1B33AA3B00731222 /* DVR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DVR.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3690A0841B33AA3C00731222 /* DVRTests-macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "DVRTests-macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 36BDDB881B6716AB00878665 /* json-example.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "json-example.json"; sourceTree = ""; }; B19D62641CB1860400E16D11 /* SessionUploadTask.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionUploadTask.swift; sourceTree = ""; }; - B19D62661CB18EDB00E16D11 /* testfile.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = testfile.txt; sourceTree = ""; }; - B19D626D1CB1A0DD00E16D11 /* SessionUploadTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionUploadTests.swift; sourceTree = ""; }; - B19D62701CB1A27700E16D11 /* upload-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "upload-data.json"; sourceTree = ""; }; - B19D62761CB1A42600E16D11 /* upload-file.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "upload-file.json"; sourceTree = ""; }; + ED78627F1F7D42B700CB2625 /* SessionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionTests.swift; sourceTree = ""; }; + ED7862811F7D42B800CB2625 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + ED7862821F7D42B800CB2625 /* SessionUploadTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SessionUploadTests.swift; sourceTree = ""; }; + ED7862911F7D44E200CB2625 /* example.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = example.json; sourceTree = ""; }; + ED7862921F7D44E200CB2625 /* testfile.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = testfile.txt; sourceTree = ""; }; + ED7862931F7D44E200CB2625 /* upload-file.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "upload-file.json"; sourceTree = ""; }; + ED7862941F7D44E200CB2625 /* upload-data.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "upload-data.json"; sourceTree = ""; }; + ED7862951F7D44E200CB2625 /* multiple.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = multiple.json; sourceTree = ""; }; + ED7862961F7D44E200CB2625 /* text.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = text.json; sourceTree = ""; }; + ED7862971F7D44E200CB2625 /* json-example.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "json-example.json"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -135,7 +134,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2104F5371DC658590039CA14 /* DVR.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -150,7 +148,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3647AFA61B335D5500EF10D4 /* DVR.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -165,7 +162,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3690A0851B33AA3C00731222 /* DVR.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -175,7 +171,8 @@ 3647AF911B335D5500EF10D4 = { isa = PBXGroup; children = ( - 3647AF9D1B335D5500EF10D4 /* DVR */, + ED78627B1F7D41DE00CB2625 /* Sources */, + ED78627D1F7D427800CB2625 /* Tests */, 3647AF9C1B335D5500EF10D4 /* Products */, ); sourceTree = ""; @@ -207,7 +204,6 @@ 3647AFBF1B33602A00EF10D4 /* URLResponse.swift */, 3647AFC11B3363C400EF10D4 /* HTTPURLResponse.swift */, 3647AFC71B33688A00EF10D4 /* Resources */, - 3647AFCA1B33689000EF10D4 /* Tests */, ); path = DVR; sourceTree = ""; @@ -220,28 +216,43 @@ path = Resources; sourceTree = ""; }; - 3647AFCA1B33689000EF10D4 /* Tests */ = { + ED78627B1F7D41DE00CB2625 /* Sources */ = { + isa = PBXGroup; + children = ( + 3647AF9D1B335D5500EF10D4 /* DVR */, + ); + path = Sources; + sourceTree = ""; + }; + ED78627D1F7D427800CB2625 /* Tests */ = { isa = PBXGroup; children = ( - 3647AFCB1B33689000EF10D4 /* SessionTests.swift */, - B19D626D1CB1A0DD00E16D11 /* SessionUploadTests.swift */, - 3647AFCF1B33693F00EF10D4 /* Fixtures */, - 3647AFCC1B33689000EF10D4 /* Info.plist */, + ED78627E1F7D42A100CB2625 /* DVRTests */, ); - name = Tests; - path = DVR/Tests; - sourceTree = SOURCE_ROOT; + path = Tests; + sourceTree = ""; + }; + ED78627E1F7D42A100CB2625 /* DVRTests */ = { + isa = PBXGroup; + children = ( + ED7862901F7D44D100CB2625 /* Fixtures */, + ED7862811F7D42B800CB2625 /* Info.plist */, + ED78627F1F7D42B700CB2625 /* SessionTests.swift */, + ED7862821F7D42B800CB2625 /* SessionUploadTests.swift */, + ); + path = DVRTests; + sourceTree = ""; }; - 3647AFCF1B33693F00EF10D4 /* Fixtures */ = { + ED7862901F7D44D100CB2625 /* Fixtures */ = { isa = PBXGroup; children = ( - 36BDDB881B6716AB00878665 /* json-example.json */, - 215F927C1B33D46C00EDC60F /* example.json */, - 21E548F11BF69E29004855AE /* text.json */, - 2119D37E1BF6BB2300E91D6F /* multiple.json */, - B19D62701CB1A27700E16D11 /* upload-data.json */, - B19D62761CB1A42600E16D11 /* upload-file.json */, - B19D62661CB18EDB00E16D11 /* testfile.txt */, + ED7862911F7D44E200CB2625 /* example.json */, + ED7862971F7D44E200CB2625 /* json-example.json */, + ED7862951F7D44E200CB2625 /* multiple.json */, + ED7862921F7D44E200CB2625 /* testfile.txt */, + ED7862961F7D44E200CB2625 /* text.json */, + ED7862941F7D44E200CB2625 /* upload-data.json */, + ED7862931F7D44E200CB2625 /* upload-file.json */, ); path = Fixtures; sourceTree = ""; @@ -454,13 +465,13 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2104F5561DC658AC0039CA14 /* upload-file.json in Resources */, - 2104F5521DC658AC0039CA14 /* example.json in Resources */, - 2104F5551DC658AC0039CA14 /* upload-data.json in Resources */, - 2104F5541DC658AC0039CA14 /* multiple.json in Resources */, - 2104F5511DC658AC0039CA14 /* json-example.json in Resources */, - 2104F5531DC658AC0039CA14 /* text.json in Resources */, - 2104F5571DC658AC0039CA14 /* testfile.txt in Resources */, + ED7862AE1F7D44EB00CB2625 /* json-example.json in Resources */, + ED7862AD1F7D44EB00CB2625 /* example.json in Resources */, + ED7862B21F7D44EB00CB2625 /* upload-data.json in Resources */, + ED7862B31F7D44EB00CB2625 /* upload-file.json in Resources */, + ED7862B11F7D44EB00CB2625 /* text.json in Resources */, + ED7862B01F7D44EB00CB2625 /* testfile.txt in Resources */, + ED7862AF1F7D44EB00CB2625 /* multiple.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -468,6 +479,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + ED7862851F7D42B800CB2625 /* Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -475,13 +487,13 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 36BDDB891B6716AB00878665 /* json-example.json in Resources */, - 2119D3801BF6BB2700E91D6F /* multiple.json in Resources */, - B19D62711CB1A27700E16D11 /* upload-data.json in Resources */, - B19D62771CB1A42600E16D11 /* upload-file.json in Resources */, - 215F927D1B33D46C00EDC60F /* example.json in Resources */, - B19D62681CB19AA000E16D11 /* testfile.txt in Resources */, - 21E548F31BF69E30004855AE /* text.json in Resources */, + ED7862A01F7D44EA00CB2625 /* json-example.json in Resources */, + ED78629F1F7D44EA00CB2625 /* example.json in Resources */, + ED7862A41F7D44EA00CB2625 /* upload-data.json in Resources */, + ED7862A51F7D44EA00CB2625 /* upload-file.json in Resources */, + ED7862A31F7D44EA00CB2625 /* text.json in Resources */, + ED7862A21F7D44EA00CB2625 /* testfile.txt in Resources */, + ED7862A11F7D44EA00CB2625 /* multiple.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -496,13 +508,13 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 36BDDB8A1B6716AB00878665 /* json-example.json in Resources */, - 2119D3811BF6BB2700E91D6F /* multiple.json in Resources */, - B19D62721CB1A27700E16D11 /* upload-data.json in Resources */, - B19D62781CB1A42600E16D11 /* upload-file.json in Resources */, - 215F927E1B33D46C00EDC60F /* example.json in Resources */, - B19D62691CB19AA200E16D11 /* testfile.txt in Resources */, - 21E548F41BF69E30004855AE /* text.json in Resources */, + ED7862A71F7D44EB00CB2625 /* json-example.json in Resources */, + ED7862A61F7D44EB00CB2625 /* example.json in Resources */, + ED7862AB1F7D44EB00CB2625 /* upload-data.json in Resources */, + ED7862AC1F7D44EB00CB2625 /* upload-file.json in Resources */, + ED7862AA1F7D44EB00CB2625 /* text.json in Resources */, + ED7862A91F7D44EB00CB2625 /* testfile.txt in Resources */, + ED7862A81F7D44EB00CB2625 /* multiple.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -529,8 +541,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2104F54F1DC658A90039CA14 /* SessionTests.swift in Sources */, - 2104F5501DC658A90039CA14 /* SessionUploadTests.swift in Sources */, + ED78628A1F7D42C700CB2625 /* SessionTests.swift in Sources */, + ED7862871F7D42C200CB2625 /* SessionUploadTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -554,8 +566,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3647AFCD1B33689000EF10D4 /* SessionTests.swift in Sources */, - B19D626E1CB1A0DD00E16D11 /* SessionUploadTests.swift in Sources */, + ED78628C1F7D42C800CB2625 /* SessionTests.swift in Sources */, + ED7862891F7D42C300CB2625 /* SessionUploadTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -579,8 +591,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3690A0A21B33AA9E00731222 /* SessionTests.swift in Sources */, - B19D626F1CB1A0DD00E16D11 /* SessionUploadTests.swift in Sources */, + ED78628B1F7D42C700CB2625 /* SessionTests.swift in Sources */, + ED7862881F7D42C200CB2625 /* SessionUploadTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -616,7 +628,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = DVR/Resources/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Sources/DVR/Resources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.dvr; @@ -639,7 +651,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = DVR/Resources/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Sources/DVR/Resources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.dvr; @@ -658,7 +670,7 @@ CLANG_ANALYZER_NONNULL = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; - INFOPLIST_FILE = DVR/Tests/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Tests/DVRTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.dvr.tests; PRODUCT_NAME = DVRTests; @@ -675,7 +687,7 @@ CLANG_ANALYZER_NONNULL = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_SUSPICIOUS_MOVES = YES; - INFOPLIST_FILE = DVR/Tests/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Tests/DVRTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.dvr.tests; PRODUCT_NAME = DVRTests; @@ -810,7 +822,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/DVR/Resources/Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/DVR/Resources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR; @@ -828,7 +840,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "$(SRCROOT)/DVR/Resources/Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/DVR/Resources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR; @@ -841,7 +853,7 @@ isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; - INFOPLIST_FILE = DVR/Tests/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Tests/DVRTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR.iostests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -852,7 +864,7 @@ isa = XCBuildConfiguration; buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; - INFOPLIST_FILE = DVR/Tests/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Tests/DVRTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR.iostests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -868,7 +880,7 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "$(SRCROOT)/DVR/Resources/Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/DVR/Resources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR; @@ -887,7 +899,7 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_VERSION = A; - INFOPLIST_FILE = "$(SRCROOT)/DVR/Resources/Info.plist"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/DVR/Resources/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR; @@ -902,7 +914,7 @@ buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = DVR/Tests/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Tests/DVRTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR.osxtests; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -915,7 +927,7 @@ buildSettings = { APPLICATION_EXTENSION_API_ONLY = NO; COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = DVR/Tests/Info.plist; + INFOPLIST_FILE = "$(SRCROOT)/Tests/DVRTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.venmo.DVR.osxtests; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..7e35838 --- /dev/null +++ b/Package.swift @@ -0,0 +1,19 @@ +// swift-tools-version:4.0 + +import PackageDescription + +let package = Package( + name: "DVR", + products: [ + .library( + name: "DVR", + targets: ["DVR"]) + ], + targets: [ + .target(name: "DVR"), + .testTarget( + name: "DVRTests", + dependencies: ["DVR"]) + ] +) + diff --git a/Readme.markdown b/Readme.markdown index 7cf39ce..4136bda 100644 --- a/Readme.markdown +++ b/Readme.markdown @@ -3,6 +3,7 @@ [![Version](https://img.shields.io/github/release/venmo/DVR.svg)](https://github.com/venmo/DVR/releases) ![Swift Version](https://img.shields.io/badge/swift-4-orange.svg) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![Swift Package Manager](https://img.shields.io/badge/SPM-compatible-brightgreen.svg)](https://swift.org/package-manager/) DVR is a simple Swift framework for making fake `NSURLSession` requests for iOS, watchOS, and OS X based on [VCR](https://github.com/vcr/vcr). diff --git a/Scripts/travis-build-test.sh b/Scripts/travis-build-test.sh new file mode 100755 index 0000000..9a5bab5 --- /dev/null +++ b/Scripts/travis-build-test.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -x -o pipefail + +if [[ "$SWIFT_BUILD" == "true" ]]; then + swift build + exit 0 +fi + +# -jobs -- specify the number of concurrent jobs +# `sysctl -n hw.ncpu` -- fetch number of 'logical' cores in macOS machine +xcodebuild -jobs `sysctl -n hw.ncpu` test -project DVR.xcodeproj -scheme ${TRAVIS_XCODE_SCHEME} -sdk ${TRAVIS_XCODE_SDK} \ + -destination "platform=${PLATFORM}" ONLY_ACTIVE_ARCH=YES CODE_SIGNING_IDENTITY="" CODE_SIGNING_REQUIRED=NO + diff --git a/DVR/Cassette.swift b/Sources/DVR/Cassette.swift similarity index 95% rename from DVR/Cassette.swift rename to Sources/DVR/Cassette.swift index 6c6716c..b3e8fb9 100644 --- a/DVR/Cassette.swift +++ b/Sources/DVR/Cassette.swift @@ -46,7 +46,7 @@ extension Cassette { self.name = name if let array = dictionary["interactions"] as? [[String: Any]] { - interactions = array.flatMap { Interaction(dictionary: $0) } + interactions = array.compactMap { Interaction(dictionary: $0) } } else { interactions = [] } diff --git a/DVR/DVR.h b/Sources/DVR/DVR.h similarity index 100% rename from DVR/DVR.h rename to Sources/DVR/DVR.h diff --git a/DVR/HTTPURLResponse.swift b/Sources/DVR/HTTPURLResponse.swift similarity index 100% rename from DVR/HTTPURLResponse.swift rename to Sources/DVR/HTTPURLResponse.swift diff --git a/DVR/Interaction.swift b/Sources/DVR/Interaction.swift similarity index 100% rename from DVR/Interaction.swift rename to Sources/DVR/Interaction.swift diff --git a/DVR/Resources/Info.plist b/Sources/DVR/Resources/Info.plist similarity index 100% rename from DVR/Resources/Info.plist rename to Sources/DVR/Resources/Info.plist diff --git a/DVR/Session.swift b/Sources/DVR/Session.swift similarity index 100% rename from DVR/Session.swift rename to Sources/DVR/Session.swift diff --git a/DVR/SessionDataTask.swift b/Sources/DVR/SessionDataTask.swift similarity index 100% rename from DVR/SessionDataTask.swift rename to Sources/DVR/SessionDataTask.swift diff --git a/DVR/SessionDownloadTask.swift b/Sources/DVR/SessionDownloadTask.swift similarity index 98% rename from DVR/SessionDownloadTask.swift rename to Sources/DVR/SessionDownloadTask.swift index d60139b..0cd70df 100644 --- a/DVR/SessionDownloadTask.swift +++ b/Sources/DVR/SessionDownloadTask.swift @@ -1,3 +1,5 @@ +import Foundation + final class SessionDownloadTask: URLSessionDownloadTask { // MARK: - Types diff --git a/DVR/SessionUploadTask.swift b/Sources/DVR/SessionUploadTask.swift similarity index 97% rename from DVR/SessionUploadTask.swift rename to Sources/DVR/SessionUploadTask.swift index b316f86..fb66596 100644 --- a/DVR/SessionUploadTask.swift +++ b/Sources/DVR/SessionUploadTask.swift @@ -1,3 +1,5 @@ +import Foundation + final class SessionUploadTask: URLSessionUploadTask { // MARK: - Types diff --git a/DVR/URLRequest.swift b/Sources/DVR/URLRequest.swift similarity index 100% rename from DVR/URLRequest.swift rename to Sources/DVR/URLRequest.swift diff --git a/DVR/URLResponse.swift b/Sources/DVR/URLResponse.swift similarity index 100% rename from DVR/URLResponse.swift rename to Sources/DVR/URLResponse.swift diff --git a/DVR/Tests/Fixtures/example.json b/Tests/DVRTests/Fixtures/example.json similarity index 100% rename from DVR/Tests/Fixtures/example.json rename to Tests/DVRTests/Fixtures/example.json diff --git a/DVR/Tests/Fixtures/json-example.json b/Tests/DVRTests/Fixtures/json-example.json similarity index 100% rename from DVR/Tests/Fixtures/json-example.json rename to Tests/DVRTests/Fixtures/json-example.json diff --git a/DVR/Tests/Fixtures/multiple.json b/Tests/DVRTests/Fixtures/multiple.json similarity index 100% rename from DVR/Tests/Fixtures/multiple.json rename to Tests/DVRTests/Fixtures/multiple.json diff --git a/DVR/Tests/Fixtures/testfile.txt b/Tests/DVRTests/Fixtures/testfile.txt similarity index 100% rename from DVR/Tests/Fixtures/testfile.txt rename to Tests/DVRTests/Fixtures/testfile.txt diff --git a/DVR/Tests/Fixtures/text.json b/Tests/DVRTests/Fixtures/text.json similarity index 100% rename from DVR/Tests/Fixtures/text.json rename to Tests/DVRTests/Fixtures/text.json diff --git a/DVR/Tests/Fixtures/upload-data.json b/Tests/DVRTests/Fixtures/upload-data.json similarity index 100% rename from DVR/Tests/Fixtures/upload-data.json rename to Tests/DVRTests/Fixtures/upload-data.json diff --git a/DVR/Tests/Fixtures/upload-file.json b/Tests/DVRTests/Fixtures/upload-file.json similarity index 100% rename from DVR/Tests/Fixtures/upload-file.json rename to Tests/DVRTests/Fixtures/upload-file.json diff --git a/DVR/Tests/Info.plist b/Tests/DVRTests/Info.plist similarity index 100% rename from DVR/Tests/Info.plist rename to Tests/DVRTests/Info.plist diff --git a/DVR/Tests/SessionTests.swift b/Tests/DVRTests/SessionTests.swift similarity index 100% rename from DVR/Tests/SessionTests.swift rename to Tests/DVRTests/SessionTests.swift diff --git a/DVR/Tests/SessionUploadTests.swift b/Tests/DVRTests/SessionUploadTests.swift similarity index 100% rename from DVR/Tests/SessionUploadTests.swift rename to Tests/DVRTests/SessionUploadTests.swift