All Projects → dduan → Distributiontests

dduan / Distributiontests

Licence: mit
Swift 3 distribution test for open-source libraries.

Labels

Projects that are alternatives of or similar to Distributiontests

Ports
Developer FreeBSD Haskell "overlay" for the mighty FreeBSD Ports Collection. Use with caution, slippery when wet, etc.
Stars: ✭ 16 (-27.27%)
Mutual labels:  makefile
Emojione Color Font
End of Life. Switch to https://github.com/eosrei/twemoji-color-font
Stars: ✭ 899 (+3986.36%)
Mutual labels:  makefile
Isel Leic Si 1920inv Li52d Leirt51d
Recursos das aulas de Segurança Informática - Semestre de Inverno 2019/20 - Turma LI52D-LEIRT51D
Stars: ✭ 19 (-13.64%)
Mutual labels:  makefile
Cxcore
A prebuilt Linux system use UEFI and f2fs for RaspberryPi 3B, RaspberryPi 3B+, RaspberryPi 4B
Stars: ✭ 17 (-22.73%)
Mutual labels:  makefile
Gitsem
a command line utility for managing semantically versioned (semver) git tags
Stars: ✭ 17 (-22.73%)
Mutual labels:  makefile
Docker Cdn
Script for creating and deploying a CDN (HAProxy, Registrator, Consul and Nginx)
Stars: ✭ 18 (-18.18%)
Mutual labels:  makefile
Pymake
A Makefile generator in Python
Stars: ✭ 16 (-27.27%)
Mutual labels:  makefile
Seafile Openwrt
A port of Seafile for OpenWrt 14.07
Stars: ✭ 19 (-13.64%)
Mutual labels:  makefile
Go Book Store Api
Go Sample project to understand Mysql CRUD operation with best practises Includes logging, JWT, Swagger and Transactions
Stars: ✭ 18 (-18.18%)
Mutual labels:  makefile
Nepali Romanized Pro
Nepali Romanized Keyboard Layout with installer for macOS
Stars: ✭ 18 (-18.18%)
Mutual labels:  makefile
Articles
Article Publish in Wechat & Toutiao
Stars: ✭ 896 (+3972.73%)
Mutual labels:  makefile
Device Sony Loire
Stars: ✭ 17 (-22.73%)
Mutual labels:  makefile
Live
Automated module and configuration reloader.
Stars: ✭ 18 (-18.18%)
Mutual labels:  makefile
Compiletools
Build C++ fast, with practically no configuration
Stars: ✭ 16 (-27.27%)
Mutual labels:  makefile
Network Programming With Go
Network programming with Go
Stars: ✭ 903 (+4004.55%)
Mutual labels:  makefile
Mesos Dns Pkg
Packaging utilities for Mesos-DNS
Stars: ✭ 16 (-27.27%)
Mutual labels:  makefile
New Php Project
Template for new PHP projects. Also see https://github.com/JeroenDeDauw/new-php-library
Stars: ✭ 18 (-18.18%)
Mutual labels:  makefile
Aospbuild
Stars: ✭ 22 (+0%)
Mutual labels:  makefile
Openwrt Dvb
OpenWrt feed focused on DVB applications
Stars: ✭ 19 (-13.64%)
Mutual labels:  makefile
Gitpr
Quick reference guide on fork and pull request workflow
Stars: ✭ 902 (+4000%)
Mutual labels:  makefile

What is this?

Each Swift project in this repository uses a different package manager to satisfy dependency on the same library. A successful build of a project indicates the library's support for the manager is working.

A Makefile is included to help automate the building process.

Who can benefit from this?

Author of an open-source Swift 3 library. The library is distributed with any combination of CocoaPods, Carthage and Swift Package Manager. They want to ensure supports for them keep working throughout development.

How does it work?

  1. Download this project either directly or via git clone.

  2. Specify the library to test. Three things about the library is required: its name, git URL and a major version number. The script customize takes these and inject them to each test projects. To test Just, for example:

    ./customize --name Just --git "https://github.com/JustHTTP/Just.git" --major 0
    
  3. Run make. This will build projects for each aforementioned package manager by fetching the library and import it for various platforms that Xcode/Swift supports. There's a make command for each package manager/platform combination as well. For example, you can run make test-integration-carthage-tvOS.

  4. Make this part of your library's continuous integration. Do step 1-3 as part of continoues integration script. Better yet, include it as part of your library structure. The make commands are going to be handy.

Does it work for your library?

There are a few assumptions for the library being tested: it must have a consistent name for the framework file (Just.framework) and import symbol (import Just) on all platforms. So if the packager buildJust-tvOS.framework but user writes import Just in their code, that won't work.

Out of the box, all three package managers (CocoaPods, Carthage, Swift Package Manager) and four platforms (iOS, macOS, watchOS, tvOS) are tested.

Swift package manager projects tests against a major version number.

If your library can't fit in any of these assumptions, update it, or manually edit content of projects here for your needs (don't forget to update the Makefile as well, it's pretty straight forward). Examples:

  • if you don't support Carthage, delete the Carthage folder and related contents in Makefile.
  • if you don't support watchOS, open both Example in Xcode and delete the watchOS target. Then deleted everything related to watchOS in the Makefile.
  • If your library get build to a name other than its import symbol, remove the pre-existing ones from the Xcode projects and add them manually.
  • If you need to target a minor version number, add it in SPM/Package.swift.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].