Shorten the generated test file names.
Also place the generated files in their own directories.
Change-Id: I51c1acf15810ec199d17cc2d6e63adebdc0fc3c9
diff --git a/api/GenerateHeaderFiles.cpp b/api/GenerateHeaderFiles.cpp
index 4b2ecc7..7475d6b 100644
--- a/api/GenerateHeaderFiles.cpp
+++ b/api/GenerateHeaderFiles.cpp
@@ -304,12 +304,12 @@
}
}
-static bool writeHeaderFile(const SpecFile& specFile) {
+static bool writeHeaderFile(const string& directory, const SpecFile& specFile) {
const string headerFileName = specFile.getHeaderFileName();
// We generate one header file for each spec file.
GeneratedFile file;
- if (!file.start(headerFileName)) {
+ if (!file.start(directory, headerFileName)) {
return false;
}
@@ -349,10 +349,10 @@
return true;
}
-bool GenerateHeaderFiles() {
+bool GenerateHeaderFiles(const string& directory) {
bool success = true;
for (auto specFile : systemSpecification.getSpecFiles()) {
- if (!writeHeaderFile(*specFile)) {
+ if (!writeHeaderFile(directory, *specFile)) {
success = false;
}
}
diff --git a/api/GenerateHtmlDocumentation.cpp b/api/GenerateHtmlDocumentation.cpp
index a7782c8..359d785 100644
--- a/api/GenerateHtmlDocumentation.cpp
+++ b/api/GenerateHtmlDocumentation.cpp
@@ -422,9 +422,9 @@
return success;
}
-static bool generateOverview() {
+static bool generateOverview(const string& directory) {
GeneratedFile file;
- if (!file.start("index.html")) {
+ if (!file.start(directory, "index.html")) {
return false;
}
bool success = true;
@@ -444,9 +444,9 @@
return success;
}
-static bool generateAlphabeticalIndex() {
+static bool generateAlphabeticalIndex(const string& directory) {
GeneratedFile file;
- if (!file.start("alpha_index.html")) {
+ if (!file.start(directory, "alpha_index.html")) {
return false;
}
writeHtmlHeader(&file);
@@ -598,10 +598,10 @@
return true;
}
-static bool writeDetailedDocumentationFile(const SpecFile& specFile) {
+static bool writeDetailedDocumentationFile(const string& directory, const SpecFile& specFile) {
GeneratedFile file;
const string htmlFileName = stringReplace(specFile.getSpecFileName(), ".spec", ".html");
- if (!file.start(htmlFileName)) {
+ if (!file.start(directory, htmlFileName)) {
return false;
}
bool success = true;
@@ -661,10 +661,10 @@
return success;
}
-bool generateHtmlDocumentation() {
- bool success = generateOverview() && generateAlphabeticalIndex();
+bool generateHtmlDocumentation(const string& directory) {
+ bool success = generateOverview(directory) && generateAlphabeticalIndex(directory);
for (auto specFile : systemSpecification.getSpecFiles()) {
- if (!writeDetailedDocumentationFile(*specFile)) {
+ if (!writeDetailedDocumentationFile(directory, *specFile)) {
success = false;
}
}
diff --git a/api/GenerateTestFiles.cpp b/api/GenerateTestFiles.cpp
index 7cf1099..f70c444 100644
--- a/api/GenerateTestFiles.cpp
+++ b/api/GenerateTestFiles.cpp
@@ -894,10 +894,10 @@
}
// Open the mJavaFile and writes the header.
-static bool startJavaFile(GeneratedFile* file, const Function& function, const string& testName,
- const string& relaxedTestName) {
+static bool startJavaFile(GeneratedFile* file, const Function& function, const string& directory,
+ const string& testName, const string& relaxedTestName) {
const string fileName = testName + ".java";
- if (!file->start(fileName)) {
+ if (!file->start(directory, fileName)) {
return false;
}
file->writeNotices();
@@ -942,9 +942,10 @@
}
// Open the script file and write its header.
-static bool startRsFile(GeneratedFile* file, const Function& function, const string& testName) {
+static bool startRsFile(GeneratedFile* file, const Function& function, const string& directory,
+ const string& testName) {
string fileName = testName + ".rs";
- if (!file->start(fileName)) {
+ if (!file->start(directory, fileName)) {
return false;
}
file->writeNotices();
@@ -955,12 +956,12 @@
}
// Write the entire *Relaxed.rs test file, as it only depends on the name.
-static bool writeRelaxedRsFile(const Function& function, const string& testName,
- const string& relaxedTestName) {
+static bool writeRelaxedRsFile(const Function& function, const string& directory,
+ const string& testName, const string& relaxedTestName) {
string name = relaxedTestName + ".rs";
GeneratedFile file;
- if (!file.start(name)) {
+ if (!file.start(directory, name)) {
return false;
}
file.writeNotices();
@@ -974,26 +975,27 @@
/* Write the .java and the two .rs test files. versionOfTestFiles is used to restrict which API
* to test.
*/
-static bool writeTestFilesForFunction(const Function& function, int versionOfTestFiles) {
+static bool writeTestFilesForFunction(const Function& function, const string& directory,
+ int versionOfTestFiles) {
// Avoid creating empty files if we're not testing this function.
if (!needTestFiles(function, versionOfTestFiles)) {
return true;
}
- const string testName = "GeneratedTest" + function.getCapitalizedName();
+ const string testName = "Test" + function.getCapitalizedName();
const string relaxedTestName = testName + "Relaxed";
- if (!writeRelaxedRsFile(function, testName, relaxedTestName)) {
+ if (!writeRelaxedRsFile(function, directory, testName, relaxedTestName)) {
return false;
}
GeneratedFile rsFile; // The Renderscript test file we're generating.
GeneratedFile javaFile; // The Jave test file we're generating.
- if (!startRsFile(&rsFile, function, testName)) {
+ if (!startRsFile(&rsFile, function, directory, testName)) {
return false;
}
- if (!startJavaFile(&javaFile, function, testName, relaxedTestName)) {
+ if (!startJavaFile(&javaFile, function, directory, testName, relaxedTestName)) {
return false;
}
@@ -1026,11 +1028,11 @@
return true;
}
-bool GenerateTestFiles(int versionOfTestFiles) {
+bool GenerateTestFiles(const string& directory, int versionOfTestFiles) {
bool success = true;
for (auto specFile : systemSpecification.getSpecFiles()) {
for (auto f : specFile->getFunctionsMap()) {
- if (!writeTestFilesForFunction(*f.second, versionOfTestFiles)) {
+ if (!writeTestFilesForFunction(*f.second, directory, versionOfTestFiles)) {
success = false;
}
}
diff --git a/api/Generator.h b/api/Generator.h
index 21ce5f9..95534b3 100644
--- a/api/Generator.h
+++ b/api/Generator.h
@@ -18,12 +18,12 @@
#define ANDROID_RS_API_GENERATOR_GENERATOR_H
// Generates the RenderScript header files. The implementation is in GenerateHeaderFiles.cpp.
-bool GenerateHeaderFiles();
+bool GenerateHeaderFiles(const std::string& directory);
// Generates the Java and RenderScript test files. The implementation is in GenerateTestFiles.cpp.
-bool GenerateTestFiles(int versionOfTestFiles);
+bool GenerateTestFiles(const std::string& directory, int versionOfTestFiles);
// Generates all HTML documentation files. The implementation is in GenerateHtmlDocumentation.cpp.
-bool generateHtmlDocumentation();
+bool generateHtmlDocumentation(const std::string& director);
#endif // ANDROID_RS_API_GENERATOR_GENERATOR_H
diff --git a/api/Specification.cpp b/api/Specification.cpp
index 36f406c..a09495e 100644
--- a/api/Specification.cpp
+++ b/api/Specification.cpp
@@ -776,8 +776,8 @@
}
bool SystemSpecification::generateFiles(int versionOfTestFiles) const {
- bool success = GenerateHeaderFiles() && generateHtmlDocumentation() &&
- GenerateTestFiles(versionOfTestFiles);
+ bool success = GenerateHeaderFiles("scriptc") && generateHtmlDocumentation("html") &&
+ GenerateTestFiles("test", versionOfTestFiles);
if (success) {
cout << "Successfully processed " << mTypes.size() << " types, " << mConstants.size()
<< " constants, and " << mFunctions.size() << " functions.\n";
diff --git a/api/Utilities.cpp b/api/Utilities.cpp
index 80ebb0d..b372b13 100644
--- a/api/Utilities.cpp
+++ b/api/Utilities.cpp
@@ -148,10 +148,11 @@
}
// Opens the stream. Reports an error if it can't.
-bool GeneratedFile::start(const string& name) {
- open(name.c_str(), ios::out | ios::trunc);
+bool GeneratedFile::start(const string& directory, const string& name) {
+ const string path = directory + "/" + name;
+ open(path.c_str(), ios::out | ios::trunc);
if (!is_open()) {
- cerr << "Error. Can't open the output file: " << name << "\n";
+ cerr << "Error. Can't open the output file: " << path << "\n";
return false;
}
return true;
diff --git a/api/Utilities.h b/api/Utilities.h
index 8b0cd9c..04169dc 100644
--- a/api/Utilities.h
+++ b/api/Utilities.h
@@ -57,7 +57,7 @@
public:
// Opens the stream. Reports an error if it can't.
- bool start(const std::string& name);
+ bool start(const std::string& directory, const std::string& name);
// Write copyright notice & auto-generated warning in Java/C style comments.
void writeNotices();
diff --git a/api/generate.sh b/api/generate.sh
index 0881690..fd0085d 100755
--- a/api/generate.sh
+++ b/api/generate.sh
@@ -18,12 +18,21 @@
set -e
g++ Generator.cpp Specification.cpp GenerateHtmlDocumentation.cpp GenerateHeaderFiles.cpp GenerateTestFiles.cpp Scanner.cpp Utilities.cpp -g -std=c++11 -Wall -o generator
+mkdir -p test
+mkdir -p scriptc
+mkdir -p html
+
./generator rs_allocation.spec rs_atomic.spec rs_core_math.spec rs_core.spec rs_debug.spec rs_element.spec rs_graphics.spec rs_math.spec rs_matrix.spec rs_mesh.spec rs_object.spec rs_program.spec rs_quaternion.spec rs_sampler.spec rs_time.spec rs_types.spec
-rm ../../../cts/tests/tests/renderscript/src/android/renderscript/cts/GeneratedTest*
-mv GeneratedTest* ../../../cts/tests/tests/renderscript/src/android/renderscript/cts/
+rm -f ../../../cts/tests/tests/renderscript/src/android/renderscript/cts/generated/*
+mv test/* ../../../cts/tests/tests/renderscript/src/android/renderscript/cts/generated/
+rmdir test
-mv *.rsh ../scriptc
+mv scriptc/*.rsh ../scriptc
+rmdir scriptc
-rm *.html # TODO handle the documentation files.
+# TODO handle the documentation files.
+rm html/*
+rmdir html
+
rm generator