diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-05-28 11:44:53 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-06-20 17:59:17 +0200 |
| commit | 38edef35bfcba5789ea50adc7c76dec504079812 (patch) | |
| tree | 66d7f7279a005a36c201cadd474b66035f5c1a44 /test/link/objc | |
| parent | 74ed7c1f0998e9dd89aa3f3480fff845afd6b422 (diff) | |
| download | zig-38edef35bfcba5789ea50adc7c76dec504079812.tar.gz zig-38edef35bfcba5789ea50adc7c76dec504079812.zip | |
test: introduce link(er) tests - builds on standalone tests
Diffstat (limited to 'test/link/objc')
| -rw-r--r-- | test/link/objc/Foo.h | 7 | ||||
| -rw-r--r-- | test/link/objc/Foo.m | 11 | ||||
| -rw-r--r-- | test/link/objc/build.zig | 22 | ||||
| -rw-r--r-- | test/link/objc/test.m | 12 |
4 files changed, 52 insertions, 0 deletions
diff --git a/test/link/objc/Foo.h b/test/link/objc/Foo.h new file mode 100644 index 0000000000..05cb7df39b --- /dev/null +++ b/test/link/objc/Foo.h @@ -0,0 +1,7 @@ +#import <Foundation/Foundation.h> + +@interface Foo : NSObject + +- (NSString *)name; + +@end diff --git a/test/link/objc/Foo.m b/test/link/objc/Foo.m new file mode 100644 index 0000000000..6fc9b1edf0 --- /dev/null +++ b/test/link/objc/Foo.m @@ -0,0 +1,11 @@ +#import "Foo.h" + +@implementation Foo + +- (NSString *)name +{ + NSString *str = [[NSString alloc] initWithFormat:@"Zig"]; + return str; +} + +@end diff --git a/test/link/objc/build.zig b/test/link/objc/build.zig new file mode 100644 index 0000000000..e41fd48e71 --- /dev/null +++ b/test/link/objc/build.zig @@ -0,0 +1,22 @@ +const std = @import("std"); +const Builder = std.build.Builder; + +pub fn build(b: *Builder) void { + const mode = b.standardReleaseOptions(); + + const test_step = b.step("test", "Test the program"); + + const exe = b.addExecutable("test", null); + b.default_step.dependOn(&exe.step); + exe.addIncludePath("."); + exe.addCSourceFile("Foo.m", &[0][]const u8{}); + exe.addCSourceFile("test.m", &[0][]const u8{}); + exe.setBuildMode(mode); + exe.linkLibC(); + // TODO when we figure out how to ship framework stubs for cross-compilation, + // populate paths to the sysroot here. + exe.linkFramework("Foundation"); + + const run_cmd = exe.run(); + test_step.dependOn(&run_cmd.step); +} diff --git a/test/link/objc/test.m b/test/link/objc/test.m new file mode 100644 index 0000000000..3c81316788 --- /dev/null +++ b/test/link/objc/test.m @@ -0,0 +1,12 @@ +#import "Foo.h" +#import <assert.h> + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + Foo *foo = [[Foo alloc] init]; + NSString *result = [foo name]; + assert([result isEqualToString:@"Zig"]); + return 0; + } +} |
