diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1e732b0d..cbb78196 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -57,3 +57,11 @@ jobs: - name: Building //python directory run: bazel build //python/... + + - uses: swift-actions/setup-swift@v1 + if: matrix.os == 'ubuntu-20.04' + + - name: Building //swift directory + run: | + cd swift + bazel test --config=clang //... diff --git a/WORKSPACE b/WORKSPACE index 8e323b28..df813f36 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -2,7 +2,6 @@ workspace(name = "example") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") # Some file dependencies http_file( diff --git a/swift/.bazelrc b/swift/.bazelrc new file mode 100644 index 00000000..03d86a2b --- /dev/null +++ b/swift/.bazelrc @@ -0,0 +1 @@ +build:clang --client_env=CC=clang diff --git a/swift/.bazelversion b/swift/.bazelversion new file mode 100644 index 00000000..09b254e9 --- /dev/null +++ b/swift/.bazelversion @@ -0,0 +1 @@ +6.0.0 diff --git a/swift/BUILD b/swift/BUILD new file mode 100644 index 00000000..1b91faa8 --- /dev/null +++ b/swift/BUILD @@ -0,0 +1,9 @@ +load("@build_bazel_rules_swift//swift:swift.bzl", "swift_test") + +swift_test( + name = "tests", + srcs = [ + "example.swift", + "main.swift", + ], +) diff --git a/swift/WORKSPACE b/swift/WORKSPACE new file mode 100644 index 00000000..59a56e06 --- /dev/null +++ b/swift/WORKSPACE @@ -0,0 +1,21 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "build_bazel_rules_swift", + sha256 = "32f95dbe6a88eb298aaa790f05065434f32a662c65ec0a6aabdaf6881e4f169f", + url = "https://github.com/bazelbuild/rules_swift/releases/download/1.5.0/rules_swift.1.5.0.tar.gz", +) + +load( + "@build_bazel_rules_swift//swift:repositories.bzl", + "swift_rules_dependencies", +) + +swift_rules_dependencies() + +load( + "@build_bazel_rules_swift//swift:extras.bzl", + "swift_rules_extra_dependencies", +) + +swift_rules_extra_dependencies() diff --git a/swift/example.swift b/swift/example.swift new file mode 100644 index 00000000..a5537266 --- /dev/null +++ b/swift/example.swift @@ -0,0 +1,29 @@ +import XCTest + +class SwiftTests: XCTestCase { + func fizzbuzz(i: Int) -> String { + if (i % 3 == 0) { + if (i % 5 == 0) { + return "FizzBuzz"; + } + return "Fizz"; + } + if (i % 5 == 0) { + return "Buzz"; + } + return String(i); + } + + func test() { + XCTAssertEqual(fizzbuzz(i: 1), "1") + XCTAssertEqual(fizzbuzz(i: 2), "2") + XCTAssertEqual(fizzbuzz(i: 3), "Fizz") + XCTAssertEqual(fizzbuzz(i: 4), "4") + XCTAssertEqual(fizzbuzz(i: 5), "Buzz") + XCTAssertEqual(fizzbuzz(i: 15), "FizzBuzz") + } + + static var allTests = [ + ("test", test), + ] +} diff --git a/swift/main.swift b/swift/main.swift new file mode 100644 index 00000000..2a4a87f5 --- /dev/null +++ b/swift/main.swift @@ -0,0 +1,7 @@ +#if os(Linux) +import XCTest + +XCTMain([ + testCase(SwiftTests.allTests), +]) +#endif