Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//
// QS{{cookiecutter.short_name}}_Unit_Tests.swift
// QS{{cookiecutter.short_name}} Unit Tests
//
// Created by Nathan Henrie on 2022-09-11.
// Copyright © 2022 Quicksilver. All rights reserved.
//

import XCTest

import QS{{cookiecutter.short_name}}

class QS{{cookiecutter.short_name}}_Unit_Tests: XCTestCase {

override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}

override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}

func testExample() throws {
let action = QS{{cookiecutter.short_name}}SwiftAction()
let result = action.performSwiftActionOnObject(QSObject(string:"example input")!)
XCTAssertEqual(result, QSObject(string:"here it comes!")!)
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
// Any test you write for XCTest can be annotated as throws and async.
// Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
// Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
}

func testPerformanceExample() throws {
// This is an example of a performance test case.
measure {
// Put the code you want to measure the time of here.
}
}

}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1320"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D434B7701FC8FFC7007AF9C3"
BuildableName = "QS{{cookiecutter.short_name}}.qsplugin"
BlueprintName = "QS{{cookiecutter.short_name}}"
ReferencedContainer = "container:QS{{cookiecutter.short_name}}.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<TestPlans>
<TestPlanReference
reference = "container:QS{{cookiecutter.short_name}}.xctestplan"
default = "YES">
</TestPlanReference>
</TestPlans>
</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">
<PathRunnable
runnableDebuggingMode = "0"
FilePath = "/tmp/QS/build/Debug/Quicksilver.app">
</PathRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D434B7701FC8FFC7007AF9C3"
BuildableName = "QS{{cookiecutter.short_name}}.qsplugin"
BlueprintName = "QS{{cookiecutter.short_name}}"
ReferencedContainer = "container:QS{{cookiecutter.short_name}}.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"configurations" : [
{
"id" : "148D89A1-CBE9-41C5-A235-FB45F17A478D",
"name" : "Configuration 1",
"options" : {

}
}
],
"defaultOptions" : {

},
"testTargets" : [
{
"target" : {
"containerPath" : "container:QS{{cookiecutter.short_name}}.xcodeproj",
"identifier" : "603AE8EE28CE5ED700C67DD0",
"name" : "QS{{cookiecutter.short_name}} Unit Tests"
}
}
],
"version" : 1
}
126 changes: 124 additions & 2 deletions {{cookiecutter.short_name}}/QS{{cookiecutter.short_name}}/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
<key>directTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>displaysResult</key>
<false/>
Expand All @@ -52,6 +53,7 @@
<key>directTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>displaysResult</key>
<false/>
Expand All @@ -61,13 +63,116 @@
<false/>
<key>indirectTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>name</key>
<string>Do Something Using…</string>
<key>validatesObjects</key>
<false/>
</dict>
<key>DoSomethingInSwiftAction</key>
<dict>
<key>actionClass</key>
<string>QS{{cookiecutter.short_name}}.QS{{cookiecutter.short_name}}SwiftAction</string>
<key>actionSelector</key>
<string>performSwiftActionOnObject:</string>
<key>commandFormat</key>
<string>Do Something in Swift to %@</string>
<key>directTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>displaysResult</key>
<false/>
<key>icon</key>
<string>Actions</string>
<key>name</key>
<string>Do Something in Swift</string>
<key>validatesObjects</key>
<false/>
</dict>
<key>DoSomethingInSwiftUsingAction</key>
<dict>
<key>actionClass</key>
<string>QS{{cookiecutter.short_name}}.QS{{cookiecutter.short_name}}SwiftAction</string>
<key>actionSelector</key>
<string>performSwiftActionOnObject:using:</string>
<key>commandFormat</key>
<string>Do something in Swift to %@ using %@</string>
<key>directTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>displaysResult</key>
<false/>
<key>icon</key>
<string>Actions</string>
<key>indirectOptional</key>
<false/>
<key>indirectTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>name</key>
<string>Do Something in Swift Using…</string>
<key>validatesObjects</key>
<false/>
</dict>
<key>DoSomethingInSwiftFromObjCAction</key>
<dict>
<key>actionClass</key>
<string>QS{{cookiecutter.short_name}}.QS{{cookiecutter.short_name}}SwiftAction</string>
<key>actionSelector</key>
<string>performSwiftActionFromObjC:</string>
<key>commandFormat</key>
<string>Do Something in Swift from ObjC to %@</string>
<key>directTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>displaysResult</key>
<false/>
<key>icon</key>
<string>Actions</string>
<key>name</key>
<string>Do Something in Swift from ObjC</string>
<key>validatesObjects</key>
<false/>
</dict>
<key>DoSomethingInSwiftFromObjCUsingAction</key>
<dict>
<key>actionClass</key>
<string>QS{{cookiecutter.short_name}}.QS{{cookiecutter.short_name}}SwiftAction</string>
<key>actionSelector</key>
<string>performSwiftActionFromObjC:using:</string>
<key>commandFormat</key>
<string>Do something in Swift from ObjC to %@ using %@</string>
<key>directTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>displaysResult</key>
<false/>
<key>icon</key>
<string>Actions</string>
<key>indirectOptional</key>
<false/>
<key>indirectTypes</key>
<array>
<string>QS{{cookiecutter.short_name}}Type</string>
<string>NSStringPboardType</string>
</array>
<key>name</key>
<string>Do Something in Swift from ObjC Using…</string>
<key>validatesObjects</key>
<false/>
</dict>
</dict>
<key>QSDefaultsTemplate</key>
<dict>
Expand All @@ -87,11 +192,11 @@
<key>extendedDescription</key>
<string>&lt;h1&gt;{{cookiecutter.short_name}}&lt;/h1&gt;
&lt;h2&gt;{{cookiecutter.description}}&lt;/h2&gt;
&lt;p&gt;Documentatoin for {{cookiecutter.short_name}}&lt;/p&gt;</string>
&lt;p&gt;Documentation for {{cookiecutter.short_name}}&lt;/p&gt;</string>
<key>icon</key>
<string>QSPlugIn</string>
</dict>
<key>QSPresetAdditionsTemplate</key>
<key>QSPresetAdditions</key>
<array>
<dict>
<key>ID</key>
Expand All @@ -110,6 +215,23 @@
<key>source</key>
<string>QS{{cookiecutter.short_name}}Source</string>
</dict>
<dict>
<key>ID</key>
<string>QSPresetSwiftExample</string>
<key>enabled</key>
<true/>
<key>icon</key>
<string>QSPlugIn</string>
<key>name</key>
<string>Example Swift Preset</string>
<key>settings</key>
<dict>
<key>path</key>
<string>/path/to/data</string>
</dict>
<key>source</key>
<string>QS{{cookiecutter.short_name}}.QS{{cookiecutter.short_name}}SwiftSource</string>
</dict>
</array>
<key>QSRegistration</key>
<dict>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//

#import "QS{{cookiecutter.short_name}}.h"
#import "Quicksilver.pch"
Loading