Browse Source

ENGINE-467: changes to default_and_verify for symantec filenames

doc_update_sequoia
Krista Bennett 4 years ago
parent
commit
e7f6a2434c
9 changed files with 189 additions and 154 deletions
  1. +2
    -1
      src/cryptotech.h
  2. +29
    -15
      src/message_api.c
  3. +4
    -2
      src/pEpEngine.c
  4. +16
    -11
      src/pEpEngine.h
  5. +12
    -2
      src/pgp_gpg.c
  6. +2
    -1
      src/pgp_gpg.h
  7. +2
    -1
      src/pgp_netpgp.c
  8. +2
    -1
      src/pgp_netpgp.h
  9. +120
    -120
      test/src/SuiteMaker.cc

+ 2
- 1
src/cryptotech.h View File

@ -19,7 +19,8 @@ typedef enum _PEP_cryptotech {
typedef PEP_STATUS (*decrypt_and_verify_t)(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char **filename_ptr
);
typedef PEP_STATUS (*verify_text_t)(


+ 29
- 15
src/message_api.c View File

@ -1456,7 +1456,8 @@ bool import_attached_keys(
blob_value, blob_size,
NULL, 0,
&bl_ptext, &bl_psize,
&bl_keylist);
&bl_keylist,
NULL);
free_stringlist(bl_keylist); // we don't care about key encryption as long as we decrypt
if (_status == PEP_DECRYPTED || _status == PEP_DECRYPTED_AND_VERIFIED) {
free_blobval = true;
@ -2701,7 +2702,8 @@ static PEP_STATUS verify_decrypted(PEP_SESSION session,
free_stringlist(*keylist);
*decrypt_status = decrypt_and_verify(session, ctext, csize,
NULL, 0,
&ptext, &psize, keylist);
&ptext, &psize, keylist,
NULL);
}
@ -2751,9 +2753,12 @@ static PEP_STATUS _decrypt_in_pieces(PEP_SESSION session,
free(ptext);
ptext = NULL;
char* pgp_filename = NULL;
status = decrypt_and_verify(session, attctext, attcsize,
NULL, 0,
&ptext, &psize, &_keylist);
&ptext, &psize, &_keylist,
&pgp_filename);
free_stringlist(_keylist);
if (ptext) {
@ -2763,17 +2768,25 @@ static PEP_STATUS _decrypt_in_pieces(PEP_SESSION session,
}
else {
static const char * const mime_type = "application/octet-stream";
char * const filename =
without_double_ending(_s->filename);
if (filename == NULL)
return PEP_OUT_OF_MEMORY;
_m = bloblist_add(_m, ptext, psize, mime_type,
filename);
free(filename);
if (_m == NULL)
return PEP_OUT_OF_MEMORY;
if (pgp_filename) {
_m = bloblist_add(_m, ptext, psize, mime_type,
pgp_filename);
free(pgp_filename);
if (_m == NULL)
return PEP_OUT_OF_MEMORY;
}
else {
char * const filename =
without_double_ending(_s->filename);
if (filename == NULL)
return PEP_OUT_OF_MEMORY;
_m = bloblist_add(_m, ptext, psize, mime_type,
filename);
free(filename);
if (_m == NULL)
return PEP_OUT_OF_MEMORY;
}
ptext = NULL;
if (msg->attachments == NULL)
@ -3197,7 +3210,8 @@ DYNAMIC_API PEP_STATUS _decrypt_message(
/** Ok, we should be ready to decrypt. Try decrypt and verify first! **/
status = cryptotech[crypto].decrypt_and_verify(session, ctext,
csize, dsig_text, dsig_size,
&ptext, &psize, &_keylist);
&ptext, &psize, &_keylist,
NULL);
if (status > PEP_CANNOT_DECRYPT_UNKNOWN)
goto pep_error;


+ 4
- 2
src/pEpEngine.c View File

@ -3055,7 +3055,8 @@ DYNAMIC_API PEP_STATUS least_trust(
DYNAMIC_API PEP_STATUS decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr
)
{
assert(session);
@ -3069,7 +3070,8 @@ DYNAMIC_API PEP_STATUS decrypt_and_verify(
return PEP_ILLEGAL_VALUE;
return session->cryptotech[PEP_crypt_OpenPGP].decrypt_and_verify(
session, ctext, csize, dsigtext, dsigsize, ptext, psize, keylist);
session, ctext, csize, dsigtext, dsigsize, ptext, psize, keylist,
filename_ptr);
}
DYNAMIC_API PEP_STATUS encrypt_and_sign(


+ 16
- 11
src/pEpEngine.h View File

@ -231,16 +231,20 @@ DYNAMIC_API void config_service_log(PEP_SESSION session, bool enable);
// decrypt_and_verify() - decrypt and/or verify a message
//
// parameters:
// session (in) session handle
// ctext (in) cipher text to decrypt and/or verify
// csize (in) size of cipher text
// dsigtext (in) if extant, *detached* signature text for this
// message (or NULL if not)
// dsize (in) size of *detached* signature text for this
// message (0, if no detached sig exists)
// ptext (out) pointer to internal buffer with plain text
// psize (out) size of plain text
// keylist (out) list of key ids which where used to encrypt
// session (in) session handle
// ctext (in) cipher text to decrypt and/or verify
// csize (in) size of cipher text
// dsigtext (in) if extant, *detached* signature text for this
// message (or NULL if not)
// dsize (in) size of *detached* signature text for this
// message (0, if no detached sig exists)
// ptext (out) pointer to internal buffer with plain text
// psize (out) size of plain text
// keylist (out) list of key ids which where used to encrypt
// filename_ptr (out) mails produced by certain PGP implementations
// may return a decrypted filename here for attachments.
// Externally, this can generally be NULL, and is an optional
// parameter.
//
// return value:
// PEP_UNENCRYPTED message was unencrypted and not signed
@ -262,7 +266,8 @@ DYNAMIC_API void config_service_log(PEP_SESSION session, bool enable);
DYNAMIC_API PEP_STATUS decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char ** filename_ptr
);


+ 12
- 2
src/pgp_gpg.c View File

@ -577,7 +577,8 @@ void pgp_release(PEP_SESSION session, bool out_last)
PEP_STATUS pgp_decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr
)
{
PEP_STATUS result;
@ -693,6 +694,15 @@ PEP_STATUS pgp_decrypt_and_verify(
*keylist = NULL;
result = PEP_OUT_OF_MEMORY;
}
// Get filename, if desired
if (filename_ptr) {
const char* fname = gpgme_decrypt_result->file_name;
if (fname) {
*filename_ptr = strdup(fname);
if (!(*filename_ptr))
result = PEP_OUT_OF_MEMORY;
}
}
} /* Ok, so now we have any recipients it was encrypted for
in recipient_keylist */
@ -811,7 +821,7 @@ PEP_STATUS pgp_decrypt_and_verify(
}
case GPG_ERR_CERT_REVOKED:
case GPG_ERR_BAD_SIGNATURE:
result = PEP_DECRYPT_SIGNATURE_DOES_NOT_MATCH;
result = PEP_DECRYPT_SIGNATURE_DOES_NOT_MATCH;
//result = PEP_DECRYPT_BAD_SIGNATURE;
break;
case GPG_ERR_SIG_EXPIRED:


+ 2
- 1
src/pgp_gpg.h View File

@ -11,7 +11,8 @@ void pgp_release(PEP_SESSION session, bool out_last);
PEP_STATUS pgp_decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr
);
PEP_STATUS pgp_encrypt_and_sign(


+ 2
- 1
src/pgp_netpgp.c View File

@ -373,7 +373,8 @@ static PEP_STATUS _validation_results(
PEP_STATUS pgp_decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr // will be ignored
)
{
char *_ptext = NULL;


+ 2
- 1
src/pgp_netpgp.h View File

@ -10,7 +10,8 @@ void pgp_release(PEP_SESSION session, bool out_last);
PEP_STATUS pgp_decrypt_and_verify(
PEP_SESSION session, const char *ctext, size_t csize,
const char *dsigtext, size_t dsigsize,
char **ptext, size_t *psize, stringlist_t **keylist
char **ptext, size_t *psize, stringlist_t **keylist,
char** filename_ptr // will be ignored
);
PEP_STATUS pgp_encrypt_and_sign(


+ 120
- 120
test/src/SuiteMaker.cc View File

@ -12,167 +12,167 @@
#include "SuiteMaker.h"
// Begin where we generate stuff
#include "MimeTests.h"
#include "Engine463Tests.h"
#include "BloblistTests.h"
#include "NewUpdateIdAndMyselfTests.h"
#include "I18nTests.h"
#include "DecorateTests.h"
#include "ReencryptPlusExtraKeysTests.h"
#include "BlacklistTests.h"
#include "AppleMailTests.h"
#include "MessageTwoPointOhTests.h"
#include "IdentityListTests.h"
#include "PgpBinaryTests.h"
#include "MistrustUndoTests.h"
#include "MessageNullFromTests.h"
#include "LeastCommonDenomColorTests.h"
#include "StringlistTests.h"
#include "PgpListKeysTests.h"
#include "MessageApiTests.h"
#include "EncryptMissingPrivateKeyTests.h"
#include "CaseAndDotAddressTests.h"
#include "UserIDAliasTests.h"
#include "I18nTests.h"
#include "Engine463Tests.h"
#include "DecryptAttachPrivateKeyUntrustedTests.h"
#include "BCCTests.h"
#include "LeastColorGroupTests.h"
#include "MistrustUndoTests.h"
#include "BlacklistAcceptNewKeyTests.h"
#include "DecryptAttachPrivateKeyUntrustedTests.h"
#include "BlacklistTests.h"
#include "MessageApiTests.h"
#include "StringlistTests.h"
#include "StringpairListTests.h"
#include "TrustManipulationTests.h"
#include "EncryptAttachPrivateKeyTests.h"
#include "BloblistTests.h"
#include "SequenceTests.h"
#include "TrustwordsTests.h"
#include "RevokeRegenAttachTests.h"
#include "EncryptMissingPrivateKeyTests.h"
#include "PepSubjectReceivedTests.h"
#include "SequenceTests.h"
#include "EncryptAttachPrivateKeyTests.h"
#include "ExternalRevokeTests.h"
#include "KeyeditTests.h"
#include "LeastColorGroupTests.h"
#include "DecryptAttachPrivateKeyTrustedTests.h"
#include "TrustwordsTests.h"
#include "ReencryptPlusExtraKeysTests.h"
#include "MapAsn1Tests.h"
#include "DecorateTests.h"
#include "MessageTwoPointOhTests.h"
#include "CrashdumpTests.h"
#include "StringpairListTests.h"
#include "PgpBinaryTests.h"
#include "DecryptAttachPrivateKeyTrustedTests.h"
#include "MessageNullFromTests.h"
#include "MimeTests.h"
#include "PgpListKeysTests.h"
#include "NewUpdateIdAndMyselfTests.h"
#include "EncryptForIdentityTests.h"
#include "TrustManipulationTests.h"
#include "AppleMailTests.h"
#include "CrashdumpTests.h"
#include "CaseAndDotAddressTests.h"
#include "LeastCommonDenomColorTests.h"
#include "ExternalRevokeTests.h"
#include "UserIDAliasTests.h"
const char* SuiteMaker::all_suites[] = {
"MimeTests",
"Engine463Tests",
"BloblistTests",
"NewUpdateIdAndMyselfTests",
"I18nTests",
"DecorateTests",
"ReencryptPlusExtraKeysTests",
"BlacklistTests",
"AppleMailTests",
"MessageTwoPointOhTests",
"IdentityListTests",
"PgpBinaryTests",
"MistrustUndoTests",
"MessageNullFromTests",
"LeastCommonDenomColorTests",
"StringlistTests",
"PgpListKeysTests",
"MessageApiTests",
"EncryptMissingPrivateKeyTests",
"CaseAndDotAddressTests",
"UserIDAliasTests",
"I18nTests",
"Engine463Tests",
"DecryptAttachPrivateKeyUntrustedTests",
"BCCTests",
"LeastColorGroupTests",
"MistrustUndoTests",
"BlacklistAcceptNewKeyTests",
"DecryptAttachPrivateKeyUntrustedTests",
"BlacklistTests",
"MessageApiTests",
"StringlistTests",
"StringpairListTests",
"TrustManipulationTests",
"EncryptAttachPrivateKeyTests",
"BloblistTests",
"SequenceTests",
"TrustwordsTests",
"RevokeRegenAttachTests",
"EncryptMissingPrivateKeyTests",
"PepSubjectReceivedTests",
"SequenceTests",
"EncryptAttachPrivateKeyTests",
"ExternalRevokeTests",
"KeyeditTests",
"LeastColorGroupTests",
"DecryptAttachPrivateKeyTrustedTests",
"TrustwordsTests",
"ReencryptPlusExtraKeysTests",
"MapAsn1Tests",
"DecorateTests",
"MessageTwoPointOhTests",
"CrashdumpTests",
"StringpairListTests",
"PgpBinaryTests",
"DecryptAttachPrivateKeyTrustedTests",
"MessageNullFromTests",
"MimeTests",
"PgpListKeysTests",
"NewUpdateIdAndMyselfTests",
"EncryptForIdentityTests",
"TrustManipulationTests",
"AppleMailTests",
"CrashdumpTests",
"CaseAndDotAddressTests",
"LeastCommonDenomColorTests",
"ExternalRevokeTests",
"UserIDAliasTests",
};
// This file is generated, so magic constants are ok.
int SuiteMaker::num_suites = 38;
void SuiteMaker::suitemaker_build(const char* test_class_name, const char* test_home, Test::Suite** test_suite) {
if (strcmp(test_class_name, "MimeTests") == 0)
*test_suite = new MimeTests(test_class_name, test_home);
else if (strcmp(test_class_name, "Engine463Tests") == 0)
*test_suite = new Engine463Tests(test_class_name, test_home);
else if (strcmp(test_class_name, "BloblistTests") == 0)
*test_suite = new BloblistTests(test_class_name, test_home);
else if (strcmp(test_class_name, "NewUpdateIdAndMyselfTests") == 0)
*test_suite = new NewUpdateIdAndMyselfTests(test_class_name, test_home);
else if (strcmp(test_class_name, "I18nTests") == 0)
*test_suite = new I18nTests(test_class_name, test_home);
if (strcmp(test_class_name, "DecorateTests") == 0)
*test_suite = new DecorateTests(test_class_name, test_home);
else if (strcmp(test_class_name, "ReencryptPlusExtraKeysTests") == 0)
*test_suite = new ReencryptPlusExtraKeysTests(test_class_name, test_home);
else if (strcmp(test_class_name, "BlacklistTests") == 0)
*test_suite = new BlacklistTests(test_class_name, test_home);
else if (strcmp(test_class_name, "AppleMailTests") == 0)
*test_suite = new AppleMailTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MessageTwoPointOhTests") == 0)
*test_suite = new MessageTwoPointOhTests(test_class_name, test_home);
else if (strcmp(test_class_name, "IdentityListTests") == 0)
*test_suite = new IdentityListTests(test_class_name, test_home);
else if (strcmp(test_class_name, "PgpBinaryTests") == 0)
*test_suite = new PgpBinaryTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MistrustUndoTests") == 0)
*test_suite = new MistrustUndoTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MessageNullFromTests") == 0)
*test_suite = new MessageNullFromTests(test_class_name, test_home);
else if (strcmp(test_class_name, "LeastCommonDenomColorTests") == 0)
*test_suite = new LeastCommonDenomColorTests(test_class_name, test_home);
else if (strcmp(test_class_name, "StringlistTests") == 0)
*test_suite = new StringlistTests(test_class_name, test_home);
else if (strcmp(test_class_name, "PgpListKeysTests") == 0)
*test_suite = new PgpListKeysTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MessageApiTests") == 0)
*test_suite = new MessageApiTests(test_class_name, test_home);
else if (strcmp(test_class_name, "EncryptMissingPrivateKeyTests") == 0)
*test_suite = new EncryptMissingPrivateKeyTests(test_class_name, test_home);
else if (strcmp(test_class_name, "CaseAndDotAddressTests") == 0)
*test_suite = new CaseAndDotAddressTests(test_class_name, test_home);
else if (strcmp(test_class_name, "UserIDAliasTests") == 0)
*test_suite = new UserIDAliasTests(test_class_name, test_home);
else if (strcmp(test_class_name, "I18nTests") == 0)
*test_suite = new I18nTests(test_class_name, test_home);
else if (strcmp(test_class_name, "Engine463Tests") == 0)
*test_suite = new Engine463Tests(test_class_name, test_home);
else if (strcmp(test_class_name, "DecryptAttachPrivateKeyUntrustedTests") == 0)
*test_suite = new DecryptAttachPrivateKeyUntrustedTests(test_class_name, test_home);
else if (strcmp(test_class_name, "BCCTests") == 0)
*test_suite = new BCCTests(test_class_name, test_home);
else if (strcmp(test_class_name, "LeastColorGroupTests") == 0)
*test_suite = new LeastColorGroupTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MistrustUndoTests") == 0)
*test_suite = new MistrustUndoTests(test_class_name, test_home);
else if (strcmp(test_class_name, "BlacklistAcceptNewKeyTests") == 0)
*test_suite = new BlacklistAcceptNewKeyTests(test_class_name, test_home);
else if (strcmp(test_class_name, "DecryptAttachPrivateKeyUntrustedTests") == 0)
*test_suite = new DecryptAttachPrivateKeyUntrustedTests(test_class_name, test_home);
else if (strcmp(test_class_name, "BlacklistTests") == 0)
*test_suite = new BlacklistTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MessageApiTests") == 0)
*test_suite = new MessageApiTests(test_class_name, test_home);
else if (strcmp(test_class_name, "StringlistTests") == 0)
*test_suite = new StringlistTests(test_class_name, test_home);
else if (strcmp(test_class_name, "StringpairListTests") == 0)
*test_suite = new StringpairListTests(test_class_name, test_home);
else if (strcmp(test_class_name, "TrustManipulationTests") == 0)
*test_suite = new TrustManipulationTests(test_class_name, test_home);
else if (strcmp(test_class_name, "EncryptAttachPrivateKeyTests") == 0)
*test_suite = new EncryptAttachPrivateKeyTests(test_class_name, test_home);
else if (strcmp(test_class_name, "BloblistTests") == 0)
*test_suite = new BloblistTests(test_class_name, test_home);
else if (strcmp(test_class_name, "SequenceTests") == 0)
*test_suite = new SequenceTests(test_class_name, test_home);
else if (strcmp(test_class_name, "TrustwordsTests") == 0)
*test_suite = new TrustwordsTests(test_class_name, test_home);
else if (strcmp(test_class_name, "RevokeRegenAttachTests") == 0)
*test_suite = new RevokeRegenAttachTests(test_class_name, test_home);
else if (strcmp(test_class_name, "EncryptMissingPrivateKeyTests") == 0)
*test_suite = new EncryptMissingPrivateKeyTests(test_class_name, test_home);
else if (strcmp(test_class_name, "PepSubjectReceivedTests") == 0)
*test_suite = new PepSubjectReceivedTests(test_class_name, test_home);
else if (strcmp(test_class_name, "SequenceTests") == 0)
*test_suite = new SequenceTests(test_class_name, test_home);
else if (strcmp(test_class_name, "EncryptAttachPrivateKeyTests") == 0)
*test_suite = new EncryptAttachPrivateKeyTests(test_class_name, test_home);
else if (strcmp(test_class_name, "ExternalRevokeTests") == 0)
*test_suite = new ExternalRevokeTests(test_class_name, test_home);
else if (strcmp(test_class_name, "KeyeditTests") == 0)
*test_suite = new KeyeditTests(test_class_name, test_home);
else if (strcmp(test_class_name, "LeastColorGroupTests") == 0)
*test_suite = new LeastColorGroupTests(test_class_name, test_home);
else if (strcmp(test_class_name, "DecryptAttachPrivateKeyTrustedTests") == 0)
*test_suite = new DecryptAttachPrivateKeyTrustedTests(test_class_name, test_home);
else if (strcmp(test_class_name, "TrustwordsTests") == 0)
*test_suite = new TrustwordsTests(test_class_name, test_home);
else if (strcmp(test_class_name, "ReencryptPlusExtraKeysTests") == 0)
*test_suite = new ReencryptPlusExtraKeysTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MapAsn1Tests") == 0)
*test_suite = new MapAsn1Tests(test_class_name, test_home);
else if (strcmp(test_class_name, "DecorateTests") == 0)
*test_suite = new DecorateTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MessageTwoPointOhTests") == 0)
*test_suite = new MessageTwoPointOhTests(test_class_name, test_home);
else if (strcmp(test_class_name, "CrashdumpTests") == 0)
*test_suite = new CrashdumpTests(test_class_name, test_home);
else if (strcmp(test_class_name, "StringpairListTests") == 0)
*test_suite = new StringpairListTests(test_class_name, test_home);
else if (strcmp(test_class_name, "PgpBinaryTests") == 0)
*test_suite = new PgpBinaryTests(test_class_name, test_home);
else if (strcmp(test_class_name, "DecryptAttachPrivateKeyTrustedTests") == 0)
*test_suite = new DecryptAttachPrivateKeyTrustedTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MessageNullFromTests") == 0)
*test_suite = new MessageNullFromTests(test_class_name, test_home);
else if (strcmp(test_class_name, "MimeTests") == 0)
*test_suite = new MimeTests(test_class_name, test_home);
else if (strcmp(test_class_name, "PgpListKeysTests") == 0)
*test_suite = new PgpListKeysTests(test_class_name, test_home);
else if (strcmp(test_class_name, "NewUpdateIdAndMyselfTests") == 0)
*test_suite = new NewUpdateIdAndMyselfTests(test_class_name, test_home);
else if (strcmp(test_class_name, "EncryptForIdentityTests") == 0)
*test_suite = new EncryptForIdentityTests(test_class_name, test_home);
else if (strcmp(test_class_name, "TrustManipulationTests") == 0)
*test_suite = new TrustManipulationTests(test_class_name, test_home);
else if (strcmp(test_class_name, "AppleMailTests") == 0)
*test_suite = new AppleMailTests(test_class_name, test_home);
else if (strcmp(test_class_name, "CrashdumpTests") == 0)
*test_suite = new CrashdumpTests(test_class_name, test_home);
else if (strcmp(test_class_name, "CaseAndDotAddressTests") == 0)
*test_suite = new CaseAndDotAddressTests(test_class_name, test_home);
else if (strcmp(test_class_name, "LeastCommonDenomColorTests") == 0)
*test_suite = new LeastCommonDenomColorTests(test_class_name, test_home);
else if (strcmp(test_class_name, "ExternalRevokeTests") == 0)
*test_suite = new ExternalRevokeTests(test_class_name, test_home);
else if (strcmp(test_class_name, "UserIDAliasTests") == 0)
*test_suite = new UserIDAliasTests(test_class_name, test_home);
}
void SuiteMaker::suitemaker_buildlist(const char** test_class_names, int num_to_run, const char* test_home, std::vector<Test::Suite*>& test_suites) {


Loading…
Cancel
Save