Apple Development Program was introduced in WWDC2015. It is 2021 today, and there should have no possibility to use iPhone Developer certificate for code signing. This CL replaces "iPhone Developer" by "Apple Development" so that cmd/gomobile can use the correct certificate to sign the building application. Otherwise, gomobile throws an error gomobile: failed to pull the signing certificate to determine your team ID: exit status 44 Updates golang/go#47238 Change-Id: Ia48c03ff7cda39a95159e0f77e7ba7042776f9ef Reviewed-on: https://go-review.googlesource.com/c/mobile/+/346151 Reviewed-by: Hajime Hoshi <hajimehoshi@gmail.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Run-TryBot: Hajime Hoshi <hajimehoshi@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Trust: Hajime Hoshi <hajimehoshi@gmail.com> Trust: Dmitri Shuralyov <dmitshur@golang.org>
1011 lines
34 KiB
Go
1011 lines
34 KiB
Go
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package objc
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// Use the Xcode XCTestCase framework to run the regular tests and the special SeqBench.m benchmarks.
|
|
//
|
|
// Regular tests run in the xcodetest project as normal unit test (logic test in Xcode lingo).
|
|
// Unit tests execute faster but cannot run on a real device. The benchmarks in SeqBench.m run as
|
|
// UI unit tests.
|
|
//
|
|
// The Xcode files embedded in this file were constructed in Xcode 9 by:
|
|
//
|
|
// - Creating a new project through Xcode. Both unit tests and UI tests were checked off.
|
|
// - Xcode schemes are per-user by default. The shared scheme is created by selecting
|
|
// Project => Schemes => Manage Schemes from the Xcode menu and selecting "Shared".
|
|
// - Remove files not needed for xcodebuild (determined empirically). In particular, the empty
|
|
// tests Xcode creates can be removed and the unused user scheme.
|
|
//
|
|
// All tests here require the Xcode command line tools.
|
|
|
|
var destination = flag.String("device", "platform=iOS Simulator,name=iPhone 6s Plus", "Specify the -destination flag to xcodebuild")
|
|
|
|
var gomobileBin string
|
|
|
|
func TestMain(m *testing.M) {
|
|
os.Exit(testMain(m))
|
|
}
|
|
|
|
func testMain(m *testing.M) int {
|
|
binDir, err := ioutil.TempDir("", "bind-objc-test-")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(binDir)
|
|
|
|
exe := ""
|
|
if runtime.GOOS == "windows" {
|
|
exe = ".exe"
|
|
}
|
|
if runtime.GOOS != "android" {
|
|
gocmd := filepath.Join(runtime.GOROOT(), "bin", "go")
|
|
gomobileBin = filepath.Join(binDir, "gomobile"+exe)
|
|
gobindBin := filepath.Join(binDir, "gobind"+exe)
|
|
if out, err := exec.Command(gocmd, "build", "-o", gomobileBin, "golang.org/x/mobile/cmd/gomobile").CombinedOutput(); err != nil {
|
|
log.Fatalf("gomobile build failed: %v: %s", err, out)
|
|
}
|
|
if out, err := exec.Command(gocmd, "build", "-o", gobindBin, "golang.org/x/mobile/cmd/gobind").CombinedOutput(); err != nil {
|
|
log.Fatalf("gobind build failed: %v: %s", err, out)
|
|
}
|
|
path := binDir
|
|
if oldPath := os.Getenv("PATH"); oldPath != "" {
|
|
path += string(filepath.ListSeparator) + oldPath
|
|
}
|
|
os.Setenv("PATH", path)
|
|
}
|
|
|
|
return m.Run()
|
|
}
|
|
|
|
// TestObjcSeqTest runs ObjC test SeqTest.m.
|
|
func TestObjcSeqTest(t *testing.T) {
|
|
runTest(t, []string{
|
|
"golang.org/x/mobile/bind/testdata/testpkg",
|
|
"golang.org/x/mobile/bind/testdata/testpkg/secondpkg",
|
|
"golang.org/x/mobile/bind/testdata/testpkg/simplepkg",
|
|
}, "", "SeqTest.m", "Testpkg.framework", false, false)
|
|
}
|
|
|
|
// TestObjcSeqBench runs ObjC test SeqBench.m.
|
|
func TestObjcSeqBench(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping benchmark in short mode.")
|
|
}
|
|
runTest(t, []string{"golang.org/x/mobile/bind/testdata/benchmark"}, "", "SeqBench.m", "Benchmark.framework", true, true)
|
|
}
|
|
|
|
// TestObjcSeqWrappers runs ObjC test SeqWrappers.m.
|
|
func TestObjcSeqWrappers(t *testing.T) {
|
|
runTest(t, []string{"golang.org/x/mobile/bind/testdata/testpkg/objcpkg"}, "", "SeqWrappers.m", "Objcpkg.framework", false, false)
|
|
}
|
|
|
|
// TestObjcCustomPkg runs the ObjC test SeqCustom.m.
|
|
func TestObjcCustomPkg(t *testing.T) {
|
|
runTest(t, []string{"golang.org/x/mobile/bind/testdata/testpkg"}, "Custom", "SeqCustom.m", "Testpkg.framework", false, false)
|
|
}
|
|
|
|
func runTest(t *testing.T, pkgNames []string, prefix, testfile, framework string, uitest, dumpOutput bool) {
|
|
if gomobileBin == "" {
|
|
t.Skipf("no gomobile on %s", runtime.GOOS)
|
|
}
|
|
if _, err := run("which xcodebuild"); err != nil {
|
|
t.Skip("command xcodebuild not found, skipping")
|
|
}
|
|
|
|
tmpdir, err := ioutil.TempDir("", "bind-objc-seq-test-")
|
|
if err != nil {
|
|
t.Fatalf("failed to prepare temp dir: %v", err)
|
|
}
|
|
defer os.RemoveAll(tmpdir)
|
|
t.Logf("tmpdir = %s", tmpdir)
|
|
|
|
if err := createProject(tmpdir, testfile, framework); err != nil {
|
|
t.Fatalf("failed to create project: %v", err)
|
|
}
|
|
|
|
if err := cp(filepath.Join(tmpdir, testfile), testfile); err != nil {
|
|
t.Fatalf("failed to copy %s: %v", testfile, err)
|
|
}
|
|
|
|
cmd := exec.Command(gomobileBin, "bind", "-target", "ios", "-tags", "aaa bbb")
|
|
if prefix != "" {
|
|
cmd.Args = append(cmd.Args, "-prefix", prefix)
|
|
}
|
|
cmd.Args = append(cmd.Args, pkgNames...)
|
|
cmd.Dir = filepath.Join(tmpdir, "xcodetest")
|
|
// Reverse binding doesn't work with Go module since imports starting with Java or ObjC are not valid FQDNs.
|
|
// Disable Go module explicitly until this problem is solved. See golang/go#27234.
|
|
cmd.Env = append(os.Environ(), "GO111MODULE=off")
|
|
buf, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
t.Logf("%s", buf)
|
|
t.Fatalf("failed to run gomobile bind: %v", err)
|
|
}
|
|
|
|
testPattern := "xcodetestTests"
|
|
if uitest {
|
|
testPattern = "xcodetestUITests"
|
|
}
|
|
cmd = exec.Command("xcodebuild", "test", "-scheme", "xcodetest", "-destination", *destination, "-only-testing:"+testPattern)
|
|
cmd.Dir = tmpdir
|
|
buf, err = cmd.CombinedOutput()
|
|
if err != nil {
|
|
t.Logf("%s", buf)
|
|
t.Errorf("failed to run xcodebuild: %v", err)
|
|
}
|
|
if dumpOutput {
|
|
t.Logf("%s", buf)
|
|
}
|
|
}
|
|
|
|
func run(cmd string) ([]byte, error) {
|
|
c := strings.Split(cmd, " ")
|
|
return exec.Command(c[0], c[1:]...).CombinedOutput()
|
|
}
|
|
|
|
func cp(dst, src string) error {
|
|
r, err := os.Open(src)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to read source: %v", err)
|
|
}
|
|
defer r.Close()
|
|
w, err := os.Create(dst)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to open destination: %v", err)
|
|
}
|
|
_, err = io.Copy(w, r)
|
|
cerr := w.Close()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return cerr
|
|
}
|
|
|
|
// createProject generates the files required for xcodebuild test to run a
|
|
// Objective-C testfile with a gomobile bind framework.
|
|
func createProject(dir, testfile, framework string) error {
|
|
for _, d := range []string{"xcodetest", "xcodetest.xcodeproj/xcshareddata/xcschemes", "xcodetestTests", "xcodetestUITests"} {
|
|
if err := os.MkdirAll(filepath.Join(dir, d), 0700); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
files := []struct {
|
|
path string
|
|
content string
|
|
}{
|
|
{"xcodetest/Info.plist", infoPlist},
|
|
{"xcodetest.xcodeproj/project.pbxproj", fmt.Sprintf(pbxproj, testfile, framework)},
|
|
{"xcodetest.xcodeproj/xcshareddata/xcschemes/xcodetest.xcscheme", xcodescheme},
|
|
{"xcodetestTests/Info.plist", testInfoPlist},
|
|
// For UI tests. Only UI tests run on a real idevice.
|
|
{"xcodetestUITests/Info.plist", testInfoPlist},
|
|
{"xcodetest/AppDelegate.h", appdelegateh},
|
|
{"xcodetest/main.m", mainm},
|
|
{"xcodetest/AppDelegate.m", appdelegatem},
|
|
}
|
|
for _, f := range files {
|
|
if err := ioutil.WriteFile(filepath.Join(dir, f.path), []byte(f.content), 0700); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
const infoPlist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>CFBundleDevelopmentRegion</key>
|
|
<string>en</string>
|
|
<key>CFBundleExecutable</key>
|
|
<string>$(EXECUTABLE_NAME)</string>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
|
<key>CFBundleInfoDictionaryVersion</key>
|
|
<string>6.0</string>
|
|
<key>CFBundleName</key>
|
|
<string>$(PRODUCT_NAME)</string>
|
|
<key>CFBundlePackageType</key>
|
|
<string>APPL</string>
|
|
<key>CFBundleShortVersionString</key>
|
|
<string>1.0</string>
|
|
<key>CFBundleSignature</key>
|
|
<string>????</string>
|
|
<key>CFBundleVersion</key>
|
|
<string>1</string>
|
|
<key>LSRequiresIPhoneOS</key>
|
|
<true/>
|
|
<key>UIRequiredDeviceCapabilities</key>
|
|
<array>
|
|
<string>armv7</string>
|
|
</array>
|
|
<key>UISupportedInterfaceOrientations</key>
|
|
<array>
|
|
<string>UIInterfaceOrientationPortrait</string>
|
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
|
</array>
|
|
<key>UISupportedInterfaceOrientations~ipad</key>
|
|
<array>
|
|
<string>UIInterfaceOrientationPortrait</string>
|
|
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
|
</array>
|
|
</dict>
|
|
</plist>`
|
|
|
|
const testInfoPlist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>CFBundleDevelopmentRegion</key>
|
|
<string>en</string>
|
|
<key>CFBundleExecutable</key>
|
|
<string>$(EXECUTABLE_NAME)</string>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
|
<key>CFBundleInfoDictionaryVersion</key>
|
|
<string>6.0</string>
|
|
<key>CFBundleName</key>
|
|
<string>$(PRODUCT_NAME)</string>
|
|
<key>CFBundlePackageType</key>
|
|
<string>BNDL</string>
|
|
<key>CFBundleShortVersionString</key>
|
|
<string>1.0</string>
|
|
<key>CFBundleSignature</key>
|
|
<string>????</string>
|
|
<key>CFBundleVersion</key>
|
|
<string>1</string>
|
|
</dict>
|
|
</plist>`
|
|
|
|
const pbxproj = `// !$*UTF8*$!
|
|
{
|
|
archiveVersion = 1;
|
|
classes = {
|
|
};
|
|
objectVersion = 50;
|
|
objects = {
|
|
|
|
/* Begin PBXBuildFile section */
|
|
642D058D2094883B00FE587C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 642D058C2094883B00FE587C /* AppDelegate.m */; };
|
|
642D05952094883C00FE587C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 642D05942094883C00FE587C /* Assets.xcassets */; };
|
|
642D059B2094883C00FE587C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 642D059A2094883C00FE587C /* main.m */; };
|
|
642D05A52094883C00FE587C /* xcodetestTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 642D05A42094883C00FE587C /* xcodetestTests.m */; };
|
|
642D05B02094883C00FE587C /* xcodetestUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 642D05AF2094883C00FE587C /* xcodetestUITests.m */; };
|
|
642D05BE209488E400FE587C /* Testpkg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 642D05BD209488E400FE587C /* Testpkg.framework */; };
|
|
642D05BF209488E400FE587C /* Testpkg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 642D05BD209488E400FE587C /* Testpkg.framework */; };
|
|
642D05C0209488E400FE587C /* Testpkg.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 642D05BD209488E400FE587C /* Testpkg.framework */; };
|
|
/* End PBXBuildFile section */
|
|
|
|
/* Begin PBXContainerItemProxy section */
|
|
642D05A12094883C00FE587C /* PBXContainerItemProxy */ = {
|
|
isa = PBXContainerItemProxy;
|
|
containerPortal = 642D05802094883B00FE587C /* Project object */;
|
|
proxyType = 1;
|
|
remoteGlobalIDString = 642D05872094883B00FE587C;
|
|
remoteInfo = xcodetest;
|
|
};
|
|
642D05AC2094883C00FE587C /* PBXContainerItemProxy */ = {
|
|
isa = PBXContainerItemProxy;
|
|
containerPortal = 642D05802094883B00FE587C /* Project object */;
|
|
proxyType = 1;
|
|
remoteGlobalIDString = 642D05872094883B00FE587C;
|
|
remoteInfo = xcodetest;
|
|
};
|
|
/* End PBXContainerItemProxy section */
|
|
|
|
/* Begin PBXFileReference section */
|
|
642D05882094883B00FE587C /* xcodetest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = xcodetest.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
642D058B2094883B00FE587C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
|
642D058C2094883B00FE587C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
|
642D05942094883C00FE587C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
642D05992094883C00FE587C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
642D059A2094883C00FE587C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
|
642D05A02094883C00FE587C /* xcodetestTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = xcodetestTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
642D05A42094883C00FE587C /* xcodetestTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ../%[1]s; sourceTree = "<group>"; };
|
|
642D05A62094883C00FE587C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
642D05AB2094883C00FE587C /* xcodetestUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = xcodetestUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
642D05AF2094883C00FE587C /* xcodetestUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ../%[1]s; sourceTree = "<group>"; };
|
|
642D05B12094883C00FE587C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
642D05BD209488E400FE587C /* Testpkg.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Testpkg.framework; path = %[2]s; sourceTree = "<group>"; };
|
|
/* End PBXFileReference section */
|
|
|
|
/* Begin PBXFrameworksBuildPhase section */
|
|
642D05852094883B00FE587C /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
642D05BE209488E400FE587C /* Testpkg.framework in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
642D059D2094883C00FE587C /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
642D05BF209488E400FE587C /* Testpkg.framework in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
642D05A82094883C00FE587C /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
642D05C0209488E400FE587C /* Testpkg.framework in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXFrameworksBuildPhase section */
|
|
|
|
/* Begin PBXGroup section */
|
|
642D057F2094883B00FE587C = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
642D058A2094883B00FE587C /* xcodetest */,
|
|
642D05A32094883C00FE587C /* xcodetestTests */,
|
|
642D05AE2094883C00FE587C /* xcodetestUITests */,
|
|
642D05892094883B00FE587C /* Products */,
|
|
642D05BD209488E400FE587C /* Testpkg.framework */,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
642D05892094883B00FE587C /* Products */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
642D05882094883B00FE587C /* xcodetest.app */,
|
|
642D05A02094883C00FE587C /* xcodetestTests.xctest */,
|
|
642D05AB2094883C00FE587C /* xcodetestUITests.xctest */,
|
|
);
|
|
name = Products;
|
|
sourceTree = "<group>";
|
|
};
|
|
642D058A2094883B00FE587C /* xcodetest */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
642D058B2094883B00FE587C /* AppDelegate.h */,
|
|
642D058C2094883B00FE587C /* AppDelegate.m */,
|
|
642D05942094883C00FE587C /* Assets.xcassets */,
|
|
642D05992094883C00FE587C /* Info.plist */,
|
|
642D059A2094883C00FE587C /* main.m */,
|
|
);
|
|
path = xcodetest;
|
|
sourceTree = "<group>";
|
|
};
|
|
642D05A32094883C00FE587C /* xcodetestTests */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
642D05A42094883C00FE587C /* xcodetestTests.m */,
|
|
642D05A62094883C00FE587C /* Info.plist */,
|
|
);
|
|
path = xcodetestTests;
|
|
sourceTree = "<group>";
|
|
};
|
|
642D05AE2094883C00FE587C /* xcodetestUITests */ = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
642D05AF2094883C00FE587C /* xcodetestUITests.m */,
|
|
642D05B12094883C00FE587C /* Info.plist */,
|
|
);
|
|
path = xcodetestUITests;
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXGroup section */
|
|
|
|
/* Begin PBXNativeTarget section */
|
|
642D05872094883B00FE587C /* xcodetest */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 642D05B42094883C00FE587C /* Build configuration list for PBXNativeTarget "xcodetest" */;
|
|
buildPhases = (
|
|
642D05842094883B00FE587C /* Sources */,
|
|
642D05852094883B00FE587C /* Frameworks */,
|
|
642D05862094883B00FE587C /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
);
|
|
name = xcodetest;
|
|
productName = xcodetest;
|
|
productReference = 642D05882094883B00FE587C /* xcodetest.app */;
|
|
productType = "com.apple.product-type.application";
|
|
};
|
|
642D059F2094883C00FE587C /* xcodetestTests */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 642D05B72094883C00FE587C /* Build configuration list for PBXNativeTarget "xcodetestTests" */;
|
|
buildPhases = (
|
|
642D059C2094883C00FE587C /* Sources */,
|
|
642D059D2094883C00FE587C /* Frameworks */,
|
|
642D059E2094883C00FE587C /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
642D05A22094883C00FE587C /* PBXTargetDependency */,
|
|
);
|
|
name = xcodetestTests;
|
|
productName = xcodetestTests;
|
|
productReference = 642D05A02094883C00FE587C /* xcodetestTests.xctest */;
|
|
productType = "com.apple.product-type.bundle.unit-test";
|
|
};
|
|
642D05AA2094883C00FE587C /* xcodetestUITests */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 642D05BA2094883C00FE587C /* Build configuration list for PBXNativeTarget "xcodetestUITests" */;
|
|
buildPhases = (
|
|
642D05A72094883C00FE587C /* Sources */,
|
|
642D05A82094883C00FE587C /* Frameworks */,
|
|
642D05A92094883C00FE587C /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
642D05AD2094883C00FE587C /* PBXTargetDependency */,
|
|
);
|
|
name = xcodetestUITests;
|
|
productName = xcodetestUITests;
|
|
productReference = 642D05AB2094883C00FE587C /* xcodetestUITests.xctest */;
|
|
productType = "com.apple.product-type.bundle.ui-testing";
|
|
};
|
|
/* End PBXNativeTarget section */
|
|
|
|
/* Begin PBXProject section */
|
|
642D05802094883B00FE587C /* Project object */ = {
|
|
isa = PBXProject;
|
|
attributes = {
|
|
LastUpgradeCheck = 0930;
|
|
ORGANIZATIONNAME = golang;
|
|
TargetAttributes = {
|
|
642D05872094883B00FE587C = {
|
|
CreatedOnToolsVersion = 9.3;
|
|
};
|
|
642D059F2094883C00FE587C = {
|
|
CreatedOnToolsVersion = 9.3;
|
|
TestTargetID = 642D05872094883B00FE587C;
|
|
};
|
|
642D05AA2094883C00FE587C = {
|
|
CreatedOnToolsVersion = 9.3;
|
|
TestTargetID = 642D05872094883B00FE587C;
|
|
};
|
|
};
|
|
};
|
|
buildConfigurationList = 642D05832094883B00FE587C /* Build configuration list for PBXProject "xcodetest" */;
|
|
compatibilityVersion = "Xcode 9.3";
|
|
developmentRegion = en;
|
|
hasScannedForEncodings = 0;
|
|
knownRegions = (
|
|
en,
|
|
Base,
|
|
);
|
|
mainGroup = 642D057F2094883B00FE587C;
|
|
productRefGroup = 642D05892094883B00FE587C /* Products */;
|
|
projectDirPath = "";
|
|
projectRoot = "";
|
|
targets = (
|
|
642D05872094883B00FE587C /* xcodetest */,
|
|
642D059F2094883C00FE587C /* xcodetestTests */,
|
|
642D05AA2094883C00FE587C /* xcodetestUITests */,
|
|
);
|
|
};
|
|
/* End PBXProject section */
|
|
|
|
/* Begin PBXResourcesBuildPhase section */
|
|
642D05862094883B00FE587C /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
642D05952094883C00FE587C /* Assets.xcassets in Resources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
642D059E2094883C00FE587C /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
642D05A92094883C00FE587C /* Resources */ = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXResourcesBuildPhase section */
|
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
|
642D05842094883B00FE587C /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
642D059B2094883C00FE587C /* main.m in Sources */,
|
|
642D058D2094883B00FE587C /* AppDelegate.m in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
642D059C2094883C00FE587C /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
642D05A52094883C00FE587C /* xcodetestTests.m in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
642D05A72094883C00FE587C /* Sources */ = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
642D05B02094883C00FE587C /* xcodetestUITests.m in Sources */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
/* Begin PBXTargetDependency section */
|
|
642D05A22094883C00FE587C /* PBXTargetDependency */ = {
|
|
isa = PBXTargetDependency;
|
|
target = 642D05872094883B00FE587C /* xcodetest */;
|
|
targetProxy = 642D05A12094883C00FE587C /* PBXContainerItemProxy */;
|
|
};
|
|
642D05AD2094883C00FE587C /* PBXTargetDependency */ = {
|
|
isa = PBXTargetDependency;
|
|
target = 642D05872094883B00FE587C /* xcodetest */;
|
|
targetProxy = 642D05AC2094883C00FE587C /* PBXContainerItemProxy */;
|
|
};
|
|
/* End PBXTargetDependency section */
|
|
|
|
/* Begin XCBuildConfiguration section */
|
|
642D05B22094883C00FE587C /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
CLANG_WARN_COMMA = YES;
|
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
CLANG_WARN_EMPTY_BODY = YES;
|
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
CLANG_WARN_INT_CONVERSION = YES;
|
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
CODE_SIGN_IDENTITY = "Apple Development";
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
ENABLE_TESTABILITY = YES;
|
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
GCC_DYNAMIC_NO_PIC = NO;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
GCC_OPTIMIZATION_LEVEL = 0;
|
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
"DEBUG=1",
|
|
"$(inherited)",
|
|
);
|
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 11.3;
|
|
MTL_ENABLE_DEBUG_INFO = YES;
|
|
ONLY_ACTIVE_ARCH = YES;
|
|
SDKROOT = iphoneos;
|
|
};
|
|
name = Debug;
|
|
};
|
|
642D05B32094883C00FE587C /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ANALYZER_NONNULL = YES;
|
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
|
CLANG_CXX_LIBRARY = "libc++";
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CLANG_ENABLE_OBJC_ARC = YES;
|
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
CLANG_WARN_COMMA = YES;
|
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
|
CLANG_WARN_EMPTY_BODY = YES;
|
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
CLANG_WARN_INT_CONVERSION = YES;
|
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
CODE_SIGN_IDENTITY = "Apple Development";
|
|
COPY_PHASE_STRIP = NO;
|
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
ENABLE_NS_ASSERTIONS = NO;
|
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
|
GCC_NO_COMMON_BLOCKS = YES;
|
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 11.3;
|
|
MTL_ENABLE_DEBUG_INFO = NO;
|
|
SDKROOT = iphoneos;
|
|
VALIDATE_PRODUCT = YES;
|
|
};
|
|
name = Release;
|
|
};
|
|
642D05B52094883C00FE587C /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
CODE_SIGN_STYLE = Automatic;
|
|
FRAMEWORK_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/xcodetest",
|
|
);
|
|
INFOPLIST_FILE = xcodetest/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = org.golang.xcodetest;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Debug;
|
|
};
|
|
642D05B62094883C00FE587C /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
CODE_SIGN_STYLE = Automatic;
|
|
FRAMEWORK_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/xcodetest",
|
|
);
|
|
INFOPLIST_FILE = xcodetest/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = org.golang.xcodetest;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
};
|
|
name = Release;
|
|
};
|
|
642D05B82094883C00FE587C /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
|
CODE_SIGN_STYLE = Automatic;
|
|
FRAMEWORK_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/xcodetest",
|
|
);
|
|
INFOPLIST_FILE = xcodetestTests/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
"@loader_path/Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = org.golang.xcodetestTests;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/xcodetest.app/xcodetest";
|
|
};
|
|
name = Debug;
|
|
};
|
|
642D05B92094883C00FE587C /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
|
CODE_SIGN_STYLE = Automatic;
|
|
FRAMEWORK_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/xcodetest",
|
|
);
|
|
INFOPLIST_FILE = xcodetestTests/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
"@loader_path/Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = org.golang.xcodetestTests;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/xcodetest.app/xcodetest";
|
|
};
|
|
name = Release;
|
|
};
|
|
642D05BB2094883C00FE587C /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
CODE_SIGN_STYLE = Automatic;
|
|
FRAMEWORK_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/xcodetest",
|
|
);
|
|
INFOPLIST_FILE = xcodetestUITests/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
"@loader_path/Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = org.golang.xcodetestUITests;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
TEST_TARGET_NAME = xcodetest;
|
|
};
|
|
name = Debug;
|
|
};
|
|
642D05BC2094883C00FE587C /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
CODE_SIGN_STYLE = Automatic;
|
|
FRAMEWORK_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"$(PROJECT_DIR)/xcodetest",
|
|
);
|
|
INFOPLIST_FILE = xcodetestUITests/Info.plist;
|
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
"$(inherited)",
|
|
"@executable_path/Frameworks",
|
|
"@loader_path/Frameworks",
|
|
);
|
|
PRODUCT_BUNDLE_IDENTIFIER = org.golang.xcodetestUITests;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
TARGETED_DEVICE_FAMILY = "1,2";
|
|
TEST_TARGET_NAME = xcodetest;
|
|
};
|
|
name = Release;
|
|
};
|
|
/* End XCBuildConfiguration section */
|
|
|
|
/* Begin XCConfigurationList section */
|
|
642D05832094883B00FE587C /* Build configuration list for PBXProject "xcodetest" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
642D05B22094883C00FE587C /* Debug */,
|
|
642D05B32094883C00FE587C /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
642D05B42094883C00FE587C /* Build configuration list for PBXNativeTarget "xcodetest" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
642D05B52094883C00FE587C /* Debug */,
|
|
642D05B62094883C00FE587C /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
642D05B72094883C00FE587C /* Build configuration list for PBXNativeTarget "xcodetestTests" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
642D05B82094883C00FE587C /* Debug */,
|
|
642D05B92094883C00FE587C /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
642D05BA2094883C00FE587C /* Build configuration list for PBXNativeTarget "xcodetestUITests" */ = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
642D05BB2094883C00FE587C /* Debug */,
|
|
642D05BC2094883C00FE587C /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
/* End XCConfigurationList section */
|
|
};
|
|
rootObject = 642D05802094883B00FE587C /* Project object */;
|
|
}`
|
|
|
|
const xcodescheme = `<?xml version="1.0" encoding="UTF-8"?>
|
|
<Scheme
|
|
LastUpgradeVersion = "0930"
|
|
version = "1.3">
|
|
<BuildAction
|
|
parallelizeBuildables = "YES"
|
|
buildImplicitDependencies = "YES">
|
|
<BuildActionEntries>
|
|
<BuildActionEntry
|
|
buildForTesting = "YES"
|
|
buildForRunning = "YES"
|
|
buildForProfiling = "YES"
|
|
buildForArchiving = "YES"
|
|
buildForAnalyzing = "YES">
|
|
<BuildableReference
|
|
BuildableIdentifier = "primary"
|
|
BlueprintIdentifier = "642D05872094883B00FE587C"
|
|
BuildableName = "xcodetest.app"
|
|
BlueprintName = "xcodetest"
|
|
ReferencedContainer = "container:xcodetest.xcodeproj">
|
|
</BuildableReference>
|
|
</BuildActionEntry>
|
|
</BuildActionEntries>
|
|
</BuildAction>
|
|
<TestAction
|
|
buildConfiguration = "Debug"
|
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
|
<Testables>
|
|
<TestableReference
|
|
skipped = "NO">
|
|
<BuildableReference
|
|
BuildableIdentifier = "primary"
|
|
BlueprintIdentifier = "642D059F2094883C00FE587C"
|
|
BuildableName = "xcodetestTests.xctest"
|
|
BlueprintName = "xcodetestTests"
|
|
ReferencedContainer = "container:xcodetest.xcodeproj">
|
|
</BuildableReference>
|
|
</TestableReference>
|
|
<TestableReference
|
|
skipped = "NO">
|
|
<BuildableReference
|
|
BuildableIdentifier = "primary"
|
|
BlueprintIdentifier = "642D05AA2094883C00FE587C"
|
|
BuildableName = "xcodetestUITests.xctest"
|
|
BlueprintName = "xcodetestUITests"
|
|
ReferencedContainer = "container:xcodetest.xcodeproj">
|
|
</BuildableReference>
|
|
</TestableReference>
|
|
</Testables>
|
|
<MacroExpansion>
|
|
<BuildableReference
|
|
BuildableIdentifier = "primary"
|
|
BlueprintIdentifier = "642D05872094883B00FE587C"
|
|
BuildableName = "xcodetest.app"
|
|
BlueprintName = "xcodetest"
|
|
ReferencedContainer = "container:xcodetest.xcodeproj">
|
|
</BuildableReference>
|
|
</MacroExpansion>
|
|
<AdditionalOptions>
|
|
</AdditionalOptions>
|
|
</TestAction>
|
|
<LaunchAction
|
|
buildConfiguration = "Debug"
|
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
|
launchStyle = "0"
|
|
useCustomWorkingDirectory = "NO"
|
|
ignoresPersistentStateOnLaunch = "NO"
|
|
debugDocumentVersioning = "YES"
|
|
debugServiceExtension = "internal"
|
|
allowLocationSimulation = "YES">
|
|
<BuildableProductRunnable
|
|
runnableDebuggingMode = "0">
|
|
<BuildableReference
|
|
BuildableIdentifier = "primary"
|
|
BlueprintIdentifier = "642D05872094883B00FE587C"
|
|
BuildableName = "xcodetest.app"
|
|
BlueprintName = "xcodetest"
|
|
ReferencedContainer = "container:xcodetest.xcodeproj">
|
|
</BuildableReference>
|
|
</BuildableProductRunnable>
|
|
<AdditionalOptions>
|
|
</AdditionalOptions>
|
|
</LaunchAction>
|
|
<ProfileAction
|
|
buildConfiguration = "Release"
|
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
|
savedToolIdentifier = ""
|
|
useCustomWorkingDirectory = "NO"
|
|
debugDocumentVersioning = "YES">
|
|
<BuildableProductRunnable
|
|
runnableDebuggingMode = "0">
|
|
<BuildableReference
|
|
BuildableIdentifier = "primary"
|
|
BlueprintIdentifier = "642D05872094883B00FE587C"
|
|
BuildableName = "xcodetest.app"
|
|
BlueprintName = "xcodetest"
|
|
ReferencedContainer = "container:xcodetest.xcodeproj">
|
|
</BuildableReference>
|
|
</BuildableProductRunnable>
|
|
</ProfileAction>
|
|
<AnalyzeAction
|
|
buildConfiguration = "Debug">
|
|
</AnalyzeAction>
|
|
<ArchiveAction
|
|
buildConfiguration = "Release"
|
|
revealArchiveInOrganizer = "YES">
|
|
</ArchiveAction>
|
|
</Scheme>`
|
|
|
|
const appdelegateh = `#import <UIKit/UIKit.h>
|
|
|
|
@interface AppDelegate : UIResponder <UIApplicationDelegate>
|
|
|
|
@property (strong, nonatomic) UIWindow *window;
|
|
|
|
@end`
|
|
|
|
const appdelegatem = `#import "AppDelegate.h"
|
|
|
|
@interface AppDelegate ()
|
|
|
|
@end
|
|
|
|
@implementation AppDelegate
|
|
|
|
|
|
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
|
return YES;
|
|
}
|
|
|
|
- (void)applicationWillResignActive:(UIApplication *)application {
|
|
}
|
|
|
|
- (void)applicationDidEnterBackground:(UIApplication *)application {
|
|
}
|
|
|
|
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
|
}
|
|
|
|
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
|
}
|
|
|
|
- (void)applicationWillTerminate:(UIApplication *)application {
|
|
}
|
|
|
|
@end`
|
|
|
|
const mainm = `#import <UIKit/UIKit.h>
|
|
#import "AppDelegate.h"
|
|
|
|
int main(int argc, char * argv[]) {
|
|
@autoreleasepool {
|
|
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
|
}
|
|
}`
|