#SPM

2025-06-18

SPM + GTest

If you need to expose a C++ library with via , there is a straightforward way to wrap existing tests with :

1. Add gmock as a .systemLibrary target in your Package.swift and link it to your .testTarget.

2. Create a module map and an umbrella header for gmock.

3. Create an Obj-C++ adapter that wraps GoogleTest with XCTestCase.

🚀 CMD + U

// Package.swift
let package = Package(
  	...
	.systemLibrary(
		name: "gmock",
	  	path: "spm-support/gmock",
   		pkgConfig: "gmock", // -> /opt/homebrew/Cellar/googletest/.../lib/gmock.pc
   		providers: [.brew(["googletest"])]), // Note: SPM does *not* invoke 'brew install'
  	...
	.testTarget(
        name: "targetTests",
		dependencies: ["target", "gmock"],
        path: "target/test"),
)

// spm-support/gmock/module.modulemap
module gtest [system] {
  header "gmock.h"
  link "gmock" // -> /opt/homebrew/Cellar/googletest/.../lib/libgmock.a
  export *
}
    
// spm-support/gmock/gmock.h
#include <gmock/gmock.h>
    
// target/test/xctest_adapter.mm
#import <XCTest/XCTest.h>
#import <gmock/gmock.h>

@interface TargetTests : XCTestCase
@end

@implementation TargetTests

- (void)test_all {
    ::testing::InitGoogleTest();
    XCTAssertEqual(0, RUN_ALL_TESTS());
}

// Or create a separate method for each GTest.

- (void)test_SomeGoogleTestFixture_SomeGoogleTest {
    ::testing::InitGoogleTest();
    ::testing::GTEST_FLAG(filter) = "SomeGoogleTestFixture.SomeGoogleTest";
    XCTAssertEqual(0, RUN_ALL_TESTS());
}

@end
2025-06-12

Most projects depend on some third-party libraries. Keeping them updated is important for security and maintenance reasons. In a new blog post on our newly launched iOS dev blog I'll show you a tool to simplify dependency updates.

stackedbytes.dev/posts/2025/ke

#ios #swift #spm #dependencies #development

A screenshot showing Xcode and selecting "Update to Latest Package Versions"
2025-06-06
2025-06-06

Tener un ciclo de tres semanas significa que solo me encuentro bien (sin sentir el cuerpo molido o tener un bully en mi cabeza)... ¿cuatro? días al mes #SPM

Projektmanagement :verified:projektmanagement@mastodontech.de
2025-06-04
2025-06-03

Lil drawing of my King Dimentio design because I love him so.
#spm #superpapermario

Thomas Kalhøj ClemensenThomasCle
2025-05-29

I just released my new Swift Package: Events 📣📦
github.com/ThomasCle/events

I'll be writing more about it on my blog soon! 🚀

Events - Concurrency-sage event broadcasting using Swift's modern actor model.
Designed for simplicity. Build for Swift concurrency.
2025-05-28

Joys of holding a small animal
#fanart #spm #superpapermario

2025-05-24

Again, for dramatic effect! AH HA HA HA HA HA HA HA!
#fanart #spm #dimentio

2025-05-19
2025-05-17
2025-05-16

Estoy a un alumno más del instituto comentando con sarcasmo "qué guapa eres" mientras hacen preguntas incómodas sobre mi pelo o mi vestuario, de pegarme golpes de cabeza contra la pared #bajona #SPM

:sigil: Lou Lüederlou_de_sel@eldritch.cafe
2025-05-14

Mon challenge de la journée ça va être de faire mon injec'

C'est aujourd'hui. C'est le jour. C'est pas demain. C'est pas dans cinq jours après en avoir passé deux à me demander pourquoi j'ai envie de caner. Au- jour- d'hui.

#THS #SPMDeLaMuerte #SPM #Menopause

2025-05-12

Guy who shows up to the polycule uninvited
#fanart #spm #superpapermario #dimentio

2025-05-10

Weird sweaty nerd
#fanart #spm #dimentio

2025-05-09

My cool and awesome horses
#spm #superpapermario #horseracetests

Daniel Saididanielsaidi
2025-05-04

New blog post! 📝 How to add dependencies to a binary Swift package. I have looked all over for ways to make things happen and have finally made it work for pulling in an external binary package as a proper dependency.

danielsaidi.com/blog/2025/05/0

Oh! Mediaohmedia
2025-04-29

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst