From 8090e6f697583d35af1f228b908d2b7716349f2e Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 14 Nov 2011 15:55:52 -0800 Subject: [PATCH 1/4] Start of a Git2.Oid class --- .gitignore | 1 + setup.winxed | 1 + src/Git2/Oid.winxed | 25 +++++++++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 src/Git2/Oid.winxed diff --git a/.gitignore b/.gitignore index cb32a17..d3ddc9c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ src/Git2/Common.pir src/Git2/RefCache.pir src/Git2/Repository.pir src/Git2/Index.pir +src/Git2/Oid.pir diff --git a/setup.winxed b/setup.winxed index 31d8d02..08c5583 100644 --- a/setup.winxed +++ b/setup.winxed @@ -43,6 +43,7 @@ function setup_stable_libraries(var parrot_libgit2) { 'Cache', 'Common', 'Index', + 'Oid', 'RefCache', 'Repository' ]; diff --git a/src/Git2/Oid.winxed b/src/Git2/Oid.winxed new file mode 100644 index 0000000..9c0a198 --- /dev/null +++ b/src/Git2/Oid.winxed @@ -0,0 +1,25 @@ +$include_const 'datatypes.pasm'; +$include_const "iglobals.pasm"; + +namespace Git2 { + class Oid { + function get_sv() { + /* + typedef struct { + // raw binary formatted id + unsigned char id[GIT_OID_RAWSZ]; + } git_oid; + */ + + var sv = new 'StructView'([ DATATYPE_STRUCT, 1, + DATATYPE_PTR + ]); + + while (1) { yield(sv); } + } + var ptr; + function Index() { + self.ptr = self.get_sv().alloc(); + } + } +} From a74b65159a4850a75757f265fa139ed81e63e8c2 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 14 Nov 2011 21:10:04 -0800 Subject: [PATCH 2/4] Get Git2.Oid creation working and add a basic test --- src/Git2/Oid.winxed | 2 +- t/winxed/001_load.t | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Git2/Oid.winxed b/src/Git2/Oid.winxed index 9c0a198..96e27d1 100644 --- a/src/Git2/Oid.winxed +++ b/src/Git2/Oid.winxed @@ -18,7 +18,7 @@ namespace Git2 { while (1) { yield(sv); } } var ptr; - function Index() { + function Oid() { self.ptr = self.get_sv().alloc(); } } diff --git a/t/winxed/001_load.t b/t/winxed/001_load.t index cd32149..4881a19 100644 --- a/t/winxed/001_load.t +++ b/t/winxed/001_load.t @@ -3,6 +3,9 @@ $load "rosella/test.pbc"; $load "./src/git2.pbc"; $load "./src/Git2/Common.pbc"; +$load "./src/Git2/Oid.pbc"; +$load "./src/Git2/Cache.pbc"; +$load "./src/Git2/RefCache.pbc"; $load "./src/Git2/Repository.pbc"; $load "dumper.pbc"; @@ -85,6 +88,11 @@ class Test_git2_repository_open { self.assert.instance_of(git_index, class Git2.Index); } + function git_oid() { + var git_oid = new Git2.Oid(); + self.assert.instance_of(git_oid, class Git2.Oid); + } + } function main[main]() { using Rosella.Test.test; From 388bed0b20040bebdb843435471bccbaf479969d Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 14 Nov 2011 21:30:13 -0800 Subject: [PATCH 3/4] Add a failing test for git_oid_fromstr --- src/git2.nci | 2 +- t/winxed/001_load.t | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/git2.nci b/src/git2.nci index 0920837..2e2a311 100644 --- a/src/git2.nci +++ b/src/git2.nci @@ -106,7 +106,7 @@ i git_odb_backend_pack pvvvv # git_odb_backend_pack i git_oid_ncmp v # git_oid_ncmp v git_oid_fromraw p # git_oid_fromraw v git_oid_fmt p # git_oid_fmt -i git_oid_fromstr p # git_oid_fromstr +i git_oid_fromstr pp # git_oid_fromstr i git_oid_cmp v # git_oid_cmp p git_oid_allocfmt v # git_oid_allocfmt i git_oid_fromstrn p # git_oid_fromstrn diff --git a/t/winxed/001_load.t b/t/winxed/001_load.t index 4881a19..8dd3122 100644 --- a/t/winxed/001_load.t +++ b/t/winxed/001_load.t @@ -90,7 +90,13 @@ class Test_git2_repository_open { function git_oid() { var git_oid = new Git2.Oid(); + using Git2.Raw.git_oid_fromstr; self.assert.instance_of(git_oid, class Git2.Oid); + + var hex = cstring("599955586da1c3ad514f3e65f1081d2012ec862d"); + var rc1 = -1; + rc1 = git_oid_fromstr(git_oid.ptr, hex); + self.assert.defined(git_oid); } } From 6077d6381c6dab6342dad19aa78513498e6a9207 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Mon, 21 Nov 2011 21:24:01 -0800 Subject: [PATCH 4/4] Correct signature of git_oid_fromstr, make tests pass --- src/git2.pir | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/git2.pir b/src/git2.pir index f41bb34..9b4163b 100644 --- a/src/git2.pir +++ b/src/git2.pir @@ -185,7 +185,7 @@ set_global ['Git2';'Raw'], 'git_oid_fromraw', nci dlfunc nci, lib, 'git_oid_fmt', 'vp' set_global ['Git2';'Raw'], 'git_oid_fmt', nci - dlfunc nci, lib, 'git_oid_fromstr', 'ip' + dlfunc nci, lib, 'git_oid_fromstr', 'ipp' set_global ['Git2';'Raw'], 'git_oid_fromstr', nci dlfunc nci, lib, 'git_oid_cmp', 'iv' set_global ['Git2';'Raw'], 'git_oid_cmp', nci