@@ -18,6 +18,8 @@ void test_refs_create__initialize(void)
18
18
void test_refs_create__cleanup (void )
19
19
{
20
20
cl_git_sandbox_cleanup ();
21
+
22
+ cl_git_pass (git_libgit2_opts (GIT_OPT_ENABLE_STRICT_OBJECT_CREATION , 0 ));
21
23
}
22
24
23
25
void test_refs_create__symbolic (void )
@@ -119,16 +121,36 @@ void test_refs_create__oid(void)
119
121
git_reference_free (looked_up_ref );
120
122
}
121
123
122
- void test_refs_create__oid_unknown (void )
124
+ /* Can by default create a reference that targets at an unknown id */
125
+ void test_refs_create__oid_unknown_succeeds_by_default (void )
126
+ {
127
+ git_reference * new_reference , * looked_up_ref ;
128
+ git_oid id ;
129
+
130
+ const char * new_head = "refs/heads/new-head" ;
131
+
132
+ git_oid_fromstr (& id , "deadbeef3f795b2b4353bcce3a527ad0a4f7f644" );
133
+
134
+ /* Create and write the new object id reference */
135
+ cl_git_pass (git_reference_create (& new_reference , g_repo , new_head , & id , 0 , NULL ));
136
+
137
+ /* Ensure the reference can't be looked-up... */
138
+ cl_git_pass (git_reference_lookup (& looked_up_ref , g_repo , new_head ));
139
+ git_reference_free (looked_up_ref );
140
+ }
141
+
142
+ /* Strict object enforcement enforces valid object id */
143
+ void test_refs_create__oid_unknown_fails_strict_mode (void )
123
144
{
124
- // Can not create a new OID reference which targets at an unknown id
125
145
git_reference * new_reference , * looked_up_ref ;
126
146
git_oid id ;
127
147
128
148
const char * new_head = "refs/heads/new-head" ;
129
149
130
150
git_oid_fromstr (& id , "deadbeef3f795b2b4353bcce3a527ad0a4f7f644" );
131
151
152
+ cl_git_pass (git_libgit2_opts (GIT_OPT_ENABLE_STRICT_OBJECT_CREATION , 1 ));
153
+
132
154
/* Create and write the new object id reference */
133
155
cl_git_fail (git_reference_create (& new_reference , g_repo , new_head , & id , 0 , NULL ));
134
156
0 commit comments