Commit 845fdf994f8ba164511025d312ca859166c33de5

Authored by Thiago Rocha
1 parent bf68278d
Exists in master

Alteração no testConsole para passar somente no Linux e no coletaIdOs para retornar distribuição.

cacic-teste/testcacic.cpp
... ... @@ -94,9 +94,11 @@ void CTestCacic::testpegarOS(){
94 94 void CTestCacic::testConsole()
95 95 {
96 96 ConsoleObject console;
97   -
98   -// QVERIFY(console("echo teste").toStdString() == "teste\n");
  97 +#if defined(Q_OS_LINUX)
  98 + QVERIFY(console("echo teste").toStdString() == "teste\n");
  99 +#else
99 100 QVERIFY(false);
  101 +#endif
100 102 }
101 103  
102 104 void CTestCacic::testPegarUsu(){
... ...
src/console.h
... ... @@ -11,14 +11,18 @@ class ConsoleObject:public std::unary_function<std::string,QString>
11 11  
12 12 public:
13 13  
14   -#if defined(Q_OS_LINUX)
  14 +
15 15 QString operator() (std::string input)
16 16 {
17 17 QProcess* process = new QProcess();
18 18  
  19 +#if defined(Q_OS_LINUX)
19 20 QStringList options;
20 21 options << "-c" << QString::fromStdString(input);
21 22 process->start("/bin/sh", options);
  23 +#elif defined(Q_OS_WIN)
  24 + process->start(input);
  25 +#endif
22 26 process->waitForFinished();
23 27 QString output = process->readAll();
24 28 // qDebug() << output;
... ... @@ -26,7 +30,6 @@ public:
26 30 delete process;
27 31 return output;
28 32 }
29   -#endif
30 33 };
31 34  
32 35 #endif // CONSOLE_H
... ...
src/operatingsystem.cpp
... ... @@ -6,6 +6,7 @@ OperatingSystem::OperatingSystem()
6 6 this->nomeOs = this->coletaNomeOs();
7 7 }
8 8  
  9 +
9 10 /*pegarOS
10 11 * @return: int;
11 12 * retorna um id referente a versão do SO.
... ... @@ -14,13 +15,28 @@ OperatingSystem::OperatingSystem()
14 15 * 144 = Windows 7
15 16 * 160 = Windows 8
16 17 * 176 = Windows 8.1
17   - * 200 = Linux
  18 + * [enum] = Linux
18 19 */
19 20 int OperatingSystem::coletaIdOs(){
20 21 #if defined (Q_OS_WIN)
21 22 return QSysInfo::WindowsVersion;
22 23 #elif defined (Q_OS_LINUX)
23   - return LINUX_ARCH;
  24 +
  25 + ConsoleObject console;
  26 + QStringList catOutput = console("cat /etc/*release").split("\n");
  27 +
  28 + QString line;
  29 + foreach(line, catOutput) {
  30 + if(line.contains("PRETTY_NAME")) {
  31 + if( line.contains("Arch"))
  32 + return LINUX_ARCH;
  33 + else if( line.contains("Debian"))
  34 + return LINUX_DEBIAN;
  35 + else if( line.contains("Ubuntu"))
  36 + return LINUX_UBUNTU;
  37 + }
  38 + }
  39 +
24 40 #else
25 41 return 0;
26 42 #endif
... ...
src/operatingsystem.h
... ... @@ -2,8 +2,12 @@
2 2 #define OPERATINGSYSTEM_H
3 3  
4 4 #include <QtCore>
  5 +#include <QString>
  6 +#include <QStringList>
5 7 #include <QSysInfo>
  8 +
6 9 #include <ccacic.h>
  10 +#include <console.h>
7 11  
8 12 class OperatingSystem
9 13 {
... ...