From 67b4204a1496ae3977336b739e352a200e7a8fd2 Mon Sep 17 00:00:00 2001 From: hideya kawahara Date: Thu, 26 Nov 2015 16:36:48 +0900 Subject: [PATCH] Enable unit test execution from 'npm test' --- LoopBack.xcodeproj/project.pbxproj | 100 +++++++--------- .../xcschemes/LoopBackOSX.xcscheme | 113 ++++++++++++++++++ .../xcschemes/SLRemotingTests.xcscheme | 99 +++++++++++++++ LoopBackOSX/LoopBackOSX.h | 1 + LoopBackTests/bin/run-unit-tests | 53 ++++++++ LoopBackTests/server/package.json | 12 -- SLRemoting/SLRemotingTestsUtils.h | 27 +++-- SLRemotingTests/server/.gitignore | 1 - SLRemotingTests/server/package.json | 9 -- package.json | 15 +++ 10 files changed, 342 insertions(+), 88 deletions(-) create mode 100644 LoopBack.xcodeproj/xcshareddata/xcschemes/LoopBackOSX.xcscheme create mode 100644 LoopBack.xcodeproj/xcshareddata/xcschemes/SLRemotingTests.xcscheme create mode 100755 LoopBackTests/bin/run-unit-tests delete mode 100644 LoopBackTests/server/package.json delete mode 100644 SLRemotingTests/server/.gitignore delete mode 100644 SLRemotingTests/server/package.json diff --git a/LoopBack.xcodeproj/project.pbxproj b/LoopBack.xcodeproj/project.pbxproj index 3c21eba..be5b953 100644 --- a/LoopBack.xcodeproj/project.pbxproj +++ b/LoopBack.xcodeproj/project.pbxproj @@ -74,7 +74,6 @@ 47C48BAB1962120E00995044 /* SLObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B8C1962120E00995044 /* SLObject.m */; }; 47C48BAC1962120E00995044 /* SLRemoting-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B8D1962120E00995044 /* SLRemoting-Prefix.pch */; }; 47C48BAD1962120E00995044 /* SLRemoting.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B8E1962120E00995044 /* SLRemoting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 47C48BAE1962120E00995044 /* SLRemotingTestsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B8F1962120E00995044 /* SLRemotingTestsUtils.h */; }; 47C48BB01962120E00995044 /* SLRESTAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B911962120E00995044 /* SLRESTAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 47C48BB11962120E00995044 /* SLRESTAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B921962120E00995044 /* SLRESTAdapter.m */; }; 47C48BB21962120E00995044 /* SLRESTContract.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B931962120E00995044 /* SLRESTContract.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -85,15 +84,9 @@ 47C48BDB1962123900995044 /* SLRESTAdapterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BC91962123900995044 /* SLRESTAdapterTests.m */; }; 47C48BDC1962123900995044 /* SLRESTContractTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BCB1962123900995044 /* SLRESTContractTests.m */; }; 47D47194196DF4A1002E2358 /* SLRESTAdapterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BC91962123900995044 /* SLRESTAdapterTests.m */; }; - 47D47196196DF4A1002E2358 /* LBPersistedModelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D2213A17722BAB00B7CB63 /* LBPersistedModelTests.m */; }; 47D47197196DF4A1002E2358 /* SLRESTContractTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BCB1962123900995044 /* SLRESTContractTests.m */; }; - 47D47198196DF4A1002E2358 /* LBContainerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B3A201518A56BA5006772C8 /* LBContainerTests.m */; }; - 47D47199196DF4A1002E2358 /* LBUserTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B3A201718A57CCD006772C8 /* LBUserTests.m */; }; 47D4719A196DF4A1002E2358 /* SLRESTAdapterSSLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BC71962123900995044 /* SLRESTAdapterSSLTests.m */; }; 47D4719B196DF4A1002E2358 /* SLRESTAdapterNonRootTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BC61962123900995044 /* SLRESTAdapterNonRootTests.m */; }; - 47D4719C196DF4A1002E2358 /* LBPersistedModelSubclassingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D2214117725A7F00B7CB63 /* LBPersistedModelSubclassingTests.m */; }; - 47D4719F196DF4A1002E2358 /* LBInstallationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4769FF08184D6F4F00E5152C /* LBInstallationTests.m */; }; - 47D471A0196DF4A1002E2358 /* LBFileTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B3A201A18A5856F006772C8 /* LBFileTests.m */; }; 47D471A7196DF4A1002E2358 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D220FA17722AE800B7CB63 /* Foundation.framework */; }; 47D471A9196DF4A1002E2358 /* libLoopBack.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D220F717722AE800B7CB63 /* libLoopBack.a */; }; 47D471AF196DF4A1002E2358 /* SLRemotingTests-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 47C48BC41962123900995044 /* SLRemotingTests-Info.plist */; }; @@ -104,6 +97,8 @@ 895B41811AB16D670000A9D7 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B278D50187B584F00FFC135 /* MobileCoreServices.framework */; }; 895B41821AB16D6A0000A9D7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B278D4A187B584A00FFC135 /* SystemConfiguration.framework */; }; 895B41831AB16D6B0000A9D7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B278D4A187B584A00FFC135 /* SystemConfiguration.framework */; }; + 896029671C0EC23E002B1C69 /* SLRemotingTestsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B8F1962120E00995044 /* SLRemotingTestsUtils.h */; }; + 896029681C0EC25D002B1C69 /* SLRemotingTestsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B8F1962120E00995044 /* SLRemotingTestsUtils.h */; }; 8973753E1AB2A60A00FB31A2 /* SLStreamParam.h in Headers */ = {isa = PBXBuildFile; fileRef = 8973753C1AB2A60A00FB31A2 /* SLStreamParam.h */; }; 8973753F1AB2A60A00FB31A2 /* SLStreamParam.m in Sources */ = {isa = PBXBuildFile; fileRef = 8973753D1AB2A60A00FB31A2 /* SLStreamParam.m */; }; 89C410341B4D4B0200B2ED51 /* LBPersistedModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 89C410321B4D4B0200B2ED51 /* LBPersistedModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -115,7 +110,6 @@ 89EB399F1AB16ED900B1EB9D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D2214317725DAB00B7CB63 /* UIKit.framework */; }; 89F4F36C1B53E6A80070D8EB /* LBModelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 89F4F36B1B53E6A80070D8EB /* LBModelTests.m */; }; 89F4F36D1B53E6A80070D8EB /* LBModelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 89F4F36B1B53E6A80070D8EB /* LBModelTests.m */; }; - 89F4F36E1B53E6DE0070D8EB /* LBModelTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 89F4F36B1B53E6A80070D8EB /* LBModelTests.m */; }; 89F4F36F1B546D0B0070D8EB /* LBPersistedModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 89C410331B4D4B0200B2ED51 /* LBPersistedModel.m */; }; 89F4F3701B546D170070D8EB /* LBPersistedModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 89C410321B4D4B0200B2ED51 /* LBPersistedModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; B3D220FB17722AE800B7CB63 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3D220FA17722AE800B7CB63 /* Foundation.framework */; }; @@ -137,24 +131,24 @@ E4C9BC491AD6FB3100D70046 /* SLRESTAdapterSSLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BC71962123900995044 /* SLRESTAdapterSSLTests.m */; }; E4C9BC4A1AD6FB3900D70046 /* SLRESTAdapterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BC91962123900995044 /* SLRESTAdapterTests.m */; }; E4C9BC4B1AD6FB3D00D70046 /* SLRESTContractTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48BCB1962123900995044 /* SLRESTContractTests.m */; }; - E4C9BC4C1AD6FB4800D70046 /* SLAFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B751962120E00995044 /* SLAFHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC4C1AD6FB4800D70046 /* SLAFHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B751962120E00995044 /* SLAFHTTPClient.h */; }; E4C9BC4D1AD6FB4E00D70046 /* SLAFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B761962120E00995044 /* SLAFHTTPClient.m */; }; - E4C9BC4E1AD6FB5300D70046 /* SLAFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B771962120E00995044 /* SLAFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC4E1AD6FB5300D70046 /* SLAFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B771962120E00995044 /* SLAFHTTPRequestOperation.h */; }; E4C9BC4F1AD6FB6E00D70046 /* SLAFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B781962120E00995044 /* SLAFHTTPRequestOperation.m */; }; - E4C9BC501AD6FB7100D70046 /* SLAFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B791962120E00995044 /* SLAFImageRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC501AD6FB7100D70046 /* SLAFImageRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B791962120E00995044 /* SLAFImageRequestOperation.h */; }; E4C9BC511AD6FB7800D70046 /* SLAFImageRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B7A1962120E00995044 /* SLAFImageRequestOperation.m */; }; - E4C9BC521AD6FB7F00D70046 /* SLAFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B7B1962120E00995044 /* SLAFJSONRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC521AD6FB7F00D70046 /* SLAFJSONRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B7B1962120E00995044 /* SLAFJSONRequestOperation.h */; }; E4C9BC531AD6FB8400D70046 /* SLAFJSONRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B7C1962120E00995044 /* SLAFJSONRequestOperation.m */; }; - E4C9BC541AD6FB8900D70046 /* SLAFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B7D1962120E00995044 /* SLAFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC541AD6FB8900D70046 /* SLAFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B7D1962120E00995044 /* SLAFNetworkActivityIndicatorManager.h */; }; E4C9BC551AD6FB9200D70046 /* SLAFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B7E1962120E00995044 /* SLAFNetworkActivityIndicatorManager.m */; }; - E4C9BC561AD6FB9500D70046 /* SLAFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B7F1962120E00995044 /* SLAFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4C9BC571AD6FB9A00D70046 /* SLAFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B801962120E00995044 /* SLAFPropertyListRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC561AD6FB9500D70046 /* SLAFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B7F1962120E00995044 /* SLAFNetworking.h */; }; + E4C9BC571AD6FB9A00D70046 /* SLAFPropertyListRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B801962120E00995044 /* SLAFPropertyListRequestOperation.h */; }; E4C9BC581AD6FB9F00D70046 /* SLAFPropertyListRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B811962120E00995044 /* SLAFPropertyListRequestOperation.m */; }; - E4C9BC591AD6FBA200D70046 /* SLAFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B821962120E00995044 /* SLAFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC591AD6FBA200D70046 /* SLAFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B821962120E00995044 /* SLAFURLConnectionOperation.h */; }; E4C9BC5A1AD6FBA700D70046 /* SLAFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B831962120E00995044 /* SLAFURLConnectionOperation.m */; }; - E4C9BC5B1AD6FBAA00D70046 /* SLAFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B841962120E00995044 /* SLAFXMLRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC5B1AD6FBAA00D70046 /* SLAFXMLRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B841962120E00995044 /* SLAFXMLRequestOperation.h */; }; E4C9BC5C1AD6FBAE00D70046 /* SLAFXMLRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B851962120E00995044 /* SLAFXMLRequestOperation.m */; }; - E4C9BC5D1AD6FBB200D70046 /* UIImageView+SLAFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B861962120E00995044 /* UIImageView+SLAFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC5D1AD6FBB200D70046 /* UIImageView+SLAFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B861962120E00995044 /* UIImageView+SLAFNetworking.h */; }; E4C9BC5E1AD6FBB600D70046 /* UIImageView+SLAFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B871962120E00995044 /* UIImageView+SLAFNetworking.m */; }; E4C9BC5F1AD6FBBE00D70046 /* SLAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B891962120E00995044 /* SLAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4C9BC601AD6FBC200D70046 /* SLAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B8A1962120E00995044 /* SLAdapter.m */; }; @@ -162,7 +156,6 @@ E4C9BC621AD6FBCA00D70046 /* SLObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B8C1962120E00995044 /* SLObject.m */; }; E4C9BC631AD6FBD200D70046 /* SLRemoting-Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B8D1962120E00995044 /* SLRemoting-Prefix.pch */; }; E4C9BC641AD6FBD700D70046 /* SLRemoting.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B8E1962120E00995044 /* SLRemoting.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4C9BC651AD6FBDB00D70046 /* SLRemotingTestsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B8F1962120E00995044 /* SLRemotingTestsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4C9BC671AD6FBE300D70046 /* SLRESTAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B911962120E00995044 /* SLRESTAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4C9BC681AD6FBE700D70046 /* SLRESTAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C48B921962120E00995044 /* SLRESTAdapter.m */; }; E4C9BC691AD6FBEA00D70046 /* SLRESTContract.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C48B931962120E00995044 /* SLRESTContract.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -176,7 +169,7 @@ E4C9BC741AD6FC2400D70046 /* LBRESTAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = B3D221491773766800B7CB63 /* LBRESTAdapter.m */; }; E4C9BC751AD6FC2700D70046 /* LBUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B6DCCA318806F2E00F7E57A /* LBUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4C9BC761AD6FC2B00D70046 /* LBUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B6DCCA418806F2E00F7E57A /* LBUser.m */; }; - E4C9BC771AD6FC2D00D70046 /* LBAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B4F52A818908089004F675A /* LBAccessToken.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C9BC771AD6FC2D00D70046 /* LBAccessToken.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B4F52A818908089004F675A /* LBAccessToken.h */; }; E4C9BC781AD6FC3100D70046 /* LBAccessToken.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B4F52A918908089004F675A /* LBAccessToken.m */; }; E4C9BC791AD6FC3400D70046 /* LBContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B8022DE18A2F1BA00AF845E /* LBContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; E4C9BC7A1AD6FC5D00D70046 /* LBContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B8022E418A2F27600AF845E /* LBContainer.m */; }; @@ -283,12 +276,10 @@ 47C48B931962120E00995044 /* SLRESTContract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SLRESTContract.h; sourceTree = ""; }; 47C48B941962120E00995044 /* SLRESTContract.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SLRESTContract.m; sourceTree = ""; }; 47C48BB61962123900995044 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - 47C48BB81962123900995044 /* .gitignore */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; 47C48BB91962123900995044 /* contract-class.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "contract-class.js"; sourceTree = ""; }; 47C48BBA1962123900995044 /* contract.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = contract.js; sourceTree = ""; }; 47C48BBB1962123900995044 /* index.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = index.js; sourceTree = ""; }; 47C48BBC1962123900995044 /* nonroot.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = nonroot.js; sourceTree = ""; }; - 47C48BBD1962123900995044 /* package.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = package.json; sourceTree = ""; }; 47C48BBF1962123900995044 /* certificate.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = certificate.pem; sourceTree = ""; }; 47C48BC01962123900995044 /* privatekey.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = privatekey.pem; sourceTree = ""; }; 47C48BC11962123900995044 /* simple-class.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = "simple-class.js"; sourceTree = ""; }; @@ -308,7 +299,6 @@ 89C410321B4D4B0200B2ED51 /* LBPersistedModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LBPersistedModel.h; sourceTree = ""; }; 89C410331B4D4B0200B2ED51 /* LBPersistedModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LBPersistedModel.m; sourceTree = ""; }; 89D3C9521AB17258005A1B90 /* index.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = index.js; sourceTree = ""; }; - 89D3DB001AB17263005A1B90 /* package.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = package.json; sourceTree = ""; }; 89D3DB031AB17263005A1B90 /* f1.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = f1.txt; sourceTree = ""; }; 89D3DB071AB17263005A1B90 /* f1.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = f1.txt; sourceTree = ""; }; 89F4F36B1B53E6A80070D8EB /* LBModelTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LBModelTests.m; sourceTree = ""; }; @@ -457,8 +447,6 @@ 47C48BC11962123900995044 /* simple-class.js */, 47C48BC21962123900995044 /* simple.js */, 47C48BC31962123900995044 /* ssl-config.js */, - 47C48BBD1962123900995044 /* package.json */, - 47C48BB81962123900995044 /* .gitignore */, 47C48BBE1962123900995044 /* private */, ); path = server; @@ -477,7 +465,6 @@ isa = PBXGroup; children = ( 89D3C9521AB17258005A1B90 /* index.js */, - 89D3DB001AB17263005A1B90 /* package.json */, 89D3DB011AB17263005A1B90 /* storage */, ); path = server; @@ -682,7 +669,7 @@ B3DFA5B017970AC700F656D7 /* LoopBack-Prefix.pch in Headers */, 0B4F52AA18908089004F675A /* LBAccessToken.h in Headers */, 47C48BAC1962120E00995044 /* SLRemoting-Prefix.pch in Headers */, - 47C48BAE1962120E00995044 /* SLRemotingTestsUtils.h in Headers */, + 896029671C0EC23E002B1C69 /* SLRemotingTestsUtils.h in Headers */, 8973753E1AB2A60A00FB31A2 /* SLStreamParam.h in Headers */, 47C48B951962120E00995044 /* SLAFHTTPClient.h in Headers */, 47C48B971962120E00995044 /* SLAFHTTPRequestOperation.h in Headers */, @@ -701,34 +688,34 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - E4C9BC671AD6FBE300D70046 /* SLRESTAdapter.h in Headers */, - E4C9BC691AD6FBEA00D70046 /* SLRESTContract.h in Headers */, - E4C9BC501AD6FB7100D70046 /* SLAFImageRequestOperation.h in Headers */, - E4C9BC751AD6FC2700D70046 /* LBUser.h in Headers */, - E4C9BC771AD6FC2D00D70046 /* LBAccessToken.h in Headers */, - E4C9BC6C1AD6FC0000D70046 /* LBInstallation.h in Headers */, - E4C9BC591AD6FBA200D70046 /* SLAFURLConnectionOperation.h in Headers */, - E4C9BC5B1AD6FBAA00D70046 /* SLAFXMLRequestOperation.h in Headers */, - E4C9BC731AD6FC2000D70046 /* LBRESTAdapter.h in Headers */, - E4C9BC5D1AD6FBB200D70046 /* UIImageView+SLAFNetworking.h in Headers */, - E4C9BC791AD6FC3400D70046 /* LBContainer.h in Headers */, E4C9BC341AD6F9C800D70046 /* LoopBackOSX.h in Headers */, + E4C9BC6E1AD6FC0800D70046 /* LoopBack.h in Headers */, E4C9BC701AD6FC1800D70046 /* LBModel.h in Headers */, - E4C9BC521AD6FB7F00D70046 /* SLAFJSONRequestOperation.h in Headers */, + 89F4F3701B546D170070D8EB /* LBPersistedModel.h in Headers */, + E4C9BC731AD6FC2000D70046 /* LBRESTAdapter.h in Headers */, + E4C9BC791AD6FC3400D70046 /* LBContainer.h in Headers */, E4C9BC7B1AD6FC6100D70046 /* LBFile.h in Headers */, - E4C9BC6F1AD6FC0F00D70046 /* LoopBack-Prefix.pch in Headers */, - E4C9BC641AD6FBD700D70046 /* SLRemoting.h in Headers */, - E4C9BC4C1AD6FB4800D70046 /* SLAFHTTPClient.h in Headers */, - E4C9BC541AD6FB8900D70046 /* SLAFNetworkActivityIndicatorManager.h in Headers */, - E4C9BC571AD6FB9A00D70046 /* SLAFPropertyListRequestOperation.h in Headers */, - E4C9BC611AD6FBC500D70046 /* SLObject.h in Headers */, + E4C9BC751AD6FC2700D70046 /* LBUser.h in Headers */, + E4C9BC6C1AD6FC0000D70046 /* LBInstallation.h in Headers */, E4C9BC5F1AD6FBBE00D70046 /* SLAdapter.h in Headers */, - 89F4F3701B546D170070D8EB /* LBPersistedModel.h in Headers */, - E4C9BC6E1AD6FC0800D70046 /* LoopBack.h in Headers */, - E4C9BC651AD6FBDB00D70046 /* SLRemotingTestsUtils.h in Headers */, + E4C9BC611AD6FBC500D70046 /* SLObject.h in Headers */, + E4C9BC641AD6FBD700D70046 /* SLRemoting.h in Headers */, + E4C9BC671AD6FBE300D70046 /* SLRESTAdapter.h in Headers */, + E4C9BC6F1AD6FC0F00D70046 /* LoopBack-Prefix.pch in Headers */, + E4C9BC771AD6FC2D00D70046 /* LBAccessToken.h in Headers */, + E4C9BC691AD6FBEA00D70046 /* SLRESTContract.h in Headers */, E4C9BC631AD6FBD200D70046 /* SLRemoting-Prefix.pch in Headers */, + 896029681C0EC25D002B1C69 /* SLRemotingTestsUtils.h in Headers */, + E4C9BC4C1AD6FB4800D70046 /* SLAFHTTPClient.h in Headers */, E4C9BC4E1AD6FB5300D70046 /* SLAFHTTPRequestOperation.h in Headers */, + E4C9BC501AD6FB7100D70046 /* SLAFImageRequestOperation.h in Headers */, + E4C9BC521AD6FB7F00D70046 /* SLAFJSONRequestOperation.h in Headers */, + E4C9BC541AD6FB8900D70046 /* SLAFNetworkActivityIndicatorManager.h in Headers */, E4C9BC561AD6FB9500D70046 /* SLAFNetworking.h in Headers */, + E4C9BC571AD6FB9A00D70046 /* SLAFPropertyListRequestOperation.h in Headers */, + E4C9BC591AD6FBA200D70046 /* SLAFURLConnectionOperation.h in Headers */, + E4C9BC5B1AD6FBAA00D70046 /* SLAFXMLRequestOperation.h in Headers */, + E4C9BC5D1AD6FBB200D70046 /* UIImageView+SLAFNetworking.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -978,16 +965,9 @@ buildActionMask = 2147483647; files = ( 47D47194196DF4A1002E2358 /* SLRESTAdapterTests.m in Sources */, - 47D47196196DF4A1002E2358 /* LBPersistedModelTests.m in Sources */, 47D47197196DF4A1002E2358 /* SLRESTContractTests.m in Sources */, - 47D47198196DF4A1002E2358 /* LBContainerTests.m in Sources */, - 47D47199196DF4A1002E2358 /* LBUserTests.m in Sources */, 47D4719A196DF4A1002E2358 /* SLRESTAdapterSSLTests.m in Sources */, 47D4719B196DF4A1002E2358 /* SLRESTAdapterNonRootTests.m in Sources */, - 47D4719C196DF4A1002E2358 /* LBPersistedModelSubclassingTests.m in Sources */, - 47D4719F196DF4A1002E2358 /* LBInstallationTests.m in Sources */, - 47D471A0196DF4A1002E2358 /* LBFileTests.m in Sources */, - 89F4F36E1B53E6DE0070D8EB /* LBModelTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1242,6 +1222,7 @@ "\"$(SRCROOT)\"", "\"$(SRCROOT)/SLRemoting/js/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release\"", ); + MACOSX_DEPLOYMENT_TARGET = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = "${PROJECT_NAME}Headers"; @@ -1264,6 +1245,7 @@ "\"$(SRCROOT)\"", "\"$(SRCROOT)/SLRemoting/js/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build/Release\"", ); + MACOSX_DEPLOYMENT_TARGET = ""; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; PUBLIC_HEADERS_FOLDER_PATH = "${PROJECT_NAME}Headers"; @@ -1369,7 +1351,7 @@ INFOPLIST_FILE = LoopBackOSX/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + MACOSX_DEPLOYMENT_TARGET = ""; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = LoopBack; @@ -1407,7 +1389,7 @@ INFOPLIST_FILE = LoopBackOSX/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + MACOSX_DEPLOYMENT_TARGET = ""; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = LoopBack; SDKROOT = macosx; @@ -1442,7 +1424,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = LoopBackOSXTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + MACOSX_DEPLOYMENT_TARGET = ""; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1474,7 +1456,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; INFOPLIST_FILE = LoopBackOSXTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.10; + MACOSX_DEPLOYMENT_TARGET = ""; MTL_ENABLE_DEBUG_INFO = NO; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; diff --git a/LoopBack.xcodeproj/xcshareddata/xcschemes/LoopBackOSX.xcscheme b/LoopBack.xcodeproj/xcshareddata/xcschemes/LoopBackOSX.xcscheme new file mode 100644 index 0000000..0b12e41 --- /dev/null +++ b/LoopBack.xcodeproj/xcshareddata/xcschemes/LoopBackOSX.xcscheme @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LoopBack.xcodeproj/xcshareddata/xcschemes/SLRemotingTests.xcscheme b/LoopBack.xcodeproj/xcshareddata/xcschemes/SLRemotingTests.xcscheme new file mode 100644 index 0000000..1266896 --- /dev/null +++ b/LoopBack.xcodeproj/xcshareddata/xcschemes/SLRemotingTests.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LoopBackOSX/LoopBackOSX.h b/LoopBackOSX/LoopBackOSX.h index fd1966a..516fd2b 100644 --- a/LoopBackOSX/LoopBackOSX.h +++ b/LoopBackOSX/LoopBackOSX.h @@ -7,6 +7,7 @@ // #import "LBModel.h" +#import "LBPersistedModel.h" #import "LBRESTAdapter.h" #import "LBInstallation.h" #import "LBUser.h" diff --git a/LoopBackTests/bin/run-unit-tests b/LoopBackTests/bin/run-unit-tests new file mode 100755 index 0000000..21a63e1 --- /dev/null +++ b/LoopBackTests/bin/run-unit-tests @@ -0,0 +1,53 @@ +#!/bin/bash +set -ex +trap 'kill $(jobs -p)' EXIT + +# record the build environment +xcodebuild -version +xcodebuild -showsdks +instruments -s devices + +# build for iOS +xcodebuild \ + -verbose \ + -project LoopBack.xcodeproj \ + -scheme LoopBackFramework \ + -sdk iphoneos \ + -configuration Debug \ + ONLY_ACTIVE_ARCH=NO \ + ${XCODEBUILD_ARGS} \ + clean build + +# prepare for running test servers +npm install + +# run the test servers +node LoopBackTests/server/index.js & +node SLRemotingTests/server/index.js & + +# run the unit tests on iPhone simulator +xcodebuild \ + -verbose \ + -project LoopBack.xcodeproj \ + -scheme LoopBack \ + -sdk iphonesimulator \ + -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch 64-bit),OS=latest' \ + ${XCODEBUILD_ARGS} \ + test + +# build for OS X +if [[ -n "${JENKINS_HOME}" ]]; then + # NOTE: the unit-tests fail to run against OS X on the CI, so it is temporarily skipped. + # See https://github.com/strongloop/loopback-sdk-ios/pull/79 for details. + OSX_BUILD_TARGET=build +else + OSX_BUILD_TARGET=test +fi + +xcodebuild \ + -verbose \ + -project LoopBack.xcodeproj \ + -scheme LoopBackOSX \ + -sdk macosx \ + ${XCODEBUILD_ARGS} \ + clean ${OSX_BUILD_TARGET} diff --git a/LoopBackTests/server/package.json b/LoopBackTests/server/package.json deleted file mode 100644 index 52cf038..0000000 --- a/LoopBackTests/server/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "loopback-clients-test-server", - "version": "0.0.0", - "description": "A test server for running loopback-clients integration testing.", - "main": "index.js", - "dependencies": { - "loopback": "^2.14.0", - "loopback-component-push": "^1.5.1", - "loopback-component-storage": "^1.3.1", - "morgan": "^1.5.2" - } -} diff --git a/SLRemoting/SLRemotingTestsUtils.h b/SLRemoting/SLRemotingTestsUtils.h index 2104002..3b746e6 100644 --- a/SLRemoting/SLRemotingTestsUtils.h +++ b/SLRemoting/SLRemotingTestsUtils.h @@ -10,23 +10,36 @@ /** * Marks the start of an asynchronous unit test. */ -#define ASYNC_TEST_START XCTestExpectation *expectation = [self expectationWithDescription:[NSString stringWithUTF8String:__FUNCTION__]]; +// NOTE: since the CI uses Xcode 5, we cannot depend on XCTestExpectation. +// Use dispatch_semaphore instead. +// +// #define ASYNC_TEST_START XCTestExpectation *expectation = [self expectationWithDescription:[NSString stringWithUTF8String:__FUNCTION__]]; +#define ASYNC_TEST_START dispatch_semaphore_t sen_semaphore = dispatch_semaphore_create(0); /** * Marks the end of an asynchronous unit test. */ -#define ASYNC_TEST_END [self waitForExpectationsWithTimeout:10 handler:nil]; +// #define ASYNC_TEST_END [self waitForExpectationsWithTimeout:10 handler:nil]; +#define ASYNC_TEST_END \ + while (dispatch_semaphore_wait(sen_semaphore, DISPATCH_TIME_NOW)) \ + [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:10]]; /** * Signals the completion of an asynchronous unit test. */ -#define ASYNC_TEST_SIGNAL [expectation fulfill]; +// #define ASYNC_TEST_SIGNAL [expectation fulfill]; +#define ASYNC_TEST_SIGNAL dispatch_semaphore_signal(sen_semaphore); /** * Fails an asynchronous unit test, additionally signaling its completion. */ +// #define ASYNC_TEST_FAILURE_BLOCK \ +// ^(NSError *error) { \ +// XCTFail(@"Test failed: %@", error.description); \ +// [expectation fulfill]; \ +// } #define ASYNC_TEST_FAILURE_BLOCK \ -^(NSError *error) { \ - XCTFail(@"Test failed: %@", error.description); \ - [expectation fulfill]; \ -} + ^(NSError *error) { \ + XCTFail(@"Test failed: %@", error.description); \ + ASYNC_TEST_SIGNAL \ + } diff --git a/SLRemotingTests/server/.gitignore b/SLRemotingTests/server/.gitignore deleted file mode 100644 index c2658d7..0000000 --- a/SLRemotingTests/server/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/SLRemotingTests/server/package.json b/SLRemotingTests/server/package.json deleted file mode 100644 index ac88d37..0000000 --- a/SLRemotingTests/server/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "sl-remoting-client-test-server", - "version": "0.0.0", - "description": "A test server for running sl-remoting-clients integration testing.", - "main": "index.js", - "dependencies": { - "strong-remoting": "^2.16.1" - } -} diff --git a/package.json b/package.json index 6a5d4ae..dd6e90b 100644 --- a/package.json +++ b/package.json @@ -10,5 +10,20 @@ "license": { "name": "Dual MIT/StrongLoop", "url": "https://github.com/strongloop/loopback-sdk-ios/blob/master/LICENSE" + }, + "bugs": { + "url": "https://github.com/strongloop/loopback-sdk-ios/issues" + }, + "scripts": { + "test": "LoopBackTests/bin/run-unit-tests" + }, + "dependencies": { + }, + "devDependencies": { + "strong-remoting": "^2.16.1", + "loopback": "^2.14.0", + "loopback-component-push": "^1.5.1", + "loopback-component-storage": "^1.3.1", + "morgan": "^1.5.2" } }